%global _empty_manifest_terminate_build 0 Name: python-polymath-scalecodec Version: 4.0.0 Release: 1 Summary: Python SCALE Codec Library for Polymesh License: Apache Software License URL: https://github.com/polymathnetwork/py-scale-codec Source0: https://mirrors.nju.edu.cn/pypi/web/packages/80/53/b9908c261fa0a7a51955e02e2347208c98df97fe77ae234caa026eea6c97/polymath-scalecodec-4.0.0.tar.gz BuildArch: noarch Requires: python3-more-itertools Requires: python3-base58 Requires: python3-requests Requires: python3-coverage Requires: python3-pytest %description #### This project is forked from https://github.com/polkascan/py-scale-codec # Python Polymath SCALE Codec [![Latest Version](https://img.shields.io/pypi/v/polymath-scalecodec.svg)](https://pypi.org/project/polymath-scalecodec) [![Supported Python versions](https://img.shields.io/pypi/pyversions/polymath-scalecodec.svg)](https://pypi.org/project/polymath-scalecodec/) Python Polymath SCALE Codec Library ## Description Most of the data that the Substrate RPCs output is encoded with the SCALE Codec. This codec is used by the Substrate nodes' internal runtime. In order to get to meaningful data this data will need to be decoded. The Python SCALE Codec Library will specialize in this task. ## Documentation https://polkascan.github.io/py-scale-codec/ ## Installation ```bash pip install polymath-scalecodec ``` ## Examples Decode a SCALE-encoded Compact\ ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) RuntimeConfiguration().update_type_registry(load_type_registry_preset("kusama")) obj = ScaleDecoder.get_decoder_class('Compact', ScaleBytes("0x130080cd103d71bc22")) obj.decode() print(obj.value) ``` Encode to Compact\ ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) obj = ScaleDecoder.get_decoder_class('Compact') scale_data = obj.encode(2503000000000000000) print(scale_data) ``` Encode to Vec\ ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) value = ['test', 'vec'] obj = ScaleDecoder.get_decoder_class('Vec') scale_data = obj.encode(value) print(scale_data) ``` Add custom types to type registry ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) custom_types = { "types": { "MyCustomType": "u32", "CustomNextAuthority": { "type": "struct", "type_mapping": [ ["AuthorityId", "AuthorityId"], ["weight", "AuthorityWeight"] ] } } } RuntimeConfiguration().update_type_registry(custom_types) ``` Or from a custom JSON file ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) RuntimeConfiguration().update_type_registry(load_type_registry_file("/path/to/type_registry.json")) ``` ## Multiple runtime configurations By default a singleton is used to maintain the configuration, for multiple instances: ```python # Kusama runtime config runtime_config_kusama = RuntimeConfigurationObject() runtime_config_kusama.update_type_registry(load_type_registry_preset("default")) runtime_config_kusama.update_type_registry(load_type_registry_preset("kusama")) # Polkadot runtime config runtime_config_polkadot = RuntimeConfigurationObject() runtime_config_polkadot.update_type_registry(load_type_registry_preset("default")) runtime_config_polkadot.update_type_registry(load_type_registry_preset("polkadot")) # Decode extrinsic using Kusama runtime configuration extrinsic = ScaleDecoder.get_decoder_class( type_string='Extrinsic', data=ScaleBytes(extrinsic_data), metadata=metadata_decoder, runtime_config=runtime_config_kusama ) extrinsic.decode() ``` ## Using the type registry updater in your application To ensure the type registries are in sync with the current runtime of the blockchain, you can use the updater function in your application: ```python from scalecodec.updater import update_type_registries # Update type registries with latest version from Github try: update_type_registries() except Exception: pass ``` This will overwrite the type registry JSON files with the downloaded lastest versions from Github. In case of write permission restrictions it is also possible to always use the remote version on Github with the `use_remote_preset` kwarg: ```python # Polkadot runtime config runtime_config_polkadot = RuntimeConfigurationObject() runtime_config_polkadot.update_type_registry(load_type_registry_preset("default", use_remote_preset=True)) runtime_config_polkadot.update_type_registry(load_type_registry_preset("polkadot", use_remote_preset=True)) ``` ## License https://github.com/PolymathNetwork/py-scale-codec/blob/master/LICENSE %package -n python3-polymath-scalecodec Summary: Python SCALE Codec Library for Polymesh Provides: python-polymath-scalecodec BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-polymath-scalecodec #### This project is forked from https://github.com/polkascan/py-scale-codec # Python Polymath SCALE Codec [![Latest Version](https://img.shields.io/pypi/v/polymath-scalecodec.svg)](https://pypi.org/project/polymath-scalecodec) [![Supported Python versions](https://img.shields.io/pypi/pyversions/polymath-scalecodec.svg)](https://pypi.org/project/polymath-scalecodec/) Python Polymath SCALE Codec Library ## Description Most of the data that the Substrate RPCs output is encoded with the SCALE Codec. This codec is used by the Substrate nodes' internal runtime. In order to get to meaningful data this data will need to be decoded. The Python SCALE Codec Library will specialize in this task. ## Documentation https://polkascan.github.io/py-scale-codec/ ## Installation ```bash pip install polymath-scalecodec ``` ## Examples Decode a SCALE-encoded Compact\ ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) RuntimeConfiguration().update_type_registry(load_type_registry_preset("kusama")) obj = ScaleDecoder.get_decoder_class('Compact', ScaleBytes("0x130080cd103d71bc22")) obj.decode() print(obj.value) ``` Encode to Compact\ ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) obj = ScaleDecoder.get_decoder_class('Compact') scale_data = obj.encode(2503000000000000000) print(scale_data) ``` Encode to Vec\ ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) value = ['test', 'vec'] obj = ScaleDecoder.get_decoder_class('Vec') scale_data = obj.encode(value) print(scale_data) ``` Add custom types to type registry ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) custom_types = { "types": { "MyCustomType": "u32", "CustomNextAuthority": { "type": "struct", "type_mapping": [ ["AuthorityId", "AuthorityId"], ["weight", "AuthorityWeight"] ] } } } RuntimeConfiguration().update_type_registry(custom_types) ``` Or from a custom JSON file ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) RuntimeConfiguration().update_type_registry(load_type_registry_file("/path/to/type_registry.json")) ``` ## Multiple runtime configurations By default a singleton is used to maintain the configuration, for multiple instances: ```python # Kusama runtime config runtime_config_kusama = RuntimeConfigurationObject() runtime_config_kusama.update_type_registry(load_type_registry_preset("default")) runtime_config_kusama.update_type_registry(load_type_registry_preset("kusama")) # Polkadot runtime config runtime_config_polkadot = RuntimeConfigurationObject() runtime_config_polkadot.update_type_registry(load_type_registry_preset("default")) runtime_config_polkadot.update_type_registry(load_type_registry_preset("polkadot")) # Decode extrinsic using Kusama runtime configuration extrinsic = ScaleDecoder.get_decoder_class( type_string='Extrinsic', data=ScaleBytes(extrinsic_data), metadata=metadata_decoder, runtime_config=runtime_config_kusama ) extrinsic.decode() ``` ## Using the type registry updater in your application To ensure the type registries are in sync with the current runtime of the blockchain, you can use the updater function in your application: ```python from scalecodec.updater import update_type_registries # Update type registries with latest version from Github try: update_type_registries() except Exception: pass ``` This will overwrite the type registry JSON files with the downloaded lastest versions from Github. In case of write permission restrictions it is also possible to always use the remote version on Github with the `use_remote_preset` kwarg: ```python # Polkadot runtime config runtime_config_polkadot = RuntimeConfigurationObject() runtime_config_polkadot.update_type_registry(load_type_registry_preset("default", use_remote_preset=True)) runtime_config_polkadot.update_type_registry(load_type_registry_preset("polkadot", use_remote_preset=True)) ``` ## License https://github.com/PolymathNetwork/py-scale-codec/blob/master/LICENSE %package help Summary: Development documents and examples for polymath-scalecodec Provides: python3-polymath-scalecodec-doc %description help #### This project is forked from https://github.com/polkascan/py-scale-codec # Python Polymath SCALE Codec [![Latest Version](https://img.shields.io/pypi/v/polymath-scalecodec.svg)](https://pypi.org/project/polymath-scalecodec) [![Supported Python versions](https://img.shields.io/pypi/pyversions/polymath-scalecodec.svg)](https://pypi.org/project/polymath-scalecodec/) Python Polymath SCALE Codec Library ## Description Most of the data that the Substrate RPCs output is encoded with the SCALE Codec. This codec is used by the Substrate nodes' internal runtime. In order to get to meaningful data this data will need to be decoded. The Python SCALE Codec Library will specialize in this task. ## Documentation https://polkascan.github.io/py-scale-codec/ ## Installation ```bash pip install polymath-scalecodec ``` ## Examples Decode a SCALE-encoded Compact\ ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) RuntimeConfiguration().update_type_registry(load_type_registry_preset("kusama")) obj = ScaleDecoder.get_decoder_class('Compact', ScaleBytes("0x130080cd103d71bc22")) obj.decode() print(obj.value) ``` Encode to Compact\ ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) obj = ScaleDecoder.get_decoder_class('Compact') scale_data = obj.encode(2503000000000000000) print(scale_data) ``` Encode to Vec\ ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) value = ['test', 'vec'] obj = ScaleDecoder.get_decoder_class('Vec') scale_data = obj.encode(value) print(scale_data) ``` Add custom types to type registry ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) custom_types = { "types": { "MyCustomType": "u32", "CustomNextAuthority": { "type": "struct", "type_mapping": [ ["AuthorityId", "AuthorityId"], ["weight", "AuthorityWeight"] ] } } } RuntimeConfiguration().update_type_registry(custom_types) ``` Or from a custom JSON file ```python RuntimeConfiguration().update_type_registry(load_type_registry_preset("default")) RuntimeConfiguration().update_type_registry(load_type_registry_file("/path/to/type_registry.json")) ``` ## Multiple runtime configurations By default a singleton is used to maintain the configuration, for multiple instances: ```python # Kusama runtime config runtime_config_kusama = RuntimeConfigurationObject() runtime_config_kusama.update_type_registry(load_type_registry_preset("default")) runtime_config_kusama.update_type_registry(load_type_registry_preset("kusama")) # Polkadot runtime config runtime_config_polkadot = RuntimeConfigurationObject() runtime_config_polkadot.update_type_registry(load_type_registry_preset("default")) runtime_config_polkadot.update_type_registry(load_type_registry_preset("polkadot")) # Decode extrinsic using Kusama runtime configuration extrinsic = ScaleDecoder.get_decoder_class( type_string='Extrinsic', data=ScaleBytes(extrinsic_data), metadata=metadata_decoder, runtime_config=runtime_config_kusama ) extrinsic.decode() ``` ## Using the type registry updater in your application To ensure the type registries are in sync with the current runtime of the blockchain, you can use the updater function in your application: ```python from scalecodec.updater import update_type_registries # Update type registries with latest version from Github try: update_type_registries() except Exception: pass ``` This will overwrite the type registry JSON files with the downloaded lastest versions from Github. In case of write permission restrictions it is also possible to always use the remote version on Github with the `use_remote_preset` kwarg: ```python # Polkadot runtime config runtime_config_polkadot = RuntimeConfigurationObject() runtime_config_polkadot.update_type_registry(load_type_registry_preset("default", use_remote_preset=True)) runtime_config_polkadot.update_type_registry(load_type_registry_preset("polkadot", use_remote_preset=True)) ``` ## License https://github.com/PolymathNetwork/py-scale-codec/blob/master/LICENSE %prep %autosetup -n polymath-scalecodec-4.0.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-polymath-scalecodec -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Wed May 31 2023 Python_Bot - 4.0.0-1 - Package Spec generated