diff options
author | CoprDistGit <infra@openeuler.org> | 2023-04-11 00:38:19 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-04-11 00:38:19 +0000 |
commit | 36ea70373ee818b5c78cd0f7148dbab44a45e4da (patch) | |
tree | 0ea60e95f75b324d0ae17310908045fe7a60f453 | |
parent | 8fa1fead2d41d3ead81002949cf8560d445103d4 (diff) |
automatic import of python-azure-schemaregistry
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-azure-schemaregistry.spec | 1136 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 1138 insertions, 0 deletions
@@ -0,0 +1 @@ +/azure-schemaregistry-1.2.0.zip diff --git a/python-azure-schemaregistry.spec b/python-azure-schemaregistry.spec new file mode 100644 index 0000000..0c9f13f --- /dev/null +++ b/python-azure-schemaregistry.spec @@ -0,0 +1,1136 @@ +%global _empty_manifest_terminate_build 0 +Name: python-azure-schemaregistry +Version: 1.2.0 +Release: 1 +Summary: Microsoft Azure Schema Registry Client Library for Python +License: MIT License +URL: https://github.com/Azure/azure-sdk-for-python +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/21/ac/69d234a343a1303f2acfdaa4ab6885cc0c5974034c813d2a5756409019d2/azure-schemaregistry-1.2.0.zip +BuildArch: noarch + +Requires: python3-msrest +Requires: python3-azure-core + +%description +# Azure Schema Registry client library for Python + +Azure Schema Registry is a schema repository service hosted by Azure Event Hubs, providing schema storage, versioning, +and management. The registry is leveraged by serializers to reduce payload size while describing payload structure with +schema identifiers rather than full schemas. + +[Source code][source_code] | [Package (PyPi)][pypi] | [API reference documentation][api_reference] | [Samples][sr_samples] | [Changelog][change_log] + +## _Disclaimer_ + +_Azure SDK Python packages support for Python 2.7 has ended on 01 January 2022. For more information and questions, please refer to https://github.com/Azure/azure-sdk-for-python/issues/20691_ + +## Getting started + +### Install the package + +Install the Azure Schema Registry client library for Python with [pip][pip]: + +```Bash +pip install azure-schemaregistry +``` + +### Prerequisites: +To use this package, you must have: +* Azure subscription - [Create a free account][azure_sub] +* [Azure Schema Registry][schemaregistry_service] - [Here is the quickstart guide][quickstart_guide] to create a Schema Registry group using the Azure portal. +* Python 3.7 or later - [Install Python][python] + +### Authenticate the client + +Interaction with Schema Registry starts with an instance of SchemaRegistryClient class. The client constructor takes the fully qualified namespace and an Azure Active Directory credential: + +* The fully qualified namespace of the Schema Registry instance should follow the format: `<yournamespace>.servicebus.windows.net`. + +* An AAD credential that implements the [TokenCredential][token_credential_interface] protocol should be passed to the constructor. There are implementations of the `TokenCredential` protocol available in the +[azure-identity package][pypi_azure_identity]. To use the credential types provided by `azure-identity`, please install the Azure Identity client library for Python with [pip][pip]: + +```Bash +pip install azure-identity +``` + +* Additionally, to use the async API, you must first install an async transport, such as [aiohttp](https://pypi.org/project/aiohttp/): + +```Bash +pip install aiohttp +``` + +**Create client using the azure-identity library:** + +```python +from azure.schemaregistry import SchemaRegistryClient +from azure.identity import DefaultAzureCredential + +credential = DefaultAzureCredential() +# Namespace should be similar to: '<your-eventhub-namespace>.servicebus.windows.net/' +fully_qualified_namespace = '<< FULLY QUALIFIED NAMESPACE OF THE SCHEMA REGISTRY >>' +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace, credential) +``` + +## Key concepts + +- Schema: Schema is the organization or structure for data. More detailed information can be found [here][schemas]. + +- Schema Group: A logical group of similar schemas based on business criteria, which can hold multiple versions of a schema. More detailed information can be found [here][schema_groups]. + +- SchemaRegistryClient: `SchemaRegistryClient` provides the API for storing and retrieving schemas in schema registry. + +## Examples + +The following sections provide several code snippets covering some of the most common Schema Registry tasks, including: + +- [Register a schema](#register-a-schema) +- [Get the schema by id](#get-the-schema-by-id) +- [Get the schema by version](#get-the-schema-by-version) +- [Get the id of a schema](#get-the-id-of-a-schema) + +### Register a schema + +Use `SchemaRegistryClient.register_schema` method to register a schema. + +```python +import os + +from azure.identity import DefaultAzureCredential +from azure.schemaregistry import SchemaRegistryClient + +token_credential = DefaultAzureCredential() +fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE'] +group_name = os.environ['SCHEMA_REGISTRY_GROUP'] +name = "your-schema-name" +format = "Avro" +definition = """ +{"namespace": "example.avro", + "type": "record", + "name": "User", + "fields": [ + {"name": "name", "type": "string"}, + {"name": "favorite_number", "type": ["int", "null"]}, + {"name": "favorite_color", "type": ["string", "null"]} + ] +} +""" + +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential) +with schema_registry_client: + schema_properties = schema_registry_client.register_schema(group_name, name, definition, format) + id = schema_properties.id +``` + +### Get the schema by id + +Get the schema definition and its properties by schema id. + +```python +import os + +from azure.identity import DefaultAzureCredential +from azure.schemaregistry import SchemaRegistryClient + +token_credential = DefaultAzureCredential() +fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE'] +schema_id = 'your-schema-id' + +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential) +with schema_registry_client: + schema = schema_registry_client.get_schema(schema_id) + definition = schema.definition + properties = schema.properties +``` + +### Get the schema by version + +Get the schema definition and its properties by schema version. + +```python +import os + +from azure.identity import DefaultAzureCredential +from azure.schemaregistry import SchemaRegistryClient + +token_credential = DefaultAzureCredential() +fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE'] +group_name = os.environ["SCHEMAREGISTRY_GROUP"] +name = "your-schema-name" +version = int("<your schema version>") + +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential) +with schema_registry_client: + schema = schema_registry_client.get_schema(group_name=group_name, name=name, version=version) + definition = schema.definition + properties = schema.properties +``` + +### Get the id of a schema + +Get the schema id of a schema by schema definition and its properties. + +```python +import os + +from azure.identity import DefaultAzureCredential +from azure.schemaregistry import SchemaRegistryClient + +token_credential = DefaultAzureCredential() +fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE'] +group_name = os.environ['SCHEMA_REGISTRY_GROUP'] +name = "your-schema-name" +format = "Avro" +definition = """ +{"namespace": "example.avro", + "type": "record", + "name": "User", + "fields": [ + {"name": "name", "type": "string"}, + {"name": "favorite_number", "type": ["int", "null"]}, + {"name": "favorite_color", "type": ["string", "null"]} + ] +} +""" + +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential) +with schema_registry_client: + schema_properties = schema_registry_client.register_schema(group_name, name, definition, format) + id = schema_properties.id +``` + +## Troubleshooting + +### General + +Schema Registry clients raise exceptions defined in [Azure Core][azure_core]. + +### Logging +This library uses the standard +[logging][python_logging] library for logging. +Basic information about HTTP sessions (URLs, headers, etc.) is logged at INFO +level. + +Detailed DEBUG level logging, including request/response bodies and unredacted +headers, can be enabled on a client with the `logging_enable` argument: +```python +import sys +import logging +from azure.schemaregistry import SchemaRegistryClient +from azure.identity import DefaultAzureCredential + +# Create a logger for the SDK +logger = logging.getLogger('azure.schemaregistry') +logger.setLevel(logging.DEBUG) + +# Configure a console output +handler = logging.StreamHandler(stream=sys.stdout) +logger.addHandler(handler) + +credential = DefaultAzureCredential() +# This client will log detailed information about its HTTP sessions, at DEBUG level +schema_registry_client = SchemaRegistryClient("your_fully_qualified_namespace", credential, logging_enable=True) +``` + +Similarly, `logging_enable` can enable detailed logging for a single operation, +even when it isn't enabled for the client: +```py +schema_registry_client.get_schema(schema_id, logging_enable=True) +``` + +## Next steps + +### More sample code + +Please take a look at the [samples][sr_samples] directory for detailed examples of how to use this library to register and retrieve schema to/from Schema Registry. + +## Contributing + +This project welcomes contributions and suggestions. Most contributions require you to agree to a +Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us +the rights to use your contribution. For details, visit https://cla.microsoft.com. + +When you submit a pull request, a CLA-bot will automatically determine whether you need to provide +a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions +provided by the bot. You will only need to do this once across all repos using our CLA. + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. + +<!-- LINKS --> +[pip]: https://pypi.org/project/pip/ +[pypi]: https://pypi.org/project/azure-schemaregistry +[python]: https://www.python.org/downloads/ +[azure_core]: https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/README.md +[azure_sub]: https://azure.microsoft.com/free/ +[python_logging]: https://docs.python.org/3/library/logging.html +[sr_samples]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/schemaregistry/azure-schemaregistry/samples +[api_reference]: https://docs.microsoft.com/python/api/overview/azure/schemaregistry-readme +[source_code]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/schemaregistry/azure-schemaregistry +[change_log]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/schemaregistry/azure-schemaregistry/CHANGELOG.md +[schemas]: https://docs.microsoft.com/azure/event-hubs/schema-registry-overview#schemas +[schema_groups]: https://docs.microsoft.com/azure/event-hubs/schema-registry-overview#schema-groups +[schemaregistry_service]: https://aka.ms/schemaregistry +[schemaregistry_avroserializer_pypi]: https://pypi.org/project/azure-schemaregistry-avroserializer/ +[token_credential_interface]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/core/azure-core/azure/core/credentials.py +[pypi_azure_identity]: https://pypi.org/project/azure-identity/ +[quickstart_guide]: https://docs.microsoft.com/azure/event-hubs/create-schema-registry + +# Release History + +## 1.2.0 (2022-10-10) + +This version and all future versions will require Python 3.7+, Python 3.6 is no longer supported. + +### Features Added + +- `group_name`, `name`, and `version` have been added as optional parameters to the `get_schema` method on the sync and async `SchemaRegistryClient`. +- `version` has been added to `SchemaProperties`. + +### Other Changes + +- Updated azure-core minimum dependency to 1.24.0. +- Added distributed tracing support for sync and async `SchemaRegistryClient`. + +## 1.1.0 (2022-05-10) + +This version and all future versions will require Python 3.6+. Python 2.7 is no longer supported. + +### Features Added + +- `group_name` and `name` have been added as instance variables to `SchemaProperties`. + +### Other Changes + +- Updated azure-core minimum dependency to 1.23.0. + +## 1.0.0 (2021-11-10) + +**Note:** This is the first stable release of our efforts to create a user-friendly and Pythonic client library for Azure Schema Registry. + +### Features Added + +- `SchemaRegistryClient` is the top-level client class interacting with the Azure Schema Registry Service. It provides three methods: + - `register_schema`: Store schema in the service by providing schema group name, schema name, schema definition, and schema format. + - `get_schema`: Get schema definition and its properties by schema id. + - `get_schema_properties`: Get schema properties by providing schema group name, schema name, schema definition, and schema format. +- `SchemaProperties` has the following instance variables: `id` and `format`: + - The type of `format` has been changed from `str` to `SchemaFormat`. +- `Schema` has the following properties: `properties` and `definition`. +- `SchemaFormat` provides the schema format to be stored by the service. Currently, the only supported format is `Avro`. +- `api_version` has been added as a keyword arg to the sync and async `SchemaRegistryClient` constructors. + +### Breaking Changes + +- `version` instance variable in `SchemaProperties` has been removed. +- `schema_definition` instance variable in `Schema` has been renamed `definition`. +- `id` parameter in `get_schema` method on sync and async `SchemaRegistryClient` has been renamed `schema_id`. +- `schema_definition` parameter in `register_schema` and `get_schema_properties` methods on sync and async `SchemaRegistryClient` has been renamed `definition`. +- `serializer` namespace has been removed from `azure.schemaregistry`. + +## 1.0.0b3 (2021-10-05) + +### Breaking Changes + +- `get_schema_id` method on sync and async `SchemaRegistryClient` has been renamed `get_schema_properties`. +- `schema_id` parameter in `get_schema` method on sync and async `SchemaRegistryClient` has been renamed `id`. +- `register_schema` and `get_schema_properties` methods on sync and async `SchemaRegistryClient` now take in the following parameters in the given order: + - `group_name`, which has been renamed from `schema_group` + - `name`, which has been renamed from `schema_name` + - `schema_definition`, which has been renamed from `schema_content` + - `format`, which has been renamed from `serialization_type` +- `endpoint` parameter in `SchemaRegistryClient` constructor has been renamed `fully_qualified_namespace` +- `location` instance variable in `SchemaProperties` has been removed. +- `Schema` and `SchemaProperties` no longer have positional parameters, as they will not be constructed by the user. + +### Other Changes + +- Updated azure-core dependency to 1.19.0. +- Removed caching support of registered schemas so requests are sent to the service to register schemas, get schema properties, and get schemas. + +## 1.0.0b2 (2021-08-17) + +This version and all future versions will require Python 2.7 or Python 3.6+, Python 3.5 is no longer supported. + +### Features Added + +- Support caching of registered schemas and send requests to the service only if the cache does not have the looked-up schema/schema ID. + +## 1.0.0b1 (2020-09-09) + +Version 1.0.0b1 is the first preview of our efforts to create a user-friendly and Pythonic client library for Azure Schema Registry. + +**New features** + +- `SchemaRegistryClient` is the top-level client class interacting with the Azure Schema Registry Service. It provides three methods: + - `register_schema`: Store schema into the service. + - `get_schema`: Get schema content and its properties by schema id. + - `get_schema_id`: Get schema id and its properties by schema group, schema name, serialization type and schema content. + + +%package -n python3-azure-schemaregistry +Summary: Microsoft Azure Schema Registry Client Library for Python +Provides: python-azure-schemaregistry +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-azure-schemaregistry +# Azure Schema Registry client library for Python + +Azure Schema Registry is a schema repository service hosted by Azure Event Hubs, providing schema storage, versioning, +and management. The registry is leveraged by serializers to reduce payload size while describing payload structure with +schema identifiers rather than full schemas. + +[Source code][source_code] | [Package (PyPi)][pypi] | [API reference documentation][api_reference] | [Samples][sr_samples] | [Changelog][change_log] + +## _Disclaimer_ + +_Azure SDK Python packages support for Python 2.7 has ended on 01 January 2022. For more information and questions, please refer to https://github.com/Azure/azure-sdk-for-python/issues/20691_ + +## Getting started + +### Install the package + +Install the Azure Schema Registry client library for Python with [pip][pip]: + +```Bash +pip install azure-schemaregistry +``` + +### Prerequisites: +To use this package, you must have: +* Azure subscription - [Create a free account][azure_sub] +* [Azure Schema Registry][schemaregistry_service] - [Here is the quickstart guide][quickstart_guide] to create a Schema Registry group using the Azure portal. +* Python 3.7 or later - [Install Python][python] + +### Authenticate the client + +Interaction with Schema Registry starts with an instance of SchemaRegistryClient class. The client constructor takes the fully qualified namespace and an Azure Active Directory credential: + +* The fully qualified namespace of the Schema Registry instance should follow the format: `<yournamespace>.servicebus.windows.net`. + +* An AAD credential that implements the [TokenCredential][token_credential_interface] protocol should be passed to the constructor. There are implementations of the `TokenCredential` protocol available in the +[azure-identity package][pypi_azure_identity]. To use the credential types provided by `azure-identity`, please install the Azure Identity client library for Python with [pip][pip]: + +```Bash +pip install azure-identity +``` + +* Additionally, to use the async API, you must first install an async transport, such as [aiohttp](https://pypi.org/project/aiohttp/): + +```Bash +pip install aiohttp +``` + +**Create client using the azure-identity library:** + +```python +from azure.schemaregistry import SchemaRegistryClient +from azure.identity import DefaultAzureCredential + +credential = DefaultAzureCredential() +# Namespace should be similar to: '<your-eventhub-namespace>.servicebus.windows.net/' +fully_qualified_namespace = '<< FULLY QUALIFIED NAMESPACE OF THE SCHEMA REGISTRY >>' +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace, credential) +``` + +## Key concepts + +- Schema: Schema is the organization or structure for data. More detailed information can be found [here][schemas]. + +- Schema Group: A logical group of similar schemas based on business criteria, which can hold multiple versions of a schema. More detailed information can be found [here][schema_groups]. + +- SchemaRegistryClient: `SchemaRegistryClient` provides the API for storing and retrieving schemas in schema registry. + +## Examples + +The following sections provide several code snippets covering some of the most common Schema Registry tasks, including: + +- [Register a schema](#register-a-schema) +- [Get the schema by id](#get-the-schema-by-id) +- [Get the schema by version](#get-the-schema-by-version) +- [Get the id of a schema](#get-the-id-of-a-schema) + +### Register a schema + +Use `SchemaRegistryClient.register_schema` method to register a schema. + +```python +import os + +from azure.identity import DefaultAzureCredential +from azure.schemaregistry import SchemaRegistryClient + +token_credential = DefaultAzureCredential() +fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE'] +group_name = os.environ['SCHEMA_REGISTRY_GROUP'] +name = "your-schema-name" +format = "Avro" +definition = """ +{"namespace": "example.avro", + "type": "record", + "name": "User", + "fields": [ + {"name": "name", "type": "string"}, + {"name": "favorite_number", "type": ["int", "null"]}, + {"name": "favorite_color", "type": ["string", "null"]} + ] +} +""" + +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential) +with schema_registry_client: + schema_properties = schema_registry_client.register_schema(group_name, name, definition, format) + id = schema_properties.id +``` + +### Get the schema by id + +Get the schema definition and its properties by schema id. + +```python +import os + +from azure.identity import DefaultAzureCredential +from azure.schemaregistry import SchemaRegistryClient + +token_credential = DefaultAzureCredential() +fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE'] +schema_id = 'your-schema-id' + +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential) +with schema_registry_client: + schema = schema_registry_client.get_schema(schema_id) + definition = schema.definition + properties = schema.properties +``` + +### Get the schema by version + +Get the schema definition and its properties by schema version. + +```python +import os + +from azure.identity import DefaultAzureCredential +from azure.schemaregistry import SchemaRegistryClient + +token_credential = DefaultAzureCredential() +fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE'] +group_name = os.environ["SCHEMAREGISTRY_GROUP"] +name = "your-schema-name" +version = int("<your schema version>") + +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential) +with schema_registry_client: + schema = schema_registry_client.get_schema(group_name=group_name, name=name, version=version) + definition = schema.definition + properties = schema.properties +``` + +### Get the id of a schema + +Get the schema id of a schema by schema definition and its properties. + +```python +import os + +from azure.identity import DefaultAzureCredential +from azure.schemaregistry import SchemaRegistryClient + +token_credential = DefaultAzureCredential() +fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE'] +group_name = os.environ['SCHEMA_REGISTRY_GROUP'] +name = "your-schema-name" +format = "Avro" +definition = """ +{"namespace": "example.avro", + "type": "record", + "name": "User", + "fields": [ + {"name": "name", "type": "string"}, + {"name": "favorite_number", "type": ["int", "null"]}, + {"name": "favorite_color", "type": ["string", "null"]} + ] +} +""" + +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential) +with schema_registry_client: + schema_properties = schema_registry_client.register_schema(group_name, name, definition, format) + id = schema_properties.id +``` + +## Troubleshooting + +### General + +Schema Registry clients raise exceptions defined in [Azure Core][azure_core]. + +### Logging +This library uses the standard +[logging][python_logging] library for logging. +Basic information about HTTP sessions (URLs, headers, etc.) is logged at INFO +level. + +Detailed DEBUG level logging, including request/response bodies and unredacted +headers, can be enabled on a client with the `logging_enable` argument: +```python +import sys +import logging +from azure.schemaregistry import SchemaRegistryClient +from azure.identity import DefaultAzureCredential + +# Create a logger for the SDK +logger = logging.getLogger('azure.schemaregistry') +logger.setLevel(logging.DEBUG) + +# Configure a console output +handler = logging.StreamHandler(stream=sys.stdout) +logger.addHandler(handler) + +credential = DefaultAzureCredential() +# This client will log detailed information about its HTTP sessions, at DEBUG level +schema_registry_client = SchemaRegistryClient("your_fully_qualified_namespace", credential, logging_enable=True) +``` + +Similarly, `logging_enable` can enable detailed logging for a single operation, +even when it isn't enabled for the client: +```py +schema_registry_client.get_schema(schema_id, logging_enable=True) +``` + +## Next steps + +### More sample code + +Please take a look at the [samples][sr_samples] directory for detailed examples of how to use this library to register and retrieve schema to/from Schema Registry. + +## Contributing + +This project welcomes contributions and suggestions. Most contributions require you to agree to a +Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us +the rights to use your contribution. For details, visit https://cla.microsoft.com. + +When you submit a pull request, a CLA-bot will automatically determine whether you need to provide +a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions +provided by the bot. You will only need to do this once across all repos using our CLA. + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. + +<!-- LINKS --> +[pip]: https://pypi.org/project/pip/ +[pypi]: https://pypi.org/project/azure-schemaregistry +[python]: https://www.python.org/downloads/ +[azure_core]: https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/README.md +[azure_sub]: https://azure.microsoft.com/free/ +[python_logging]: https://docs.python.org/3/library/logging.html +[sr_samples]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/schemaregistry/azure-schemaregistry/samples +[api_reference]: https://docs.microsoft.com/python/api/overview/azure/schemaregistry-readme +[source_code]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/schemaregistry/azure-schemaregistry +[change_log]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/schemaregistry/azure-schemaregistry/CHANGELOG.md +[schemas]: https://docs.microsoft.com/azure/event-hubs/schema-registry-overview#schemas +[schema_groups]: https://docs.microsoft.com/azure/event-hubs/schema-registry-overview#schema-groups +[schemaregistry_service]: https://aka.ms/schemaregistry +[schemaregistry_avroserializer_pypi]: https://pypi.org/project/azure-schemaregistry-avroserializer/ +[token_credential_interface]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/core/azure-core/azure/core/credentials.py +[pypi_azure_identity]: https://pypi.org/project/azure-identity/ +[quickstart_guide]: https://docs.microsoft.com/azure/event-hubs/create-schema-registry + +# Release History + +## 1.2.0 (2022-10-10) + +This version and all future versions will require Python 3.7+, Python 3.6 is no longer supported. + +### Features Added + +- `group_name`, `name`, and `version` have been added as optional parameters to the `get_schema` method on the sync and async `SchemaRegistryClient`. +- `version` has been added to `SchemaProperties`. + +### Other Changes + +- Updated azure-core minimum dependency to 1.24.0. +- Added distributed tracing support for sync and async `SchemaRegistryClient`. + +## 1.1.0 (2022-05-10) + +This version and all future versions will require Python 3.6+. Python 2.7 is no longer supported. + +### Features Added + +- `group_name` and `name` have been added as instance variables to `SchemaProperties`. + +### Other Changes + +- Updated azure-core minimum dependency to 1.23.0. + +## 1.0.0 (2021-11-10) + +**Note:** This is the first stable release of our efforts to create a user-friendly and Pythonic client library for Azure Schema Registry. + +### Features Added + +- `SchemaRegistryClient` is the top-level client class interacting with the Azure Schema Registry Service. It provides three methods: + - `register_schema`: Store schema in the service by providing schema group name, schema name, schema definition, and schema format. + - `get_schema`: Get schema definition and its properties by schema id. + - `get_schema_properties`: Get schema properties by providing schema group name, schema name, schema definition, and schema format. +- `SchemaProperties` has the following instance variables: `id` and `format`: + - The type of `format` has been changed from `str` to `SchemaFormat`. +- `Schema` has the following properties: `properties` and `definition`. +- `SchemaFormat` provides the schema format to be stored by the service. Currently, the only supported format is `Avro`. +- `api_version` has been added as a keyword arg to the sync and async `SchemaRegistryClient` constructors. + +### Breaking Changes + +- `version` instance variable in `SchemaProperties` has been removed. +- `schema_definition` instance variable in `Schema` has been renamed `definition`. +- `id` parameter in `get_schema` method on sync and async `SchemaRegistryClient` has been renamed `schema_id`. +- `schema_definition` parameter in `register_schema` and `get_schema_properties` methods on sync and async `SchemaRegistryClient` has been renamed `definition`. +- `serializer` namespace has been removed from `azure.schemaregistry`. + +## 1.0.0b3 (2021-10-05) + +### Breaking Changes + +- `get_schema_id` method on sync and async `SchemaRegistryClient` has been renamed `get_schema_properties`. +- `schema_id` parameter in `get_schema` method on sync and async `SchemaRegistryClient` has been renamed `id`. +- `register_schema` and `get_schema_properties` methods on sync and async `SchemaRegistryClient` now take in the following parameters in the given order: + - `group_name`, which has been renamed from `schema_group` + - `name`, which has been renamed from `schema_name` + - `schema_definition`, which has been renamed from `schema_content` + - `format`, which has been renamed from `serialization_type` +- `endpoint` parameter in `SchemaRegistryClient` constructor has been renamed `fully_qualified_namespace` +- `location` instance variable in `SchemaProperties` has been removed. +- `Schema` and `SchemaProperties` no longer have positional parameters, as they will not be constructed by the user. + +### Other Changes + +- Updated azure-core dependency to 1.19.0. +- Removed caching support of registered schemas so requests are sent to the service to register schemas, get schema properties, and get schemas. + +## 1.0.0b2 (2021-08-17) + +This version and all future versions will require Python 2.7 or Python 3.6+, Python 3.5 is no longer supported. + +### Features Added + +- Support caching of registered schemas and send requests to the service only if the cache does not have the looked-up schema/schema ID. + +## 1.0.0b1 (2020-09-09) + +Version 1.0.0b1 is the first preview of our efforts to create a user-friendly and Pythonic client library for Azure Schema Registry. + +**New features** + +- `SchemaRegistryClient` is the top-level client class interacting with the Azure Schema Registry Service. It provides three methods: + - `register_schema`: Store schema into the service. + - `get_schema`: Get schema content and its properties by schema id. + - `get_schema_id`: Get schema id and its properties by schema group, schema name, serialization type and schema content. + + +%package help +Summary: Development documents and examples for azure-schemaregistry +Provides: python3-azure-schemaregistry-doc +%description help +# Azure Schema Registry client library for Python + +Azure Schema Registry is a schema repository service hosted by Azure Event Hubs, providing schema storage, versioning, +and management. The registry is leveraged by serializers to reduce payload size while describing payload structure with +schema identifiers rather than full schemas. + +[Source code][source_code] | [Package (PyPi)][pypi] | [API reference documentation][api_reference] | [Samples][sr_samples] | [Changelog][change_log] + +## _Disclaimer_ + +_Azure SDK Python packages support for Python 2.7 has ended on 01 January 2022. For more information and questions, please refer to https://github.com/Azure/azure-sdk-for-python/issues/20691_ + +## Getting started + +### Install the package + +Install the Azure Schema Registry client library for Python with [pip][pip]: + +```Bash +pip install azure-schemaregistry +``` + +### Prerequisites: +To use this package, you must have: +* Azure subscription - [Create a free account][azure_sub] +* [Azure Schema Registry][schemaregistry_service] - [Here is the quickstart guide][quickstart_guide] to create a Schema Registry group using the Azure portal. +* Python 3.7 or later - [Install Python][python] + +### Authenticate the client + +Interaction with Schema Registry starts with an instance of SchemaRegistryClient class. The client constructor takes the fully qualified namespace and an Azure Active Directory credential: + +* The fully qualified namespace of the Schema Registry instance should follow the format: `<yournamespace>.servicebus.windows.net`. + +* An AAD credential that implements the [TokenCredential][token_credential_interface] protocol should be passed to the constructor. There are implementations of the `TokenCredential` protocol available in the +[azure-identity package][pypi_azure_identity]. To use the credential types provided by `azure-identity`, please install the Azure Identity client library for Python with [pip][pip]: + +```Bash +pip install azure-identity +``` + +* Additionally, to use the async API, you must first install an async transport, such as [aiohttp](https://pypi.org/project/aiohttp/): + +```Bash +pip install aiohttp +``` + +**Create client using the azure-identity library:** + +```python +from azure.schemaregistry import SchemaRegistryClient +from azure.identity import DefaultAzureCredential + +credential = DefaultAzureCredential() +# Namespace should be similar to: '<your-eventhub-namespace>.servicebus.windows.net/' +fully_qualified_namespace = '<< FULLY QUALIFIED NAMESPACE OF THE SCHEMA REGISTRY >>' +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace, credential) +``` + +## Key concepts + +- Schema: Schema is the organization or structure for data. More detailed information can be found [here][schemas]. + +- Schema Group: A logical group of similar schemas based on business criteria, which can hold multiple versions of a schema. More detailed information can be found [here][schema_groups]. + +- SchemaRegistryClient: `SchemaRegistryClient` provides the API for storing and retrieving schemas in schema registry. + +## Examples + +The following sections provide several code snippets covering some of the most common Schema Registry tasks, including: + +- [Register a schema](#register-a-schema) +- [Get the schema by id](#get-the-schema-by-id) +- [Get the schema by version](#get-the-schema-by-version) +- [Get the id of a schema](#get-the-id-of-a-schema) + +### Register a schema + +Use `SchemaRegistryClient.register_schema` method to register a schema. + +```python +import os + +from azure.identity import DefaultAzureCredential +from azure.schemaregistry import SchemaRegistryClient + +token_credential = DefaultAzureCredential() +fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE'] +group_name = os.environ['SCHEMA_REGISTRY_GROUP'] +name = "your-schema-name" +format = "Avro" +definition = """ +{"namespace": "example.avro", + "type": "record", + "name": "User", + "fields": [ + {"name": "name", "type": "string"}, + {"name": "favorite_number", "type": ["int", "null"]}, + {"name": "favorite_color", "type": ["string", "null"]} + ] +} +""" + +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential) +with schema_registry_client: + schema_properties = schema_registry_client.register_schema(group_name, name, definition, format) + id = schema_properties.id +``` + +### Get the schema by id + +Get the schema definition and its properties by schema id. + +```python +import os + +from azure.identity import DefaultAzureCredential +from azure.schemaregistry import SchemaRegistryClient + +token_credential = DefaultAzureCredential() +fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE'] +schema_id = 'your-schema-id' + +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential) +with schema_registry_client: + schema = schema_registry_client.get_schema(schema_id) + definition = schema.definition + properties = schema.properties +``` + +### Get the schema by version + +Get the schema definition and its properties by schema version. + +```python +import os + +from azure.identity import DefaultAzureCredential +from azure.schemaregistry import SchemaRegistryClient + +token_credential = DefaultAzureCredential() +fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE'] +group_name = os.environ["SCHEMAREGISTRY_GROUP"] +name = "your-schema-name" +version = int("<your schema version>") + +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential) +with schema_registry_client: + schema = schema_registry_client.get_schema(group_name=group_name, name=name, version=version) + definition = schema.definition + properties = schema.properties +``` + +### Get the id of a schema + +Get the schema id of a schema by schema definition and its properties. + +```python +import os + +from azure.identity import DefaultAzureCredential +from azure.schemaregistry import SchemaRegistryClient + +token_credential = DefaultAzureCredential() +fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE'] +group_name = os.environ['SCHEMA_REGISTRY_GROUP'] +name = "your-schema-name" +format = "Avro" +definition = """ +{"namespace": "example.avro", + "type": "record", + "name": "User", + "fields": [ + {"name": "name", "type": "string"}, + {"name": "favorite_number", "type": ["int", "null"]}, + {"name": "favorite_color", "type": ["string", "null"]} + ] +} +""" + +schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential) +with schema_registry_client: + schema_properties = schema_registry_client.register_schema(group_name, name, definition, format) + id = schema_properties.id +``` + +## Troubleshooting + +### General + +Schema Registry clients raise exceptions defined in [Azure Core][azure_core]. + +### Logging +This library uses the standard +[logging][python_logging] library for logging. +Basic information about HTTP sessions (URLs, headers, etc.) is logged at INFO +level. + +Detailed DEBUG level logging, including request/response bodies and unredacted +headers, can be enabled on a client with the `logging_enable` argument: +```python +import sys +import logging +from azure.schemaregistry import SchemaRegistryClient +from azure.identity import DefaultAzureCredential + +# Create a logger for the SDK +logger = logging.getLogger('azure.schemaregistry') +logger.setLevel(logging.DEBUG) + +# Configure a console output +handler = logging.StreamHandler(stream=sys.stdout) +logger.addHandler(handler) + +credential = DefaultAzureCredential() +# This client will log detailed information about its HTTP sessions, at DEBUG level +schema_registry_client = SchemaRegistryClient("your_fully_qualified_namespace", credential, logging_enable=True) +``` + +Similarly, `logging_enable` can enable detailed logging for a single operation, +even when it isn't enabled for the client: +```py +schema_registry_client.get_schema(schema_id, logging_enable=True) +``` + +## Next steps + +### More sample code + +Please take a look at the [samples][sr_samples] directory for detailed examples of how to use this library to register and retrieve schema to/from Schema Registry. + +## Contributing + +This project welcomes contributions and suggestions. Most contributions require you to agree to a +Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us +the rights to use your contribution. For details, visit https://cla.microsoft.com. + +When you submit a pull request, a CLA-bot will automatically determine whether you need to provide +a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions +provided by the bot. You will only need to do this once across all repos using our CLA. + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. + +<!-- LINKS --> +[pip]: https://pypi.org/project/pip/ +[pypi]: https://pypi.org/project/azure-schemaregistry +[python]: https://www.python.org/downloads/ +[azure_core]: https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/README.md +[azure_sub]: https://azure.microsoft.com/free/ +[python_logging]: https://docs.python.org/3/library/logging.html +[sr_samples]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/schemaregistry/azure-schemaregistry/samples +[api_reference]: https://docs.microsoft.com/python/api/overview/azure/schemaregistry-readme +[source_code]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/schemaregistry/azure-schemaregistry +[change_log]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/schemaregistry/azure-schemaregistry/CHANGELOG.md +[schemas]: https://docs.microsoft.com/azure/event-hubs/schema-registry-overview#schemas +[schema_groups]: https://docs.microsoft.com/azure/event-hubs/schema-registry-overview#schema-groups +[schemaregistry_service]: https://aka.ms/schemaregistry +[schemaregistry_avroserializer_pypi]: https://pypi.org/project/azure-schemaregistry-avroserializer/ +[token_credential_interface]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/core/azure-core/azure/core/credentials.py +[pypi_azure_identity]: https://pypi.org/project/azure-identity/ +[quickstart_guide]: https://docs.microsoft.com/azure/event-hubs/create-schema-registry + +# Release History + +## 1.2.0 (2022-10-10) + +This version and all future versions will require Python 3.7+, Python 3.6 is no longer supported. + +### Features Added + +- `group_name`, `name`, and `version` have been added as optional parameters to the `get_schema` method on the sync and async `SchemaRegistryClient`. +- `version` has been added to `SchemaProperties`. + +### Other Changes + +- Updated azure-core minimum dependency to 1.24.0. +- Added distributed tracing support for sync and async `SchemaRegistryClient`. + +## 1.1.0 (2022-05-10) + +This version and all future versions will require Python 3.6+. Python 2.7 is no longer supported. + +### Features Added + +- `group_name` and `name` have been added as instance variables to `SchemaProperties`. + +### Other Changes + +- Updated azure-core minimum dependency to 1.23.0. + +## 1.0.0 (2021-11-10) + +**Note:** This is the first stable release of our efforts to create a user-friendly and Pythonic client library for Azure Schema Registry. + +### Features Added + +- `SchemaRegistryClient` is the top-level client class interacting with the Azure Schema Registry Service. It provides three methods: + - `register_schema`: Store schema in the service by providing schema group name, schema name, schema definition, and schema format. + - `get_schema`: Get schema definition and its properties by schema id. + - `get_schema_properties`: Get schema properties by providing schema group name, schema name, schema definition, and schema format. +- `SchemaProperties` has the following instance variables: `id` and `format`: + - The type of `format` has been changed from `str` to `SchemaFormat`. +- `Schema` has the following properties: `properties` and `definition`. +- `SchemaFormat` provides the schema format to be stored by the service. Currently, the only supported format is `Avro`. +- `api_version` has been added as a keyword arg to the sync and async `SchemaRegistryClient` constructors. + +### Breaking Changes + +- `version` instance variable in `SchemaProperties` has been removed. +- `schema_definition` instance variable in `Schema` has been renamed `definition`. +- `id` parameter in `get_schema` method on sync and async `SchemaRegistryClient` has been renamed `schema_id`. +- `schema_definition` parameter in `register_schema` and `get_schema_properties` methods on sync and async `SchemaRegistryClient` has been renamed `definition`. +- `serializer` namespace has been removed from `azure.schemaregistry`. + +## 1.0.0b3 (2021-10-05) + +### Breaking Changes + +- `get_schema_id` method on sync and async `SchemaRegistryClient` has been renamed `get_schema_properties`. +- `schema_id` parameter in `get_schema` method on sync and async `SchemaRegistryClient` has been renamed `id`. +- `register_schema` and `get_schema_properties` methods on sync and async `SchemaRegistryClient` now take in the following parameters in the given order: + - `group_name`, which has been renamed from `schema_group` + - `name`, which has been renamed from `schema_name` + - `schema_definition`, which has been renamed from `schema_content` + - `format`, which has been renamed from `serialization_type` +- `endpoint` parameter in `SchemaRegistryClient` constructor has been renamed `fully_qualified_namespace` +- `location` instance variable in `SchemaProperties` has been removed. +- `Schema` and `SchemaProperties` no longer have positional parameters, as they will not be constructed by the user. + +### Other Changes + +- Updated azure-core dependency to 1.19.0. +- Removed caching support of registered schemas so requests are sent to the service to register schemas, get schema properties, and get schemas. + +## 1.0.0b2 (2021-08-17) + +This version and all future versions will require Python 2.7 or Python 3.6+, Python 3.5 is no longer supported. + +### Features Added + +- Support caching of registered schemas and send requests to the service only if the cache does not have the looked-up schema/schema ID. + +## 1.0.0b1 (2020-09-09) + +Version 1.0.0b1 is the first preview of our efforts to create a user-friendly and Pythonic client library for Azure Schema Registry. + +**New features** + +- `SchemaRegistryClient` is the top-level client class interacting with the Azure Schema Registry Service. It provides three methods: + - `register_schema`: Store schema into the service. + - `get_schema`: Get schema content and its properties by schema id. + - `get_schema_id`: Get schema id and its properties by schema group, schema name, serialization type and schema content. + + +%prep +%autosetup -n azure-schemaregistry-1.2.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-azure-schemaregistry -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 1.2.0-1 +- Package Spec generated @@ -0,0 +1 @@ +187fc6579f2c238f9a97f35a5f88b98f azure-schemaregistry-1.2.0.zip |