Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,30 +17,30 @@ The client libraries are supported on Python 2.7 and 3.5.3 or later.

## Packages available
Each service might have a number of libraries available from each of the following categories:
* [Client - July 2019 Preview](#Client-July-2019-Preview)
* [Client - Stable](#Client-Stable)
* [Client - November 2019 Releases](#Client-November-2019-Releases)
* [Client - Previous Versions](#Client-Previous-Versions)
* [Management](#Management)


### Client: July 2019 Preview
New wave of packages that we are currently releasing in **Preview**. These libraries allow you to use and consume existing resources and interact with them, for example: upload a blob. These libraries share a number of core functionalities such as: retries, logging, transport protocols, authentication protocols, etc. that can be found in the [azure-core](./sdk/core/azure-core) library. You can learn more about these libraries by reading guidelines that they follow [here](https://azuresdkspecs.z5.web.core.windows.net/PythonSpec.html).
### Client: November 2019 Releases
New wave of packages that we are announcing as **GA** and several that are currently releasing in **preview**. These libraries allow you to use and consume existing resources and interact with them, for example: upload a blob. These libraries share a number of core functionalities such as: retries, logging, transport protocols, authentication protocols, etc. that can be found in the [azure-core](./sdk/core/azure-core) library. You can learn more about these libraries by reading guidelines that they follow [here](https://azure.github.io/azure-sdk/python_introduction.html).

The libraries released in July preview:

- [azure-cosmos](./sdk/cosmos/azure-cosmos)
- [azure-eventhubs](./sdk/eventhub/azure-eventhubs)
The libraries released in the November 2019 GA release:
- [azure-keyvault-keys](./sdk/keyvault/azure-keyvault-keys)
- [azure-keyvault-secrets](./sdk/keyvault/azure-keyvault-secrets)
- [azure-identity](./sdk/identity/azure-identity)
- [azure-storage-blob](./sdk/storage/azure-storage-blob)
- [azure-storage-file](./sdk/storage/azure-storage-file-share)
- [azure-storage-queue](./sdk/storage/azure-storage-queue)

>NOTE: If you need to ensure your code is ready for production use one of the stable libraries.
The libraries released in the November 2019 preview:
- [azure-cosmos](./sdk/cosmos/azure-cosmos)
- [azure-eventhubs](./sdk/eventhub/azure-eventhubs)
- [azure-storage-file-share](./sdk/storage/azure-storage-file-share)

> NOTE: If you need to ensure your code is ready for production use one of the stable, non-preview libraries.

### Client: Stable
Last stable versions of packages that have been provided for usage with Azure and are production-ready. These libraries provide you with similar functionalities to the Preview ones as they allow you to use and consume existing resources and interact with them, for example: upload a blob.
### Client: Previous Versions
Last stable versions of packages that have been provided for usage with Azure and are production-ready. These libraries provide you with similar functionalities to the Preview ones as they allow you to use and consume existing resources and interact with them, for example: upload a blob. They might not implement the [guidelines](https://azure.github.io/azure-sdk/python_introduction.html) or have the same feature set as the Novemeber releases. They do however offer wider coverage of services.

### Management
Libraries which enable you to provision specific resources. They are responsible for directly mirroring and consuming Azure service's REST endpoints. The management libraries use the `azure-mgmt-<service name>` convention for their package names.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,14 @@ def __init__(self):
self.certificate_name = "cert-name-" + uuid.uuid1().hex

def create_certificate(self):
self.certificate_client.begin_create_certificate(name=self.certificate_name, policy=CertificatePolicy.get_default()).wait()
print("creating certificate...")
self.certificate_client.create_certificate(name=self.certificate_name)
print("\tdone")

def get_certificate(self):
print("Getting a certificate...")
certificate = self.certificate_client.get_certificate(name=self.certificate_name)
print(f"\tdone, certificate: {certificate.name}.")
certificate = self.certificate_client.get_certificate_with_policy(name=self.certificate_name)
print("\tdone, certificate: %s." % certificate.name)

def delete_certificate(self):
print("Deleting a certificate...")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,13 @@ def __init__(self):
self.certificate_name = "cert-name-" + uuid.uuid1().hex

async def create_certificate(self):
await self.certificate_client.create_certificate(name=self.certificate_name, policy=CertificatePolicy.get_default())
create_certificate_poller = await self.certificate_client.create_certificate(name=self.certificate_name)
await create_certificate_poller
print("\tdone")

async def get_certificate(self):
print("Getting a certificate...")
certificate = await self.certificate_client.get_certificate(name=self.certificate_name)
certificate = await self.certificate_client.get_certificate_with_policy(name=self.certificate_name)
print(f"\tdone, certificate: {certificate.name}.")

async def delete_certificate(self):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,17 @@ def __init__(self):

def create_rsa_key(self):
print("Creating an RSA key...")
self.key_client.create_rsa_key(name=self.key_name, size=2048)
self.key_client.create_rsa_key(name=self.key_name, size=2048, hsm=False)
print("\tdone")

def get_key(self):
print("Getting a key...")
key = self.key_client.get_key(name=self.key_name)
print(f"\tdone, key: {key.name}.")
print("\tdone, key: %s." % key.name)

def delete_key(self):
print("Deleting a key...")
deleted_key = self.key_client.begin_delete_key(name=self.key_name).result()
deleted_key = self.key_client.delete_key(name=self.key_name)
print("\tdone: " + deleted_key.name)

def run(self):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def __init__(self):

async def create_rsa_key(self):
print("Creating an RSA key...")
await self.key_client.create_rsa_key(name=self.key_name, size=2048)
await self.key_client.create_rsa_key(name=self.key_name, size=2048, hsm=False)
print("\tdone")

async def get_key(self):
Expand Down
4 changes: 4 additions & 0 deletions common/smoketest/program.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,12 @@
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------
import logging
logging.basicConfig()

import smoke_test


try:
import smoke_test_async
except SyntaxError:
Expand Down
2 changes: 2 additions & 0 deletions common/smoketest/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ azure-core==1.0.0b3
azure-cosmos==4.0.0b2
azure-eventhub==5.0.0b3
azure-identity==1.0.0b3
azure-keyvault-certificates==4.0.0b3
azure-keyvault-keys==4.0.0b3
azure-keyvault-secrets==4.0.0b3
azure-storage-blob==12.0.0b3
azure-storage-common==2.1.0
4 changes: 4 additions & 0 deletions common/smoketest/smoke_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------
from key_vault_certificates import KeyVaultCertificates
from key_vault_keys import KeyVaultKeys
from key_vault_secrets import KeyVaultSecrets
from storage_blob import StorageBlob
from event_hubs import EventHub
Expand All @@ -12,6 +14,8 @@
print(" AZURE TRACK 2 SDKs SMOKE TEST")
print("==========================================")

KeyVaultCertificates().run()
KeyVaultKeys().run()
KeyVaultSecrets().run()
StorageBlob().run()
EventHub().run()
Expand Down
4 changes: 4 additions & 0 deletions common/smoketest/smoke_test_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
# Licensed under the MIT License.
# ------------------------------------
import asyncio
from key_vault_certificates_async import KeyVaultCertificates
from key_vault_keys_async import KeyVaultKeys
from key_vault_secrets_async import KeyVaultSecrets
from event_hubs_async import EventHub

Expand All @@ -13,6 +15,8 @@


async def main():
await KeyVaultCertificates().run()
await KeyVaultKeys().run()
await KeyVaultSecrets().run()
await EventHub().run()

Expand Down
4 changes: 2 additions & 2 deletions eng/pipelines/smoke-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ jobs:
- job:
strategy:
matrix:
Python_374:
PythonVersion: '3.7.4'
Python_37:
PythonVersion: '3.7'
Python_27:
PythonVersion: '2.7'
InstallAsyncRequirements: false
Expand Down
15 changes: 5 additions & 10 deletions eng/tox/import_all.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,7 @@
excluded_packages = [
"azure",
"azure-mgmt",
"azure.core.tracing.opencensus",
"azure.eventhub.checkpointstoreblob.aio",
"azure.storage.fileshare", # Github issue 7879.
"azure.storage.filedatalake", # Github issue 7879.
]
]

def should_run_import_all(package_name):
return not (package_name in excluded_packages or "nspkg" in package_name)
Expand All @@ -42,17 +38,16 @@ def should_run_import_all(package_name):

# get target package name from target package path
pkg_dir = os.path.abspath(args.target_package)
pkg_name, _ = get_package_details(os.path.join(pkg_dir, 'setup.py'))
package_name = pkg_name.replace("-", ".")
package_name, namespace, _ = get_package_details(os.path.join(pkg_dir, 'setup.py'))

if should_run_import_all(package_name):
# import all modules from current package
logging.info(
"Importing all modules from package [{0}] to verify dependency".format(
package_name
"Importing all modules from namespace [{0}] to verify dependency".format(
namespace
)
)
import_script_all = "from {0} import *".format(package_name)
import_script_all = "from {0} import *".format(namespace)
exec(import_script_all)
logging.info("Verified module dependency, no issues found")
else:
Expand Down
19 changes: 5 additions & 14 deletions eng/tox/prep_sphinx_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,6 @@
root_dir = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "..", ".."))
sphinx_conf = os.path.join(root_dir, "doc", "sphinx", "individual_build_conf.py")

# reference issue 8523 for eliminating this ridiculousness.
UNFRIENDLY_PACKAGE_TO_NAMESPACE = {
'azure-storage-file-share': 'azure.storage.fileshare',
'azure-core-tracing-opencensus': 'azure.core.tracing.ext.opencensus_span',
'azure-eventhub-checkpointstoreblob-aio': 'azure.eventhub.extensions.checkpointstoreblobaio'
}

def should_build_docs(package_name):
return not ("nspkg" in package_name or package_name in ["azure", "azure-mgmt", "azure-keyvault", "azure-documentdb", "azure-mgmt-documentdb", "azure-servicemanagement-legacy"])
Expand Down Expand Up @@ -98,10 +92,10 @@ def copy_conf(doc_folder):
shutil.copy(sphinx_conf, os.path.join(doc_folder, 'conf.py'))


def create_index(doc_folder, source_location, package_name):
def create_index(doc_folder, source_location, namespace):
index_content = ""

package_rst = "{}.rst".format(package_name.replace("-", "."))
package_rst = "{}.rst".format(namespace)
content_destination = os.path.join(doc_folder, "index.rst")

if not os.path.exists(doc_folder):
Expand All @@ -117,7 +111,7 @@ def create_index(doc_folder, source_location, package_name):
elif rst_readmes:
index_content = create_index_file(rst_readmes[0], package_rst)
else:
logging.warning("No readmes detected for this package {}".format(package_name))
logging.warning("No readmes detected for this namespace {}".format(namespace))
index_content = RST_EXTENSION_FOR_INDEX.format(package_rst)

# write index
Expand Down Expand Up @@ -158,18 +152,15 @@ def write_version(site_folder, version):
args = parser.parse_args()

package_path = os.path.abspath(args.target_package)
package_name, package_version = get_package_details(
package_name, namespace, package_version = get_package_details(
os.path.join(package_path, "setup.py")
)

if package_name in UNFRIENDLY_PACKAGE_TO_NAMESPACE.keys():
package_name = UNFRIENDLY_PACKAGE_TO_NAMESPACE[package_name]

if should_build_docs(package_name):
source_location = move_and_rename(unzip_sdist_to_directory(args.dist_dir))
doc_folder = os.path.join(source_location, "docgen")

create_index(doc_folder, source_location, package_name)
create_index(doc_folder, source_location, namespace)

site_folder = os.path.join(args.dist_dir, "site")
write_version(site_folder, package_version)
Expand Down
8 changes: 4 additions & 4 deletions eng/tox/run_sphinx_apidoc.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,12 @@ def sphinx_apidoc(working_directory):
)
exit(1)

def mgmt_apidoc(working_directory, package_name):
def mgmt_apidoc(working_directory, namespace):
command_array = [
sys.executable,
generate_mgmt_script,
"-p",
package_name.replace("-","."),
namespace,
"-o",
working_directory,
"--verbose"
Expand Down Expand Up @@ -117,11 +117,11 @@ def mgmt_apidoc(working_directory, package_name):
package_dir = os.path.abspath(args.package_root)
output_directory = os.path.join(target_dir, "unzipped/docgen")

pkg_name, pkg_version = get_package_details(os.path.join(package_dir, 'setup.py'))
pkg_name, namespace, pkg_version = get_package_details(os.path.join(package_dir, 'setup.py'))

if should_build_docs(pkg_name):
if is_mgmt_package(pkg_name):
mgmt_apidoc(output_directory, pkg_name)
mgmt_apidoc(output_directory, namespace)
else:
sphinx_apidoc(args.working_directory)
else:
Expand Down
2 changes: 1 addition & 1 deletion eng/tox/run_sphinx_build.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ def sphinx_build(target_dir, output_dir):
target_dir = os.path.abspath(args.working_directory)
package_dir = os.path.abspath(args.package_root)

package_name, pkg_version = get_package_details(os.path.join(package_dir, 'setup.py'))
package_name, _, pkg_version = get_package_details(os.path.join(package_dir, 'setup.py'))

if should_build_docs(package_name):
sphinx_build(target_dir, output_dir)
Expand Down
13 changes: 9 additions & 4 deletions eng/tox/tox_helper_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,15 @@ def setup(*args, **kwargs):
os.chdir(current_dir)
_, kwargs = global_vars["__setup_calls__"][0]

return kwargs["name"], kwargs["version"]
package_name = kwargs["name"]
# default namespace for the package
name_space = package_name.replace('-', '.')
if "packages" in kwargs.keys():
packages = kwargs["packages"]
if packages:
name_space = packages[0]
logging.info("Namespaces found for package {0}: {1}".format(package_name, packages))

def get_package_namespace(setup_filename):
# traverse until meeting an improperly formatted __init__
pass
return package_name, name_space, kwargs["version"]


6 changes: 6 additions & 0 deletions sdk/appconfiguration/azure-appconfiguration/HISTORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@

-------------------

## 2019-12-xx Version 1.0.0b6

### Breaking changes

- Combine set_read_only & clear_read_only to be set_read_only(True/False) #8453

## 2019-10-30 Version 1.0.0b5

### Breaking changes
Expand Down
Loading