# packages

pkgId: f902c990f63f18ab369ecb0394918240af2dc1e15a6dd896e873e02740ea9c1d
name: python-pybind11
arch: src
version: 2.10.4
epoch: 0
release: 1
summary: Seamless operability between C++11 and Python
url: https://github.com/pybind/pybind11
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-75d50e66-8107-4aa2-80e2-6a4b191a12e8
location_href: 00009413-python-pybind11/python-pybind11-2.10.4-1.src.rpm
checksum_type: sha256
description:
  pybind11 can map the following core C++ features to Python:
  - Functions accepting and returning custom data structures per value,
    reference, or pointer
  - Instance methods and static methods
  - Overloaded functions
  - Instance attributes and static attributes
  - Arbitrary exception types
  - Enumerations
  - Callbacks
  - Iterators and ranges
  - Custom operators
  - Single and multiple inheritance
  - STL data structures
  - Smart pointers with reference counting like ``std::shared_ptr``
  - Internal references with correct reference counting
  - C++ classes with virtual (and pure virtual) methods can be extended
    in Python


pkgId: 40ff9ba65a42d559463730b0093ce9f24c5279b5d10149dd5290a6a815297e2c
name: python-pybtex-docutils
arch: src
version: 1.0.2
epoch: 0
release: 1
summary: A docutils backend for pybtex.
url: https://github.com/mcmtroffaes/pybtex-docutils
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-9138b2ca-3219-445d-bea4-8d6776b371b0
location_href: 00004642-python-pybtex-docutils/python-pybtex-docutils-1.0.2-1.src.rpm
checksum_type: sha256
description:
  The pybtex docutils backend allows `BibTeX <http://www.bibtex.org/>`_
  citations to be inserted into documentation generated by
  `docutils <https://docutils.sourceforge.io/>`_.
  * Download: https://pypi.org/project/pybtex-docutils/#files
  * Documentation: https://pybtex-docutils.readthedocs.io/en/latest/
  * Development: http://github.com/mcmtroffaes/pybtex-docutils/


pkgId: 4f553bbc5dada602f061d29d1993ec1ea0c139a3f692777f4126255399668a73
name: python-pycares-debuginfo
arch: aarch64
version: 4.3.0
epoch: 0
release: 1
summary: Debug information for package python-pycares
url: http://github.com/saghul/pycares
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-070b42f7-e67a-4779-837b-88c1e581d489
rpm_sourcerpm: python-pycares-4.3.0-1.src.rpm
location_href: 00004643-python-pycares/python-pycares-debuginfo-4.3.0-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-pycares.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: 0ba1bab8447ebf0e46f1dc911749e64b0c293f9fb16ec51914b14b8ecfee305e
name: python-pycares-debugsource
arch: aarch64
version: 4.3.0
epoch: 0
release: 1
summary: Debug sources for package python-pycares
url: http://github.com/saghul/pycares
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-070b42f7-e67a-4779-837b-88c1e581d489
rpm_sourcerpm: python-pycares-4.3.0-1.src.rpm
location_href: 00004643-python-pycares/python-pycares-debugsource-4.3.0-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-pycares.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: f4434325e7e5408fef5bffdcaa715777c1fee5a873f5c52765bc200b8142e7bb
name: python-pycdio
arch: src
version: 2.1.1
epoch: 0
release: 1
summary: Python OO interface to libcdio (CD Input and Control library)
url: http://www.gnu.org/software/libcdio
rpm_license: GPL
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-2e204722-2dfa-4aad-bef4-88adeda1c5f6
location_href: 00004644-python-pycdio/python-pycdio-2.1.1-1.src.rpm
checksum_type: sha256
description:
  pycdio is a Python interface to the *libcdio*, the CD Input and
  Control library http://www.gnu.org/software/libcdio
  You can get the source at the same place as libcdio:
  ftp://ftp.gnu.org:/pub/gnu/libcdio/
  The *pycdio* and *libcdio* libraries encapsulate CD-ROM reading and
  control. Python programs wishing to be oblivious of the OS- and
  device-dependent properties of a CD-ROM can use this library.


pkgId: d3974bf4d22a2f4e86bd0d25161691c9af50aa9fd29f88dcdb7c4ab1757b2086
name: python-pycdlib
arch: src
version: 1.14.0
epoch: 0
release: 1
summary: Pure python ISO manipulation library
url: http://github.com/clalancette/pycdlib
rpm_license: LGPLv2
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-04d43cbd-46dd-423e-85aa-02647a86e974
location_href: 00012663-python-pycdlib/python-pycdlib-1.14.0-1.src.rpm
checksum_type: sha256
description:
  PyCdlib is a pure python library to parse, write (master), and create ISO9660 files, suitable for writing to a CD or USB.

  The original ISO9660 (including ISO9660-1999) specification is supported, as well the El Torito, Joliet, Rock Ridge, and UDF extensions.

  Please see https://clalancette.github.io/pycdlib/ for much more documentation.


pkgId: a855f75b0593b06fb687cad469af7e309dda9f1c4f82a2b7bd2ac323add8f217
name: python-pychm
arch: src
version: 0.8.6
epoch: 0
release: 1
summary: Python package to handle CHM files
url: https://github.com/dottedmag/pychm
rpm_license: GPL
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-0b8fa9c2-dfd0-4f37-a603-305e560dc092
location_href: 00004647-python-pychm/python-pychm-0.8.6-1.src.rpm
checksum_type: sha256
description:
  PyCHM is a Python library to manipulate CHM files (Microsoft HTML Help).
  This library supports Python 2.7 and Python 3.5+. It is in a maintenance mode
  and accepts only security and bug fixes.


pkgId: 4a8faec5be357bca2a4024e0a13d1dcf97f3af080283fd1d9e53cf1ddec04afe
name: python-pyclipper
arch: src
version: 1.3.0.post4
epoch: 0
release: 1
summary: Cython wrapper for the C++ translation of the Angus Johnson's Clipper library (ver. 6.4.2)
url: https://github.com/greginvm/pyclipper
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c8e23165-ea0e-4a1d-bb2b-8415b8ef026d
location_href: 00004648-python-pyclipper/python-pyclipper-1.3.0.post4-1.src.rpm
checksum_type: sha256
description:
  Pyclipper is a Cython wrapper exposing public functions and classes of
  the C++ translation of the `Angus Johnson's Clipper library (ver.
  6.4.2) <http://www.angusj.com/delphi/clipper.php>`__.
  Pyclipper releases were tested with Python 2.7 and 3.4 on Linux (Ubuntu
  14.04, x64) and Windows (8.1, x64).
  Source code is available on
  `GitHub <https://github.com/fonttools/pyclipper>`__. The package is published on
  `PyPI <https://pypi.python.org/pypi/pyclipper>`__.


pkgId: 6369f896bf01f02e58180d6795753dc61c5fc2e8c34ecc6ebe3d004981c1905f
name: python-pyclipper-debuginfo
arch: aarch64
version: 1.3.0.post4
epoch: 0
release: 1
summary: Debug information for package python-pyclipper
url: https://github.com/greginvm/pyclipper
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-c8e23165-ea0e-4a1d-bb2b-8415b8ef026d
rpm_sourcerpm: python-pyclipper-1.3.0.post4-1.src.rpm
location_href: 00004648-python-pyclipper/python-pyclipper-debuginfo-1.3.0.post4-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-pyclipper.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: 74dc35a0a9ab4b2ccdd7cc2d53d89cbb4effb0bc0a469605ac8380a6a9d12e30
name: python-pyclipper-debugsource
arch: aarch64
version: 1.3.0.post4
epoch: 0
release: 1
summary: Debug sources for package python-pyclipper
url: https://github.com/greginvm/pyclipper
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-c8e23165-ea0e-4a1d-bb2b-8415b8ef026d
rpm_sourcerpm: python-pyclipper-1.3.0.post4-1.src.rpm
location_href: 00004648-python-pyclipper/python-pyclipper-debugsource-1.3.0.post4-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-pyclipper.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: 24bb9b1326971ff7e94fa9cadfce77350f126325ee5809358a25e845f57bdbf2
name: python-pycodestyle
arch: src
version: 2.10.0
epoch: 0
release: 1
summary: Python style guide checker
url: https://pycodestyle.pycqa.org/
rpm_license: Expat license
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-03666bcd-8a13-440e-8205-d0ce8d8725f9
location_href: 00008989-python-pycodestyle/python-pycodestyle-2.10.0-1.src.rpm
checksum_type: sha256
description:
  pycodestyle is a tool to check your Python code against some of the style
  conventions in `PEP 8`_.
      This package used to be called ``pep8`` but was renamed to ``pycodestyle``
      to reduce confusion. Further discussion can be found `in the issue where
      Guido requested this
      change <https://github.com/PyCQA/pycodestyle/issues/466>`_, or in the
      lightning talk at PyCon 2016 by @IanLee1521:
      `slides <https://speakerdeck.com/ianlee1521/pep8-vs-pep-8>`_
      `video <https://youtu.be/PulzIT8KYLk?t=36m>`_.


pkgId: 8d6c0b32d922d335ed8b52a3a9931968c716679c768bd8265c42628fffd04614
name: python-pycognito
arch: src
version: 2022.12.0
epoch: 0
release: 1
summary: Python class to integrate Boto3's Cognito client so it is easy to login users. With SRP support.
url: https://github.com/pvizeli/pycognito
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4f47936a-7e75-4529-b9a4-2837436dde29
location_href: 00012509-python-pycognito/python-pycognito-2022.12.0-1.src.rpm
checksum_type: sha256
description:
  Makes working with AWS Cognito easier for Python developers.



  - [Python Versions Supported](#python-versions-supported)
  - [Install](#install)
  - [Environment Variables](#environment-variables)
    - [COGNITO_JWKS](#cognito-jwks) (optional)
  - [Cognito Utility Class](#cognito-utility-class) `pycognito.Cognito`
    - [Cognito Methods](#cognito-methods)
      - [Register](#register)
      - [Authenticate](#authenticate)
      - [Admin Authenticate](#admin-authenticate)
      - [Initiate Forgot Password](#initiate-forgot-password)
      - [Confirm Forgot Password](#confirm-forgot-password)
      - [Change Password](#change-password)
      - [Confirm Sign Up](#confirm-sign-up)
      - [Update Profile](#update-profile)
      - [Send Verification](#send-verification)
      - [Get User Object](#get-user-object)
      - [Get User](#get-user)
      - [Get Users](#get-users)
      - [Get Group Object](#get-group-object)
      - [Get Group](#get-group)
      - [Get Groups](#get-groups)
      - [Check Token](#check-token)
      - [Verify Tokens](#verify-tokens)
      - [Logout](#logout)
      - [Associate Software Token](#associate-software-token)
      - [Verify Software Token](#verify-software-token)
      - [Set User MFA Preference](#set-user-mfa-preference)
      - [Respond to Software Token MFA challenge](#respond-to-software-token-mfa-challenge)
      - [Respond to SMS MFA challenge](#respond-to-sms-mfa-challenge)
  - [Cognito SRP Utility](#cognito-srp-utility)
    - [Using AWSSRP](#using-awssrp)
  - [SRP Requests Authenticator](#srp-requests-authenticator)



  - 3.6
  - 3.7
  - 3.8



  `pip install pycognito`





  **Optional:** This environment variable is a dictionary that represent the well known JWKs assigned to your user pool by AWS Cognito. You can find the keys for your user pool by substituting in your AWS region and pool id for the following example.
  `https://cognito-idp.{aws-region}.amazonaws.com/{user-pool-id}/.well-known/jwks.json`

  **Example Value (Not Real):**

  ```commandline
  COGNITO_JWKS={"keys": [{"alg": "RS256","e": "AQAB","kid": "123456789ABCDEFGHIJKLMNOP","kty": "RSA","n": "123456789ABCDEFGHIJKLMNOP","use": "sig"},{"alg": "RS256","e": "AQAB","kid": "123456789ABCDEFGHIJKLMNOP","kty": "RSA","n": "123456789ABCDEFGHIJKLMNOP","use": "sig"}]}
  ```





  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id','your-client-id',
      client_secret='optional-client-secret'
      username='optional-username',
      id_token='optional-id-token',
      refresh_token='optional-refresh-token',
      access_token='optional-access-token',
      access_key='optional-access-key',
      secret_key='optional-secret-key')
  ```



  - **user_pool_id:** Cognito User Pool ID
  - **client_id:** Cognito User Pool Application client ID
  - **client_secret:** App client secret (if app client is configured with client secret)
  - **username:** User Pool username
  - **id_token:** ID Token returned by authentication
  - **refresh_token:** Refresh Token returned by authentication
  - **access_token:** Access Token returned by authentication
  - **access_key:** AWS IAM access key
  - **secret_key:** AWS IAM secret key





  Used when you only need information about the user pool (ex. list users in the user pool)

  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id','your-client-id')
  ```



  Used when the user has not logged in yet. Start with these arguments when you plan to authenticate with either SRP (authenticate) or admin_authenticate (admin_initiate_auth).

  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id','your-client-id',
      username='bob')
  ```



  Used after the user has already authenticated and you need to build a new Cognito instance (ex. for use in a view).

  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id','your-client-id',
      id_token='your-id-token',
      refresh_token='your-refresh-token',
      access_token='your-access-token')

  u.verify_tokens() # See method doc below; may throw an exception
  ```



  After any authentication or other explicit verification of tokens, the following additional attributes will be available:

  - `id_claims` — A dict of verified claims from the id token
  - `access_claims` — A dict of verified claims from the access token





  Register a user to the user pool

  **Important:** The arguments for `set_base_attributes` and `add_custom_attributes` methods depend on your user pool's configuration, and make sure the client id (app id) used has write permissions for the attributes you are trying to create. Example, if you want to create a user with a given_name equal to Johnson make sure the client_id you're using has permissions to edit or create given_name for a user in the pool.

  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id', 'your-client-id')

  u.set_base_attributes(email='you@you.com', some_random_attr='random value')

  u.register('username', 'password')
  ```

  Register with custom attributes.

  Firstly, add custom attributes on 'General settings -> Attributes' page.
  Secondly, set permissions on 'Generals settings-> App clients-> Show details-> Set attribute read and write permissions' page.

  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id', 'your-client-id')

  u.set_base_attributes(email='you@you.com', some_random_attr='random value')

  u.add_custom_attributes(state='virginia', city='Centreville')

  u.register('username', 'password')
  ```



  - **username:** User Pool username
  - **password:** User Pool password
  - **attr_map:** Attribute map to Cognito's attributes



  Authenticates a user

  If this method call succeeds the instance will have the following attributes **id_token**, **refresh_token**, **access_token**, **expires_in**, **expires_datetime**, and **token_type**.

  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id','your-client-id',
      username='bob')

  u.authenticate(password='bobs-password')
  ```



  - **password:** - User's password



  Authenticate the user using admin super privileges

  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id','your-client-id',
      username='bob')

  u.admin_authenticate(password='bobs-password')
  ```

  - **password:** User's password



  Sends a verification code to the user to use to change their password.

  ```python
  u = Cognito('your-user-pool-id','your-client-id',
      username='bob')

  u.initiate_forgot_password()
  ```



  No arguments



  Allows a user to enter a code provided when they reset their password
  to update their password.

  ```python
  u = Cognito('your-user-pool-id','your-client-id',
      username='bob')

  u.confirm_forgot_password('your-confirmation-code','your-new-password')
  ```



  - **confirmation_code:** The confirmation code sent by a user's request
    to retrieve a forgotten password
  - **password:** New password



  Changes the user's password

  ```python
  from pycognito import Cognito



  u = Cognito('your-user-pool-id','your-client-id',
      id_token='id-token',refresh_token='refresh-token',
      access_token='access-token')

  u.change_password('previous-password','proposed-password')
  ```



  - **previous_password:** - User's previous password
  - **proposed_password:** - The password that the user wants to change to.



  Use the confirmation code that is sent via email or text to confirm the user's account

  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id','your-client-id')

  u.confirm_sign_up('users-conf-code',username='bob')
  ```



  - **confirmation_code:** Confirmation code sent via text or email
  - **username:** User's username



  Update the user's profile

  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id','your-client-id',
      id_token='id-token',refresh_token='refresh-token',
      access_token='access-token')

  u.update_profile({'given_name':'Edward','family_name':'Smith',},attr_map=dict())
  ```



  - **attrs:** Dictionary of attribute name, values
  - **attr_map:** Dictionary map from Cognito attributes to attribute names we would like to show to our users



  Send verification email or text for either the email or phone attributes.

  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id','your-client-id',
      id_token='id-token',refresh_token='refresh-token',
      access_token='access-token')

  u.send_verification(attribute='email')
  ```



  - **attribute:** - The attribute (email or phone) that needs to be verified



  Returns an instance of the specified user_class.

  ```python
  u = Cognito('your-user-pool-id','your-client-id',
      id_token='id-token',refresh_token='refresh-token',
      access_token='access-token')

  u.get_user_obj(username='bjones',
      attribute_list=[{'Name': 'string','Value': 'string'},],
      metadata={},
      attr_map={"given_name":"first_name","family_name":"last_name"}
      )
  ```



  - **username:** Username of the user
  - **attribute_list:** List of tuples that represent the user's attributes as returned by the admin_get_user or get_user boto3 methods
  - **metadata: (optional)** Metadata about the user
  - **attr_map: (optional)** Dictionary that maps the Cognito attribute names to what we'd like to display to the users



  Get all of the user's attributes. Gets the user's attributes using Boto3 and uses that info to create an instance of the user_class

  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id','your-client-id',
      username='bob')

  user = u.get_user(attr_map={"given_name":"first_name","family_name":"last_name"})
  ```



  - **attr_map:** Dictionary map from Cognito attributes to attribute names we would like to show to our users



  Get a list of the user in the user pool.

  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id','your-client-id')

  user = u.get_users(attr_map={"given_name":"first_name","family_name":"last_name"})
  ```



  - **attr_map:** Dictionary map from Cognito attributes to attribute names we would like to show to our users



  Returns an instance of the specified group_class.

  ```python
  u = Cognito('your-user-pool-id', 'your-client-id')

  group_data = {'GroupName': 'user_group', 'Description': 'description',
              'Precedence': 1}

  group_obj = u.get_group_obj(group_data)
  ```



  - **group_data:** Dictionary with group's attributes.



  Get all of the group's attributes. Returns an instance of the group_class.
  Requires developer credentials.

  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id','your-client-id')

  group = u.get_group(group_name='some_group_name')
  ```



  - **group_name:** Name of a group



  Get a list of groups in the user pool. Requires developer credentials.

  ```python
  from pycognito import Cognito

  u = Cognito('your-user-pool-id','your-client-id')

  groups = u.get_groups()
  ```



  Checks the exp attribute of the access_token and either refreshes the tokens by calling the renew_access_tokens method or does nothing. **IMPORTANT:** Access token is required

  ```python
  u = Cognito('your-user-pool-id','your-client-id',
      id_token='id-token',refresh_token='refresh-token',
      access_token='access-token')

  u.check_token()
  ```



  No arguments for check_token



  Verifies the current `id_token` and `access_token`.
  An exception will be thrown if they do not pass verification.
  It can be useful to call this method immediately after instantiation when you're providing externally-remembered tokens to the `Cognito()` constructor.
  Note that if you're calling `check_tokens()` after instantitation, you'll still want to call `verify_tokens()` afterwards it in case it did nothing.
  This method also ensures that the `id_claims` and `access_claims` attributes are set with the verified claims from each token.

  ```python
  u = Cognito('your-user-pool-id','your-client-id',
      id_token='id-token',refresh_token='refresh-token',
      access_token='access-token')

  u.check_tokens()  # Optional, if you want to maybe renew the tokens
  u.verify_tokens()
  ```



  No arguments for verify_tokens



  Logs the user out of all clients and removes the expires_in, expires_datetime, id_token, refresh_token, access_token, and token_type attributes.

  ```python
  from pycognito import Cognito



  u = Cognito('your-user-pool-id','your-client-id',
      id_token='id-token',refresh_token='refresh-token',
      access_token='access-token')

  u.logout()
  ```



  No arguments for logout



  Get the secret code to issue the software token MFA code.
  Begins setup of time-based one-time password (TOTP) multi-factor authentication (MFA) for a user.

  ```python
  from pycognito import Cognito



  u = Cognito('your-user-pool-id','your-client-id',
      id_token='id-token',refresh_token='refresh-token',
      access_token='access-token')

  secret_code = u.associate_software_token()

  ```



  No arguments for associate_software_token



  Verify the 6-digit code issued based on the secret code issued by associate_software_token. If this validation is successful, Cognito will enable Software token MFA.

  ```python
  from pycognito import Cognito



  u = Cognito('your-user-pool-id','your-client-id',
      id_token='id-token',refresh_token='refresh-token',
      access_token='access-token')

  secret_code = u.associate_software_token()

  code = input('Enter the 6-digit code.')
  device_name = input('Enter the device name')
  u.verify_software_token(code, device_name)
  ```



  - **code:** 6-digit code generated by the TOTP generator app
  - **device_name:** Name of a device



  Enable and prioritize Software Token MFA and SMS MFA.
  If both Software Token MFA and SMS MFA are invalid, the preference value will be ignored.

  ```python
  from pycognito import Cognito



  u = Cognito('your-user-pool-id','your-client-id',
      id_token='id-token',refresh_token='refresh-token',
      access_token='access-token')


  u.set_user_mfa_preference(True, False, "SMS")

  u.set_user_mfa_preference(False, True, "SOFTWARE_TOKEN")

  u.set_user_mfa_preference(True, True, "SOFTWARE_TOKEN")

  u.set_user_mfa_preference(False, False)
  ```



  - **sms_mfa:** SMS MFA enabled / disabled (bool)
  - **software_token_mfa:** Software Token MFA enabled / disabled (bool)
  - **preferred:** Which is the priority, SMS or Software Token? The expected value is "SMS" or "SOFTWARE_TOKEN". However, it is not needed only if both of the previous arguments are False.



  Responds when a Software Token MFA challenge is requested at login.

  ```python
  from pycognito import Cognito
  from pycognito.exceptions import SoftwareTokenMFAChallengeException



  u = Cognito('your-user-pool-id','your-client-id',
      username='bob')

  try:
      u.authenticate(password='bobs-password')
  except SoftwareTokenMFAChallengeException as error:
      code = input('Enter the 6-digit code generated by the TOTP generator (such as Google Authenticator).')
      u.respond_to_software_token_mfa_challenge(code)
  ```

  When recreating a Cognito instance

  ```python
  from pycognito import Cognito
  from pycognito.exceptions import SoftwareTokenMFAChallengeException



  u = Cognito('your-user-pool-id','your-client-id',
      username='bob')

  try:
      u.authenticate(password='bobs-password')
  except SoftwareTokenMFAChallengeException as error:
      mfa_tokens = error.get_tokens()

  u = Cognito('your-user-pool-id','your-client-id',
      username='bob')
  code = input('Enter the 6-digit code generated by the TOTP generator (such as Google Authenticator).')
  u.respond_to_software_token_mfa_challenge(code, mfa_tokens)

  ```



  - **code:** 6-digit code generated by the TOTP generator app
  - **mfa_tokens:** mfa_token stored in MFAChallengeException. Not required if you have not regenerated the Cognito instance.



  Responds when a SMS MFA challenge is requested at login.

  ```python
  from pycognito import Cognito
  from pycognito.exceptions import SMSMFAChallengeException



  u = Cognito('your-user-pool-id','your-client-id',
      username='bob')

  try:
      u.authenticate(password='bobs-password')
  except SMSMFAChallengeException as error:
      code = input('Enter the 6-digit code you received by SMS.')
      u.respond_to_sms_mfa_challenge(code)
  ```

  When recreating a Cognito instance

  ```python
  from pycognito import Cognito
  from pycognito.exceptions import SMSMFAChallengeException



  u = Cognito('your-user-pool-id','your-client-id',
      username='bob')

  try:
      u.authenticate(password='bobs-password')
  except SMSMFAChallengeException as error:
      mfa_tokens = error.get_tokens()

  u = Cognito('your-user-pool-id','your-client-id',
      username='bob')
  code = input('Enter the 6-digit code generated by the TOTP generator (such as Google Authenticator).')
  u.respond_to_sms_mfa_challenge(code, mfa_tokens)

  ```



  - **code:** 6-digit code you received by SMS
  - **mfa_tokens:** mfa_token stored in MFAChallengeException. Not required if you have not regenerated the Cognito instance.



  The `AWSSRP` class is used to perform [SRP(Secure Remote Password protocol)](https://www.ietf.org/rfc/rfc2945.txt) authentication.
  This is the preferred method of user authentication with AWS Cognito.
  The process involves a series of authentication challenges and responses, which if successful,
  results in a final response that contains ID, access and refresh tokens.



  The `AWSSRP` class takes a username, password, cognito user pool id, cognito app id, an optional
  client secret (if app client is configured with client secret), an optional pool_region or `boto3` client.
  Afterwards, the `authenticate_user` class method is used for SRP authentication.

  ```python
  import boto3
  from pycognito.aws_srp import AWSSRP

  client = boto3.client('cognito-idp')
  aws = AWSSRP(username='username', password='password', pool_id='user_pool_id',
               client_id='client_id', client=client)
  tokens = aws.authenticate_user()
  ```



  `pycognito.utils.RequestsSrpAuth` is a [Requests](https://docs.python-requests.org/en/latest/)
  authentication plugin to automatically populate an HTTP header with a Cognito token. By default, it'll populate
  the `Authorization` header using the Cognito Access Token as a `bearer` token.

  `RequestsSrpAuth` handles fetching new tokens using the refresh tokens.



  ```python
  import requests
  from pycognito.utils import RequestsSrpAuth

  auth = RequestsSrpAuth(
    username='myusername',
    password='secret',
    user_pool_id='eu-west-1_1234567',
    client_id='4dn6jbcbhqcofxyczo3ms9z4cc',
    user_pool_region='eu-west-1',
  )

  response = requests.get('http://test.com', auth=auth)
  ```


pkgId: 724e501f2c135c2dbb0ffa512facf66aab41bbe0956f0e7dcd67f55134ebdaf5
name: python-pycoingecko
arch: src
version: 3.1.0
epoch: 0
release: 1
summary: Python wrapper around the CoinGecko API
url: https://github.com/man-c/pycoingecko
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-126450e9-354b-4e4b-82be-64678e611188
location_href: 00004650-python-pycoingecko/python-pycoingecko-3.1.0-1.src.rpm
checksum_type: sha256
description:
  [![PyPi Version](https://img.shields.io/pypi/v/pycoingecko.svg)](https://pypi.python.org/pypi/pycoingecko/)
  ![GitHub](https://img.shields.io/github/license/man-c/pycoingecko)

  Python3 wrapper around the [CoinGecko](https://www.coingecko.com/) API (V3)


  PyPI
  ```bash
  pip install -U pycoingecko
  ```
  or from source
  ```bash
  git clone https://github.com/man-c/pycoingecko.git
  cd pycoingecko
  python3 setup.py install
  ```



  For **free API**:
  ```python
  from pycoingecko import CoinGeckoAPI
  cg = CoinGeckoAPI()
  ```

  For users with **Pro API** Key:
  ```python
  from pycoingecko import CoinGeckoAPI
  cg = pycoingecko.CoinGeckoAPI(api_key='YOUR_API_KEY')
  ```


  The required parameters for each endpoint are defined as required (mandatory) parameters for the corresponding functions.\
  **Any optional parameters** can be passed using same names, as defined in CoinGecko API doc (https://www.coingecko.com/en/api/documentation).

  For any parameter:
  - ***Lists** are supported as input for multiple-valued comma-separated parameters\
    (e.g. see /simple/price usage examples).*
  - ***Booleans** are supported as input for boolean type parameters; they can be `str` ('true', 'false'') or `bool` (`True`, `False`)\
    (e.g. see /simple/price usage examples).*

  Usage examples:
  ```python

  >>> cg.get_price(ids='bitcoin', vs_currencies='usd')
  {'bitcoin': {'usd': 3462.04}}

  >>> cg.get_price(ids='bitcoin,litecoin,ethereum', vs_currencies='usd')

  >>> cg.get_price(ids=['bitcoin', 'litecoin', 'ethereum'], vs_currencies='usd')
  {'bitcoin': {'usd': 3461.27}, 'ethereum': {'usd': 106.92}, 'litecoin': {'usd': 32.72}}

  >>> cg.get_price(ids='bitcoin,litecoin,ethereum', vs_currencies='usd,eur')

  >>> cg.get_price(ids=['bitcoin', 'litecoin', 'ethereum'], vs_currencies=['usd', 'eur'])
  {'bitcoin': {'usd': 3459.39, 'eur': 3019.33}, 'ethereum': {'usd': 106.91, 'eur': 93.31}, 'litecoin': {'usd': 32.72, 'eur': 28.56}}


  >>> cg.get_price(ids='bitcoin', vs_currencies='usd', include_market_cap='true', include_24hr_vol='true', include_24hr_change='true', include_last_updated_at='true')
  {'bitcoin': {'usd': 3458.74, 'usd_market_cap': 60574330199.29028, 'usd_24h_vol': 4182664683.6247883, 'usd_24h_change': 1.2295378479069035, 'last_updated_at': 1549071865}}

  >>> cg.get_price(ids='bitcoin', vs_currencies='usd', include_market_cap=True, include_24hr_vol=True, include_24hr_change=True, include_last_updated_at=True)
  {'bitcoin': {'usd': 3458.74, 'usd_market_cap': 60574330199.29028, 'usd_24h_vol': 4182664683.6247883, 'usd_24h_change': 1.2295378479069035, 'last_updated_at': 1549071865}}
  ```


  https://www.coingecko.com/en/api/documentation


  > :warning: **Endpoints documentation**: To make sure that you are using properly each endpoint you should check the [API documentation](https://www.coingecko.com/en/api/documentation). Return behaviour and parameters of the endpoints, such as *pagination*, might have changed. <br> Any **optional parameters** defined in CoinGecko API doc can be passed as function parameters using same parameters names with the API *(see Examples above)*.
  <details><summary>ping</summary>
  <p>

  * **/ping** (Check API server status)
    ```python
    cg.ping()
    ```
  </details>

  <details><summary>simple</summary>
  <p>

  * **/simple/price** (Get the current price of any cryptocurrencies in any other supported currencies that you need)
    ```python
    cg.get_price()
    ```
  * **/simple/token_price/{id}** (Get current price of tokens (using contract addresses) for a given platform in any other currency that you need)
    ```python
    cg.get_token_price()
    ```
  * **/simple/supported_vs_currencies** (Get list of supported_vs_currencies)
    ```python
    cg.get_supported_vs_currencies()
    ```
  </details>

  <details><summary>coins</summary>
  <p>

  * **/coins/list** (List all supported coins id, name and symbol (no pagination required))
    ```python
    cg.get_coins_list()
    ```

  * **/coins/markets** (List all supported coins price, market cap, volume, and market related data)
    ```python
    cg.get_coins_markets()
    ```
  * **/coins/{id}** (Get current data (name, price, market, ... including exchange tickers) for a coin)
    ```python
    cg.get_coin_by_id()
    ```
  * **/coins/{id}/tickers** (Get coin tickers (paginated to 100 items))
    ```python
    cg.get_coin_ticker_by_id()
    ```
  * **/coins/{id}/history** (Get historical data (name, price, market, stats) at a given date for a coin)
    ```python
    cg.get_coin_history_by_id()
    ```
  * **/coins/{id}/market_chart** (Get historical market data include price, market cap, and 24h volume (granularity auto))
    ```python
    cg.get_coin_market_chart_by_id()
    ```
  * **/coins/{id}/market_chart/range** (Get historical market data include price, market cap, and 24h volume within a range of timestamp (granularity auto))
    ```python
    cg.get_coin_market_chart_range_by_id()
    ```

  [//]: # (* **/coins/{id}/status_updates** &#40;Get status updates for a given coin &#40;beta&#41;&#41;)

  [//]: # (  ```python)

  [//]: # (  cg.get_coin_status_updates_by_id&#40;&#41;)

  [//]: # (  ```)
  * **/coins/{id}/ohlc** (Get coin's OHLC (beta))
    ```python
    cg.get_coin_ohlc_by_id()
    ```
  </details>

  <details><summary>contract</summary>
  <p>

  * **/coins/{id}/contract/{contract_address}** (Get coin info from contract address)
    ```python
    cg.get_coin_info_from_contract_address_by_id()
    ```
  * **/coins/{id}/contract/{contract_address}/market_chart/** (Get historical market data include price, market cap, and 24h volume (granularity auto) from a contract address)
    ```python
    cg.get_coin_market_chart_from_contract_address_by_id()
    ```
  * **/coins/{id}/contract/{contract_address}/market_chart/range** (Get historical market data include price, market cap, and 24h volume within a range of timestamp (granularity auto) from a contract address)
    ```python
    cg.get_coin_market_chart_range_from_contract_address_by_id()
    ```
  </details>

  <details><summary>asset_platforms</summary>
  <p>

  * **/asset_platforms** (List all asset platforms (Blockchain networks))
    ```python
    cg.get_asset_platforms()
    ```
  </details>

  <details><summary>categories</summary>
  <p>

  * **/coins/categories/list** (List all categories)
    ```python
    cg.get_coins_categories_list()
    ```
  * **coins/categories** (List all categories with market data)
    ```python
    cg.get_coins_categories()
    ```
  </details>

  <details><summary>exchanges</summary>
  <p>

  * **/exchanges** (List all exchanges)
    ```python
    cg.get_exchanges_list()
    ```
  * **/exchanges/list** (List all supported markets id and name (no pagination required))
    ```python
    cg.get_exchanges_id_name_list()
    ```
  * **/exchanges/{id}** (Get exchange volume in BTC and top 100 tickers only)
    ```python
    cg.get_exchanges_by_id()
    ```
  * **/exchanges/{id}/tickers** (Get exchange tickers (paginated, 100 tickers per page))
    ```python
    cg.get_exchanges_tickers_by_id()
    ```

  [//]: # (* **/exchanges/{id}/status_updates** &#40;Get status updates for a given exchange &#40;beta&#41;&#41;)

  [//]: # (  ```python)

  [//]: # (  cg.get_exchanges_status_updates_by_id&#40;&#41;)

  [//]: # (  ```)
  * **/exchanges/{id}/volume_chart** (Get volume_chart data for a given exchange)
    ```python
    cg.get_exchanges_volume_chart_by_id()
    ```
  </details>

  [//]: # (<details><summary>finance</summary>)

  [//]: # (<p>)

  [//]: # ()
  [//]: # (* **/finance_platforms** &#40;List all finance platforms&#41;)

  [//]: # (  ```python)

  [//]: # (  cg.get_finance_platforms&#40;&#41;)

  [//]: # (  ```)

  [//]: # (* **/finance_products** &#40;List all finance products&#41;)

  [//]: # (  ```python)

  [//]: # (  cg.get_finance_products&#40;&#41;)

  [//]: # (  ```)

  [//]: # (</details>)

  <details><summary>indexes</summary>
  <p>

  * **/indexes** (List all market indexes)
  ```python
  cg.get_indexes()
  ```
  * **/indexes/{market_id}/{id}** (Get market index by market id and index id)
  ```python
  cg.get_indexes_by_market_id_and_index_id()
  ```
  * **/indexes/list** (List market indexes id and name)
  ```python
  cg.get_indexes_list()
  ```
  </details>

  <details><summary>derivatives</summary>
  <p>

  * **/derivatives** (List all derivative tickers)
    ```python
    cg.get_derivatives()
    ```
  * **/derivatives/exchanges** (List all derivative exchanges)
    ```python
    cg.get_derivatives_exchanges()
    ```
  * **/derivatives/exchanges/{id}** (Show derivative exchange data)
    ```python
    cg.get_derivatives_exchanges_by_id()
    ```
  * **/derivatives/exchanges/list** (List all derivative exchanges name and identifier)
    ```python
    cg.get_derivatives_exchanges_list()
    ```
  </details>

  <details><summary>nfts (beta)</summary>
  <p>

  * **/nfts/list** (List all supported NFT ids, paginated by 100 items per page, paginated to 100 items)
    ```python
    cg.get_nfts_list()
    ```
  * **/nfts/{id}** (Get current data (name, price_floor, volume_24h ...) for an NFT collection. native_currency (string) is only a representative of the currency.)
    ```python
    cg.get_nfts_by_id()
    ```
  * **/nfts/{asset_platform_id}/contract/{contract_address}** (Get current data (name, price_floor, volume_24h ...) for an NFT collection. native_currency (string) is only a representative of the currency)
    ```python
    cg.get_nfts_collection_by_asset_platform_id_and_contract_address()
    ```
  </details>

  [//]: # (<details><summary>status_updates</summary>)

  [//]: # (<p>)

  [//]: # ()
  [//]: # (* **/status_updates** &#40;List all status_updates with data &#40;description, category, created_at, user, user_title and pin&#41;&#41;)

  [//]: # (  ```python)

  [//]: # (  cg.get_status_updates&#40;&#41;)

  [//]: # (  ```)

  [//]: # (</details>)

  [//]: # (<details><summary>events</summary>)

  [//]: # (<p>)

  [//]: # ()
  [//]: # (* **/events** &#40;Get events, paginated by 100&#41;)

  [//]: # (  ```python)

  [//]: # (  cg.get_events&#40;&#41;)

  [//]: # (  ```)

  [//]: # (* **/events/countries** &#40;Get list of event countries&#41;)

  [//]: # (  ```python)

  [//]: # (  cg.get_events_countries&#40;&#41;)

  [//]: # (  ```)

  [//]: # (* **/events/types** &#40;Get list of events types&#41;)

  [//]: # (  ```python)

  [//]: # (  cg.get_events_types&#40;&#41;)

  [//]: # (  ```)

  [//]: # (</details>)

  <details><summary>exchange_rates</summary>
  <p>

  * **/exchange_rates** (Get BTC-to-Currency exchange rates)
    ```python
    cg.get_exchange_rates()
    ```
  </details>

  <details><summary>search</summary>
  <p>

  * **/search** (Search for coins, categories and markets on CoinGecko)
    ```python
    cg.search()
    ```
  </details>

  <details><summary>trending</summary>
  <p>

  * **/search/trending** (Get trending search coins (Top-7) on CoinGecko in the last 24 hours)
    ```python
    cg.get_search_trending()
    ```
  </details>

  <details><summary>global</summary>
  <p>

    - **/global** (Get cryptocurrency global data)
      ```python
      cg.get_global()
      ```
    - **/global/decentralized_finance_defi** (Get cryptocurrency global decentralized finance(defi) data)
      ```python
      cg.get_global_decentralized_finance_defi()
      ```
  </details>

  <details><summary>companies (beta)</summary>
  <p>

    - **/companies/public_treasury/{coin_id}** (Get public companies data)
      ```python
      cg.get_companies_public_treasury_by_coin_id()
      ```
  </details>




  Install required packages for testing using:
  ```bash
  pip install pytest responses
  ```



  Run unit tests with:

  ```

  pytest tests
  ```


  [MIT](https://choosealicense.com/licenses/mit/)


pkgId: 2e72da57087f7ad2bf2d79277027993cd7bb4a217949959492bc1a4c3a58db84
name: python-pycotap
arch: src
version: 1.2.2
epoch: 0
release: 1
summary: A tiny test runner that outputs TAP results to standard output.
url: https://el-tramo.be/pycotap
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-3e3e206d-839c-4705-9b0e-199a4c856c74
location_href: 00004654-python-pycotap/python-pycotap-1.2.2-1.src.rpm
checksum_type: sha256
description:
  `pycotap` is a simple Python test runner for ``unittest`` that outputs
  `Test Anything Protocol <http://testanything.org>`_ results directly to standard output.

  Contrary to other TAP runners for Python, ``pycotap`` ...

  - ... prints TAP (and *only* TAP) to standard output instead of to a separate file,
    allowing you to pipe it directly to TAP pretty printers and processors
    (such as the ones listed on
    `the tape page <https://www.npmjs.com/package/tape#pretty-reporters>`_). By
    piping it to other consumers, you can avoid the need to add
    specific test runners to your test code. Since the TAP results
    are printed as they come in, the consumers can directly display results while
    the tests are run.

  - ... only contains a TAP reporter, so no parsers, no frameworks, no dependencies, ...

  - ... is configurable: you can choose how you want the test output and test result
    diagnostics to end up in your TAP output (as TAP diagnostics, YAML blocks, or
    attachments). The defaults are optimized for a `Jenkins <http://jenkins-ci.org>`_ based
    flow.

  Documentation and examples can be found on `the pycotap page
  <https://el-tramo.be/pycotap>`_.


pkgId: 51934eb6519d8dcf391eff3b113572219339d50c31f9174b2b651e7b62ae4741
name: python-pycountry
arch: src
version: 22.3.5
epoch: 0
release: 1
summary: ISO country, subdivision, language, currency and script definitions and their translations
url: https://github.com/flyingcircusio/pycountry
rpm_license: LGPL 2.1
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-81e6cd60-be5d-42c0-8510-c86edfc05871
location_href: 00004655-python-pycountry/python-pycountry-22.3.5-1.src.rpm
checksum_type: sha256
description:
  pycountry provides the ISO databases for the standards:
  * `639-3 <https://en.wikipedia.org/wiki/ISO_639-3>`_ Languages
  * `3166 <https://en.wikipedia.org/wiki/ISO_3166>`_ Countries
  * `3166-3 <https://en.wikipedia.org/wiki/ISO_3166-3>`_ Deleted countries
  * `3166-2 <https://en.wikipedia.org/wiki/ISO_3166-2>`_ Subdivisions of countries
  * `4217 <https://en.wikipedia.org/wiki/ISO_4217>`_ Currencies
  * `15924 <https://en.wikipedia.org/wiki/ISO_15924>`_ Scripts
  The package includes a copy from Debian's `pkg-isocodes
  <https://salsa.debian.org/iso-codes-team/iso-codes>`_ and makes the data
  accessible through a Python API.
  Translation files for the various strings are included as well.


pkgId: 35217d0af763e607e2b68e3727b1ede4b9c2f1b7a4115524fc8f7c4190a611ba
name: python-pycountry-convert
arch: src
version: 0.7.2
epoch: 0
release: 1
summary: Extension of Python package pycountry providing conversion functions.
url: https://github.com/TuneLab/pycountry-convert
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8f9009e3-8cfd-43bb-b36b-ffed235b227e
location_href: 00010508-python-pycountry-convert/python-pycountry-convert-0.7.2-1.src.rpm
checksum_type: sha256
description:
  Extension of Python package `pycountry <https://pypi.python.org/pypi/pycountry>`_ providing conversion functions.


pkgId: cc89b57406df73fd7b54c583630f708cc92fa8d083aefeabd2843eb87b61e585
name: python-pycparser
arch: src
version: 2.21
epoch: 0
release: 1
summary: C parser in Python
url: https://github.com/eliben/pycparser
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-9bd97843-4afc-46c5-a2c5-0753c75a1a30
location_href: 00008910-python-pycparser/python-pycparser-2.21-1.src.rpm
checksum_type: sha256
description:
  pycparser is a complete parser of the C language, written in
          pure Python using the PLY parsing library.
          It parses C code into an AST and can serve as a front-end for
          C compilers or analysis tools.


pkgId: fd1952b8d771a6ae34a29b175b850df1832db59e2ccc4e84ce273fa173f43efe
name: python-pycryptodome
arch: src
version: 3.17
epoch: 0
release: 1
summary: Cryptographic library for Python
url: https://www.pycryptodome.org
rpm_license: BSD, Public Domain
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-33a3894b-e3aa-42ba-9a7f-da12ac297fea
location_href: 00009124-python-pycryptodome/python-pycryptodome-3.17-1.src.rpm
checksum_type: sha256
description:
  PyCryptodome is a self-contained Python package of low-level
  cryptographic primitives.
  It supports Python 2.7, Python 3.5 and newer, and PyPy.
  You can install it with::
      pip install pycryptodome
  All modules are installed under the ``Crypto`` package.
  Check the pycryptodomex_ project for the equivalent library that
  works under the ``Cryptodome`` package.
  PyCryptodome is a fork of PyCrypto. It brings several enhancements
  with respect to the last official version of PyCrypto (2.6.1),
  for instance:
  * Authenticated encryption modes (GCM, CCM, EAX, SIV, OCB)
  * Accelerated AES on Intel platforms via AES-NI
  * First class support for PyPy
  * Elliptic curves cryptography (NIST P-curves; Ed25519, Ed448)
  * Better and more compact API (`nonce` and `iv` attributes for ciphers,
    automatic generation of random nonces and IVs, simplified CTR cipher mode,
    and more)
  * SHA-3 (including SHAKE XOFs) and BLAKE2 hash algorithms
  * Salsa20 and ChaCha20 stream ciphers
  * scrypt and HKDF
  * Deterministic (EC)DSA and EdDSA
  * Password-protected PKCS#8 key containers
  * Shamir's Secret Sharing scheme
  * Random numbers get sourced directly from the OS (and not from a CSPRNG in userspace)
  * Simplified install process, including better support for Windows
  * Cleaner RSA and DSA key generation (largely based on FIPS 186-4)
  * Major clean ups and simplification of the code base
  PyCryptodome is not a wrapper to a separate C library like *OpenSSL*.
  To the largest possible extent, algorithms are implemented in pure Python.
  Only the pieces that are extremely critical to performance (e.g. block ciphers)
  are implemented as C extensions.
  For more information, see the `homepage`_.
  All the code can be downloaded from `GitHub`_.


pkgId: 2aa3d0a9bf4c254de9282f679bb67332c5d95b98d700766aaefb1bb2aa54268c
name: python-pycryptodome-debuginfo
arch: aarch64
version: 3.17
epoch: 0
release: 1
summary: Debug information for package python-pycryptodome
url: https://www.pycryptodome.org
rpm_license: BSD, Public Domain
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-33a3894b-e3aa-42ba-9a7f-da12ac297fea
rpm_sourcerpm: python-pycryptodome-3.17-1.src.rpm
location_href: 00009124-python-pycryptodome/python-pycryptodome-debuginfo-3.17-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-pycryptodome.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: fac1ea8eb747d86d37756a16f73c677a1ce38c11b8b28e78c4fba7bb33f7d88e
name: python-pycryptodome-debugsource
arch: aarch64
version: 3.17
epoch: 0
release: 1
summary: Debug sources for package python-pycryptodome
url: https://www.pycryptodome.org
rpm_license: BSD, Public Domain
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-33a3894b-e3aa-42ba-9a7f-da12ac297fea
rpm_sourcerpm: python-pycryptodome-3.17-1.src.rpm
location_href: 00009124-python-pycryptodome/python-pycryptodome-debugsource-3.17-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-pycryptodome.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: 5bdb16a017846a3c9bfc861b0b2e3cebf05830123bc0f7c7c980f9542baaeaf2
name: python-pycryptodomex
arch: src
version: 3.17
epoch: 0
release: 1
summary: Cryptographic library for Python
url: https://www.pycryptodome.org
rpm_license: BSD, Public Domain
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-04fe42b0-2cdb-44d7-bad9-97d40d6b5a3e
location_href: 00009041-python-pycryptodomex/python-pycryptodomex-3.17-1.src.rpm
checksum_type: sha256
description:
  PyCryptodome is a self-contained Python package of low-level
  cryptographic primitives.
  It supports Python 2.7, Python 3.5 and newer, and PyPy.
  You can install it with::
      pip install pycryptodomex
  All modules are installed under the ``Cryptodome`` package.
  Check the pycryptodome_ project for the equivalent library that
  works under the ``Crypto`` package.
  PyCryptodome is a fork of PyCrypto. It brings several enhancements
  with respect to the last official version of PyCrypto (2.6.1),
  for instance:
  * Authenticated encryption modes (GCM, CCM, EAX, SIV, OCB)
  * Accelerated AES on Intel platforms via AES-NI
  * First class support for PyPy
  * Elliptic curves cryptography (NIST P-curves; Ed25519, Ed448)
  * Better and more compact API (`nonce` and `iv` attributes for ciphers,
    automatic generation of random nonces and IVs, simplified CTR cipher mode,
    and more)
  * SHA-3 (including SHAKE XOFs) and BLAKE2 hash algorithms
  * Salsa20 and ChaCha20 stream ciphers
  * scrypt and HKDF
  * Deterministic (EC)DSA and EdDSA
  * Password-protected PKCS#8 key containers
  * Shamir's Secret Sharing scheme
  * Random numbers get sourced directly from the OS (and not from a CSPRNG in userspace)
  * Simplified install process, including better support for Windows
  * Cleaner RSA and DSA key generation (largely based on FIPS 186-4)
  * Major clean ups and simplification of the code base
  PyCryptodome is not a wrapper to a separate C library like *OpenSSL*.
  To the largest possible extent, algorithms are implemented in pure Python.
  Only the pieces that are extremely critical to performance (e.g. block ciphers)
  are implemented as C extensions.
  For more information, see the `homepage`_.
  All the code can be downloaded from `GitHub`_.


pkgId: 39ece9315ac88959f5797e631bf5397075adf4e443a7ba1d0d5ef28f8b816be0
name: python-pycryptodomex-debuginfo
arch: aarch64
version: 3.17
epoch: 0
release: 1
summary: Debug information for package python-pycryptodomex
url: https://www.pycryptodome.org
rpm_license: BSD, Public Domain
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-04fe42b0-2cdb-44d7-bad9-97d40d6b5a3e
rpm_sourcerpm: python-pycryptodomex-3.17-1.src.rpm
location_href: 00009041-python-pycryptodomex/python-pycryptodomex-debuginfo-3.17-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-pycryptodomex.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: f21f17902af8ffe98523a8d705577b8da324e338c321ca9fd2ff43640dfe4718
name: python-pycryptodomex-debugsource
arch: aarch64
version: 3.17
epoch: 0
release: 1
summary: Debug sources for package python-pycryptodomex
url: https://www.pycryptodome.org
rpm_license: BSD, Public Domain
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-04fe42b0-2cdb-44d7-bad9-97d40d6b5a3e
rpm_sourcerpm: python-pycryptodomex-3.17-1.src.rpm
location_href: 00009041-python-pycryptodomex/python-pycryptodomex-debugsource-3.17-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-pycryptodomex.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: 882fde44e611a55009b39dcf5e4121bb1eae9ffeb1318c4b63ab024864a40490
name: python-pyct
arch: src
version: 0.5.0
epoch: 0
release: 1
summary: Python package common tasks for users (e.g. copy examples, fetch data, ...)
url: https://github.com/pyviz-dev/pyct
rpm_license: BSD 3-Clause License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-9c0be869-758f-4f20-bc07-7aac029cd1fb
location_href: 00010285-python-pyct/python-pyct-0.5.0-1.src.rpm
checksum_type: sha256
description:
  data:
    - url: http://s3.amazonaws.com/datashader-data/Chesapeake_and_Delaware_Bays.zip
      title: 'Depth data for the Chesapeake and Delaware Bay region of the USA'
      files:
        - Chesapeake_and_Delaware_Bays.3dm
  $ earthsim fetch-data --path earthsim-examples --datasets-filename test.yml
  Downloading data defined in /tmp/earthsim-examples/test.yml to /tmp/earthsim-examples/data
  Skipping Depth data for the Chesapeake and Delaware Bay region of the USA
  ```
  Can use smaller files instead of large ones by using the `--use-test-data` flag
  and placing a small file with the same name in `examples/data/.data_stubs`:
  ```
  $ tree examples/data -a
  examples/data
  ├── .data_stubs
  │   └── nyc_taxi_wide.parq
  └── diamonds.csv
  $ cat examples/dataset.yml
  data:
    - url: http://s3.amazonaws.com/datashader-data/nyc_taxi_wide.parq
      title: 'NYC Taxi Data'
      files:
        - nyc_taxi_wide.parq
    - url: http://s3.amazonaws.com/datashader-data/maccdc2012_graph.zip
      title: 'National CyberWatch Mid-Atlantic Collegiate Cyber Defense Competition'
      files:
        - maccdc2012_nodes.parq
        - maccdc2012_edges.parq
        - maccdc2012_full_nodes.parq
        - maccdc2012_full_edges.parq
  $ pyviz fetch-data --path=examples --use-test-data
  Fetching data defined in /tmp/pyviz/examples/datasets.yml and placing in /tmp/pyviz/examples/data
  Copying test data file '/tmp/pyviz/examples/data/.data_stubs/nyc_taxi_wide.parq' to '/tmp/pyviz/examples/data/nyc_taxi_wide.parq'
  No test file found for: /tmp/pyviz/examples/data/.data_stubs/maccdc2012_nodes.parq. Using regular file instead
  Downloading National CyberWatch Mid-Atlantic Collegiate Cyber Defense Competition 1 of 1
  [################################] 59/59 - 00:00:00
  ```
  To clean up any potential test files masquerading as real data use `clean-data`:
  ```
  usage: pyviz clean-data [-h] [--path PATH]
  optional arguments:
    -h, --help   show this help message and exit
    --path PATH  where to clean data
  ```

  Currently provides a way to package examples with a project, by
  copying an examples folder into the package directory whenever
  setup.py is run. The way this works is likely to change in the near
  future, but is provided here as the first step towards
  unifying/simplifying the maintenance of a number of pyviz projects.

  Provides a way to check the package versions in the current environment using:
    1. A console script (entry point): `pyct report [packages]`, or
    2. A python function: `import pyct; pyct.report(packages)`
  The python function can be particularly useful for e.g. jupyter notebook users, since it is the packages in the current kernel that we usually care about (not those in the environment from which jupyter notebook server/lab was launched).
  Note that `packages` above can include the name of any Python package (returning the `__version__`), along with the special cases `python` or `conda` (returning the version of the command-line tool) or `system` (returning the OS version).


pkgId: 3b7ed91464a4a0b7a48cea2caca5829fca862fe912237cc033d84ec881fe8f93
name: python-pydantic
arch: src
version: 1.10.6
epoch: 0
release: 1
summary: Data validation and settings management using python type hints
url: https://github.com/pydantic/pydantic
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-f6b8c402-1251-4a49-9e67-ead7c8bb199b
location_href: 00004658-python-pydantic/python-pydantic-1.10.6-1.src.rpm
checksum_type: sha256
description:
  [![CI](https://github.com/pydantic/pydantic/workflows/CI/badge.svg?event=push)](https://github.com/pydantic/pydantic/actions?query=event%3Apush+branch%3Amain+workflow%3ACI)
  [![Coverage](https://coverage-badge.samuelcolvin.workers.dev/pydantic/pydantic.svg?branch=1.10.X-fixes)](https://coverage-badge.samuelcolvin.workers.dev/redirect/pydantic/pydantic?branch=1.10.X-fixes)
  [![pypi](https://img.shields.io/pypi/v/pydantic.svg)](https://pypi.python.org/pypi/pydantic)
  [![CondaForge](https://img.shields.io/conda/v/conda-forge/pydantic.svg)](https://anaconda.org/conda-forge/pydantic)
  [![downloads](https://pepy.tech/badge/pydantic/month)](https://pepy.tech/project/pydantic)
  [![versions](https://img.shields.io/pypi/pyversions/pydantic.svg)](https://github.com/pydantic/pydantic)
  [![license](https://img.shields.io/github/license/pydantic/pydantic.svg)](https://github.com/pydantic/pydantic/blob/main/LICENSE)

  Data validation and settings management using Python type hints.

  Fast and extensible, *pydantic* plays nicely with your linters/IDE/brain.
  Define how data should be in pure, canonical Python 3.7+; validate it with *pydantic*.



  We've started a company based on the principles that I believe have led to Pydantic's success.
  Learning more from the [Company Announcement](https://pydantic.dev/announcement/).



  See [documentation](https://docs.pydantic.dev/) for more details.



  Install using `pip install -U pydantic` or `conda install pydantic -c conda-forge`.
  For more installation options to make *pydantic* even faster,
  see the [Install](https://docs.pydantic.dev/install/) section in the documentation.



  ```py
  from datetime import datetime
  from typing import List, Optional
  from pydantic import BaseModel

  class User(BaseModel):
      id: int
      name = 'John Doe'
      signup_ts: Optional[datetime] = None
      friends: List[int] = []

  external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']}
  user = User(**external_data)
  print(user)

  print(user.id)

  ```



  For guidance on setting up a development environment and how to make a
  contribution to *pydantic*, see
  [Contributing to Pydantic](https://docs.pydantic.dev/contributing/).



  See our [security policy](https://github.com/pydantic/pydantic/security/policy).




  * Implement logic to support creating validators from non standard callables by using defaults to identify them and unwrapping `functools.partial` and `functools.partialmethod` when checking the signature, [#5126](https://github.com/pydantic/pydantic/issues/5126) by [@JensHeinrich](https://github.com/JensHeinrich)
  * Fix mypy plugin for v1.1.1, and fix `dataclass_transform` decorator for pydantic dataclasses, [#5111](https://github.com/pydantic/pydantic/issues/5111) by [@cdce8p](https://github.com/cdce8p)
  * Raise `ValidationError`, not `ConfigError`, when a discriminator value is unhashable, [#4773](https://github.com/pydantic/pydantic/issues/4773) by [@kurtmckee](https://github.com/kurtmckee)



  * Fix broken parametrized bases handling with `GenericModel`s with complex sets of models, [#5052](https://github.com/pydantic/pydantic/issues/5052) by [@MarkusSintonen](https://github.com/MarkusSintonen)
  * Invalidate mypy cache if plugin config changes, [#5007](https://github.com/pydantic/pydantic/issues/5007) by [@cdce8p](https://github.com/cdce8p)
  * Fix `RecursionError` when deep-copying dataclass types wrapped by pydantic, [#4949](https://github.com/pydantic/pydantic/issues/4949) by [@mbillingr](https://github.com/mbillingr)
  * Fix `X | Y` union syntax breaking `GenericModel`, [#4146](https://github.com/pydantic/pydantic/issues/4146) by [@thenx](https://github.com/thenx)
  * Switch coverage badge to show coverage for this branch/release, [#5060](https://github.com/pydantic/pydantic/issues/5060) by [@samuelcolvin](https://github.com/samuelcolvin)



  * Change dependency to `typing-extensions>=4.2.0`, [#4885](https://github.com/pydantic/pydantic/issues/4885) by [@samuelcolvin](https://github.com/samuelcolvin)



  **NOTE: v1.10.3 was ["yanked"](https://pypi.org/help/#yanked) from PyPI due to [#4885](https://github.com/pydantic/pydantic/issues/4885) which is fixed in v1.10.4**

  * fix parsing of custom root models, [#4883](https://github.com/pydantic/pydantic/issues/4883) by [@gou177](https://github.com/gou177)
  * fix: use dataclass proxy for frozen or empty dataclasses, [#4878](https://github.com/pydantic/pydantic/issues/4878) by [@PrettyWood](https://github.com/PrettyWood)
  * Fix `schema` and `schema_json` on models where a model instance is a one of default values, [#4781](https://github.com/pydantic/pydantic/issues/4781) by [@Bobronium](https://github.com/Bobronium)
  * Add Jina AI to sponsors on docs index page, [#4767](https://github.com/pydantic/pydantic/issues/4767) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix: support assignment on `DataclassProxy`, [#4695](https://github.com/pydantic/pydantic/issues/4695) by [@PrettyWood](https://github.com/PrettyWood)
  * Add `postgresql+psycopg` as allowed scheme for `PostgreDsn` to make it usable with SQLAlchemy 2, [#4689](https://github.com/pydantic/pydantic/issues/4689) by [@morian](https://github.com/morian)
  * Allow dict schemas to have both `patternProperties` and `additionalProperties`, [#4641](https://github.com/pydantic/pydantic/issues/4641) by [@jparise](https://github.com/jparise)
  * Fixes error passing None for optional lists with `unique_items`, [#4568](https://github.com/pydantic/pydantic/issues/4568) by [@mfulgo](https://github.com/mfulgo)
  * Fix `GenericModel` with `Callable` param raising a `TypeError`, [#4551](https://github.com/pydantic/pydantic/issues/4551) by [@mfulgo](https://github.com/mfulgo)
  * Fix field regex with `StrictStr` type annotation, [#4538](https://github.com/pydantic/pydantic/issues/4538) by [@sisp](https://github.com/sisp)
  * Correct `dataclass_transform` keyword argument name from `field_descriptors` to `field_specifiers`, [#4500](https://github.com/pydantic/pydantic/issues/4500) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix: avoid multiple calls of `__post_init__` when dataclasses are inherited, [#4487](https://github.com/pydantic/pydantic/issues/4487) by [@PrettyWood](https://github.com/PrettyWood)
  * Reduce the size of binary wheels, [#2276](https://github.com/pydantic/pydantic/issues/2276) by [@samuelcolvin](https://github.com/samuelcolvin)



  * **Revert Change:** Revert percent encoding of URL parts which was originally added in [#4224](https://github.com/pydantic/pydantic/issues/4224), [#4470](https://github.com/pydantic/pydantic/issues/4470) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Prevent long (length > `4_300`) strings/bytes as input to int fields, see
    [python/cpython#95778](https://github.com/python/cpython/issues/95778) and
    [CVE-2020-10735](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10735), [#1477](https://github.com/pydantic/pydantic/issues/1477) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix: dataclass wrapper was not always called, [#4477](https://github.com/pydantic/pydantic/issues/4477) by [@PrettyWood](https://github.com/PrettyWood)
  * Use `tomllib` on Python 3.11 when parsing `mypy` configuration, [#4476](https://github.com/pydantic/pydantic/issues/4476) by [@hauntsaninja](https://github.com/hauntsaninja)
  * Basic fix of `GenericModel` cache to detect order of arguments in `Union` models, [#4474](https://github.com/pydantic/pydantic/issues/4474) by [@sveinugu](https://github.com/sveinugu)
  * Fix mypy plugin when using bare types like `list` and `dict` as `default_factory`, [#4457](https://github.com/pydantic/pydantic/issues/4457) by [@samuelcolvin](https://github.com/samuelcolvin)



  * Add `__hash__` method to `pydancic.color.Color` class, [#4454](https://github.com/pydantic/pydantic/issues/4454) by [@czaki](https://github.com/czaki)



  * Refactor the whole _pydantic_ `dataclass` decorator to really act like its standard lib equivalent.
    It hence keeps `__eq__`, `__hash__`, ... and makes comparison with its non-validated version possible.
    It also fixes usage of `frozen` dataclasses in fields and usage of `default_factory` in nested dataclasses.
    The support of `Config.extra` has been added.
    Finally, config customization directly via a `dict` is now possible, [#2557](https://github.com/pydantic/pydantic/issues/2557) by [@PrettyWood](https://github.com/PrettyWood)
    <br/><br/>
    **BREAKING CHANGES:**
    - The `compiled` boolean (whether _pydantic_ is compiled with cython) has been moved from `main.py` to `version.py`
    - Now that `Config.extra` is supported, `dataclass` ignores by default extra arguments (like `BaseModel`)
  * Fix PEP487 `__set_name__` protocol in `BaseModel` for PrivateAttrs, [#4407](https://github.com/pydantic/pydantic/issues/4407) by [@tlambert03](https://github.com/tlambert03)
  * Allow for custom parsing of environment variables via `parse_env_var` in `Config`, [#4406](https://github.com/pydantic/pydantic/issues/4406) by [@acmiyaguchi](https://github.com/acmiyaguchi)
  * Rename `master` to `main`, [#4405](https://github.com/pydantic/pydantic/issues/4405) by [@hramezani](https://github.com/hramezani)
  * Fix `StrictStr` does not raise `ValidationError` when `max_length` is present in `Field`, [#4388](https://github.com/pydantic/pydantic/issues/4388) by [@hramezani](https://github.com/hramezani)
  * Make `SecretStr` and `SecretBytes` hashable, [#4387](https://github.com/pydantic/pydantic/issues/4387) by [@chbndrhnns](https://github.com/chbndrhnns)
  * Fix `StrictBytes` does not raise `ValidationError` when `max_length` is present in `Field`, [#4380](https://github.com/pydantic/pydantic/issues/4380) by [@JeanArhancet](https://github.com/JeanArhancet)
  * Add support for bare `type`, [#4375](https://github.com/pydantic/pydantic/issues/4375) by [@hramezani](https://github.com/hramezani)
  * Support Python 3.11, including binaries for 3.11 in PyPI, [#4374](https://github.com/pydantic/pydantic/issues/4374) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Add support for `re.Pattern`, [#4366](https://github.com/pydantic/pydantic/issues/4366) by [@hramezani](https://github.com/hramezani)
  * Fix `__post_init_post_parse__` is incorrectly passed keyword arguments when no `__post_init__` is defined, [#4361](https://github.com/pydantic/pydantic/issues/4361) by [@hramezani](https://github.com/hramezani)
  * Fix implicitly importing `ForwardRef` and `Callable` from `pydantic.typing` instead of `typing` and also expose `MappingIntStrAny`, [#4358](https://github.com/pydantic/pydantic/issues/4358) by [@aminalaee](https://github.com/aminalaee)
  * remove `Any` types from the `dataclass` decorator so it can be used with the `disallow_any_expr` mypy option, [#4356](https://github.com/pydantic/pydantic/issues/4356) by [@DetachHead](https://github.com/DetachHead)
  * moved repo to `pydantic/pydantic`, [#4348](https://github.com/pydantic/pydantic/issues/4348) by [@yezz123](https://github.com/yezz123)
  * fix "extra fields not permitted" error when dataclass with `Extra.forbid` is validated multiple times, [#4343](https://github.com/pydantic/pydantic/issues/4343) by [@detachhead](https://github.com/detachhead)
  * Add Python 3.9 and 3.10 examples to docs, [#4339](https://github.com/pydantic/pydantic/issues/4339) by [@Bobronium](https://github.com/Bobronium)
  * Discriminated union models now use `oneOf` instead of `anyOf` when generating OpenAPI schema definitions, [#4335](https://github.com/pydantic/pydantic/issues/4335) by [@MaxwellPayne](https://github.com/MaxwellPayne)
  * Allow type checkers to infer inner type of `Json` type. `Json[list[str]]` will be now inferred as `list[str]`,
    `Json[Any]` should be used instead of plain `Json`.
    Runtime behaviour is not changed, [#4332](https://github.com/pydantic/pydantic/issues/4332) by [@Bobronium](https://github.com/Bobronium)
  * Allow empty string aliases by using a `alias is not None` check, rather than `bool(alias)`, [#4253](https://github.com/pydantic/pydantic/issues/4253) by [@sergeytsaplin](https://github.com/sergeytsaplin)
  * Update `ForwardRef`s in `Field.outer_type_`, [#4249](https://github.com/pydantic/pydantic/issues/4249) by [@JacobHayes](https://github.com/JacobHayes)
  * The use of `__dataclass_transform__` has been replaced by `typing_extensions.dataclass_transform`, which is the preferred way to mark pydantic models as a dataclass under [PEP 681](https://peps.python.org/pep-0681/), [#4241](https://github.com/pydantic/pydantic/issues/4241) by [@multimeric](https://github.com/multimeric)
  * Use parent model's `Config` when validating nested `NamedTuple` fields, [#4219](https://github.com/pydantic/pydantic/issues/4219) by [@synek](https://github.com/synek)
  * Update `BaseModel.construct` to work with aliased Fields, [#4192](https://github.com/pydantic/pydantic/issues/4192) by [@kylebamos](https://github.com/kylebamos)
  * Catch certain raised errors in `smart_deepcopy` and revert to `deepcopy` if so, [#4184](https://github.com/pydantic/pydantic/issues/4184) by [@coneybeare](https://github.com/coneybeare)
  * Add `Config.anystr_upper` and `to_upper` kwarg to constr and conbytes, [#4165](https://github.com/pydantic/pydantic/issues/4165) by [@satheler](https://github.com/satheler)
  * Fix JSON schema for `set` and `frozenset` when they include default values, [#4155](https://github.com/pydantic/pydantic/issues/4155) by [@aminalaee](https://github.com/aminalaee)
  * Teach the mypy plugin that methods decorated by `@validator` are classmethods, [#4102](https://github.com/pydantic/pydantic/issues/4102) by [@DMRobertson](https://github.com/DMRobertson)
  * Improve mypy plugin's ability to detect required fields, [#4086](https://github.com/pydantic/pydantic/issues/4086) by [@richardxia](https://github.com/richardxia)
  * Support fields of type `Type[]` in schema, [#4051](https://github.com/pydantic/pydantic/issues/4051) by [@aminalaee](https://github.com/aminalaee)
  * Add `default` value in JSON Schema when `const=True`, [#4031](https://github.com/pydantic/pydantic/issues/4031) by [@aminalaee](https://github.com/aminalaee)
  * Adds reserved word check to signature generation logic, [#4011](https://github.com/pydantic/pydantic/issues/4011) by [@strue36](https://github.com/strue36)
  * Fix Json strategy failure for the complex nested field, [#4005](https://github.com/pydantic/pydantic/issues/4005) by [@sergiosim](https://github.com/sergiosim)
  * Add JSON-compatible float constraint `allow_inf_nan`, [#3994](https://github.com/pydantic/pydantic/issues/3994) by [@tiangolo](https://github.com/tiangolo)
  * Remove undefined behaviour when `env_prefix` had characters in common with `env_nested_delimiter`, [#3975](https://github.com/pydantic/pydantic/issues/3975) by [@arsenron](https://github.com/arsenron)
  * Support generics model with `create_model`, [#3945](https://github.com/pydantic/pydantic/issues/3945) by [@hot123s](https://github.com/hot123s)
  * allow submodels to overwrite extra field info, [#3934](https://github.com/pydantic/pydantic/issues/3934) by [@PrettyWood](https://github.com/PrettyWood)
  * Document and test structural pattern matching ([PEP 636](https://peps.python.org/pep-0636/)) on `BaseModel`, [#3920](https://github.com/pydantic/pydantic/issues/3920) by [@irgolic](https://github.com/irgolic)
  * Fix incorrect deserialization of python timedelta object to ISO 8601 for negative time deltas.
    Minus was serialized in incorrect place ("P-1DT23H59M59.888735S" instead of correct "-P1DT23H59M59.888735S"), [#3899](https://github.com/pydantic/pydantic/issues/3899) by [@07pepa](https://github.com/07pepa)
  * Fix validation of discriminated union fields with an alias when passing a model instance, [#3846](https://github.com/pydantic/pydantic/issues/3846) by [@chornsby](https://github.com/chornsby)
  * Add a CockroachDsn type to validate CockroachDB connection strings. The type
    supports the following schemes: `cockroachdb`, `cockroachdb+psycopg2` and `cockroachdb+asyncpg`, [#3839](https://github.com/pydantic/pydantic/issues/3839) by [@blubber](https://github.com/blubber)
  * Fix MyPy plugin to not override pre-existing `__init__` method in models, [#3824](https://github.com/pydantic/pydantic/issues/3824) by [@patrick91](https://github.com/patrick91)
  * Fix mypy version checking, [#3783](https://github.com/pydantic/pydantic/issues/3783) by [@KotlinIsland](https://github.com/KotlinIsland)
  * support overwriting dunder attributes of `BaseModel` instances, [#3777](https://github.com/pydantic/pydantic/issues/3777) by [@PrettyWood](https://github.com/PrettyWood)
  * Added `ConstrainedDate` and `condate`, [#3740](https://github.com/pydantic/pydantic/issues/3740) by [@hottwaj](https://github.com/hottwaj)
  * Support `kw_only` in dataclasses, [#3670](https://github.com/pydantic/pydantic/issues/3670) by [@detachhead](https://github.com/detachhead)
  * Add comparison method for `Color` class, [#3646](https://github.com/pydantic/pydantic/issues/3646) by [@aminalaee](https://github.com/aminalaee)
  * Drop support for python3.6, associated cleanup, [#3605](https://github.com/pydantic/pydantic/issues/3605) by [@samuelcolvin](https://github.com/samuelcolvin)
  * created new function `to_lower_camel()` for "non pascal case" camel case, [#3463](https://github.com/pydantic/pydantic/issues/3463) by [@schlerp](https://github.com/schlerp)
  * Add checks to `default` and `default_factory` arguments in Mypy plugin, [#3430](https://github.com/pydantic/pydantic/issues/3430) by [@klaa97](https://github.com/klaa97)
  * fix mangling of `inspect.signature` for `BaseModel`, [#3413](https://github.com/pydantic/pydantic/issues/3413) by [@fix-inspect-signature](https://github.com/fix-inspect-signature)
  * Adds the `SecretField` abstract class so that all the current and future secret fields like `SecretStr` and `SecretBytes` will derive from it, [#3409](https://github.com/pydantic/pydantic/issues/3409) by [@expobrain](https://github.com/expobrain)
  * Support multi hosts validation in `PostgresDsn`, [#3337](https://github.com/pydantic/pydantic/issues/3337) by [@rglsk](https://github.com/rglsk)
  * Fix parsing of very small numeric timedelta values, [#3315](https://github.com/pydantic/pydantic/issues/3315) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Update `SecretsSettingsSource` to respect `config.case_sensitive`, [#3273](https://github.com/pydantic/pydantic/issues/3273) by [@JeanArhancet](https://github.com/JeanArhancet)
  * Add MongoDB network data source name (DSN) schema, [#3229](https://github.com/pydantic/pydantic/issues/3229) by [@snosratiershad](https://github.com/snosratiershad)
  * Add support for multiple dotenv files, [#3222](https://github.com/pydantic/pydantic/issues/3222) by [@rekyungmin](https://github.com/rekyungmin)
  * Raise an explicit `ConfigError` when multiple fields are incorrectly set for a single validator, [#3215](https://github.com/pydantic/pydantic/issues/3215) by [@SunsetOrange](https://github.com/SunsetOrange)
  * Allow ellipsis on `Field`s inside `Annotated` for `TypedDicts` required, [#3133](https://github.com/pydantic/pydantic/issues/3133) by [@ezegomez](https://github.com/ezegomez)
  * Catch overflow errors in `int_validator`, [#3112](https://github.com/pydantic/pydantic/issues/3112) by [@ojii](https://github.com/ojii)
  * Adds a `__rich_repr__` method to `Representation` class which enables pretty printing with [Rich](https://github.com/willmcgugan/rich), [#3099](https://github.com/pydantic/pydantic/issues/3099) by [@willmcgugan](https://github.com/willmcgugan)
  * Add percent encoding in `AnyUrl` and descendent types, [#3061](https://github.com/pydantic/pydantic/issues/3061) by [@FaresAhmedb](https://github.com/FaresAhmedb)
  * `validate_arguments` decorator now supports `alias`, [#3019](https://github.com/pydantic/pydantic/issues/3019) by [@MAD-py](https://github.com/MAD-py)
  * Avoid `__dict__` and `__weakref__` attributes in `AnyUrl` and IP address fields, [#2890](https://github.com/pydantic/pydantic/issues/2890) by [@nuno-andre](https://github.com/nuno-andre)
  * Add ability to use `Final` in a field type annotation, [#2766](https://github.com/pydantic/pydantic/issues/2766) by [@uriyyo](https://github.com/uriyyo)
  * Update requirement to `typing_extensions>=4.1.0` to guarantee `dataclass_transform` is available, [#4424](https://github.com/pydantic/pydantic/issues/4424) by [@commonism](https://github.com/commonism)
  * Add Explosion and AWS to main sponsors, [#4413](https://github.com/pydantic/pydantic/issues/4413) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Update documentation for `copy_on_model_validation` to reflect recent changes, [#4369](https://github.com/pydantic/pydantic/issues/4369) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Runtime warning if `__slots__` is passed to `create_model`, `__slots__` is then ignored, [#4432](https://github.com/pydantic/pydantic/issues/4432) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Add type hints to `BaseSettings.Config` to avoid mypy errors, also correct mypy version compatibility notice in docs, [#4450](https://github.com/pydantic/pydantic/issues/4450) by [@samuelcolvin](https://github.com/samuelcolvin)



  Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/releases/tag/v1.10.0b1) for details.



  Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/releases/tag/v1.10.0a2) for details.



  Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/releases/tag/v1.10.0a1) for details.



  **Revert Breaking Change**: _v1.9.1_ introduced a breaking change where model fields were
  deep copied by default, this release reverts the default behaviour to match _v1.9.0_ and before,
  while also allow deep-copy behaviour via `copy_on_model_validation = 'deep'`. See [#4092](https://github.com/pydantic/pydantic/issues/4092) for more information.

  * Allow for shallow copies of model fields, `Config.copy_on_model_validation` is now a str which must be
    `'none'`, `'deep'`, or `'shallow'` corresponding to not copying, deep copy & shallow copy; default `'shallow'`,
    [#4093](https://github.com/pydantic/pydantic/issues/4093) by [@timkpaine](https://github.com/timkpaine)



  Thank you to pydantic's sponsors:
  @tiangolo, [@stellargraph](https://github.com/stellargraph), [@JonasKs](https://github.com/JonasKs), [@grillazz](https://github.com/grillazz), [@Mazyod](https://github.com/Mazyod), [@kevinalh](https://github.com/kevinalh), [@chdsbd](https://github.com/chdsbd), [@povilasb](https://github.com/povilasb), [@povilasb](https://github.com/povilasb), [@jina-ai](https://github.com/jina-ai),
  @mainframeindustries, [@robusta-dev](https://github.com/robusta-dev), [@SendCloud](https://github.com/SendCloud), [@rszamszur](https://github.com/rszamszur), [@jodal](https://github.com/jodal), [@hardbyte](https://github.com/hardbyte), [@corleyma](https://github.com/corleyma), [@daddycocoaman](https://github.com/daddycocoaman),
  @Rehket, [@jokull](https://github.com/jokull), [@reillysiemens](https://github.com/reillysiemens), [@westonsteimel](https://github.com/westonsteimel), [@primer-io](https://github.com/primer-io), [@koxudaxi](https://github.com/koxudaxi), [@browniebroke](https://github.com/browniebroke), [@stradivari96](https://github.com/stradivari96),
  @adriangb, [@kamalgill](https://github.com/kamalgill), [@jqueguiner](https://github.com/jqueguiner), [@dev-zero](https://github.com/dev-zero), [@datarootsio](https://github.com/datarootsio), [@RedCarpetUp](https://github.com/RedCarpetUp)
  for their kind support.

  * Limit the size of `generics._generic_types_cache` and `generics._assigned_parameters`
    to avoid unlimited increase in memory usage, [#4083](https://github.com/pydantic/pydantic/issues/4083) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Add Jupyverse and FPS as Jupyter projects using pydantic, [#4082](https://github.com/pydantic/pydantic/issues/4082) by [@davidbrochart](https://github.com/davidbrochart)
  * Speedup `__isinstancecheck__` on pydantic models when the type is not a model, may also avoid memory "leaks", [#4081](https://github.com/pydantic/pydantic/issues/4081) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Fix in-place modification of `FieldInfo` that caused problems with PEP 593 type aliases, [#4067](https://github.com/pydantic/pydantic/issues/4067) by [@adriangb](https://github.com/adriangb)
  * Add support for autocomplete in VS Code via `__dataclass_transform__` when using `pydantic.dataclasses.dataclass`, [#4006](https://github.com/pydantic/pydantic/issues/4006) by [@giuliano-oliveira](https://github.com/giuliano-oliveira)
  * Remove benchmarks from codebase and docs, [#3973](https://github.com/pydantic/pydantic/issues/3973) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Typing checking with pyright in CI, improve docs on vscode/pylance/pyright, [#3972](https://github.com/pydantic/pydantic/issues/3972) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Fix nested Python dataclass schema regression, [#3819](https://github.com/pydantic/pydantic/issues/3819) by [@himbeles](https://github.com/himbeles)
  * Update documentation about lazy evaluation of sources for Settings, [#3806](https://github.com/pydantic/pydantic/issues/3806) by [@garyd203](https://github.com/garyd203)
  * Prevent subclasses of bytes being converted to bytes, [#3706](https://github.com/pydantic/pydantic/issues/3706) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Fixed "error checking inheritance of" when using PEP585 and PEP604 type hints, [#3681](https://github.com/pydantic/pydantic/issues/3681) by [@aleksul](https://github.com/aleksul)
  * Allow self referencing `ClassVar`s in models, [#3679](https://github.com/pydantic/pydantic/issues/3679) by [@samuelcolvin](https://github.com/samuelcolvin)
  * **Breaking Change, see [#4106](https://github.com/pydantic/pydantic/issues/4106)**: Fix issue with self-referencing dataclass, [#3675](https://github.com/pydantic/pydantic/issues/3675) by [@uriyyo](https://github.com/uriyyo)
  * Include non-standard port numbers in rendered URLs, [#3652](https://github.com/pydantic/pydantic/issues/3652) by [@dolfinus](https://github.com/dolfinus)
  * `Config.copy_on_model_validation` does a deep copy and not a shallow one, [#3641](https://github.com/pydantic/pydantic/issues/3641) by [@PrettyWood](https://github.com/PrettyWood)
  * fix: clarify that discriminated unions do not support singletons, [#3636](https://github.com/pydantic/pydantic/issues/3636) by [@tommilligan](https://github.com/tommilligan)
  * Add `read_text(encoding='utf-8')` for `setup.py`, [#3625](https://github.com/pydantic/pydantic/issues/3625) by [@hswong3i](https://github.com/hswong3i)
  * Fix JSON Schema generation for Discriminated Unions within lists, [#3608](https://github.com/pydantic/pydantic/issues/3608) by [@samuelcolvin](https://github.com/samuelcolvin)



  Thank you to pydantic's sponsors:
  @sthagen, [@timdrijvers](https://github.com/timdrijvers), [@toinbis](https://github.com/toinbis), [@koxudaxi](https://github.com/koxudaxi), [@ginomempin](https://github.com/ginomempin), [@primer-io](https://github.com/primer-io), [@and-semakin](https://github.com/and-semakin), [@westonsteimel](https://github.com/westonsteimel), [@reillysiemens](https://github.com/reillysiemens),
  @es3n1n, [@jokull](https://github.com/jokull), [@JonasKs](https://github.com/JonasKs), [@Rehket](https://github.com/Rehket), [@corleyma](https://github.com/corleyma), [@daddycocoaman](https://github.com/daddycocoaman), [@hardbyte](https://github.com/hardbyte), [@datarootsio](https://github.com/datarootsio), [@jodal](https://github.com/jodal), [@aminalaee](https://github.com/aminalaee), [@rafsaf](https://github.com/rafsaf),
  @jqueguiner, [@chdsbd](https://github.com/chdsbd), [@kevinalh](https://github.com/kevinalh), [@Mazyod](https://github.com/Mazyod), [@grillazz](https://github.com/grillazz), [@JonasKs](https://github.com/JonasKs), [@simw](https://github.com/simw), [@leynier](https://github.com/leynier), [@xfenix](https://github.com/xfenix)
  for their kind support.



  * add Python 3.10 support, [#2885](https://github.com/pydantic/pydantic/issues/2885) by [@PrettyWood](https://github.com/PrettyWood)
  * [Discriminated unions](https://docs.pydantic.dev/usage/types/#discriminated-unions-aka-tagged-unions), [#619](https://github.com/pydantic/pydantic/issues/619) by [@PrettyWood](https://github.com/PrettyWood)
  * [`Config.smart_union` for better union logic](https://docs.pydantic.dev/usage/model_config/#smart-union), [#2092](https://github.com/pydantic/pydantic/issues/2092) by [@PrettyWood](https://github.com/PrettyWood)
  * Binaries for Macos M1 CPUs, [#3498](https://github.com/pydantic/pydantic/issues/3498) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Complex types can be set via [nested environment variables](https://docs.pydantic.dev/usage/settings/#parsing-environment-variable-values), e.g. `foo___bar`, [#3159](https://github.com/pydantic/pydantic/issues/3159) by [@Air-Mark](https://github.com/Air-Mark)
  * add a dark mode to _pydantic_ documentation, [#2913](https://github.com/pydantic/pydantic/issues/2913) by [@gbdlin](https://github.com/gbdlin)
  * Add support for autocomplete in VS Code via `__dataclass_transform__`, [#2721](https://github.com/pydantic/pydantic/issues/2721) by [@tiangolo](https://github.com/tiangolo)
  * Add "exclude" as a field parameter so that it can be configured using model config, [#660](https://github.com/pydantic/pydantic/issues/660) by [@daviskirk](https://github.com/daviskirk)



  * Apply `update_forward_refs` to `Config.json_encodes` prevent name clashes in types defined via strings, [#3583](https://github.com/pydantic/pydantic/issues/3583) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Extend pydantic's mypy plugin to support mypy versions `0.910`, `0.920`, `0.921` & `0.930`, [#3573](https://github.com/pydantic/pydantic/issues/3573) & [#3594](https://github.com/pydantic/pydantic/issues/3594) by [@PrettyWood](https://github.com/PrettyWood), [@christianbundy](https://github.com/christianbundy), [@samuelcolvin](https://github.com/samuelcolvin)



  * support generic models with discriminated union, [#3551](https://github.com/pydantic/pydantic/issues/3551) by [@PrettyWood](https://github.com/PrettyWood)
  * keep old behaviour of `json()` by default, [#3542](https://github.com/pydantic/pydantic/issues/3542) by [@PrettyWood](https://github.com/PrettyWood)
  * Removed typing-only `__root__` attribute from `BaseModel`, [#3540](https://github.com/pydantic/pydantic/issues/3540) by [@layday](https://github.com/layday)
  * Build Python 3.10 wheels, [#3539](https://github.com/pydantic/pydantic/issues/3539) by [@mbachry](https://github.com/mbachry)
  * Fix display of `extra` fields with model `__repr__`, [#3234](https://github.com/pydantic/pydantic/issues/3234) by [@cocolman](https://github.com/cocolman)
  * models copied via `Config.copy_on_model_validation` always have all fields, [#3201](https://github.com/pydantic/pydantic/issues/3201) by [@PrettyWood](https://github.com/PrettyWood)
  * nested ORM from nested dictionaries, [#3182](https://github.com/pydantic/pydantic/issues/3182) by [@PrettyWood](https://github.com/PrettyWood)
  * fix link to discriminated union section by [@PrettyWood](https://github.com/PrettyWood)



  * Add support for `Decimal`-specific validation configurations in `Field()`, additionally to using `condecimal()`,
    to allow better support from editors and tooling, [#3507](https://github.com/pydantic/pydantic/issues/3507) by [@tiangolo](https://github.com/tiangolo)
  * Add `arm64` binaries suitable for MacOS with an M1 CPU to PyPI, [#3498](https://github.com/pydantic/pydantic/issues/3498) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Fix issue where `None` was considered invalid when using a `Union` type containing `Any` or `object`, [#3444](https://github.com/pydantic/pydantic/issues/3444) by [@tharradine](https://github.com/tharradine)
  * When generating field schema, pass optional `field` argument (of type
    `pydantic.fields.ModelField`) to `__modify_schema__()` if present, [#3434](https://github.com/pydantic/pydantic/issues/3434) by [@jasujm](https://github.com/jasujm)
  * Fix issue when pydantic fail to parse `typing.ClassVar` string type annotation, [#3401](https://github.com/pydantic/pydantic/issues/3401) by [@uriyyo](https://github.com/uriyyo)
  * Mention Python >= 3.9.2 as an alternative to `typing_extensions.TypedDict`, [#3374](https://github.com/pydantic/pydantic/issues/3374) by [@BvB93](https://github.com/BvB93)
  * Changed the validator method name in the [Custom Errors example](https://docs.pydantic.dev/usage/models/#custom-errors)
    to more accurately describe what the validator is doing; changed from `name_must_contain_space` to ` value_must_equal_bar`, [#3327](https://github.com/pydantic/pydantic/issues/3327) by [@michaelrios28](https://github.com/michaelrios28)
  * Add `AmqpDsn` class, [#3254](https://github.com/pydantic/pydantic/issues/3254) by [@kludex](https://github.com/kludex)
  * Always use `Enum` value as default in generated JSON schema, [#3190](https://github.com/pydantic/pydantic/issues/3190) by [@joaommartins](https://github.com/joaommartins)
  * Add support for Mypy 0.920, [#3175](https://github.com/pydantic/pydantic/issues/3175) by [@christianbundy](https://github.com/christianbundy)
  * `validate_arguments` now supports `extra` customization (used to always be `Extra.forbid`), [#3161](https://github.com/pydantic/pydantic/issues/3161) by [@PrettyWood](https://github.com/PrettyWood)
  * Complex types can be set by nested environment variables, [#3159](https://github.com/pydantic/pydantic/issues/3159) by [@Air-Mark](https://github.com/Air-Mark)
  * Fix mypy plugin to collect fields based on `pydantic.utils.is_valid_field` so that it ignores untyped private variables, [#3146](https://github.com/pydantic/pydantic/issues/3146) by [@hi-ogawa](https://github.com/hi-ogawa)
  * fix `validate_arguments` issue with `Config.validate_all`, [#3135](https://github.com/pydantic/pydantic/issues/3135) by [@PrettyWood](https://github.com/PrettyWood)
  * avoid dict coercion when using dict subclasses as field type, [#3122](https://github.com/pydantic/pydantic/issues/3122) by [@PrettyWood](https://github.com/PrettyWood)
  * add support for `object` type, [#3062](https://github.com/pydantic/pydantic/issues/3062) by [@PrettyWood](https://github.com/PrettyWood)
  * Updates pydantic dataclasses to keep `_special` properties on parent classes, [#3043](https://github.com/pydantic/pydantic/issues/3043) by [@zulrang](https://github.com/zulrang)
  * Add a `TypedDict` class for error objects, [#3038](https://github.com/pydantic/pydantic/issues/3038) by [@matthewhughes934](https://github.com/matthewhughes934)
  * Fix support for using a subclass of an annotation as a default, [#3018](https://github.com/pydantic/pydantic/issues/3018) by [@JacobHayes](https://github.com/JacobHayes)
  * make `create_model_from_typeddict` mypy compliant, [#3008](https://github.com/pydantic/pydantic/issues/3008) by [@PrettyWood](https://github.com/PrettyWood)
  * Make multiple inheritance work when using `PrivateAttr`, [#2989](https://github.com/pydantic/pydantic/issues/2989) by [@hmvp](https://github.com/hmvp)
  * Parse environment variables as JSON, if they have a `Union` type with a complex subfield, [#2936](https://github.com/pydantic/pydantic/issues/2936) by [@cbartz](https://github.com/cbartz)
  * Prevent `StrictStr` permitting `Enum` values where the enum inherits from `str`, [#2929](https://github.com/pydantic/pydantic/issues/2929) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Make `SecretsSettingsSource` parse values being assigned to fields of complex types when sourced from a secrets file,
    just as when sourced from environment variables, [#2917](https://github.com/pydantic/pydantic/issues/2917) by [@davidmreed](https://github.com/davidmreed)
  * add a dark mode to _pydantic_ documentation, [#2913](https://github.com/pydantic/pydantic/issues/2913) by [@gbdlin](https://github.com/gbdlin)
  * Make `pydantic-mypy` plugin compatible with `pyproject.toml` configuration, consistent with `mypy` changes.
    See the [doc](https://docs.pydantic.dev/mypy_plugin/#configuring-the-plugin) for more information, [#2908](https://github.com/pydantic/pydantic/issues/2908) by [@jrwalk](https://github.com/jrwalk)
  * add Python 3.10 support, [#2885](https://github.com/pydantic/pydantic/issues/2885) by [@PrettyWood](https://github.com/PrettyWood)
  * Correctly parse generic models with `Json[T]`, [#2860](https://github.com/pydantic/pydantic/issues/2860) by [@geekingfrog](https://github.com/geekingfrog)
  * Update contrib docs re: Python version to use for building docs, [#2856](https://github.com/pydantic/pydantic/issues/2856) by [@paxcodes](https://github.com/paxcodes)
  * Clarify documentation about _pydantic_'s support for custom validation and strict type checking,
    despite _pydantic_ being primarily a parsing library, [#2855](https://github.com/pydantic/pydantic/issues/2855) by [@paxcodes](https://github.com/paxcodes)
  * Fix schema generation for `Deque` fields, [#2810](https://github.com/pydantic/pydantic/issues/2810) by [@sergejkozin](https://github.com/sergejkozin)
  * fix an edge case when mixing constraints and `Literal`, [#2794](https://github.com/pydantic/pydantic/issues/2794) by [@PrettyWood](https://github.com/PrettyWood)
  * Fix postponed annotation resolution for `NamedTuple` and `TypedDict` when they're used directly as the type of fields
    within Pydantic models, [#2760](https://github.com/pydantic/pydantic/issues/2760) by [@jameysharp](https://github.com/jameysharp)
  * Fix bug when `mypy` plugin fails on `construct` method call for `BaseSettings` derived classes, [#2753](https://github.com/pydantic/pydantic/issues/2753) by [@uriyyo](https://github.com/uriyyo)
  * Add function overloading for a `pydantic.create_model` function, [#2748](https://github.com/pydantic/pydantic/issues/2748) by [@uriyyo](https://github.com/uriyyo)
  * Fix mypy plugin issue with self field declaration, [#2743](https://github.com/pydantic/pydantic/issues/2743) by [@uriyyo](https://github.com/uriyyo)
  * The colon at the end of the line "The fields which were supplied when user was initialised:" suggests that the code following it is related.
    Changed it to a period, [#2733](https://github.com/pydantic/pydantic/issues/2733) by [@krisaoe](https://github.com/krisaoe)
  * Renamed variable `schema` to `schema_` to avoid shadowing of global variable name, [#2724](https://github.com/pydantic/pydantic/issues/2724) by [@shahriyarr](https://github.com/shahriyarr)
  * Add support for autocomplete in VS Code via `__dataclass_transform__`, [#2721](https://github.com/pydantic/pydantic/issues/2721) by [@tiangolo](https://github.com/tiangolo)
  * add missing type annotations in `BaseConfig` and handle `max_length = 0`, [#2719](https://github.com/pydantic/pydantic/issues/2719) by [@PrettyWood](https://github.com/PrettyWood)
  * Change `orm_mode` checking to allow recursive ORM mode parsing with dicts, [#2718](https://github.com/pydantic/pydantic/issues/2718) by [@nuno-andre](https://github.com/nuno-andre)
  * Add episode 313 of the *Talk Python To Me* podcast, where Michael Kennedy and Samuel Colvin discuss *pydantic*, to the docs, [#2712](https://github.com/pydantic/pydantic/issues/2712) by [@RatulMaharaj](https://github.com/RatulMaharaj)
  * fix JSON schema generation when a field is of type `NamedTuple` and has a default value, [#2707](https://github.com/pydantic/pydantic/issues/2707) by [@PrettyWood](https://github.com/PrettyWood)
  * `Enum` fields now properly support extra kwargs in schema generation, [#2697](https://github.com/pydantic/pydantic/issues/2697) by [@sammchardy](https://github.com/sammchardy)
  * **Breaking Change, see [#3780](https://github.com/pydantic/pydantic/issues/3780)**: Make serialization of referenced pydantic models possible, [#2650](https://github.com/pydantic/pydantic/issues/2650) by [@PrettyWood](https://github.com/PrettyWood)
  * Add `uniqueItems` option to `ConstrainedList`, [#2618](https://github.com/pydantic/pydantic/issues/2618) by [@nuno-andre](https://github.com/nuno-andre)
  * Try to evaluate forward refs automatically at model creation, [#2588](https://github.com/pydantic/pydantic/issues/2588) by [@uriyyo](https://github.com/uriyyo)
  * Switch docs preview and coverage display to use [smokeshow](https://smokeshow.helpmanual.io/), [#2580](https://github.com/pydantic/pydantic/issues/2580) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Add `__version__` attribute to pydantic module, [#2572](https://github.com/pydantic/pydantic/issues/2572) by [@paxcodes](https://github.com/paxcodes)
  * Add `postgresql+asyncpg`, `postgresql+pg8000`, `postgresql+psycopg2`, `postgresql+psycopg2cffi`, `postgresql+py-postgresql`
    and `postgresql+pygresql` schemes for `PostgresDsn`, [#2567](https://github.com/pydantic/pydantic/issues/2567) by [@postgres-asyncpg](https://github.com/postgres-asyncpg)
  * Enable the Hypothesis plugin to generate a constrained decimal when the `decimal_places` argument is specified, [#2524](https://github.com/pydantic/pydantic/issues/2524) by [@cwe5590](https://github.com/cwe5590)
  * Allow `collections.abc.Callable` to be used as type in Python 3.9, [#2519](https://github.com/pydantic/pydantic/issues/2519) by [@daviskirk](https://github.com/daviskirk)
  * Documentation update how to custom compile pydantic when using pip install, small change in `setup.py`
    to allow for custom CFLAGS when compiling, [#2517](https://github.com/pydantic/pydantic/issues/2517) by [@peterroelants](https://github.com/peterroelants)
  * remove side effect of `default_factory` to run it only once even if `Config.validate_all` is set, [#2515](https://github.com/pydantic/pydantic/issues/2515) by [@PrettyWood](https://github.com/PrettyWood)
  * Add lookahead to ip regexes for `AnyUrl` hosts. This allows urls with DNS labels
    looking like IPs to validate as they are perfectly valid host names, [#2512](https://github.com/pydantic/pydantic/issues/2512) by [@sbv-csis](https://github.com/sbv-csis)
  * Set `minItems` and `maxItems` in generated JSON schema for fixed-length tuples, [#2497](https://github.com/pydantic/pydantic/issues/2497) by [@PrettyWood](https://github.com/PrettyWood)
  * Add `strict` argument to `conbytes`, [#2489](https://github.com/pydantic/pydantic/issues/2489) by [@koxudaxi](https://github.com/koxudaxi)
  * Support user defined generic field types in generic models, [#2465](https://github.com/pydantic/pydantic/issues/2465) by [@daviskirk](https://github.com/daviskirk)
  * Add an example and a short explanation of subclassing `GetterDict` to docs, [#2463](https://github.com/pydantic/pydantic/issues/2463) by [@nuno-andre](https://github.com/nuno-andre)
  * add `KafkaDsn` type, `HttpUrl` now has default port 80 for http and 443 for https, [#2447](https://github.com/pydantic/pydantic/issues/2447) by [@MihanixA](https://github.com/MihanixA)
  * Add `PastDate` and `FutureDate` types, [#2425](https://github.com/pydantic/pydantic/issues/2425) by [@Kludex](https://github.com/Kludex)
  * Support generating schema for `Generic` fields with subtypes, [#2375](https://github.com/pydantic/pydantic/issues/2375) by [@maximberg](https://github.com/maximberg)
  * fix(encoder): serialize `NameEmail` to str, [#2341](https://github.com/pydantic/pydantic/issues/2341) by [@alecgerona](https://github.com/alecgerona)
  * add `Config.smart_union` to prevent coercion in `Union` if possible, see
   [the doc](https://docs.pydantic.dev/usage/model_config/#smart-union) for more information, [#2092](https://github.com/pydantic/pydantic/issues/2092) by [@PrettyWood](https://github.com/PrettyWood)
  * Add ability to use `typing.Counter` as a model field type, [#2060](https://github.com/pydantic/pydantic/issues/2060) by [@uriyyo](https://github.com/uriyyo)
  * Add parameterised subclasses to `__bases__` when constructing new parameterised classes, so that `A <: B => A[int] <: B[int]`, [#2007](https://github.com/pydantic/pydantic/issues/2007) by [@diabolo-dan](https://github.com/diabolo-dan)
  * Create `FileUrl` type that allows URLs that conform to [RFC 8089](https://tools.ietf.org/html/rfc8089#section-2).
    Add `host_required` parameter, which is `True` by default (`AnyUrl` and subclasses), `False` in `RedisDsn`, `FileUrl`, [#1983](https://github.com/pydantic/pydantic/issues/1983) by [@vgerak](https://github.com/vgerak)
  * add `confrozenset()`, analogous to `conset()` and `conlist()`, [#1897](https://github.com/pydantic/pydantic/issues/1897) by [@PrettyWood](https://github.com/PrettyWood)
  * stop calling parent class `root_validator` if overridden, [#1895](https://github.com/pydantic/pydantic/issues/1895) by [@PrettyWood](https://github.com/PrettyWood)
  * Add `repr` (defaults to `True`) parameter to `Field`, to hide it from the default representation of the `BaseModel`, [#1831](https://github.com/pydantic/pydantic/issues/1831) by [@fnep](https://github.com/fnep)
  * Accept empty query/fragment URL parts, [#1807](https://github.com/pydantic/pydantic/issues/1807) by [@xavier](https://github.com/xavier)



  !!! warning
      A security vulnerability, level "moderate" is fixed in v1.8.2. Please upgrade **ASAP**.
      See security advisory [CVE-2021-29510](https://github.com/pydantic/pydantic/security/advisories/GHSA-5jqp-qgf6-3pvh)

  * **Security fix:** Fix `date` and `datetime` parsing so passing either `'infinity'` or `float('inf')`
    (or their negative values) does not cause an infinite loop,
    see security advisory [CVE-2021-29510](https://github.com/pydantic/pydantic/security/advisories/GHSA-5jqp-qgf6-3pvh)
  * fix schema generation with Enum by generating a valid name, [#2575](https://github.com/pydantic/pydantic/issues/2575) by [@PrettyWood](https://github.com/PrettyWood)
  * fix JSON schema generation with a `Literal` of an enum member, [#2536](https://github.com/pydantic/pydantic/issues/2536) by [@PrettyWood](https://github.com/PrettyWood)
  * Fix bug with configurations declarations that are passed as
    keyword arguments during class creation, [#2532](https://github.com/pydantic/pydantic/issues/2532) by [@uriyyo](https://github.com/uriyyo)
  * Allow passing `json_encoders` in class kwargs, [#2521](https://github.com/pydantic/pydantic/issues/2521) by [@layday](https://github.com/layday)
  * support arbitrary types with custom `__eq__`, [#2483](https://github.com/pydantic/pydantic/issues/2483) by [@PrettyWood](https://github.com/PrettyWood)
  * support `Annotated` in `validate_arguments` and in generic models with Python 3.9, [#2483](https://github.com/pydantic/pydantic/issues/2483) by [@PrettyWood](https://github.com/PrettyWood)



  Bug fixes for regressions and new features from `v1.8`

  * allow elements of `Config.field` to update elements of a `Field`, [#2461](https://github.com/pydantic/pydantic/issues/2461) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix validation with a `BaseModel` field and a custom root type, [#2449](https://github.com/pydantic/pydantic/issues/2449) by [@PrettyWood](https://github.com/PrettyWood)
  * expose `Pattern` encoder to `fastapi`, [#2444](https://github.com/pydantic/pydantic/issues/2444) by [@PrettyWood](https://github.com/PrettyWood)
  * enable the Hypothesis plugin to generate a constrained float when the `multiple_of` argument is specified, [#2442](https://github.com/pydantic/pydantic/issues/2442) by [@tobi-lipede-oodle](https://github.com/tobi-lipede-oodle)
  * Avoid `RecursionError` when using some types like `Enum` or `Literal` with generic models, [#2436](https://github.com/pydantic/pydantic/issues/2436) by [@PrettyWood](https://github.com/PrettyWood)
  * do not overwrite declared `__hash__` in subclasses of a model, [#2422](https://github.com/pydantic/pydantic/issues/2422) by [@PrettyWood](https://github.com/PrettyWood)
  * fix `mypy` complaints on `Path` and `UUID` related custom types, [#2418](https://github.com/pydantic/pydantic/issues/2418) by [@PrettyWood](https://github.com/PrettyWood)
  * Support properly variable length tuples of compound types, [#2416](https://github.com/pydantic/pydantic/issues/2416) by [@PrettyWood](https://github.com/PrettyWood)



  Thank you to pydantic's sponsors:
  @jorgecarleitao, [@BCarley](https://github.com/BCarley), [@chdsbd](https://github.com/chdsbd), [@tiangolo](https://github.com/tiangolo), [@matin](https://github.com/matin), [@linusg](https://github.com/linusg), [@kevinalh](https://github.com/kevinalh), [@koxudaxi](https://github.com/koxudaxi), [@timdrijvers](https://github.com/timdrijvers), [@mkeen](https://github.com/mkeen), [@meadsteve](https://github.com/meadsteve),
  @ginomempin, [@primer-io](https://github.com/primer-io), [@and-semakin](https://github.com/and-semakin), [@tomthorogood](https://github.com/tomthorogood), [@AjitZK](https://github.com/AjitZK), [@westonsteimel](https://github.com/westonsteimel), [@Mazyod](https://github.com/Mazyod), [@christippett](https://github.com/christippett), [@CarlosDomingues](https://github.com/CarlosDomingues),
  @Kludex, [@r-m-n](https://github.com/r-m-n)
  for their kind support.



  * [Hypothesis plugin](https://docs.pydantic.dev/hypothesis_plugin/) for testing, [#2097](https://github.com/pydantic/pydantic/issues/2097) by [@Zac-HD](https://github.com/Zac-HD)
  * support for [`NamedTuple` and `TypedDict`](https://docs.pydantic.dev/usage/types/#annotated-types), [#2216](https://github.com/pydantic/pydantic/issues/2216) by [@PrettyWood](https://github.com/PrettyWood)
  * Support [`Annotated` hints on model fields](https://docs.pydantic.dev/usage/schema/#typingannotated-fields), [#2147](https://github.com/pydantic/pydantic/issues/2147) by [@JacobHayes](https://github.com/JacobHayes)
  * [`frozen` parameter on `Config`](https://docs.pydantic.dev/usage/model_config/) to allow models to be hashed, [#1880](https://github.com/pydantic/pydantic/issues/1880) by [@rhuille](https://github.com/rhuille)



  * **Breaking Change**, remove old deprecation aliases from v1, [#2415](https://github.com/pydantic/pydantic/issues/2415) by [@samuelcolvin](https://github.com/samuelcolvin):
    * remove notes on migrating to v1 in docs
    * remove `Schema` which was replaced by `Field`
    * remove `Config.case_insensitive` which was replaced by `Config.case_sensitive` (default `False`)
    * remove `Config.allow_population_by_alias` which was replaced by `Config.allow_population_by_field_name`
    * remove `model.fields` which was replaced by `model.__fields__`
    * remove `model.to_string()` which was replaced by `str(model)`
    * remove `model.__values__` which was replaced by `model.__dict__`
  * **Breaking Change:** always validate only first sublevel items with `each_item`.
    There were indeed some edge cases with some compound types where the validated items were the last sublevel ones, [#1933](https://github.com/pydantic/pydantic/issues/1933) by [@PrettyWood](https://github.com/PrettyWood)
  * Update docs extensions to fix local syntax highlighting, [#2400](https://github.com/pydantic/pydantic/issues/2400) by [@daviskirk](https://github.com/daviskirk)
  * fix: allow `utils.lenient_issubclass` to handle `typing.GenericAlias` objects like `list[str]` in Python >= 3.9, [#2399](https://github.com/pydantic/pydantic/issues/2399) by [@daviskirk](https://github.com/daviskirk)
  * Improve field declaration for _pydantic_ `dataclass` by allowing the usage of _pydantic_ `Field` or `'metadata'` kwarg of `dataclasses.field`, [#2384](https://github.com/pydantic/pydantic/issues/2384) by [@PrettyWood](https://github.com/PrettyWood)
  * Making `typing-extensions` a required dependency, [#2368](https://github.com/pydantic/pydantic/issues/2368) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Make `resolve_annotations` more lenient, allowing for missing modules, [#2363](https://github.com/pydantic/pydantic/issues/2363) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Allow configuring models through class kwargs, [#2356](https://github.com/pydantic/pydantic/issues/2356) by [@Bobronium](https://github.com/Bobronium)
  * Prevent `Mapping` subclasses from always being coerced to `dict`, [#2325](https://github.com/pydantic/pydantic/issues/2325) by [@ofek](https://github.com/ofek)
  * fix: allow `None` for type `Optional[conset / conlist]`, [#2320](https://github.com/pydantic/pydantic/issues/2320) by [@PrettyWood](https://github.com/PrettyWood)
  * Support empty tuple type, [#2318](https://github.com/pydantic/pydantic/issues/2318) by [@PrettyWood](https://github.com/PrettyWood)
  * fix: `python_requires` metadata to require >=3.6.1, [#2306](https://github.com/pydantic/pydantic/issues/2306) by [@hukkinj1](https://github.com/hukkinj1)
  * Properly encode `Decimal` with, or without any decimal places, [#2293](https://github.com/pydantic/pydantic/issues/2293) by [@hultner](https://github.com/hultner)
  * fix: update `__fields_set__` in `BaseModel.copy(update=…)`, [#2290](https://github.com/pydantic/pydantic/issues/2290) by [@PrettyWood](https://github.com/PrettyWood)
  * fix: keep order of fields with `BaseModel.construct()`, [#2281](https://github.com/pydantic/pydantic/issues/2281) by [@PrettyWood](https://github.com/PrettyWood)
  * Support generating schema for Generic fields, [#2262](https://github.com/pydantic/pydantic/issues/2262) by [@maximberg](https://github.com/maximberg)
  * Fix `validate_decorator` so `**kwargs` doesn't exclude values when the keyword
    has the same name as the `*args` or `**kwargs` names, [#2251](https://github.com/pydantic/pydantic/issues/2251) by [@cybojenix](https://github.com/cybojenix)
  * Prevent overriding positional arguments with keyword arguments in
    `validate_arguments`, as per behaviour with native functions, [#2249](https://github.com/pydantic/pydantic/issues/2249) by [@cybojenix](https://github.com/cybojenix)
  * add documentation for `con*` type functions, [#2242](https://github.com/pydantic/pydantic/issues/2242) by [@tayoogunbiyi](https://github.com/tayoogunbiyi)
  * Support custom root type (aka `__root__`) when using `parse_obj()` with nested models, [#2238](https://github.com/pydantic/pydantic/issues/2238) by [@PrettyWood](https://github.com/PrettyWood)
  * Support custom root type (aka `__root__`) with `from_orm()`, [#2237](https://github.com/pydantic/pydantic/issues/2237) by [@PrettyWood](https://github.com/PrettyWood)
  * ensure cythonized functions are left untouched when creating models, based on [#1944](https://github.com/pydantic/pydantic/issues/1944) by [@kollmats](https://github.com/kollmats), [#2228](https://github.com/pydantic/pydantic/issues/2228) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Resolve forward refs for stdlib dataclasses converted into _pydantic_ ones, [#2220](https://github.com/pydantic/pydantic/issues/2220) by [@PrettyWood](https://github.com/PrettyWood)
  * Add support for `NamedTuple` and `TypedDict` types.
    Those two types are now handled and validated when used inside `BaseModel` or _pydantic_ `dataclass`.
    Two utils are also added `create_model_from_namedtuple` and `create_model_from_typeddict`, [#2216](https://github.com/pydantic/pydantic/issues/2216) by [@PrettyWood](https://github.com/PrettyWood)
  * Do not ignore annotated fields when type is `Union[Type[...], ...]`, [#2213](https://github.com/pydantic/pydantic/issues/2213) by [@PrettyWood](https://github.com/PrettyWood)
  * Raise a user-friendly `TypeError` when a `root_validator` does not return a `dict` (e.g. `None`), [#2209](https://github.com/pydantic/pydantic/issues/2209) by [@masalim2](https://github.com/masalim2)
  * Add a `FrozenSet[str]` type annotation to the `allowed_schemes` argument on the `strict_url` field type, [#2198](https://github.com/pydantic/pydantic/issues/2198) by [@Midnighter](https://github.com/Midnighter)
  * add `allow_mutation` constraint to `Field`, [#2195](https://github.com/pydantic/pydantic/issues/2195) by [@sblack-usu](https://github.com/sblack-usu)
  * Allow `Field` with a `default_factory` to be used as an argument to a function
    decorated with `validate_arguments`, [#2176](https://github.com/pydantic/pydantic/issues/2176) by [@thomascobb](https://github.com/thomascobb)
  * Allow non-existent secrets directory by only issuing a warning, [#2175](https://github.com/pydantic/pydantic/issues/2175) by [@davidolrik](https://github.com/davidolrik)
  * fix URL regex to parse fragment without query string, [#2168](https://github.com/pydantic/pydantic/issues/2168) by [@andrewmwhite](https://github.com/andrewmwhite)
  * fix: ensure to always return one of the values in `Literal` field type, [#2166](https://github.com/pydantic/pydantic/issues/2166) by [@PrettyWood](https://github.com/PrettyWood)
  * Support `typing.Annotated` hints on model fields. A `Field` may now be set in the type hint with `Annotated[..., Field(...)`; all other annotations are ignored but still visible with `get_type_hints(..., include_extras=True)`, [#2147](https://github.com/pydantic/pydantic/issues/2147) by [@JacobHayes](https://github.com/JacobHayes)
  * Added `StrictBytes` type as well as `strict=False` option to `ConstrainedBytes`, [#2136](https://github.com/pydantic/pydantic/issues/2136) by [@rlizzo](https://github.com/rlizzo)
  * added `Config.anystr_lower` and `to_lower` kwarg to `constr` and `conbytes`, [#2134](https://github.com/pydantic/pydantic/issues/2134) by [@tayoogunbiyi](https://github.com/tayoogunbiyi)
  * Support plain `typing.Tuple` type, [#2132](https://github.com/pydantic/pydantic/issues/2132) by [@PrettyWood](https://github.com/PrettyWood)
  * Add a bound method `validate` to functions decorated with `validate_arguments`
    to validate parameters without actually calling the function, [#2127](https://github.com/pydantic/pydantic/issues/2127) by [@PrettyWood](https://github.com/PrettyWood)
  * Add the ability to customize settings sources (add / disable / change priority order), [#2107](https://github.com/pydantic/pydantic/issues/2107) by [@kozlek](https://github.com/kozlek)
  * Fix mypy complaints about most custom _pydantic_ types, [#2098](https://github.com/pydantic/pydantic/issues/2098) by [@PrettyWood](https://github.com/PrettyWood)
  * Add a [Hypothesis](https://hypothesis.readthedocs.io/) plugin for easier [property-based testing](https://increment.com/testing/in-praise-of-property-based-testing/) with Pydantic's custom types - [usage details here](https://docs.pydantic.dev/hypothesis_plugin/), [#2097](https://github.com/pydantic/pydantic/issues/2097) by [@Zac-HD](https://github.com/Zac-HD)
  * add validator for `None`, `NoneType` or `Literal[None]`, [#2095](https://github.com/pydantic/pydantic/issues/2095) by [@PrettyWood](https://github.com/PrettyWood)
  * Handle properly fields of type `Callable` with a default value, [#2094](https://github.com/pydantic/pydantic/issues/2094) by [@PrettyWood](https://github.com/PrettyWood)
  * Updated `create_model` return type annotation to return type which inherits from `__base__` argument, [#2071](https://github.com/pydantic/pydantic/issues/2071) by [@uriyyo](https://github.com/uriyyo)
  * Add merged `json_encoders` inheritance, [#2064](https://github.com/pydantic/pydantic/issues/2064) by [@art049](https://github.com/art049)
  * allow overwriting `ClassVar`s in sub-models without having to re-annotate them, [#2061](https://github.com/pydantic/pydantic/issues/2061) by [@layday](https://github.com/layday)
  * add default encoder for `Pattern` type, [#2045](https://github.com/pydantic/pydantic/issues/2045) by [@PrettyWood](https://github.com/PrettyWood)
  * Add `NonNegativeInt`, `NonPositiveInt`, `NonNegativeFloat`, `NonPositiveFloat`, [#1975](https://github.com/pydantic/pydantic/issues/1975) by [@mdavis-xyz](https://github.com/mdavis-xyz)
  * Use % for percentage in string format of colors, [#1960](https://github.com/pydantic/pydantic/issues/1960) by [@EdwardBetts](https://github.com/EdwardBetts)
  * Fixed issue causing `KeyError` to be raised when building schema from multiple `BaseModel` with the same names declared in separate classes, [#1912](https://github.com/pydantic/pydantic/issues/1912) by [@JSextonn](https://github.com/JSextonn)
  * Add `rediss` (Redis over SSL) protocol to `RedisDsn`
    Allow URLs without `user` part (e.g., `rediss://:pass@localhost`), [#1911](https://github.com/pydantic/pydantic/issues/1911) by [@TrDex](https://github.com/TrDex)
  * Add a new `frozen` boolean parameter to `Config` (default: `False`).
    Setting `frozen=True` does everything that `allow_mutation=False` does, and also generates a `__hash__()` method for the model. This makes instances of the model potentially hashable if all the attributes are hashable, [#1880](https://github.com/pydantic/pydantic/issues/1880) by [@rhuille](https://github.com/rhuille)
  * fix schema generation with multiple Enums having the same name, [#1857](https://github.com/pydantic/pydantic/issues/1857) by [@PrettyWood](https://github.com/PrettyWood)
  * Added support for 13/19 digits VISA credit cards in `PaymentCardNumber` type, [#1416](https://github.com/pydantic/pydantic/issues/1416) by [@AlexanderSov](https://github.com/AlexanderSov)
  * fix: prevent `RecursionError` while using recursive `GenericModel`s, [#1370](https://github.com/pydantic/pydantic/issues/1370) by [@xppt](https://github.com/xppt)
  * use `enum` for `typing.Literal` in JSON schema, [#1350](https://github.com/pydantic/pydantic/issues/1350) by [@PrettyWood](https://github.com/PrettyWood)
  * Fix: some recursive models did not require `update_forward_refs` and silently behaved incorrectly, [#1201](https://github.com/pydantic/pydantic/issues/1201) by [@PrettyWood](https://github.com/PrettyWood)
  * Fix bug where generic models with fields where the typevar is nested in another type `a: List[T]` are considered to be concrete. This allows these models to be subclassed and composed as expected, [#947](https://github.com/pydantic/pydantic/issues/947) by [@daviskirk](https://github.com/daviskirk)
  * Add `Config.copy_on_model_validation` flag. When set to `False`, _pydantic_ will keep models used as fields
    untouched on validation instead of reconstructing (copying) them, [#265](https://github.com/pydantic/pydantic/issues/265) by [@PrettyWood](https://github.com/PrettyWood)



  * **Security fix:** Fix `date` and `datetime` parsing so passing either `'infinity'` or `float('inf')`
    (or their negative values) does not cause an infinite loop,
    See security advisory [CVE-2021-29510](https://github.com/pydantic/pydantic/security/advisories/GHSA-5jqp-qgf6-3pvh)



  Thank you to pydantic's sponsors:
  @timdrijvers, [@BCarley](https://github.com/BCarley), [@chdsbd](https://github.com/chdsbd), [@tiangolo](https://github.com/tiangolo), [@matin](https://github.com/matin), [@linusg](https://github.com/linusg), [@kevinalh](https://github.com/kevinalh), [@jorgecarleitao](https://github.com/jorgecarleitao), [@koxudaxi](https://github.com/koxudaxi), [@primer-api](https://github.com/primer-api),
  @mkeen, [@meadsteve](https://github.com/meadsteve) for their kind support.

  * fix: set right default value for required (optional) fields, [#2142](https://github.com/pydantic/pydantic/issues/2142) by [@PrettyWood](https://github.com/PrettyWood)
  * fix: support `underscore_attrs_are_private` with generic models, [#2138](https://github.com/pydantic/pydantic/issues/2138) by [@PrettyWood](https://github.com/PrettyWood)
  * fix: update all modified field values in `root_validator` when `validate_assignment` is on, [#2116](https://github.com/pydantic/pydantic/issues/2116) by [@PrettyWood](https://github.com/PrettyWood)
  * Allow pickling of `pydantic.dataclasses.dataclass` dynamically created from a built-in `dataclasses.dataclass`, [#2111](https://github.com/pydantic/pydantic/issues/2111) by [@aimestereo](https://github.com/aimestereo)
  * Fix a regression where Enum fields would not propagate keyword arguments to the schema, [#2109](https://github.com/pydantic/pydantic/issues/2109) by [@bm424](https://github.com/bm424)
  * Ignore `__doc__` as private attribute when `Config.underscore_attrs_are_private` is set, [#2090](https://github.com/pydantic/pydantic/issues/2090) by [@PrettyWood](https://github.com/PrettyWood)



  * fix slow `GenericModel` concrete model creation, allow `GenericModel` concrete name reusing in module, [#2078](https://github.com/pydantic/pydantic/issues/2078) by [@Bobronium](https://github.com/Bobronium)
  * keep the order of the fields when `validate_assignment` is set, [#2073](https://github.com/pydantic/pydantic/issues/2073) by [@PrettyWood](https://github.com/PrettyWood)
  * forward all the params of the stdlib `dataclass` when converted into _pydantic_ `dataclass`, [#2065](https://github.com/pydantic/pydantic/issues/2065) by [@PrettyWood](https://github.com/PrettyWood)



  Thank you to pydantic's sponsors:
  @timdrijvers, [@BCarley](https://github.com/BCarley), [@chdsbd](https://github.com/chdsbd), [@tiangolo](https://github.com/tiangolo), [@matin](https://github.com/matin), [@linusg](https://github.com/linusg), [@kevinalh](https://github.com/kevinalh), [@jorgecarleitao](https://github.com/jorgecarleitao), [@koxudaxi](https://github.com/koxudaxi), [@primer-api](https://github.com/primer-api), [@mkeen](https://github.com/mkeen)
  for their kind support.

  * fix annotation of `validate_arguments` when passing configuration as argument, [#2055](https://github.com/pydantic/pydantic/issues/2055) by [@layday](https://github.com/layday)
  * Fix mypy assignment error when using `PrivateAttr`, [#2048](https://github.com/pydantic/pydantic/issues/2048) by [@aphedges](https://github.com/aphedges)
  * fix `underscore_attrs_are_private` causing `TypeError` when overriding `__init__`, [#2047](https://github.com/pydantic/pydantic/issues/2047) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Fixed regression introduced in v1.7 involving exception handling in field validators when `validate_assignment=True`, [#2044](https://github.com/pydantic/pydantic/issues/2044) by [@johnsabath](https://github.com/johnsabath)
  * fix: _pydantic_ `dataclass` can inherit from stdlib `dataclass`
    and `Config.arbitrary_types_allowed` is supported, [#2042](https://github.com/pydantic/pydantic/issues/2042) by [@PrettyWood](https://github.com/PrettyWood)



  Thank you to pydantic's sponsors:
  @timdrijvers, [@BCarley](https://github.com/BCarley), [@chdsbd](https://github.com/chdsbd), [@tiangolo](https://github.com/tiangolo), [@matin](https://github.com/matin), [@linusg](https://github.com/linusg), [@kevinalh](https://github.com/kevinalh), [@jorgecarleitao](https://github.com/jorgecarleitao), [@koxudaxi](https://github.com/koxudaxi), [@primer-api](https://github.com/primer-api)
  for their kind support.



  * Python 3.9 support, thanks [@PrettyWood](https://github.com/PrettyWood)
  * [Private model attributes](https://docs.pydantic.dev/usage/models/#private-model-attributes), thanks [@Bobronium](https://github.com/Bobronium)
  * ["secrets files" support in `BaseSettings`](https://docs.pydantic.dev/usage/settings/#secret-support), thanks [@mdgilene](https://github.com/mdgilene)
  * [convert stdlib dataclasses to pydantic dataclasses and use stdlib dataclasses in models](https://docs.pydantic.dev/usage/dataclasses/#stdlib-dataclasses-and-pydantic-dataclasses), thanks [@PrettyWood](https://github.com/PrettyWood)



  * **Breaking Change:** remove `__field_defaults__`, add `default_factory` support with `BaseModel.construct`.
    Use `.get_default()` method on fields in `__fields__` attribute instead, [#1732](https://github.com/pydantic/pydantic/issues/1732) by [@PrettyWood](https://github.com/PrettyWood)
  * Rearrange CI to run linting as a separate job, split install recipes for different tasks, [#2020](https://github.com/pydantic/pydantic/issues/2020) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Allows subclasses of generic models to make some, or all, of the superclass's type parameters concrete, while
    also defining new type parameters in the subclass, [#2005](https://github.com/pydantic/pydantic/issues/2005) by [@choogeboom](https://github.com/choogeboom)
  * Call validator with the correct `values` parameter type in `BaseModel.__setattr__`,
    when `validate_assignment = True` in model config, [#1999](https://github.com/pydantic/pydantic/issues/1999) by [@me-ransh](https://github.com/me-ransh)
  * Force `fields.Undefined` to be a singleton object, fixing inherited generic model schemas, [#1981](https://github.com/pydantic/pydantic/issues/1981) by [@daviskirk](https://github.com/daviskirk)
  * Include tests in source distributions, [#1976](https://github.com/pydantic/pydantic/issues/1976) by [@sbraz](https://github.com/sbraz)
  * Add ability to use `min_length/max_length` constraints with secret types, [#1974](https://github.com/pydantic/pydantic/issues/1974) by [@uriyyo](https://github.com/uriyyo)
  * Also check `root_validators` when `validate_assignment` is on, [#1971](https://github.com/pydantic/pydantic/issues/1971) by [@PrettyWood](https://github.com/PrettyWood)
  * Fix const validators not running when custom validators are present, [#1957](https://github.com/pydantic/pydantic/issues/1957) by [@hmvp](https://github.com/hmvp)
  * add `deque` to field types, [#1935](https://github.com/pydantic/pydantic/issues/1935) by [@wozniakty](https://github.com/wozniakty)
  * add basic support for Python 3.9, [#1832](https://github.com/pydantic/pydantic/issues/1832) by [@PrettyWood](https://github.com/PrettyWood)
  * Fix typo in the anchor of exporting_models.md#modelcopy and incorrect description, [#1821](https://github.com/pydantic/pydantic/issues/1821) by [@KimMachineGun](https://github.com/KimMachineGun)
  * Added ability for `BaseSettings` to read "secret files", [#1820](https://github.com/pydantic/pydantic/issues/1820) by [@mdgilene](https://github.com/mdgilene)
  * add `parse_raw_as` utility function, [#1812](https://github.com/pydantic/pydantic/issues/1812) by [@PrettyWood](https://github.com/PrettyWood)
  * Support home directory relative paths for `dotenv` files (e.g. `~/.env`), [#1803](https://github.com/pydantic/pydantic/issues/1803) by [@PrettyWood](https://github.com/PrettyWood)
  * Clarify documentation for `parse_file` to show that the argument
    should be a file *path* not a file-like object, [#1794](https://github.com/pydantic/pydantic/issues/1794) by [@mdavis-xyz](https://github.com/mdavis-xyz)
  * Fix false positive from mypy plugin when a class nested within a `BaseModel` is named `Model`, [#1770](https://github.com/pydantic/pydantic/issues/1770) by [@selimb](https://github.com/selimb)
  * add basic support of Pattern type in schema generation, [#1767](https://github.com/pydantic/pydantic/issues/1767) by [@PrettyWood](https://github.com/PrettyWood)
  * Support custom title, description and default in schema of enums, [#1748](https://github.com/pydantic/pydantic/issues/1748) by [@PrettyWood](https://github.com/PrettyWood)
  * Properly represent `Literal` Enums when `use_enum_values` is True, [#1747](https://github.com/pydantic/pydantic/issues/1747) by [@noelevans](https://github.com/noelevans)
  * Allows timezone information to be added to strings to be formatted as time objects. Permitted formats are `Z` for UTC
    or an offset for absolute positive or negative time shifts. Or the timezone data can be omitted, [#1744](https://github.com/pydantic/pydantic/issues/1744) by [@noelevans](https://github.com/noelevans)
  * Add stub `__init__` with Python 3.6 signature for `ForwardRef`, [#1738](https://github.com/pydantic/pydantic/issues/1738) by [@sirtelemak](https://github.com/sirtelemak)
  * Fix behaviour with forward refs and optional fields in nested models, [#1736](https://github.com/pydantic/pydantic/issues/1736) by [@PrettyWood](https://github.com/PrettyWood)
  * add `Enum` and `IntEnum` as valid types for fields, [#1735](https://github.com/pydantic/pydantic/issues/1735) by [@PrettyWood](https://github.com/PrettyWood)
  * Change default value of `__module__` argument of `create_model` from `None` to `'pydantic.main'`.
    Set reference of created concrete model to it's module to allow pickling (not applied to models created in
    functions), [#1686](https://github.com/pydantic/pydantic/issues/1686) by [@Bobronium](https://github.com/Bobronium)
  * Add private attributes support, [#1679](https://github.com/pydantic/pydantic/issues/1679) by [@Bobronium](https://github.com/Bobronium)
  * add `config` to `@validate_arguments`, [#1663](https://github.com/pydantic/pydantic/issues/1663) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Allow descendant Settings models to override env variable names for the fields defined in parent Settings models with
    `env` in their `Config`. Previously only `env_prefix` configuration option was applicable, [#1561](https://github.com/pydantic/pydantic/issues/1561) by [@ojomio](https://github.com/ojomio)
  * Support `ref_template` when creating schema `$ref`s, [#1479](https://github.com/pydantic/pydantic/issues/1479) by [@kilo59](https://github.com/kilo59)
  * Add a `__call__` stub to `PyObject` so that mypy will know that it is callable, [#1352](https://github.com/pydantic/pydantic/issues/1352) by [@brianmaissy](https://github.com/brianmaissy)
  * `pydantic.dataclasses.dataclass` decorator now supports built-in `dataclasses.dataclass`.
    It is hence possible to convert an existing `dataclass` easily to add *pydantic* validation.
    Moreover nested dataclasses are also supported, [#744](https://github.com/pydantic/pydantic/issues/744) by [@PrettyWood](https://github.com/PrettyWood)



  * **Security fix:** Fix `date` and `datetime` parsing so passing either `'infinity'` or `float('inf')`
    (or their negative values) does not cause an infinite loop,
    See security advisory [CVE-2021-29510](https://github.com/pydantic/pydantic/security/advisories/GHSA-5jqp-qgf6-3pvh)



  * fix validation and parsing of nested models with `default_factory`, [#1710](https://github.com/pydantic/pydantic/issues/1710) by [@PrettyWood](https://github.com/PrettyWood)



  Thank you to pydantic's sponsors: [@matin](https://github.com/matin), [@tiangolo](https://github.com/tiangolo), [@chdsbd](https://github.com/chdsbd), [@jorgecarleitao](https://github.com/jorgecarleitao), and 1 anonymous sponsor for their kind support.

  * Modify validators for `conlist` and `conset` to not have `always=True`, [#1682](https://github.com/pydantic/pydantic/issues/1682) by [@samuelcolvin](https://github.com/samuelcolvin)
  * add port check to `AnyUrl` (can't exceed 65536) ports are 16 insigned bits: `0 <= port <= 2**16-1` src: [rfc793 header format](https://tools.ietf.org/html/rfc793#section-3.1), [#1654](https://github.com/pydantic/pydantic/issues/1654) by [@flapili](https://github.com/flapili)
  * Document default `regex` anchoring semantics, [#1648](https://github.com/pydantic/pydantic/issues/1648) by [@yurikhan](https://github.com/yurikhan)
  * Use `chain.from_iterable` in class_validators.py. This is a faster and more idiomatic way of using `itertools.chain`.
    Instead of computing all the items in the iterable and storing them in memory, they are computed one-by-one and never
    stored as a huge list. This can save on both runtime and memory space, [#1642](https://github.com/pydantic/pydantic/issues/1642) by [@cool-RR](https://github.com/cool-RR)
  * Add `conset()`, analogous to `conlist()`, [#1623](https://github.com/pydantic/pydantic/issues/1623) by [@patrickkwang](https://github.com/patrickkwang)
  * make *pydantic* errors (un)pickable, [#1616](https://github.com/pydantic/pydantic/issues/1616) by [@PrettyWood](https://github.com/PrettyWood)
  * Allow custom encoding for `dotenv` files, [#1615](https://github.com/pydantic/pydantic/issues/1615) by [@PrettyWood](https://github.com/PrettyWood)
  * Ensure `SchemaExtraCallable` is always defined to get type hints on BaseConfig, [#1614](https://github.com/pydantic/pydantic/issues/1614) by [@PrettyWood](https://github.com/PrettyWood)
  * Update datetime parser to support negative timestamps, [#1600](https://github.com/pydantic/pydantic/issues/1600) by [@mlbiche](https://github.com/mlbiche)
  * Update mypy, remove `AnyType` alias for `Type[Any]`, [#1598](https://github.com/pydantic/pydantic/issues/1598) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Adjust handling of root validators so that errors are aggregated from _all_ failing root validators, instead of reporting on only the first root validator to fail, [#1586](https://github.com/pydantic/pydantic/issues/1586) by [@beezee](https://github.com/beezee)
  * Make `__modify_schema__` on Enums apply to the enum schema rather than fields that use the enum, [#1581](https://github.com/pydantic/pydantic/issues/1581) by [@therefromhere](https://github.com/therefromhere)
  * Fix behavior of `__all__` key when used in conjunction with index keys in advanced include/exclude of fields that are sequences, [#1579](https://github.com/pydantic/pydantic/issues/1579) by [@xspirus](https://github.com/xspirus)
  * Subclass validators do not run when referencing a `List` field defined in a parent class when `each_item=True`. Added an example to the docs illustrating this, [#1566](https://github.com/pydantic/pydantic/issues/1566) by [@samueldeklund](https://github.com/samueldeklund)
  * change `schema.field_class_to_schema` to support `frozenset` in schema, [#1557](https://github.com/pydantic/pydantic/issues/1557) by [@wangpeibao](https://github.com/wangpeibao)
  * Call `__modify_schema__` only for the field schema, [#1552](https://github.com/pydantic/pydantic/issues/1552) by [@PrettyWood](https://github.com/PrettyWood)
  * Move the assignment of `field.validate_always` in `fields.py` so the `always` parameter of validators work on inheritance, [#1545](https://github.com/pydantic/pydantic/issues/1545) by [@dcHHH](https://github.com/dcHHH)
  * Added support for UUID instantiation through 16 byte strings such as `b'\x12\x34\x56\x78' * 4`. This was done to support `BINARY(16)` columns in sqlalchemy, [#1541](https://github.com/pydantic/pydantic/issues/1541) by [@shawnwall](https://github.com/shawnwall)
  * Add a test assertion that `default_factory` can return a singleton, [#1523](https://github.com/pydantic/pydantic/issues/1523) by [@therefromhere](https://github.com/therefromhere)
  * Add `NameEmail.__eq__` so duplicate `NameEmail` instances are evaluated as equal, [#1514](https://github.com/pydantic/pydantic/issues/1514) by [@stephen-bunn](https://github.com/stephen-bunn)
  * Add datamodel-code-generator link in pydantic document site, [#1500](https://github.com/pydantic/pydantic/issues/1500) by [@koxudaxi](https://github.com/koxudaxi)
  * Added a "Discussion of Pydantic" section to the documentation, with a link to "Pydantic Introduction" video by Alexander Hultnér, [#1499](https://github.com/pydantic/pydantic/issues/1499) by [@hultner](https://github.com/hultner)
  * Avoid some side effects of `default_factory` by calling it only once
    if possible and by not setting a default value in the schema, [#1491](https://github.com/pydantic/pydantic/issues/1491) by [@PrettyWood](https://github.com/PrettyWood)
  * Added docs about dumping dataclasses to JSON, [#1487](https://github.com/pydantic/pydantic/issues/1487) by [@mikegrima](https://github.com/mikegrima)
  * Make `BaseModel.__signature__` class-only, so getting `__signature__` from model instance will raise `AttributeError`, [#1466](https://github.com/pydantic/pydantic/issues/1466) by [@Bobronium](https://github.com/Bobronium)
  * include `'format': 'password'` in the schema for secret types, [#1424](https://github.com/pydantic/pydantic/issues/1424) by [@atheuz](https://github.com/atheuz)
  * Modify schema constraints on `ConstrainedFloat` so that `exclusiveMinimum` and
    minimum are not included in the schema if they are equal to `-math.inf` and
    `exclusiveMaximum` and `maximum` are not included if they are equal to `math.inf`, [#1417](https://github.com/pydantic/pydantic/issues/1417) by [@vdwees](https://github.com/vdwees)
  * Squash internal `__root__` dicts in `.dict()` (and, by extension, in `.json()`), [#1414](https://github.com/pydantic/pydantic/issues/1414) by [@patrickkwang](https://github.com/patrickkwang)
  * Move `const` validator to post-validators so it validates the parsed value, [#1410](https://github.com/pydantic/pydantic/issues/1410) by [@selimb](https://github.com/selimb)
  * Fix model validation to handle nested literals, e.g. `Literal['foo', Literal['bar']]`, [#1364](https://github.com/pydantic/pydantic/issues/1364) by [@DBCerigo](https://github.com/DBCerigo)
  * Remove `user_required = True` from `RedisDsn`, neither user nor password are required, [#1275](https://github.com/pydantic/pydantic/issues/1275) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Remove extra `allOf` from schema for fields with `Union` and custom `Field`, [#1209](https://github.com/pydantic/pydantic/issues/1209) by [@mostaphaRoudsari](https://github.com/mostaphaRoudsari)
  * Updates OpenAPI schema generation to output all enums as separate models.
    Instead of inlining the enum values in the model schema, models now use a `$ref`
    property to point to the enum definition, [#1173](https://github.com/pydantic/pydantic/issues/1173) by [@calvinwyoung](https://github.com/calvinwyoung)



  * Signature generation with `extra: allow` never uses a field name, [#1418](https://github.com/pydantic/pydantic/issues/1418) by [@prettywood](https://github.com/prettywood)
  * Avoid mutating `Field` default value, [#1412](https://github.com/pydantic/pydantic/issues/1412) by [@prettywood](https://github.com/prettywood)



  * Make includes/excludes arguments for `.dict()`, `._iter()`, ..., immutable, [#1404](https://github.com/pydantic/pydantic/issues/1404) by [@AlexECX](https://github.com/AlexECX)
  * Always use a field's real name with includes/excludes in `model._iter()`, regardless of `by_alias`, [#1397](https://github.com/pydantic/pydantic/issues/1397) by [@AlexECX](https://github.com/AlexECX)
  * Update constr regex example to include start and end lines, [#1396](https://github.com/pydantic/pydantic/issues/1396) by [@lmcnearney](https://github.com/lmcnearney)
  * Confirm that shallow `model.copy()` does make a shallow copy of attributes, [#1383](https://github.com/pydantic/pydantic/issues/1383) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Renaming `model_name` argument of `main.create_model()` to `__model_name` to allow using `model_name` as a field name, [#1367](https://github.com/pydantic/pydantic/issues/1367) by [@kittipatv](https://github.com/kittipatv)
  * Replace raising of exception to silent passing  for non-Var attributes in mypy plugin, [#1345](https://github.com/pydantic/pydantic/issues/1345) by [@b0g3r](https://github.com/b0g3r)
  * Remove `typing_extensions` dependency for Python 3.8, [#1342](https://github.com/pydantic/pydantic/issues/1342) by [@prettywood](https://github.com/prettywood)
  * Make `SecretStr` and `SecretBytes` initialization idempotent, [#1330](https://github.com/pydantic/pydantic/issues/1330) by [@atheuz](https://github.com/atheuz)
  * document making secret types dumpable using the json method, [#1328](https://github.com/pydantic/pydantic/issues/1328) by [@atheuz](https://github.com/atheuz)
  * Move all testing and build to github actions, add windows and macos binaries,
    thank you [@StephenBrown2](https://github.com/StephenBrown2) for much help, [#1326](https://github.com/pydantic/pydantic/issues/1326) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix card number length check in `PaymentCardNumber`, `PaymentCardBrand` now inherits from `str`, [#1317](https://github.com/pydantic/pydantic/issues/1317) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Have `BaseModel` inherit from `Representation` to make mypy happy when overriding `__str__`, [#1310](https://github.com/pydantic/pydantic/issues/1310) by [@FuegoFro](https://github.com/FuegoFro)
  * Allow `None` as input to all optional list fields, [#1307](https://github.com/pydantic/pydantic/issues/1307) by [@prettywood](https://github.com/prettywood)
  * Add `datetime` field to `default_factory` example, [#1301](https://github.com/pydantic/pydantic/issues/1301) by [@StephenBrown2](https://github.com/StephenBrown2)
  * Allow subclasses of known types to be encoded with superclass encoder, [#1291](https://github.com/pydantic/pydantic/issues/1291) by [@StephenBrown2](https://github.com/StephenBrown2)
  * Exclude exported fields from all elements of a list/tuple of submodels/dicts with `'__all__'`, [#1286](https://github.com/pydantic/pydantic/issues/1286) by [@masalim2](https://github.com/masalim2)
  * Add pydantic.color.Color objects as available input for Color fields, [#1258](https://github.com/pydantic/pydantic/issues/1258) by [@leosussan](https://github.com/leosussan)
  * In examples, type nullable fields as `Optional`, so that these are valid mypy annotations, [#1248](https://github.com/pydantic/pydantic/issues/1248) by [@kokes](https://github.com/kokes)
  * Make `pattern_validator()` accept pre-compiled `Pattern` objects. Fix `str_validator()` return type to `str`, [#1237](https://github.com/pydantic/pydantic/issues/1237) by [@adamgreg](https://github.com/adamgreg)
  * Document how to manage Generics and inheritance, [#1229](https://github.com/pydantic/pydantic/issues/1229) by [@esadruhn](https://github.com/esadruhn)
  * `update_forward_refs()` method of BaseModel now copies `__dict__` of class module instead of modyfying it, [#1228](https://github.com/pydantic/pydantic/issues/1228) by [@paul-ilyin](https://github.com/paul-ilyin)
  * Support instance methods and class methods with `@validate_arguments`, [#1222](https://github.com/pydantic/pydantic/issues/1222) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Add `default_factory` argument to `Field` to create a dynamic default value by passing a zero-argument callable, [#1210](https://github.com/pydantic/pydantic/issues/1210) by [@prettywood](https://github.com/prettywood)
  * add support for `NewType` of `List`, `Optional`, etc, [#1207](https://github.com/pydantic/pydantic/issues/1207) by [@Kazy](https://github.com/Kazy)
  * fix mypy signature for `root_validator`, [#1192](https://github.com/pydantic/pydantic/issues/1192) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Fixed parsing of nested 'custom root type' models, [#1190](https://github.com/pydantic/pydantic/issues/1190) by [@Shados](https://github.com/Shados)
  * Add `validate_arguments` function decorator which checks the arguments to a function matches type annotations, [#1179](https://github.com/pydantic/pydantic/issues/1179) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Add `__signature__` to models, [#1034](https://github.com/pydantic/pydantic/issues/1034) by [@Bobronium](https://github.com/Bobronium)
  * Refactor `._iter()` method, 10x speed boost for `dict(model)`, [#1017](https://github.com/pydantic/pydantic/issues/1017) by [@Bobronium](https://github.com/Bobronium)



  * **Breaking Change:** alias precedence logic changed so aliases on a field always take priority over
    an alias from `alias_generator` to avoid buggy/unexpected behaviour,
    see [here](https://docs.pydantic.dev/usage/model_config/#alias-precedence) for details, [#1178](https://github.com/pydantic/pydantic/issues/1178) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Add support for unicode and punycode in TLDs, [#1182](https://github.com/pydantic/pydantic/issues/1182) by [@jamescurtin](https://github.com/jamescurtin)
  * Fix `cls` argument in validators during assignment, [#1172](https://github.com/pydantic/pydantic/issues/1172) by [@samuelcolvin](https://github.com/samuelcolvin)
  * completing Luhn algorithm for `PaymentCardNumber`, [#1166](https://github.com/pydantic/pydantic/issues/1166) by [@cuencandres](https://github.com/cuencandres)
  * add support for generics that implement `__get_validators__` like a custom data type, [#1159](https://github.com/pydantic/pydantic/issues/1159) by [@tiangolo](https://github.com/tiangolo)
  * add support for infinite generators with `Iterable`, [#1152](https://github.com/pydantic/pydantic/issues/1152) by [@tiangolo](https://github.com/tiangolo)
  * fix `url_regex` to accept schemas with `+`, `-` and `.` after the first character, [#1142](https://github.com/pydantic/pydantic/issues/1142) by [@samuelcolvin](https://github.com/samuelcolvin)
  * move `version_info()` to `version.py`, suggest its use in issues, [#1138](https://github.com/pydantic/pydantic/issues/1138) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Improve pydantic import time by roughly 50% by deferring some module loading and regex compilation, [#1127](https://github.com/pydantic/pydantic/issues/1127) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Fix `EmailStr` and `NameEmail` to accept instances of themselves in cython, [#1126](https://github.com/pydantic/pydantic/issues/1126) by [@koxudaxi](https://github.com/koxudaxi)
  * Pass model class to the `Config.schema_extra` callable, [#1125](https://github.com/pydantic/pydantic/issues/1125) by [@therefromhere](https://github.com/therefromhere)
  * Fix regex for username and password in URLs, [#1115](https://github.com/pydantic/pydantic/issues/1115) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Add support for nested generic models, [#1104](https://github.com/pydantic/pydantic/issues/1104) by [@dmontagu](https://github.com/dmontagu)
  * add `__all__` to `__init__.py` to prevent "implicit reexport" errors from mypy, [#1072](https://github.com/pydantic/pydantic/issues/1072) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Add support for using "dotenv" files with `BaseSettings`, [#1011](https://github.com/pydantic/pydantic/issues/1011) by [@acnebs](https://github.com/acnebs)



  * Change `schema` and `schema_model` to handle dataclasses by using their `__pydantic_model__` feature, [#792](https://github.com/pydantic/pydantic/issues/792) by [@aviramha](https://github.com/aviramha)
  * Added option for `root_validator` to be skipped if values validation fails using keyword `skip_on_failure=True`, [#1049](https://github.com/pydantic/pydantic/issues/1049) by [@aviramha](https://github.com/aviramha)
  * Allow `Config.schema_extra` to be a callable so that the generated schema can be post-processed, [#1054](https://github.com/pydantic/pydantic/issues/1054) by [@selimb](https://github.com/selimb)
  * Update mypy to version 0.750, [#1057](https://github.com/pydantic/pydantic/issues/1057) by [@dmontagu](https://github.com/dmontagu)
  * Trick Cython into allowing str subclassing, [#1061](https://github.com/pydantic/pydantic/issues/1061) by [@skewty](https://github.com/skewty)
  * Prevent type attributes being added to schema unless the attribute `__schema_attributes__` is `True`, [#1064](https://github.com/pydantic/pydantic/issues/1064) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Change `BaseModel.parse_file` to use `Config.json_loads`, [#1067](https://github.com/pydantic/pydantic/issues/1067) by [@kierandarcy](https://github.com/kierandarcy)
  * Fix for optional `Json` fields, [#1073](https://github.com/pydantic/pydantic/issues/1073) by [@volker48](https://github.com/volker48)
  * Change the default number of threads used when compiling with cython to one,
    allow override via the `CYTHON_NTHREADS` environment variable, [#1074](https://github.com/pydantic/pydantic/issues/1074) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Run FastAPI tests during Pydantic's CI tests, [#1075](https://github.com/pydantic/pydantic/issues/1075) by [@tiangolo](https://github.com/tiangolo)
  * My mypy strictness constraints, and associated tweaks to type annotations, [#1077](https://github.com/pydantic/pydantic/issues/1077) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Add `__eq__` to SecretStr and SecretBytes to allow "value equals", [#1079](https://github.com/pydantic/pydantic/issues/1079) by [@sbv-trueenergy](https://github.com/sbv-trueenergy)
  * Fix schema generation for nested None case, [#1088](https://github.com/pydantic/pydantic/issues/1088) by [@lutostag](https://github.com/lutostag)
  * Consistent checks for sequence like objects, [#1090](https://github.com/pydantic/pydantic/issues/1090) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Fix `Config` inheritance on `BaseSettings` when used with `env_prefix`, [#1091](https://github.com/pydantic/pydantic/issues/1091) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Fix for `__modify_schema__` when it conflicted with `field_class_to_schema*`, [#1102](https://github.com/pydantic/pydantic/issues/1102) by [@samuelcolvin](https://github.com/samuelcolvin)
  * docs: Fix explanation of case sensitive environment variable names when populating `BaseSettings` subclass attributes, [#1105](https://github.com/pydantic/pydantic/issues/1105) by [@tribals](https://github.com/tribals)
  * Rename django-rest-framework benchmark in documentation, [#1119](https://github.com/pydantic/pydantic/issues/1119) by [@frankie567](https://github.com/frankie567)



  * **Possible Breaking Change:** Add support for required `Optional` with `name: Optional[AnyType] = Field(...)`
    and refactor `ModelField` creation to preserve `required` parameter value, [#1031](https://github.com/pydantic/pydantic/issues/1031) by [@tiangolo](https://github.com/tiangolo);
    see [here](https://docs.pydantic.dev/usage/models/#required-optional-fields) for details
  * Add benchmarks for `cattrs`, [#513](https://github.com/pydantic/pydantic/issues/513) by [@sebastianmika](https://github.com/sebastianmika)
  * Add `exclude_none` option to `dict()` and friends, [#587](https://github.com/pydantic/pydantic/issues/587) by [@niknetniko](https://github.com/niknetniko)
  * Add benchmarks for `valideer`, [#670](https://github.com/pydantic/pydantic/issues/670) by [@gsakkis](https://github.com/gsakkis)
  * Add `parse_obj_as` and `parse_file_as` functions for ad-hoc parsing of data into arbitrary pydantic-compatible types, [#934](https://github.com/pydantic/pydantic/issues/934) by [@dmontagu](https://github.com/dmontagu)
  * Add `allow_reuse` argument to validators, thus allowing validator reuse, [#940](https://github.com/pydantic/pydantic/issues/940) by [@dmontagu](https://github.com/dmontagu)
  * Add support for mapping types for custom root models, [#958](https://github.com/pydantic/pydantic/issues/958) by [@dmontagu](https://github.com/dmontagu)
  * Mypy plugin support for dataclasses, [#966](https://github.com/pydantic/pydantic/issues/966) by [@koxudaxi](https://github.com/koxudaxi)
  * Add support for dataclasses default factory, [#968](https://github.com/pydantic/pydantic/issues/968) by [@ahirner](https://github.com/ahirner)
  * Add a `ByteSize` type for converting byte string (`1GB`) to plain bytes, [#977](https://github.com/pydantic/pydantic/issues/977) by [@dgasmith](https://github.com/dgasmith)
  * Fix mypy complaint about `@root_validator(pre=True)`, [#984](https://github.com/pydantic/pydantic/issues/984) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Add manylinux binaries for Python 3.8 to pypi, also support manylinux2010, [#994](https://github.com/pydantic/pydantic/issues/994) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Adds ByteSize conversion to another unit, [#995](https://github.com/pydantic/pydantic/issues/995) by [@dgasmith](https://github.com/dgasmith)
  * Fix `__str__` and `__repr__` inheritance for models, [#1022](https://github.com/pydantic/pydantic/issues/1022) by [@samuelcolvin](https://github.com/samuelcolvin)
  * add testimonials section to docs, [#1025](https://github.com/pydantic/pydantic/issues/1025) by [@sullivancolin](https://github.com/sullivancolin)
  * Add support for `typing.Literal` for Python 3.8, [#1026](https://github.com/pydantic/pydantic/issues/1026) by [@dmontagu](https://github.com/dmontagu)



  * Fix bug where use of complex fields on sub-models could cause fields to be incorrectly configured, [#1015](https://github.com/pydantic/pydantic/issues/1015) by [@samuelcolvin](https://github.com/samuelcolvin)



  * Add a mypy plugin for type checking `BaseModel.__init__` and more, [#722](https://github.com/pydantic/pydantic/issues/722) by [@dmontagu](https://github.com/dmontagu)
  * Change return type typehint for `GenericModel.__class_getitem__` to prevent PyCharm warnings, [#936](https://github.com/pydantic/pydantic/issues/936) by [@dmontagu](https://github.com/dmontagu)
  * Fix usage of `Any` to allow `None`, also support `TypeVar` thus allowing use of un-parameterised collection types
    e.g. `Dict` and `List`, [#962](https://github.com/pydantic/pydantic/issues/962) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Set `FieldInfo` on subfields to fix schema generation for complex nested types, [#965](https://github.com/pydantic/pydantic/issues/965) by [@samuelcolvin](https://github.com/samuelcolvin)



  * **Breaking Change:** deprecate the `Model.fields` property, use `Model.__fields__` instead, [#883](https://github.com/pydantic/pydantic/issues/883) by [@samuelcolvin](https://github.com/samuelcolvin)
  * **Breaking Change:** Change the precedence of aliases so child model aliases override parent aliases,
    including using `alias_generator`, [#904](https://github.com/pydantic/pydantic/issues/904) by [@samuelcolvin](https://github.com/samuelcolvin)
  * **Breaking change:** Rename `skip_defaults` to `exclude_unset`, and add ability to exclude actual defaults, [#915](https://github.com/pydantic/pydantic/issues/915) by [@dmontagu](https://github.com/dmontagu)
  * Add `**kwargs` to `pydantic.main.ModelMetaclass.__new__` so `__init_subclass__` can take custom parameters on extended
    `BaseModel` classes, [#867](https://github.com/pydantic/pydantic/issues/867) by [@retnikt](https://github.com/retnikt)
  * Fix field of a type that has a default value, [#880](https://github.com/pydantic/pydantic/issues/880) by [@koxudaxi](https://github.com/koxudaxi)
  * Use `FutureWarning` instead of `DeprecationWarning` when `alias` instead of `env` is used for settings models, [#881](https://github.com/pydantic/pydantic/issues/881) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Fix issue with `BaseSettings` inheritance and `alias` getting set to `None`, [#882](https://github.com/pydantic/pydantic/issues/882) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Modify `__repr__` and `__str__` methods to be consistent across all public classes, add `__pretty__` to support
    python-devtools, [#884](https://github.com/pydantic/pydantic/issues/884) by [@samuelcolvin](https://github.com/samuelcolvin)
  * deprecation warning for `case_insensitive` on `BaseSettings` config, [#885](https://github.com/pydantic/pydantic/issues/885) by [@samuelcolvin](https://github.com/samuelcolvin)
  * For `BaseSettings` merge environment variables and in-code values recursively, as long as they create a valid object
    when merged together, to allow splitting init arguments, [#888](https://github.com/pydantic/pydantic/issues/888) by [@idmitrievsky](https://github.com/idmitrievsky)
  * change secret types example, [#890](https://github.com/pydantic/pydantic/issues/890) by [@ashears](https://github.com/ashears)
  * Change the signature of `Model.construct()` to be more user-friendly, document `construct()` usage, [#898](https://github.com/pydantic/pydantic/issues/898) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Add example for the `construct()` method, [#907](https://github.com/pydantic/pydantic/issues/907) by [@ashears](https://github.com/ashears)
  * Improve use of `Field` constraints on complex types, raise an error if constraints are not enforceable,
    also support tuples with an ellipsis `Tuple[X, ...]`, `Sequence` and `FrozenSet` in schema, [#909](https://github.com/pydantic/pydantic/issues/909) by [@samuelcolvin](https://github.com/samuelcolvin)
  * update docs for bool missing valid value, [#911](https://github.com/pydantic/pydantic/issues/911) by [@trim21](https://github.com/trim21)
  * Better `str`/`repr` logic for `ModelField`, [#912](https://github.com/pydantic/pydantic/issues/912) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Fix `ConstrainedList`, update schema generation to reflect `min_items` and `max_items` `Field()` arguments, [#917](https://github.com/pydantic/pydantic/issues/917) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Allow abstracts sets (eg. dict keys) in the `include` and `exclude` arguments of `dict()`, [#921](https://github.com/pydantic/pydantic/issues/921) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Fix JSON serialization errors on `ValidationError.json()` by using `pydantic_encoder`, [#922](https://github.com/pydantic/pydantic/issues/922) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Clarify usage of `remove_untouched`, improve error message for types with no validators, [#926](https://github.com/pydantic/pydantic/issues/926) by [@retnikt](https://github.com/retnikt)



  * Mark `StrictBool` typecheck as `bool` to allow for default values without mypy errors, [#690](https://github.com/pydantic/pydantic/issues/690) by [@dmontagu](https://github.com/dmontagu)
  * Transfer the documentation build from sphinx to mkdocs, re-write much of the documentation, [#856](https://github.com/pydantic/pydantic/issues/856) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Add support for custom naming schemes for `GenericModel` subclasses, [#859](https://github.com/pydantic/pydantic/issues/859) by [@dmontagu](https://github.com/dmontagu)
  * Add `if TYPE_CHECKING:` to the excluded lines for test coverage, [#874](https://github.com/pydantic/pydantic/issues/874) by [@dmontagu](https://github.com/dmontagu)
  * Rename `allow_population_by_alias` to `allow_population_by_field_name`, remove unnecessary warning about it, [#875](https://github.com/pydantic/pydantic/issues/875) by [@samuelcolvin](https://github.com/samuelcolvin)



  * **Breaking Change:** rename `Schema` to `Field`, make it a function to placate mypy, [#577](https://github.com/pydantic/pydantic/issues/577) by [@samuelcolvin](https://github.com/samuelcolvin)
  * **Breaking Change:** modify parsing behavior for `bool`, [#617](https://github.com/pydantic/pydantic/issues/617) by [@dmontagu](https://github.com/dmontagu)
  * **Breaking Change:** `get_validators` is no longer recognised, use `__get_validators__`.
    `Config.ignore_extra` and `Config.allow_extra` are no longer recognised, use `Config.extra`, [#720](https://github.com/pydantic/pydantic/issues/720) by [@samuelcolvin](https://github.com/samuelcolvin)
  * **Breaking Change:** modify default config settings for `BaseSettings`; `case_insensitive` renamed to `case_sensitive`,
    default changed to `case_sensitive = False`, `env_prefix` default changed to `''` - e.g. no prefix, [#721](https://github.com/pydantic/pydantic/issues/721) by [@dmontagu](https://github.com/dmontagu)
  * **Breaking change:** Implement `root_validator` and rename root errors from `__obj__` to `__root__`, [#729](https://github.com/pydantic/pydantic/issues/729) by [@samuelcolvin](https://github.com/samuelcolvin)
  * **Breaking Change:** alter the behaviour of `dict(model)` so that sub-models are nolonger
    converted to dictionaries, [#733](https://github.com/pydantic/pydantic/issues/733) by [@samuelcolvin](https://github.com/samuelcolvin)
  * **Breaking change:** Added `initvars` support to `post_init_post_parse`, [#748](https://github.com/pydantic/pydantic/issues/748) by [@Raphael-C-Almeida](https://github.com/Raphael-C-Almeida)
  * **Breaking Change:** Make `BaseModel.json()` only serialize the `__root__` key for models with custom root, [#752](https://github.com/pydantic/pydantic/issues/752) by [@dmontagu](https://github.com/dmontagu)
  * **Breaking Change:** complete rewrite of `URL` parsing logic, [#755](https://github.com/pydantic/pydantic/issues/755) by [@samuelcolvin](https://github.com/samuelcolvin)
  * **Breaking Change:** preserve superclass annotations for field-determination when not provided in subclass, [#757](https://github.com/pydantic/pydantic/issues/757) by [@dmontagu](https://github.com/dmontagu)
  * **Breaking Change:** `BaseSettings` now uses the special `env` settings to define which environment variables to
    read, not aliases, [#847](https://github.com/pydantic/pydantic/issues/847) by [@samuelcolvin](https://github.com/samuelcolvin)
  * add support for `assert` statements inside validators, [#653](https://github.com/pydantic/pydantic/issues/653) by [@abdusco](https://github.com/abdusco)
  * Update documentation to specify the use of `pydantic.dataclasses.dataclass` and subclassing `pydantic.BaseModel`, [#710](https://github.com/pydantic/pydantic/issues/710) by [@maddosaurus](https://github.com/maddosaurus)
  * Allow custom JSON decoding and encoding via `json_loads` and `json_dumps` `Config` properties, [#714](https://github.com/pydantic/pydantic/issues/714) by [@samuelcolvin](https://github.com/samuelcolvin)
  * make all annotated fields occur in the order declared, [#715](https://github.com/pydantic/pydantic/issues/715) by [@dmontagu](https://github.com/dmontagu)
  * use pytest to test `mypy` integration, [#735](https://github.com/pydantic/pydantic/issues/735) by [@dmontagu](https://github.com/dmontagu)
  * add `__repr__` method to `ErrorWrapper`, [#738](https://github.com/pydantic/pydantic/issues/738) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Added support for `FrozenSet` members in dataclasses, and a better error when attempting to use types from the `typing` module that are not supported by Pydantic, [#745](https://github.com/pydantic/pydantic/issues/745) by [@djpetti](https://github.com/djpetti)
  * add documentation for Pycharm Plugin, [#750](https://github.com/pydantic/pydantic/issues/750) by [@koxudaxi](https://github.com/koxudaxi)
  * fix broken examples in the docs, [#753](https://github.com/pydantic/pydantic/issues/753) by [@dmontagu](https://github.com/dmontagu)
  * moving typing related objects into `pydantic.typing`, [#761](https://github.com/pydantic/pydantic/issues/761) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Minor performance improvements to `ErrorWrapper`, `ValidationError` and datetime parsing, [#763](https://github.com/pydantic/pydantic/issues/763) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Improvements to `datetime`/`date`/`time`/`timedelta` types: more descriptive errors,
    change errors to `value_error` not `type_error`, support bytes, [#766](https://github.com/pydantic/pydantic/issues/766) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix error messages for `Literal` types with multiple allowed values, [#770](https://github.com/pydantic/pydantic/issues/770) by [@dmontagu](https://github.com/dmontagu)
  * Improved auto-generated `title` field in JSON schema by converting underscore to space, [#772](https://github.com/pydantic/pydantic/issues/772) by [@skewty](https://github.com/skewty)
  * support `mypy --no-implicit-reexport` for dataclasses, also respect `--no-implicit-reexport` in pydantic itself, [#783](https://github.com/pydantic/pydantic/issues/783) by [@samuelcolvin](https://github.com/samuelcolvin)
  * add the `PaymentCardNumber` type, [#790](https://github.com/pydantic/pydantic/issues/790) by [@matin](https://github.com/matin)
  * Fix const validations for lists, [#794](https://github.com/pydantic/pydantic/issues/794) by [@hmvp](https://github.com/hmvp)
  * Set `additionalProperties` to false in schema for models with extra fields disallowed, [#796](https://github.com/pydantic/pydantic/issues/796) by [@Code0x58](https://github.com/Code0x58)
  * `EmailStr` validation method now returns local part case-sensitive per RFC 5321, [#798](https://github.com/pydantic/pydantic/issues/798) by [@henriklindgren](https://github.com/henriklindgren)
  * Added ability to validate strictness to `ConstrainedFloat`, `ConstrainedInt` and `ConstrainedStr` and added
    `StrictFloat` and `StrictInt` classes, [#799](https://github.com/pydantic/pydantic/issues/799) by [@DerRidda](https://github.com/DerRidda)
  * Improve handling of `None` and `Optional`, replace `whole` with `each_item` (inverse meaning, default `False`)
    on validators, [#803](https://github.com/pydantic/pydantic/issues/803) by [@samuelcolvin](https://github.com/samuelcolvin)
  * add support for `Type[T]` type hints, [#807](https://github.com/pydantic/pydantic/issues/807) by [@timonbimon](https://github.com/timonbimon)
  * Performance improvements from removing `change_exceptions`, change how pydantic error are constructed, [#819](https://github.com/pydantic/pydantic/issues/819) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Fix the error message arising when a `BaseModel`-type model field causes a `ValidationError` during parsing, [#820](https://github.com/pydantic/pydantic/issues/820) by [@dmontagu](https://github.com/dmontagu)
  * allow `getter_dict` on `Config`, modify `GetterDict` to be more like a `Mapping` object and thus easier to work with, [#821](https://github.com/pydantic/pydantic/issues/821) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Only check `TypeVar` param on base `GenericModel` class, [#842](https://github.com/pydantic/pydantic/issues/842) by [@zpencerq](https://github.com/zpencerq)
  * rename `Model._schema_cache` -> `Model.__schema_cache__`, `Model._json_encoder` -> `Model.__json_encoder__`,
    `Model._custom_root_type` -> `Model.__custom_root_type__`, [#851](https://github.com/pydantic/pydantic/issues/851) by [@samuelcolvin](https://github.com/samuelcolvin)



  (Docs are available [here](https://5d584fcca7c9b70007d1c997--pydantic-docs.netlify.com))

  * fix `__post_init__` usage with dataclass inheritance, fix [#739](https://github.com/pydantic/pydantic/issues/739) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix required fields validation on GenericModels classes, [#742](https://github.com/pydantic/pydantic/issues/742) by [@amitbl](https://github.com/amitbl)
  * fix defining custom `Schema` on `GenericModel` fields, [#754](https://github.com/pydantic/pydantic/issues/754) by [@amitbl](https://github.com/amitbl)



  * do not validate extra fields when `validate_assignment` is on, [#724](https://github.com/pydantic/pydantic/issues/724) by [@YaraslauZhylko](https://github.com/YaraslauZhylko)



  * add model name to `ValidationError` error message, [#676](https://github.com/pydantic/pydantic/issues/676) by [@dmontagu](https://github.com/dmontagu)
  * **breaking change**: remove `__getattr__` and rename `__values__` to `__dict__` on `BaseModel`,
    deprecation warning on use `__values__` attr, attributes access speed increased up to 14 times, [#712](https://github.com/pydantic/pydantic/issues/712) by [@Bobronium](https://github.com/Bobronium)
  * support `ForwardRef` (without self-referencing annotations) in Python 3.6, [#706](https://github.com/pydantic/pydantic/issues/706) by [@koxudaxi](https://github.com/koxudaxi)
  * implement `schema_extra` in `Config` sub-class, [#663](https://github.com/pydantic/pydantic/issues/663) by [@tiangolo](https://github.com/tiangolo)



  * fix json generation for `EnumError`, [#697](https://github.com/pydantic/pydantic/issues/697) by [@dmontagu](https://github.com/dmontagu)
  * update numerous dependencies



  * better support for floating point `multiple_of` values, [#652](https://github.com/pydantic/pydantic/issues/652) by [@justindujardin](https://github.com/justindujardin)
  * fix schema generation for `NewType` and `Literal`, [#649](https://github.com/pydantic/pydantic/issues/649) by [@dmontagu](https://github.com/dmontagu)
  * fix `alias_generator` and field config conflict, [#645](https://github.com/pydantic/pydantic/issues/645) by [@gmetzker](https://github.com/gmetzker) and [#658](https://github.com/pydantic/pydantic/issues/658) by [@Bobronium](https://github.com/Bobronium)
  * more detailed message for `EnumError`, [#673](https://github.com/pydantic/pydantic/issues/673) by [@dmontagu](https://github.com/dmontagu)
  * add advanced exclude support for `dict`, `json` and `copy`, [#648](https://github.com/pydantic/pydantic/issues/648) by [@Bobronium](https://github.com/Bobronium)
  * fix bug in `GenericModel` for models with concrete parameterized fields, [#672](https://github.com/pydantic/pydantic/issues/672) by [@dmontagu](https://github.com/dmontagu)
  * add documentation for `Literal` type, [#651](https://github.com/pydantic/pydantic/issues/651) by [@dmontagu](https://github.com/dmontagu)
  * add `Config.keep_untouched` for custom descriptors support, [#679](https://github.com/pydantic/pydantic/issues/679) by [@Bobronium](https://github.com/Bobronium)
  * use `inspect.cleandoc` internally to get model description, [#657](https://github.com/pydantic/pydantic/issues/657) by [@tiangolo](https://github.com/tiangolo)
  * add `Color` to schema generation, by [@euri10](https://github.com/euri10)
  * add documentation for Literal type, [#651](https://github.com/pydantic/pydantic/issues/651) by [@dmontagu](https://github.com/dmontagu)



  * fix so nested classes which inherit and change `__init__` are correctly processed while still allowing `self` as a
    parameter, [#644](https://github.com/pydantic/pydantic/issues/644) by [@lnaden](https://github.com/lnaden) and [@dgasmith](https://github.com/dgasmith)



  * enforce single quotes in code, [#612](https://github.com/pydantic/pydantic/issues/612) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix infinite recursion with dataclass inheritance and `__post_init__`, [#606](https://github.com/pydantic/pydantic/issues/606) by [@Hanaasagi](https://github.com/Hanaasagi)
  * fix default values for `GenericModel`, [#610](https://github.com/pydantic/pydantic/issues/610) by [@dmontagu](https://github.com/dmontagu)
  * clarify that self-referencing models require Python 3.7+, [#616](https://github.com/pydantic/pydantic/issues/616) by [@vlcinsky](https://github.com/vlcinsky)
  * fix truncate for types, [#611](https://github.com/pydantic/pydantic/issues/611) by [@dmontagu](https://github.com/dmontagu)
  * add `alias_generator` support, [#622](https://github.com/pydantic/pydantic/issues/622) by [@Bobronium](https://github.com/Bobronium)
  * fix unparameterized generic type schema generation, [#625](https://github.com/pydantic/pydantic/issues/625) by [@dmontagu](https://github.com/dmontagu)
  * fix schema generation with multiple/circular references to the same model, [#621](https://github.com/pydantic/pydantic/issues/621) by [@tiangolo](https://github.com/tiangolo) and [@wongpat](https://github.com/wongpat)
  * support custom root types, [#628](https://github.com/pydantic/pydantic/issues/628) by [@koxudaxi](https://github.com/koxudaxi)
  * support `self` as a field name in `parse_obj`, [#632](https://github.com/pydantic/pydantic/issues/632) by [@samuelcolvin](https://github.com/samuelcolvin)



  * support dataclasses.InitVar, [#592](https://github.com/pydantic/pydantic/issues/592) by [@pfrederiks](https://github.com/pfrederiks)
  * Updated documentation to elucidate the usage of `Union` when defining multiple types under an attribute's
    annotation and showcase how the type-order can affect marshalling of provided values, [#594](https://github.com/pydantic/pydantic/issues/594) by [@somada141](https://github.com/somada141)
  * add `conlist` type, [#583](https://github.com/pydantic/pydantic/issues/583) by [@hmvp](https://github.com/hmvp)
  * add support for generics, [#595](https://github.com/pydantic/pydantic/issues/595) by [@dmontagu](https://github.com/dmontagu)



  * fix support for JSON Schema generation when using models with circular references in Python 3.7, [#572](https://github.com/pydantic/pydantic/issues/572) by [@tiangolo](https://github.com/tiangolo)
  * support `__post_init_post_parse__` on dataclasses, [#567](https://github.com/pydantic/pydantic/issues/567) by [@sevaho](https://github.com/sevaho)
  * allow dumping dataclasses to JSON, [#575](https://github.com/pydantic/pydantic/issues/575) by [@samuelcolvin](https://github.com/samuelcolvin) and [@DanielOberg](https://github.com/DanielOberg)
  * ORM mode, [#562](https://github.com/pydantic/pydantic/issues/562) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix `pydantic.compiled` on ipython, [#573](https://github.com/pydantic/pydantic/issues/573) by [@dmontagu](https://github.com/dmontagu) and [@samuelcolvin](https://github.com/samuelcolvin)
  * add `StrictBool` type, [#579](https://github.com/pydantic/pydantic/issues/579) by [@cazgp](https://github.com/cazgp)



  * **breaking change**  `_pydantic_post_init` to execute dataclass' original `__post_init__` before
    validation, [#560](https://github.com/pydantic/pydantic/issues/560) by [@HeavenVolkoff](https://github.com/HeavenVolkoff)
  * fix handling of generic types without specified parameters, [#550](https://github.com/pydantic/pydantic/issues/550) by [@dmontagu](https://github.com/dmontagu)
  * **breaking change** (maybe): this is the first release compiled with **cython**, see the docs and please
    submit an issue if you run into problems



  * fix JSON Schema for `list`, `tuple`, and `set`, [#540](https://github.com/pydantic/pydantic/issues/540) by [@tiangolo](https://github.com/tiangolo)
  * compiling with cython, `manylinux` binaries, some other performance improvements, [#548](https://github.com/pydantic/pydantic/issues/548) by [@samuelcolvin](https://github.com/samuelcolvin)



  * fix to schema generation for `IPvAnyAddress`, `IPvAnyInterface`, `IPvAnyNetwork` [#498](https://github.com/pydantic/pydantic/issues/498) by [@pilosus](https://github.com/pilosus)
  * fix variable length tuples support, [#495](https://github.com/pydantic/pydantic/issues/495) by [@pilosus](https://github.com/pilosus)
  * fix return type hint for `create_model`, [#526](https://github.com/pydantic/pydantic/issues/526) by [@dmontagu](https://github.com/dmontagu)
  * **Breaking Change:** fix `.dict(skip_keys=True)` skipping values set via alias (this involves changing
    `validate_model()` to always returns `Tuple[Dict[str, Any], Set[str], Optional[ValidationError]]`), [#517](https://github.com/pydantic/pydantic/issues/517) by [@sommd](https://github.com/sommd)
  * fix to schema generation for `IPv4Address`, `IPv6Address`, `IPv4Interface`,
    `IPv6Interface`, `IPv4Network`, `IPv6Network` [#532](https://github.com/pydantic/pydantic/issues/532) by [@euri10](https://github.com/euri10)
  * add `Color` type, [#504](https://github.com/pydantic/pydantic/issues/504) by [@pilosus](https://github.com/pilosus) and [@samuelcolvin](https://github.com/samuelcolvin)



  * Improve documentation on self-referencing models and annotations, [#487](https://github.com/pydantic/pydantic/issues/487) by [@theenglishway](https://github.com/theenglishway)
  * fix `.dict()` with extra keys, [#490](https://github.com/pydantic/pydantic/issues/490) by [@JaewonKim](https://github.com/JaewonKim)
  * support `const` keyword in `Schema`, [#434](https://github.com/pydantic/pydantic/issues/434) by [@Sean1708](https://github.com/Sean1708)



  * fix handling `ForwardRef` in sub-types, like `Union`, [#464](https://github.com/pydantic/pydantic/issues/464) by [@tiangolo](https://github.com/tiangolo)
  * fix secret serialization, [#465](https://github.com/pydantic/pydantic/issues/465) by [@atheuz](https://github.com/atheuz)
  * Support custom validators for dataclasses, [#454](https://github.com/pydantic/pydantic/issues/454) by [@primal100](https://github.com/primal100)
  * fix `parse_obj` to cope with dict-like objects, [#472](https://github.com/pydantic/pydantic/issues/472) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix to schema generation in nested dataclass-based models, [#474](https://github.com/pydantic/pydantic/issues/474) by [@NoAnyLove](https://github.com/NoAnyLove)
  * fix `json` for `Path`, `FilePath`, and `DirectoryPath` objects, [#473](https://github.com/pydantic/pydantic/issues/473) by [@mikegoodspeed](https://github.com/mikegoodspeed)



  * improve documentation for contributing section, [#441](https://github.com/pydantic/pydantic/issues/441) by [@pilosus](https://github.com/pilosus)
  * improve README.rst to include essential information about the package, [#446](https://github.com/pydantic/pydantic/issues/446) by [@pilosus](https://github.com/pilosus)
  * `IntEnum` support, [#444](https://github.com/pydantic/pydantic/issues/444) by [@potykion](https://github.com/potykion)
  * fix PyObject callable value, [#409](https://github.com/pydantic/pydantic/issues/409) by [@pilosus](https://github.com/pilosus)
  * fix `black` deprecation warnings after update, [#451](https://github.com/pydantic/pydantic/issues/451) by [@pilosus](https://github.com/pilosus)
  * fix `ForwardRef` collection bug, [#450](https://github.com/pydantic/pydantic/issues/450) by [@tigerwings](https://github.com/tigerwings)
  * Support specialized `ClassVars`, [#455](https://github.com/pydantic/pydantic/issues/455) by [@tyrylu](https://github.com/tyrylu)
  * fix JSON serialization for `ipaddress` types, [#333](https://github.com/pydantic/pydantic/issues/333) by [@pilosus](https://github.com/pilosus)
  * add `SecretStr` and `SecretBytes` types, [#452](https://github.com/pydantic/pydantic/issues/452) by [@atheuz](https://github.com/atheuz)



  * add `IPv{4,6,Any}Network` and `IPv{4,6,Any}Interface` types from `ipaddress` stdlib, [#333](https://github.com/pydantic/pydantic/issues/333) by [@pilosus](https://github.com/pilosus)
  * add docs for `datetime` types, [#386](https://github.com/pydantic/pydantic/issues/386) by [@pilosus](https://github.com/pilosus)
  * fix to schema generation in dataclass-based models, [#408](https://github.com/pydantic/pydantic/issues/408) by [@pilosus](https://github.com/pilosus)
  * fix path in nested models, [#437](https://github.com/pydantic/pydantic/issues/437) by [@kataev](https://github.com/kataev)
  * add `Sequence` support, [#304](https://github.com/pydantic/pydantic/issues/304) by [@pilosus](https://github.com/pilosus)



  * fix typo in `NoneIsNotAllowedError` message, [#414](https://github.com/pydantic/pydantic/issues/414) by [@YaraslauZhylko](https://github.com/YaraslauZhylko)
  * add `IPvAnyAddress`, `IPv4Address` and `IPv6Address` types, [#333](https://github.com/pydantic/pydantic/issues/333) by [@pilosus](https://github.com/pilosus)



  * fix type hints of `parse_obj` and similar methods, [#405](https://github.com/pydantic/pydantic/issues/405) by [@erosennin](https://github.com/erosennin)
  * fix submodel validation, [#403](https://github.com/pydantic/pydantic/issues/403) by [@samuelcolvin](https://github.com/samuelcolvin)
  * correct type hints for `ValidationError.json`, [#406](https://github.com/pydantic/pydantic/issues/406) by [@layday](https://github.com/layday)



  * fix tests for Python 3.8, [#396](https://github.com/pydantic/pydantic/issues/396) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Adds fields to the `dir` method for autocompletion in interactive sessions, [#398](https://github.com/pydantic/pydantic/issues/398) by [@dgasmith](https://github.com/dgasmith)
  * support `ForwardRef` (and therefore `from __future__ import annotations`) with dataclasses, [#397](https://github.com/pydantic/pydantic/issues/397) by [@samuelcolvin](https://github.com/samuelcolvin)



  * **breaking change** (maybe): more sophisticated argument parsing for validators, any subset of
    `values`, `config` and `field` is now permitted, eg. `(cls, value, field)`,
    however the variadic key word argument ("`**kwargs`") **must** be called `kwargs`, [#388](https://github.com/pydantic/pydantic/issues/388) by [@samuelcolvin](https://github.com/samuelcolvin)
  * **breaking change**: Adds `skip_defaults` argument to `BaseModel.dict()` to allow skipping of fields that
    were not explicitly set, signature of `Model.construct()` changed, [#389](https://github.com/pydantic/pydantic/issues/389) by [@dgasmith](https://github.com/dgasmith)
  * add `py.typed` marker file for PEP-561 support, [#391](https://github.com/pydantic/pydantic/issues/391) by [@je-l](https://github.com/je-l)
  * Fix `extra` behaviour for multiple inheritance/mix-ins, [#394](https://github.com/pydantic/pydantic/issues/394) by [@YaraslauZhylko](https://github.com/YaraslauZhylko)



  * Support `Callable` type hint, fix [#279](https://github.com/pydantic/pydantic/issues/279) by [@proofit404](https://github.com/proofit404)
  * Fix schema for fields with `validator` decorator, fix [#375](https://github.com/pydantic/pydantic/issues/375) by [@tiangolo](https://github.com/tiangolo)
  * Add `multiple_of` constraint to `ConstrainedDecimal`, `ConstrainedFloat`, `ConstrainedInt`
    and their related types `condecimal`, `confloat`, and `conint` [#371](https://github.com/pydantic/pydantic/issues/371), thanks [@StephenBrown2](https://github.com/StephenBrown2)
  * Deprecated `ignore_extra` and `allow_extra` Config fields in favor of `extra`, [#352](https://github.com/pydantic/pydantic/issues/352) by [@liiight](https://github.com/liiight)
  * Add type annotations to all functions, test fully with mypy, [#373](https://github.com/pydantic/pydantic/issues/373) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix for 'missing' error with `validate_all` or `validate_always`, [#381](https://github.com/pydantic/pydantic/issues/381) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Change the second/millisecond watershed for date/datetime parsing to `2e10`, [#385](https://github.com/pydantic/pydantic/issues/385) by [@samuelcolvin](https://github.com/samuelcolvin)



  * Fix to schema generation with `Optional` fields, fix [#361](https://github.com/pydantic/pydantic/issues/361) by [@samuelcolvin](https://github.com/samuelcolvin)



  * add `ConstrainedBytes` and `conbytes` types, [#315](https://github.com/pydantic/pydantic/issues/315) [@Gr1N](https://github.com/Gr1N)
  * adding `MANIFEST.in` to include license in package `.tar.gz`, [#358](https://github.com/pydantic/pydantic/issues/358) by [@samuelcolvin](https://github.com/samuelcolvin)



  * **breaking change**: don't call validators on keys of dictionaries, [#254](https://github.com/pydantic/pydantic/issues/254) by [@samuelcolvin](https://github.com/samuelcolvin)
  * Fix validators with `always=True` when the default is `None` or the type is optional, also prevent
    `whole` validators being called for sub-fields, fix [#132](https://github.com/pydantic/pydantic/issues/132) by [@samuelcolvin](https://github.com/samuelcolvin)
  * improve documentation for settings priority and allow it to be easily changed, [#343](https://github.com/pydantic/pydantic/issues/343) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix `ignore_extra=False` and `allow_population_by_alias=True`, fix [#257](https://github.com/pydantic/pydantic/issues/257) by [@samuelcolvin](https://github.com/samuelcolvin)
  * **breaking change**: Set `BaseConfig` attributes `min_anystr_length` and `max_anystr_length` to
    `None` by default, fix [#349](https://github.com/pydantic/pydantic/issues/349) in [#350](https://github.com/pydantic/pydantic/issues/350) by [@tiangolo](https://github.com/tiangolo)
  * add support for postponed annotations, [#348](https://github.com/pydantic/pydantic/issues/348) by [@samuelcolvin](https://github.com/samuelcolvin)



  * fix schema for `timedelta` as number, [#325](https://github.com/pydantic/pydantic/issues/325) by [@tiangolo](https://github.com/tiangolo)
  * prevent validators being called repeatedly after inheritance, [#327](https://github.com/pydantic/pydantic/issues/327) by [@samuelcolvin](https://github.com/samuelcolvin)
  * prevent duplicate validator check in ipython, fix [#312](https://github.com/pydantic/pydantic/issues/312) by [@samuelcolvin](https://github.com/samuelcolvin)
  * add "Using Pydantic" section to docs, [#323](https://github.com/pydantic/pydantic/issues/323) by [@tiangolo](https://github.com/tiangolo) & [#326](https://github.com/pydantic/pydantic/issues/326) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix schema generation for fields annotated as `: dict`, `: list`,
    `: tuple` and `: set`, [#330](https://github.com/pydantic/pydantic/issues/330) & [#335](https://github.com/pydantic/pydantic/issues/335) by [@nkonin](https://github.com/nkonin)
  * add support for constrained strings as dict keys in schema, [#332](https://github.com/pydantic/pydantic/issues/332) by [@tiangolo](https://github.com/tiangolo)
  * support for passing Config class in dataclasses decorator, [#276](https://github.com/pydantic/pydantic/issues/276) by [@jarekkar](https://github.com/jarekkar)
    (**breaking change**: this supersedes the `validate_assignment` argument with `config`)
  * support for nested dataclasses, [#334](https://github.com/pydantic/pydantic/issues/334) by [@samuelcolvin](https://github.com/samuelcolvin)
  * better errors when getting an `ImportError` with `PyObject`, [#309](https://github.com/pydantic/pydantic/issues/309) by [@samuelcolvin](https://github.com/samuelcolvin)
  * rename `get_validators` to `__get_validators__`, deprecation warning on use of old name, [#338](https://github.com/pydantic/pydantic/issues/338) by [@samuelcolvin](https://github.com/samuelcolvin)
  * support `ClassVar` by excluding such attributes from fields, [#184](https://github.com/pydantic/pydantic/issues/184) by [@samuelcolvin](https://github.com/samuelcolvin)



  * fix `create_model` to correctly use the passed `__config__`, [#320](https://github.com/pydantic/pydantic/issues/320) by [@hugoduncan](https://github.com/hugoduncan)



  * **breaking change**: refactor schema generation to be compatible with JSON Schema and OpenAPI specs, [#308](https://github.com/pydantic/pydantic/issues/308) by [@tiangolo](https://github.com/tiangolo)
  * add `schema` to `schema` module to generate top-level schemas from base models, [#308](https://github.com/pydantic/pydantic/issues/308) by [@tiangolo](https://github.com/tiangolo)
  * add additional fields to `Schema` class to declare validation for `str` and numeric values, [#311](https://github.com/pydantic/pydantic/issues/311) by [@tiangolo](https://github.com/tiangolo)
  * rename `_schema` to `schema` on fields, [#318](https://github.com/pydantic/pydantic/issues/318) by [@samuelcolvin](https://github.com/samuelcolvin)
  * add `case_insensitive` option to `BaseSettings` `Config`, [#277](https://github.com/pydantic/pydantic/issues/277) by [@jasonkuhrt](https://github.com/jasonkuhrt)



  * move codebase to use black, [#287](https://github.com/pydantic/pydantic/issues/287) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix alias use in settings, [#286](https://github.com/pydantic/pydantic/issues/286) by [@jasonkuhrt](https://github.com/jasonkuhrt) and [@samuelcolvin](https://github.com/samuelcolvin)
  * fix datetime parsing in `parse_date`, [#298](https://github.com/pydantic/pydantic/issues/298) by [@samuelcolvin](https://github.com/samuelcolvin)
  * allow dataclass inheritance, fix [#293](https://github.com/pydantic/pydantic/issues/293) by [@samuelcolvin](https://github.com/samuelcolvin)
  * fix `PyObject = None`, fix [#305](https://github.com/pydantic/pydantic/issues/305) by [@samuelcolvin](https://github.com/samuelcolvin)
  * allow `Pattern` type, fix [#303](https://github.com/pydantic/pydantic/issues/303) by [@samuelcolvin](https://github.com/samuelcolvin)



  * dataclasses decorator, [#269](https://github.com/pydantic/pydantic/issues/269) by [@Gaunt](https://github.com/Gaunt) and [@samuelcolvin](https://github.com/samuelcolvin)



  * fix issue where int_validator doesn't cast a `bool` to an `int` [#264](https://github.com/pydantic/pydantic/issues/264) by [@nphyatt](https://github.com/nphyatt)
  * add deep copy support for `BaseModel.copy()` [#249](https://github.com/pydantic/pydantic/issues/249), [@gangefors](https://github.com/gangefors)



  * raise an exception if a field's name shadows an existing `BaseModel` attribute [#242](https://github.com/pydantic/pydantic/issues/242)
  * add `UrlStr` and `urlstr` types [#236](https://github.com/pydantic/pydantic/issues/236)
  * timedelta json encoding ISO8601 and total seconds, custom json encoders [#247](https://github.com/pydantic/pydantic/issues/247), by [@cfkanesan](https://github.com/cfkanesan) and [@samuelcolvin](https://github.com/samuelcolvin)
  * allow `timedelta` objects as values for properties of type `timedelta` (matches `datetime` etc. behavior) [#247](https://github.com/pydantic/pydantic/issues/247)



  * fix schema generation for fields defined using `typing.Any` [#237](https://github.com/pydantic/pydantic/issues/237)



  * add `by_alias` argument in `.dict()` and `.json()` model methods [#205](https://github.com/pydantic/pydantic/issues/205)
  * add Json type support [#214](https://github.com/pydantic/pydantic/issues/214)
  * support tuples [#227](https://github.com/pydantic/pydantic/issues/227)
  * major improvements and changes to schema [#213](https://github.com/pydantic/pydantic/issues/213)



  * add `NewType` support [#115](https://github.com/pydantic/pydantic/issues/115)
  * fix `list`, `set` & `tuple` validation [#225](https://github.com/pydantic/pydantic/issues/225)
  * separate out `validate_model` method, allow errors to be returned along with valid values [#221](https://github.com/pydantic/pydantic/issues/221)



  * support Python 3.7 [#216](https://github.com/pydantic/pydantic/issues/216), thanks [@layday](https://github.com/layday)
  * Allow arbitrary types in model [#209](https://github.com/pydantic/pydantic/issues/209), thanks [@oldPadavan](https://github.com/oldPadavan)



  * make `list`, `tuple` and `set` types stricter [#86](https://github.com/pydantic/pydantic/issues/86)
  * **breaking change**: remove msgpack parsing [#201](https://github.com/pydantic/pydantic/issues/201)
  * add `FilePath` and `DirectoryPath` types [#10](https://github.com/pydantic/pydantic/issues/10)
  * model schema generation [#190](https://github.com/pydantic/pydantic/issues/190)
  * JSON serialisation of models and schemas [#133](https://github.com/pydantic/pydantic/issues/133)



  * add `Config.allow_population_by_alias` [#160](https://github.com/pydantic/pydantic/issues/160), thanks [@bendemaree](https://github.com/bendemaree)
  * **breaking change**: new errors format [#179](https://github.com/pydantic/pydantic/issues/179), thanks [@Gr1N](https://github.com/Gr1N)
  * **breaking change**: removed `Config.min_number_size` and `Config.max_number_size` [#183](https://github.com/pydantic/pydantic/issues/183), thanks [@Gr1N](https://github.com/Gr1N)
  * **breaking change**: correct behaviour of `lt` and `gt` arguments to `conint` etc. [#188](https://github.com/pydantic/pydantic/issues/188)
    for the old behaviour use `le` and `ge` [#194](https://github.com/pydantic/pydantic/issues/194), thanks [@jaheba](https://github.com/jaheba)
  * added error context and ability to redefine error message templates using `Config.error_msg_templates` [#183](https://github.com/pydantic/pydantic/issues/183),
    thanks [@Gr1N](https://github.com/Gr1N)
  * fix typo in validator exception [#150](https://github.com/pydantic/pydantic/issues/150)
  * copy defaults to model values, so different models don't share objects [#154](https://github.com/pydantic/pydantic/issues/154)



  * allow custom `get_field_config` on config classes [#159](https://github.com/pydantic/pydantic/issues/159)
  * add `UUID1`, `UUID3`, `UUID4` and `UUID5` types [#167](https://github.com/pydantic/pydantic/issues/167), thanks [@Gr1N](https://github.com/Gr1N)
  * modify some inconsistent docstrings and annotations [#173](https://github.com/pydantic/pydantic/issues/173), thanks [@YannLuo](https://github.com/YannLuo)
  * fix type annotations for exotic types [#171](https://github.com/pydantic/pydantic/issues/171), thanks [@Gr1N](https://github.com/Gr1N)
  * re-use type validators in exotic types [#171](https://github.com/pydantic/pydantic/issues/171)
  * scheduled monthly requirements updates [#168](https://github.com/pydantic/pydantic/issues/168)
  * add `Decimal`, `ConstrainedDecimal` and `condecimal` types [#170](https://github.com/pydantic/pydantic/issues/170), thanks [@Gr1N](https://github.com/Gr1N)



  * tweak email-validator import error message [#145](https://github.com/pydantic/pydantic/issues/145)
  * fix parse error of `parse_date()` and `parse_datetime()` when input is 0 [#144](https://github.com/pydantic/pydantic/issues/144), thanks [@YannLuo](https://github.com/YannLuo)
  * add `Config.anystr_strip_whitespace` and `strip_whitespace` kwarg to `constr`,
    by default values is `False` [#163](https://github.com/pydantic/pydantic/issues/163), thanks [@Gr1N](https://github.com/Gr1N)
  * add `ConstrainedFloat`, `confloat`, `PositiveFloat` and `NegativeFloat` types [#166](https://github.com/pydantic/pydantic/issues/166), thanks [@Gr1N](https://github.com/Gr1N)



  * fix type annotation for `inherit_config` [#139](https://github.com/pydantic/pydantic/issues/139)
  * **breaking change**: check for invalid field names in validators [#140](https://github.com/pydantic/pydantic/issues/140)
  * validate attributes of parent models [#141](https://github.com/pydantic/pydantic/issues/141)
  * **breaking change**: email validation now uses
    [email-validator](https://github.com/JoshData/python-email-validator) [#142](https://github.com/pydantic/pydantic/issues/142)



  * fix bug with `create_model` modifying the base class



  * added compatibility with abstract base classes (ABCs) [#123](https://github.com/pydantic/pydantic/issues/123)
  * add `create_model` method [#113](https://github.com/pydantic/pydantic/issues/113) [#125](https://github.com/pydantic/pydantic/issues/125)
  * **breaking change**: rename `.config` to `.__config__` on a model
  * **breaking change**: remove deprecated `.values()` on a model, use `.dict()` instead
  * remove use of `OrderedDict` and use simple dict [#126](https://github.com/pydantic/pydantic/issues/126)
  * add `Config.use_enum_values` [#127](https://github.com/pydantic/pydantic/issues/127)
  * add wildcard validators of the form `@validate('*')` [#128](https://github.com/pydantic/pydantic/issues/128)



  * allow Python date and times objects [#122](https://github.com/pydantic/pydantic/issues/122)



  * fix direct install without `README.rst` present



  * errors for invalid validator use
  * safer check for complex models in `Settings`



  * prevent duplicate validators, [#101](https://github.com/pydantic/pydantic/issues/101)
  * add `always` kwarg to validators, [#102](https://github.com/pydantic/pydantic/issues/102)



  * assignment validation [#94](https://github.com/pydantic/pydantic/issues/94), thanks petroswork!
  * JSON in environment variables for complex types, [#96](https://github.com/pydantic/pydantic/issues/96)
  * add `validator` decorators for complex validation, [#97](https://github.com/pydantic/pydantic/issues/97)
  * depreciate `values(...)` and replace with `.dict(...)`, [#99](https://github.com/pydantic/pydantic/issues/99)



  * add `UUID` validation [#89](https://github.com/pydantic/pydantic/issues/89)
  * remove `index` and `track` from error object (json) if they're null [#90](https://github.com/pydantic/pydantic/issues/90)
  * improve the error text when a list is provided rather than a dict [#90](https://github.com/pydantic/pydantic/issues/90)
  * add benchmarks table to docs [#91](https://github.com/pydantic/pydantic/issues/91)



  * show length in string validation error
  * fix aliases in config during inheritance [#55](https://github.com/pydantic/pydantic/issues/55)
  * simplify error display
  * use unicode ellipsis in `truncate`
  * add `parse_obj`, `parse_raw` and `parse_file` helper functions [#58](https://github.com/pydantic/pydantic/issues/58)
  * switch annotation only fields to come first in fields list not last



  * immutable models via `config.allow_mutation = False`, associated cleanup and performance improvement [#44](https://github.com/pydantic/pydantic/issues/44)
  * immutable helper methods `construct()` and `copy()` [#53](https://github.com/pydantic/pydantic/issues/53)
  * allow pickling of models [#53](https://github.com/pydantic/pydantic/issues/53)
  * `setattr` is removed as `__setattr__` is now intelligent [#44](https://github.com/pydantic/pydantic/issues/44)
  * `raise_exception` removed, Models now always raise exceptions [#44](https://github.com/pydantic/pydantic/issues/44)
  * instance method validators removed
  * django-restful-framework benchmarks added [#47](https://github.com/pydantic/pydantic/issues/47)
  * fix inheritance bug [#49](https://github.com/pydantic/pydantic/issues/49)
  * make str type stricter so list, dict etc are not coerced to strings. [#52](https://github.com/pydantic/pydantic/issues/52)
  * add `StrictStr` which only always strings as input [#52](https://github.com/pydantic/pydantic/issues/52)



  * pypi and travis together messed up the deploy of `v0.2` this should fix it



  * **breaking change**: `values()` on a model is now a method not a property,
    takes `include` and `exclude` arguments
  * allow annotation only fields to support mypy
  * add pretty `to_string(pretty=True)` method for models



  * add docs
  * add history


pkgId: 7ff959cafd7fe19f66b2a6811f520b9a6fa7dd788262925d5bc500016043a99c
name: python-pydata-google-auth
arch: src
version: 1.7.0
epoch: 0
release: 1
summary: PyData helpers for authenticating to Google APIs
url: https://github.com/pydata/pydata-google-auth
rpm_license: BSD License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-334bb6a4-44b4-4c77-adf5-ab53bc0cf257
location_href: 00009095-python-pydata-google-auth/python-pydata-google-auth-1.7.0-1.src.rpm
checksum_type: sha256
description:
  |Build Status| |Version Status| |Coverage Status|
  **pydata-google-auth** is a package providing helpers for authenticating to Google APIs.


pkgId: 729b500392d2f53cc74dfd1283f08989eeb4e3479ec4321bed6c52ed706ef68e
name: python-pydenticon
arch: src
version: 0.3.1
epoch: 0
release: 1
url: https://github.com/azaghal/pydenticon
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-70a16ee5-91e2-4d9c-baa5-76b0d8bd5622
location_href: 00004659-python-pydenticon/python-pydenticon-0.3.1-1.src.rpm
checksum_type: sha256
summary:
  Library for generating identicons. Port of Sigil (https://github.com/cupcake/sigil) with enhancements.

description:
  Pydenticon is a small utility library that can be used for deterministically
  generating identicons based on the hash of provided data.
  The implementation is a port of the Sigil identicon implementation from:
  * https://github.com/cupcake/sigil/
  Pydenticon provides a couple of extensions of its own when compared to the
  original Sigil implementation, like:
  * Ability to supply custom digest algorithms (allowing for larger identicons if
    digest provides enough entropy).
  * Ability to specify a rectangle for identicon size..


pkgId: b9d50649c7aa8c61109ff44fd94792a390730668c0da8af7e149fe3fbbd1140a
name: python-pydevicetree
arch: src
version: 0.0.12
epoch: 0
release: 1
summary: A library for parsing Devicetree Source v1
url: https://github.com/sifive/pydevicetree
rpm_license: Apache Software License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-49ae49bd-3d6f-4691-8d47-416a655405da
location_href: 00011573-python-pydevicetree/python-pydevicetree-0.0.12-1.src.rpm
checksum_type: sha256
description:
  This is a Python 3 library for parsing, querying, and modifying Devicetree Source v1 files as
  described in the [Devicetree Specification v0.2](https://github.com/devicetree-org/devicetree-specification/releases/tag/v0.2).



  pydevicetree supports Python >= 3.5 and can be installed with pip from the [Python Package Index](https://pypi.org/project/pydevicetree/).

  `pip install pydevicetree`





  Let's say you have a file design.dts with the contents
  ```
  /dts-v1/;

  / {
  	
  	
  	compatible = "my,design";
  	aliases {
  		serial0 = "/soc/uart@10000000";
  	};
  	chosen {
  		stdout-path = "/soc/uart@10000000:115200";
  	};
  	cpus {
  		
  		
  		cpu@0 {
  			compatible = "sifive,rocket0", "riscv";
  			device_type = "cpu";
  			reg = <0>;
  			riscv,isa = "rv32imac";
  			status = "okay";
  			timebase-frequency = <1000000>;
  			sifive,dtim = <&dtim>;
  			interrupt-controller {
  				
  				compatible = "riscv,cpu-intc";
  				interrupt-controller;
  			};
  		};
  	};
  	soc {
  		
  		
  		compatible = "my,design-soc";
  		ranges;
  		dtim: dtim@20000000 {
  			compatible = "sifive,dtim0";
  			reg = <0x20000000 0x10000000>;
  			reg-names = "mem";
  		};
  		uart: uart@10000000 {
  			compatible = "sifive,uart0";
  			reg = <0x10000000 0x1000>;
  			reg-names = "control";
  		};
  	};
  };
  ```



  Parsing the tree is as easy as 1, 2...

  ```
  >>> from pydevicetree import Devicetree
  >>> tree = Devicetree.parseFile("design.dts")
  >>> tree
  <Devicetree my,design>
  ```





  ```
  >>> tree.match("sifive,rocket0")
  [<Node cpu>]
  ```



  ```
  >>> tree.get_by_path("/soc/dtim")
  <Node dtim@20000000>
  ```

  Devicetree aliases are allowed in paths

  ```
  >>> tree.get_by_path("serial0")
  <Node uart@10000000>
  ```



  The value (or first value of a list/array) of a property can be retrieved with `Node.get_field()`

  ```
  >>> tree.match("sifive,rocket0")[0].get_field("timebase-frequency")
  1000000
  ```

  The list or array of values assigned to a property can be retrieved with `Node.get_fields()`

  ```
  >>> tree.match("sifive,rocket0")[0].get_fields("compatible")
  <StringList ['sifive,rocket0', 'riscv']>
  ```

  There are helper methods `Node.get_reg()` and `Node.get_ranges()` for the `reg` and `ranges`
  Devicetree properties.

  ```
  >>> tree.get_by_path("/soc/dtim").get_reg()
  <RegArray [536870912, 268435456]>
  >>> tree.get_by_path("/soc/dtim").get_reg().get_by_name("mem")
  (536870912, 268435456)
  >>> "0x%x" % tree.get_by_path("/soc/dtim").get_reg().get_by_name("mem")[0]
  '0x20000000'
  ```



  `Devicetree.chosen()` provides quick access to the properties of the `chosen` node

  ```
  >>> tree.chosen("stdout-path")
  <StringList ['/soc/uart@10000000:115200']>
  ```



  Any tree or subtree can be converted back to Devicetree by calling `Node.to_dts()` or simply
  by `print`ing it:

  ```
  >>> print(tree.match("sifive,rocket0")[0])
  cpu@0 {
          
          compatible = "sifive,rocket0", "riscv";
          device_type = "cpu";
          reg = <0x0>;
          riscv,isa = "rv32imac";
          status = "okay";
          timebase-frequency = <1000000>;
          sifive,dtim = <&dtim>;
          interrupt-controller {
                  
                  compatible = "riscv,cpu-intc";
                  interrupt-controller;
          };
  };
  ```


pkgId: c1612c97259a3388be1009cbf1ea119e5b7c4c9b14e8f99b7010d308a68442b1
name: python-pydicom
arch: src
version: 2.3.1
epoch: 0
release: 1
summary: A pure Python package for reading and writing DICOM data
url: https://github.com/pydicom/pydicom
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-306f8f93-3761-4dfd-a407-7914a828bf27
location_href: 00004660-python-pydicom/python-pydicom-2.3.1-1.src.rpm
checksum_type: sha256
description:
  [![unit-tests](https://github.com/pydicom/pydicom/workflows/unit-tests/badge.svg)](https://github.com/pydicom/pydicom/actions?query=workflow%3Aunit-tests)
  [![type-hints](https://github.com/pydicom/pydicom/workflows/type-hints/badge.svg)](https://github.com/pydicom/pydicom/actions?query=workflow%3Atype-hints)
  [![doc-build](https://circleci.com/gh/pydicom/pydicom/tree/master.svg?style=shield)](https://circleci.com/gh/pydicom/pydicom/tree/master)
  [![test-coverage](https://codecov.io/gh/pydicom/pydicom/branch/master/graph/badge.svg)](https://codecov.io/gh/pydicom/pydicom)
  [![Python version](https://img.shields.io/pypi/pyversions/pydicom.svg)](https://img.shields.io/pypi/pyversions/pydicom.svg)
  [![PyPI version](https://badge.fury.io/py/pydicom.svg)](https://badge.fury.io/py/pydicom)
  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6394735.svg)](https://doi.org/10.5281/zenodo.6394735)
  [![Gitter](https://badges.gitter.im/pydicom/Lobby.svg)](https://gitter.im/pydicom/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)



  *pydicom* is a pure Python package for working with [DICOM](https://www.dicomstandard.org/) files. It lets you read, modify and write DICOM data in an easy "pythonic" way.

  As a pure Python package, *pydicom* can run anywhere Python runs without any other requirements, although if you're working with *Pixel Data* then we recommend you also install [NumPy](http://www.numpy.org).

  If you're looking for a Python library for DICOM networking then you might be interested in another of our projects: [pynetdicom](https://github.com/pydicom/pynetdicom).



  Using [pip](https://pip.pypa.io/en/stable/):
  ```
  pip install pydicom
  ```
  Using [conda](https://docs.conda.io/en/latest/):
  ```
  conda install -c conda-forge pydicom
  ```

  For more information, including installation instructions for the development version, see the [installation guide](https://pydicom.github.io/pydicom/stable/tutorials/installation.html).




  The *pydicom* [user guide](https://pydicom.github.io/pydicom/stable/old/pydicom_user_guide.html), [tutorials](https://pydicom.github.io/pydicom/stable/tutorials/index.html), [examples](https://pydicom.github.io/pydicom/stable/auto_examples/index.html) and [API reference](https://pydicom.github.io/pydicom/stable/reference/index.html) documentation is available for both the [current release](https://pydicom.github.io/pydicom/stable) and the [development version](https://pydicom.github.io/pydicom/dev) on GitHub Pages.



  Compressed and uncompressed *Pixel Data* is always available to
  be read, changed and written as [bytes](https://docs.python.org/3/library/stdtypes.html#bytes-objects):
  ```python
  >>> from pydicom import dcmread
  >>> from pydicom.data import get_testdata_file
  >>> path = get_testdata_file("CT_small.dcm")
  >>> ds = dcmread(path)
  >>> type(ds.PixelData)
  <class 'bytes'>
  >>> len(ds.PixelData)
  32768
  >>> ds.PixelData[:2]
  b'\xaf\x00'

  ```

  If [NumPy](http://www.numpy.org) is installed, *Pixel Data* can be converted to an [ndarray](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html) using the [Dataset.pixel_array](https://pydicom.github.io/pydicom/stable/reference/generated/pydicom.dataset.Dataset.html#pydicom.dataset.Dataset.pixel_array) property:

  ```python
  >>> arr = ds.pixel_array
  >>> arr.shape
  (128, 128)
  >>> arr
  array([[175, 180, 166, ..., 203, 207, 216],
         [186, 183, 157, ..., 181, 190, 239],
         [184, 180, 171, ..., 152, 164, 235],
         ...,
         [906, 910, 923, ..., 922, 929, 927],
         [914, 954, 938, ..., 942, 925, 905],
         [959, 955, 916, ..., 911, 904, 909]], dtype=int16)
  ```


  Converting JPEG compressed *Pixel Data* to an ``ndarray`` requires installing one or more additional Python libraries. For information on which libraries are required, see the [pixel data handler documentation](https://pydicom.github.io/pydicom/stable/old/image_data_handlers.html#guide-compressed).

  Compressing data into one of the JPEG formats is not currently supported.


  Encoding and decoding RLE *Pixel Data* only requires NumPy, however it can
  be quite slow. You may want to consider [installing one or more additional
  Python libraries](https://pydicom.github.io/pydicom/stable/old/image_data_compression.html) to speed up the process.


  More [examples](https://pydicom.github.io/pydicom/stable/auto_examples/index.html) are available in the documentation.

  **Change a patient's ID**
  ```python
  from pydicom import dcmread

  ds = dcmread("/path/to/file.dcm")

  ds.PatientID = "12345678"
  ds.save_as("/path/to/file_updated.dcm")
  ```

  **Display the Pixel Data**

  With [NumPy](http://www.numpy.org) and [matplotlib](https://matplotlib.org/)
  ```python
  import matplotlib.pyplot as plt
  from pydicom import dcmread
  from pydicom.data import get_testdata_file


  path = get_testdata_file("CT_small.dcm")
  ds = dcmread(path)

  arr = ds.pixel_array

  plt.imshow(arr, cmap="gray")
  plt.show()
  ```



  To contribute to *pydicom*, read our [contribution guide](https://github.com/pydicom/pydicom/blob/master/CONTRIBUTING.md).

  To contribute an example or extension of *pydicom* that doesn't belong with the core software, see our contribution repository:
  [contrib-pydicom](https://www.github.com/pydicom/contrib-pydicom).


pkgId: d70179cc78f480a7557f674963b09e27175ab1679f6c69e107a618f68603cf66
name: python-pydocstyle
arch: src
version: 6.3.0
epoch: 0
release: 1
summary: Python docstring style checker
url: https://www.pydocstyle.org/en/stable/
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-6f61bfde-95c8-41b5-bc0a-06b23692ad04
location_href: 00009412-python-pydocstyle/python-pydocstyle-6.3.0-1.src.rpm
checksum_type: sha256
description:
  **pydocstyle** is a static analysis tool for checking compliance with Python
  docstring conventions.
  **pydocstyle** supports most of
  `PEP 257 <http://www.python.org/dev/peps/pep-0257/>`_ out of the box, but it
  should not be considered a reference implementation.
  **pydocstyle** supports Python 3.6+.


pkgId: 7730a0e15568eda37071a7659fdcf549a47e30e42e26a3bcc168aacef8e5379e
name: python-pydot
arch: src
version: 1.4.2
epoch: 0
release: 1
summary: Python interface to Graphviz's Dot
url: https://github.com/pydot/pydot
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-7227b258-9a32-4f84-95e6-68f6fd01e918
location_href: 00004662-python-pydot/python-pydot-1.4.2-1.src.rpm
checksum_type: sha256
description:
  `pydot`:
    - is an interface to [Graphviz][1]
    - can parse and dump into the [DOT language][2] used by GraphViz,
    - is written in pure Python,
  and [`networkx`][3] can convert its graphs to `pydot`.
  Development occurs at [GitHub][11], where you can report issues and
  contribute code.


pkgId: 3878229d1bd6ea58061fb35ba86b1461ac6b9157ff1adfd313bd6848e9f27d2d
name: python-pydub
arch: src
version: 0.25.1
epoch: 0
release: 1
summary: Manipulate audio with an simple and easy high level interface
url: http://pydub.com
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-23ad6d5a-6d91-4ef1-8929-8d85ad84fb86
location_href: 00009634-python-pydub/python-pydub-0.25.1-1.src.rpm
checksum_type: sha256
description:
  Manipulate audio with an simple and easy high level interface.

  See the README file for details, usage info, and a list of gotchas.


pkgId: 541105fb99d4c845f9a2f2029bcc0dcfa8eea9bca1bcc3834fdec93c039bab1b
name: python-pyduofern
arch: src
version: 0.35.1
epoch: 0
release: 1
url: https://github.com/gluap/pyduofern
rpm_license: GPL-2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-d534b40e-852a-4567-9865-48ca1c49e49d
location_href: 00004664-python-pyduofern/python-pyduofern-0.35.1-1.src.rpm
checksum_type: sha256
summary:
  Library for controlling Rademacher DuoFern actors using python. Requires the RademacherDuofern USB Stick Art.-Nr.: 70000093

description:
  **Disclaimer:** this library is **not** endorsed by the company Rademacher, the manufacturer of home automation products
  under the label duofern. The name pyduofern was chosen to indicate the function of the library: communicating with
  duofern devices via python.
  These are my efforts in porting the `FHEM <http://fhem.de/fhem.html>`_
  `Duofern USB-Stick <https://wiki.fhem.de/wiki/DUOFERN>`_ based module to
  `Homeassistant <https://home-assistant.io/>`_. As of now the port is rather ugly, but it is usable enough to control
  my Duofern blinds. I did not port the Weather-Station related features of the original module -- Mainly because I
  do not own the corresponding hardware and have no means to test if it works. I only tested it with the model
  *RolloTron Standard DuoFern 14233011 Funk-Gurtwickler Aufputz*.
  As reported in `#31 <https://github.com/gluap/pyduofern/issues/31>`_ 10-Digit codes recently announced by Rademacher are not supported as of now as the handshake/
  protocol for these devices was not reverse engineered by anyone as far as I know.
  This requires the Duofern USB Stick Art.-Nr.: 70000093 by Rademacher.
  I do not provide any guarantees for the usability of this software. Use at your own risk.
  License::
     python interface for dufoern usb stick
     Copyright (C) 2017 Paul Görgen
     Rough python python translation of the FHEM duofern modules by telekatz
                (also licensed under GPLv2)
     This re-write does not literally contain contain any verbatim lines
     of the original code (given it was translated to another language)
     apart from some comments to facilitate translation of the not-yet
     translated parts of the original software. Modification dates are
     documented as submits to the git repository of this code, currently
     maintained at `https://github.com/gluap/pyduofern.git <https://github.com/gluap/pyduofern.git>`_
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation; either version 2 of the License, or
     (at your option) any later version.
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software Foundation,
     Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA


pkgId: e9d82840048e779a32bd6991214005d4a5323ea1158e5206273e93f183e8d9d8
name: python-pyeapi
arch: src
version: 0.8.4
epoch: 0
release: 1
summary: Python Client for eAPI
url: https://github.com/arista-eosplus/pyeapi
rpm_license: BSD-3
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4bcf34b2-9b20-4542-a673-477e64f0ea0b
location_href: 00012683-python-pyeapi/python-pyeapi-0.8.4-1.src.rpm
checksum_type: sha256
description:
  The Python Client for eAPI (pyeapi) is a native Python library wrapper around
  Arista EOS eAPI.  It provides a set of Python language bindings for configuring
  Arista EOS nodes.
  The Python library can be used to communicate with EOS either locally
  (on-box) or remotely (off-box). It uses a standard INI-style configuration file
  to specify one or more nodes and connection profiles.
  The pyeapi library also provides an API layer for building native Python
  objects to interact with the destination nodes. The API layer is a convenient
  implementation for working with the EOS configuration and is extensible for
  developing custom implementations.
  This library is freely provided to the open source community for building
  robust applications using Arista EOS. Support is provided as best effort
  through Github issues.


pkgId: 897a18615996cff5aaecefdd5364e6862bdc56658273a9948c8c599213a6fbd8
name: python-pyeclib
arch: src
version: 1.6.1
epoch: 0
release: 1
url: https://opendev.org/openstack/pyeclib
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-9c82ac0e-511d-49c4-9345-f4203f691e74
location_href: 00004665-python-pyeclib/python-pyeclib-1.6.1-1.src.rpm
checksum_type: sha256
summary:
  This library provides a simple Python interface for implementing erasure codes.  To obtain the best possible performance, the underlying erasure code algorithms are written in C.

description:
  This library provides a simple Python interface for implementing erasure codes
  and is known to work with Python v2.6, 2.7 and 3.x. To obtain the best possible
  performance, the library utilizes liberasurecode, which is a C based erasure
  code library.
  PyECLib supports a variety of Erasure Coding backends including the standard
  Reed-Solomon implementations provided by Jerasure [1], liberasurecode [3],
  Intel's ISA-L [4] and Phazr.IO's libphazr.  It also provides support for a flat
  XOR-based encoder and decoder (part of liberasurecode) - a class of HD
  Combination Codes based on "Flat XOR-based erasure codes in storage systems:
  Constructions, efficient recovery, and tradeoffs" in IEEE MSST 2010[2]).
  These codes are well-suited to archival use-cases, have a simple construction
  and require a minimum number of participating disks during single-disk


pkgId: f0c7ade2f8a848fdf43a91257a827bee3a8c63ae8305db825238547df4f5f24b
name: python-pyee
arch: src
version: 9.0.4
epoch: 0
release: 1
summary: A port of node.js's EventEmitter to python.
url: https://github.com/jfhbrook/pyee
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-cadae2a5-0087-4106-9a4f-9a339f2d8dd3
location_href: 00009556-python-pyee/python-pyee-9.0.4-1.src.rpm
checksum_type: sha256
description:
  pyee supplies a ``EventEmitter`` object that is similar to the
  ``EventEmitter`` class from Node.js. It also supplies a number of subclasses
  with added support for async and threaded programming in python, such as
  async/await as seen in python 3.5+.


pkgId: a48539354be7dde2e28fe63dec7d427e8b56ac5175ddbf065f725dece98ed8a1
name: python-pyemd
arch: src
version: 1.0.0
epoch: 0
release: 1
summary: A Python wrapper for Ofir Pele and Michael Werman's implementation of the Earth Mover's Distance.
url: https://github.com/wmayner/pyemd
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-67e8531e-6901-4666-ba47-763acbafe30a
location_href: 00004668-python-pyemd/python-pyemd-1.0.0-1.src.rpm
checksum_type: sha256
description:
  PyEMD is a Python wrapper for `Ofir Pele and Michael Werman's implementation
  <https://ofirpele.droppages.com/>`_ of the `Earth Mover's
  Distance <https://en.wikipedia.org/wiki/Earth_mover%27s_distance>`_ that allows
  it to be used with NumPy. **If you use this code, please cite the papers listed
  at the end of this document.**

rpm_license:
  Copyright (c) 2014-2023 Will Mayner  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


pkgId: 9548dee37e79189a64d7a92875f00986e5c33ab0ad8b4d0f5044da0cde591b0e
name: python-pyepsg
arch: src
version: 0.4.0
epoch: 0
release: 1
summary: Easy access to the EPSG database via http://epsg.io/
url: https://github.com/rhattersley/pyepsg
rpm_license: GNU Lesser General Public License v3 (LGPLv3)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a4682cda-0cdf-4a1e-8bc4-ca4456694547
location_href: 00011516-python-pyepsg/python-pyepsg-0.4.0-1.src.rpm
checksum_type: sha256
description:
  |build_status|
  A simple interface to http://epsg.io/
  For example, we can request the details for the projected coordinate system
  identified by EPSG code 21781, aka. "Swiss CH1903 / LV03"::
      >>> projection = pyepsg.get(21781)
      >>> projection
      <ProjectedCRS: 21781, CH1903 / LV03>
      >>> projection.domain_of_validity()
      [5.97, 10.49, 45.83, 47.81]
      >>> projection.cartesian_cs.axes
      [<Axis: east / metre>, <Axis: north / metre>]
  Projected and geodetic coordinate systems can also be converted to various
  other forms::
      >>> print(projection.as_proj4()[:70] + '...')
      +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 ...
      >>> print(projection.as_wkt()[:70] + '...')
      PROJCS["CH1903 / LV03",GEOGCS["CH1903",DATUM["CH1903",SPHEROID["Bessel...


pkgId: 9015c027074a7bd6e640b489149cfc1ba63c6aa8f22a3565bab5f996cb03441f
name: python-pyexasol
arch: src
version: 0.25.2
epoch: 0
release: 1
summary: Exasol python driver with extra features
url: https://github.com/exasol/pyexasol
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-251c8f3b-bf7c-49c7-934a-71618c2d044d
location_href: 00011313-python-pyexasol/python-pyexasol-0.25.2-1.src.rpm
checksum_type: sha256
description:
  Exasol driver with low overhead, fast HTTP transport and compression. It is implemented in Python 3.6+.

  Main features:

  -  Based on WebSocket protocol;
  -  Optimized for minimum overhead;
  -  Easy integration with pandas via HTTP transport;
  -  Compression to reduce network bottleneck;

  PyEXASOL does not follow DB-API 2.0 in favor of Exasol-specific features.

  Please read "Best practices" manual page to learn how to use PyEXASOL with maximum efficiency.


pkgId: 4348acaa53ef1218c8f8f3436413b8b423d6599c27639b7b68a17d0981db0df3
name: python-pyexcel
arch: src
version: 0.7.0
epoch: 0
release: 1
url: https://github.com/pyexcel/pyexcel
rpm_license: New BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8c6d67e1-5af8-4a29-9279-fc24ffaf80f8
location_href: 00011265-python-pyexcel/python-pyexcel-0.7.0-1.src.rpm
checksum_type: sha256
summary:
  A wrapper library that provides one API to read, manipulate and writedata in different excel formats


pkgId: 3eb28ff85d398349ec88675b3f162168ac8c7b84479e568b86a3d9168dd836c9
name: python-pyfakefs
arch: src
version: 5.1.0
epoch: 0
release: 1
summary: pyfakefs implements a fake file system that mocks the Python file system modules.
url: https://github.com/pytest-dev/pyfakefs
rpm_license: http://www.apache.org/licenses/LICENSE-2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-36ca9ea9-b9e1-4e39-b552-78d5a21b8a0b
location_href: 00004674-python-pyfakefs/python-pyfakefs-5.1.0-1.src.rpm
checksum_type: sha256
description:
  pyfakefs implements a fake file system that mocks the Python file system modules.
  Using pyfakefs, your tests operate on a fake file system in memory without
  touching the real disk. The software under test requires no modification to
  work with pyfakefs.

  pyfakefs acts as a `pytest` plugin by providing the `fs` fixture, which will
  automatically invoke the fake filesystem. It also provides
  the `fake_filesystem_unittest.TestCase` class for use with `unittest` and
  the means to use the fake filesystem with other test frameworks.

  pyfakefs works with current versions of Linux, Windows and macOS.



  This document provides a general overview for pyfakefs.  There is more:

  * The documentation at **Read the Docs**:
    * The [Release documentation](https://pytest-pyfakefs.readthedocs.io/en/stable)
      contains usage documentation for pyfakefs and a description of the
      most relevant classes, methods and functions for the last version
      released on PyPI
    * The [Development documentation](https://pytest-pyfakefs.readthedocs.io/en/latest)
      contains the same documentation for the current main branch
    * The [Release 3.7 documentation](https://pytest-pyfakefs.readthedocs.io/en/v3.7.2/)
      contains usage documentation for the last version of pyfakefs
      supporting Python 2.7
  * The [Release Notes](https://github.com/pytest-dev/pyfakefs/blob/main/CHANGES.md)
    show a list of changes in the latest versions


  The simplest method to use pyfakefs is using the `fs` fixture with `pytest`.
  Refer to the
  [usage documentation](https://pytest-pyfakefs.readthedocs.io/en/latest/usage.html)
  for information on other test scenarios, test customization and
  using convenience functions.


  Apart from automatically mocking most file-system functions, pyfakefs
  provides some additional features:
  - mapping files and directories from the real file system into the fake filesystem
  - configuration and tracking of the file system size
  - pause and resume of patching to be able to use the real file system inside a
    test step
  - (limited) emulation of other OSes (Linux, macOS or Windows)
  - configuration to behave as if running as a non-root user while running
    under root


  pyfakefs works with CPython 3.7 and above, on Linux, Windows and macOS, and
  with PyPy3.

  pyfakefs works with [pytest](http://doc.pytest.org) version 3.0.0 or above,
  though a current version is recommended.

  pyfakefs will not work with Python libraries that use C libraries to access the
  file system. This is because pyfakefs cannot patch the underlying C libraries'
  file access functions--the C libraries will always access the real file
  system. Refer to the
  [documentation](https://pytest-pyfakefs.readthedocs.io/en/latest/intro.html#limitations)
  for more information about the limitations of pyfakefs.





  pyfakefs is currently automatically tested on Linux, macOS and Windows, with
  Python 3.7 to 3.11, and with PyPy3 on Linux, using
  [GitHub Actions](https://github.com/pytest-dev/pyfakefs/actions).




  pyfakefs unit tests can be run using `pytest` (all tests) or `unittest`
  (all tests except `pytest`-specific ones):

  ```bash
  $ cd pyfakefs/
  $ export PYTHONPATH=$PWD

  $ python -m pytest pyfakefs
  $ python -m pyfakefs.tests.all_tests
  ```

  Similar scripts are called by `tox` and Github Actions. `tox` can be used to
  run tests locally against supported python versions:

  ```bash
  $ tox
  ```



  The `Dockerfile` at the repository root will run the tests on the latest
  Ubuntu version.  Build the container:
  ```bash
  cd pyfakefs/
  docker build -t pyfakefs .
  ```
  Run the unit tests in the container:
  ```bash
  docker run -t pyfakefs
  ```



  We always welcome contributions to the library. Check out the
  [Contributing Guide](https://github.com/pytest-dev/pyfakefs/blob/main/CONTRIBUTING.md)
  for more information.


  pyfakefs.py was initially developed at Google by Mike Bland as a modest fake
  implementation of core Python modules.  It was introduced to all of Google
  in September 2006. Since then, it has been enhanced to extend its
  functionality and usefulness.  At last count, pyfakefs was used in over 2,000
  Python tests at Google.

  Google released pyfakefs to the public in 2011 as Google Code project
  [pyfakefs](http://code.google.com/p/pyfakefs/):
  * Fork
    [jmcgeheeiv-pyfakefs](http://code.google.com/p/jmcgeheeiv-pyfakefs/) added
    [direct support for unittest and doctest](../../wiki/Automatically-find-and-patch-file-functions-and-modules)
  * Fork
    [shiffdane-jmcgeheeiv-pyfakefs](http://code.google.com/p/shiffdane-jmcgeheeiv-pyfakefs/)
    added further corrections

  After the [shutdown of Google Code](http://google-opensource.blogspot.com/2015/03/farewell-to-google-code.html)
  was announced, [John McGehee](https://github.com/jmcgeheeiv) merged all three Google Code projects together
  [here on GitHub](https://github.com/pytest-dev/pyfakefs) where an enthusiastic community actively supports, maintains
  and extends pyfakefs. In 2022, the repository has been transferred to
  [pytest-dev](https://github.com/pytest-dev) to ensure continuous maintenance.


pkgId: 95913509a8f0d92ab2f4b8aa2ec74fb0160920ccf605db272619cbc442f40b3d
name: python-pyfarmhash
arch: src
version: 0.3.2
epoch: 0
release: 1
summary: Google FarmHash Bindings for Python
url: https://github.com/veelion/python-farmhash
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-3b2c1219-2440-4f1c-b564-bd4958e52388
location_href: 00009125-python-pyfarmhash/python-pyfarmhash-0.3.2-1.src.rpm
checksum_type: sha256
description:
  Google's FarmHash binding for Python




  This package provides bindings for the [Google's FarmHash](http://code.google.com/p/farmhash/).
  Code specific to this project is covered by [The MIT License](http://opensource.org/licenses/MIT)



  *Update:* Windows binary wheel uploaded to pypi

  Currently, clone the repo and:

  pip(Linux & Windows):
  ```bash
  $ sudo pip install pyfarmhash
  ```

  From Source:
  ```bash
  $ cd python-farmhash
  $ sudo python setup.py Install
  ```



  1. Install Microsoft Visual C++ Compiler
  2. Install miniconda for Python

  ```bash
  $ cd python-farmhash
  $ sudo python setup.py install
  ```




  ```
  import farmhash
  print farmhash.hash64('abc')
  2640714258260161385

  For more details, use ipython:
  In [1]: import farmhash

  In [2]: farmhash.hash64withseed?
  Type:       builtin_function_or_method
  String Form:<built-in function hash64withseed>
  Docstring:
  Hash function for a string.  For convenience, a 64-bit seed is also hashed into the result.
  example: print farmhash.hash64withseed('abc', 12345)
  13914286602242141520L
  ```


pkgId: d5672c3f4433e86e2e3aa8feac5c69a1602e845fa467c892a2e476d61c2a00d7
name: python-pyfarmhash-debuginfo
arch: aarch64
version: 0.3.2
epoch: 0
release: 1
summary: Debug information for package python-pyfarmhash
url: https://github.com/veelion/python-farmhash
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-3b2c1219-2440-4f1c-b564-bd4958e52388
rpm_sourcerpm: python-pyfarmhash-0.3.2-1.src.rpm
location_href: 00009125-python-pyfarmhash/python-pyfarmhash-debuginfo-0.3.2-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-pyfarmhash.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: 18e0511fee67c15846874863b9fea715dbb15e0c3cc43ecb310f21624bea2673
name: python-pyfarmhash-debugsource
arch: aarch64
version: 0.3.2
epoch: 0
release: 1
summary: Debug sources for package python-pyfarmhash
url: https://github.com/veelion/python-farmhash
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-3b2c1219-2440-4f1c-b564-bd4958e52388
rpm_sourcerpm: python-pyfarmhash-0.3.2-1.src.rpm
location_href: 00009125-python-pyfarmhash/python-pyfarmhash-debugsource-0.3.2-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-pyfarmhash.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: b201b9202787329333100e724be68313734296d5a990f6a4b2e081cf94c7c04d
name: python-pyfastnoisesimd
arch: src
version: 0.4.2
epoch: 0
release: 1
summary: Python Fast Noise with SIMD
url: http://github.com/robbmcleod/pyfastnoisesimd
rpm_license: https://opensource.org/licenses/BSD-3-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8e17f67c-fb45-43cc-9346-dc698639333e
location_href: 00004675-python-pyfastnoisesimd/python-pyfastnoisesimd-0.4.2-1.src.rpm
checksum_type: sha256
description:
  PyFastNoiseSIMD is a wrapper around Jordan Peck's synthetic noise library
  https://github.com/Auburns/FastNoise-SIMD which has been
  accelerated with SIMD instruction sets. It may be installed via pip:
      pip install pyfastnoisesimd
  Parallelism is further enhanced by the use of ``concurrent.futures`` to multi-thread
  the generation of noise for large arrays. Thread scaling is generally in the
  range of 50-90 %, depending largely on the vectorized instruction set used.
  The number of threads, defaults to the number of virtual cores on the system. The
  ideal number of threads is typically the number of physical cores, irrespective
  of Intel Hyperthreading®.
  Here is a simple example to generate Perlin-style noise on a 3D rectilinear
  grid::
      import pyfastnoisesimd as fns
      import numpy as np
      shape = [512, 512, 512]
      seed = np.random.randint(2**31)
      N_threads = 4
      perlin = fns.Noise(seed=seed, numWorkers=N_threads)
      perlin.frequency = 0.02
      perlin.noiseType = fns.NoiseType.Perlin
      perlin.fractal.octaves = 4
      perlin.fractal.lacunarity = 2.1
      perlin.fractal.gain = 0.45
      perlin.perturb.perturbType = fns.PerturbType.NoPerturb
      result = perlin.genAsGrid(shape)
  where ``result`` is a 3D ``numpy.ndarray`` of dtype ``'float32'``. Alternatively,
  the user can provide coordinates, which is helpful for tasks such as
  custom bump-mapping a tessellated surface, via ``Noise.getFromCoords(coords)``.
  More extensive examples are found in the ``examples`` folder on the Github repository.
  Parallelism is further enhanced by the use of ``concurrent.futures`` to multi-thread
  the generation of noise for large arrays. Thread scaling is generally in the
  range of 50-90 %, depending largely on the vectorized instruction set used.
  The number of threads, defaults to the number of virtual cores on the system. The
  ideal number of threads is typically the number of physical cores, irrespective
  of Intel Hyperthreading®.


pkgId: 4ce8422fa47290e5d4d0d13ebd9b7ebb49e6ed5e7a437fae8789c72c82bd549c
name: python-pygatt
arch: src
version: 4.0.5
epoch: 0
release: 1
summary: Python Bluetooth LE (Low Energy) and GATT Library
url: https://github.com/peplin/pygatt
rpm_license: Apache 2.0 and MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-eee8bd1f-947c-4bdc-b860-d1b82cabe524
location_href: 00004680-python-pygatt/python-pygatt-4.0.5-1.src.rpm
checksum_type: sha256
description:
  This Module allows reading and writing to GATT descriptors on devices
  such as fitness trackers, sensors, and anything implementing standard
  GATT Descriptor behavior.
  pygatt provides a Pythonic API by wrapping two different backends:
  -  BlueZ (requires Linux), using the ``gatttool`` command-line utility.
  -  Bluegiga's BGAPI, compatible with USB adapters like the BLED112.


pkgId: 4e9816e1ec1a913c06385d32e52847a9042eef41ee07342dd7784b036909fe2a
name: python-pygdbmi
arch: src
version: 0.11.0.0
epoch: 0
release: 1
summary: Parse gdb machine interface output with Python
url: https://github.com/cs01/pygdbmi
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-f8fdc987-8d20-40b5-93b2-5055cd9f39d3
location_href: 00010893-python-pygdbmi/python-pygdbmi-0.11.0.0-1.src.rpm
checksum_type: sha256
description:
  Python (**py**) [**gdb**](https://www.gnu.org/software/gdb/) machine interface [(**mi**)](https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI.html)
  > GDB/MI is a line based machine oriented text interface to GDB and is activated by specifying using the --interpreter command line option (see Mode Options). It is specifically intended to support the development of systems which use the debugger as just one small component of a larger system.

  1.  A function to parse gdb machine interface string output and return structured data types (Python dicts) that are JSON serializable. Useful for writing the backend to a gdb frontend. For example, [gdbgui](https://github.com/cs01/gdbgui) uses pygdbmi on the backend.
  2.  A Python class to control and interact with gdb as a subprocess
  To get [machine interface](https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI.html) output from gdb, run gdb with the `--interpreter=mi2` flag like so:
  ```
  gdb --interpreter=mi2
  ```

      pip install pygdbmi


  Cross platform support for Linux, macOS and Windows
  - Linux/Unix
    Ubuntu 14.04 and 16.04 have been tested to work. Other versions likely work as well.
  - macOS
    Note: the error `please check gdb is codesigned - see taskgated(8)` can be fixed by codesigning gdb with [these instructions](http://andresabino.com/2015/04/14/codesign-gdb-on-mac-os-x-yosemite-10-10-2/). If the error is not fixed, please [create an issue in github](https://github.com/cs01/pygdbmi/issues).
  - Windows
    Windows 10 has been tested to work with MinGW and cygwin.

  - gdb 7.6+ has been tested. Older versions may work as well.

  gdb mi defines a syntax for its output that is suitable for machine readability and scripting: [example output](https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Simple-Examples.html#GDB_002fMI-Simple-Examples):
  ```
  -> -break-insert main
  <- ^done,bkpt={number="1",type="breakpoint",disp="keep",
  enabled="y",addr="0x08048564",func="main",file="myprog.c",
  fullname="/home/myprog.c",line="68",thread-groups=["i1"],
  times="0"}
  <- (gdb)
  ```
  Use `pygdbmi.gdbmiparser.parse_response` to turn that string output into a JSON serializable dictionary
  ```python
  from pygdbmi import gdbmiparser
  from pprint import pprint
  response = gdbmiparser.parse_response('^done,bkpt={number="1",type="breakpoint",disp="keep", enabled="y",addr="0x08048564",func="main",file="myprog.c",fullname="/home/myprog.c",line="68",thread-groups=["i1"],times="0"')
  pprint(response)
  pprint(response)















  ```

  But how do you get the gdb output into Python in the first place? If you want, `pygdbmi` also has a class to control gdb as subprocess. You can write commands, and get structured output back:
  ```python
  from pygdbmi.gdbcontroller import GdbController
  from pprint import pprint

  gdbmi = GdbController()
  print(gdbmi.command)  # print actual command run as subprocess

  response = gdbmi.write('-file-exec-file a.out')
  pprint(response)











  ```
  Now do whatever you want with gdb. All gdb commands, as well as gdb [machine interface commands](<(https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Input-Syntax.html#GDB_002fMI-Input-Syntax)>) are acceptable. gdb mi commands give better structured output that is machine readable, rather than gdb console output. mi commands begin with a `-`.
  ```python
  response = gdbmi.write('-break-insert main')  # machine interface (MI) commands start with a '-'
  response = gdbmi.write('break main')  # normal gdb commands work too, but the return value is slightly different
  response = gdbmi.write('-exec-run')
  response = gdbmi.write('run')
  response = gdbmi.write('-exec-next', timeout_sec=0.1)  # the wait time can be modified from the default of 1 second
  response = gdbmi.write('next')
  response = gdbmi.write('next', raise_error_on_timeout=False)
  response = gdbmi.write('next', raise_error_on_timeout=True, timeout_sec=0.01)
  response = gdbmi.write('-exec-continue')
  response = gdbmi.send_signal_to_gdb('SIGKILL')  # name of signal is okay
  response = gdbmi.send_signal_to_gdb(2)  # value of signal is okay too
  response = gdbmi.interrupt_gdb()  # sends SIGINT to gdb
  response = gdbmi.write('continue')
  response = gdbmi.exit()
  ```

  Each parsed gdb response consists of a list of dictionaries. Each dictionary has keys `message`, `payload`, `token`, and `type`.
  - `message` contains a textual message from gdb, which is not always present. When missing, this is `None`.
  - `payload` contains the content of gdb's output, which can contain any of the following: `dictionary`, `list`, `string`. This too is not always present, and can be `None` depending on the response.
  - `token` If an input command was prefixed with a (optional) token then the corresponding output for that command will also be prefixed by that same token. This field is only present for pygdbmi output types `nofity` and `result`. When missing, this is `None`.
  The `type` is defined based on gdb's various [mi output record types](<(https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Output-Records.html#GDB_002fMI-Output-Records)>), and can be
  - `result` - the result of a gdb command, such as `done`, `running`, `error`, etc.
  - `notify` - additional async changes that have occurred, such as breakpoint modified
  - `console` - textual responses to cli commands
  - `log` - debugging messages from gdb's internals
  - `output` - output from target
  - `target` - output from remote target
  - `done` - when gdb has finished its output

  Documentation fixes, bug fixes, performance improvements, and functional improvements are welcome. You may want to create an issue before beginning work to make sure I am interested in merging it to the master branch.
  pygdbmi uses [nox](https://github.com/theacodes/nox) for automation.
  See available tasks with
  ```
  nox -l
  ```
  Run tests and lint with
  ```
  nox -s tests
  nox -s lint
  ```
  Positional arguments passed to `nox -s tests` are passed directly to `pytest`. For instance, to run only the parse tests use
  ```
  nox -s tests -- tests/test_gdbmiparser.py
  ```
  See [`pytest`'s documentation](https://docs.pytest.org/) for more details on how to run tests.
  To format code using the correct settings use
  ```
  nox -s format
  ```
  Or, to format only specified files, use
  ```
  nox -s format -- example.py pygdbmi/IoManager.py
  ```

  Only maintainers of the [pygdbmi package on PyPi](https://pypi.org/project/pygdbmi/) can make a release.
  In the following steps, replace these strings with the correct values:
  - `<REMOTE>` is the name of the remote for the main pygdbmi repository (for instance, `origin`)
  - `<VERSION>` is the version number chosen in step 2.
  To make a release:
  1. Checkout the `master` branch and pull from the main repository with `git pull <REMOTE> master`
  2. Decide the version number for the new release; we follow
     [Semantic Versioning](https://semver.org/) but prefixing the version with `0.`: given a version
     number _0.SECOND.THIRD.FOURTH_, increment the:
     - _SECOND_ component when you make incompatible API changes
     - _THIRD_ component when you add functionality in a backwards compatible manner
     - _FOURTH_ component when you make backwards compatible bug fixes
  3. Update `CHANGELOG.md` to list the chosen version number instead of `## dev`
  4. Update `__version__` in `pygdbmi/__init__.py` to the chosen version number
  5. Create a branch, for instance using `git checkout -b before-release-<VERSION>`
  6. Commit your changes, for instance using `git commit -a -m 'Bump version to <VERSION> for release'`
  7. Check that the docs look fine by serving them locally with `nox -s serve_docs`
  8. Push the branch, for instance with `git push --set-upstream <REMOTE> before-release-<VERSION>`
  9. If tests pass on the PR you created, you can merge into `master`
  10. Go to the [new release page](https://github.com/cs01/pygdbmi/releases/new) and prepare the
      release:
      - Add a tag in the form `v<VERSION>` (for example `v0.1.2.3`)
      - Set the title to `pygdbmi v<VERSION>` (for example `pygdbmi v0.1.2.3`)
      - Copy and paste the section for the new release only from `CHANGELOG.md` excluding the line
        with the version number
      - Press “Publish release”
  10. Publish the release to PyPI with `nox -s publish`
  11. Publish the docs with `nox -s publish_docs`
  11. Verify that the [PyPi page for pygdbmi](https://pypi.org/project/pygdbmi/) looks correct
  12. Verify that the [published docs](https://cs01.github.io/pygdbmi/) look correct
  13. Prepare for changes for the next release by adding something like this above the previous
      entries in `CHANGELOG.md` (where `<VERSION+1>` is `<VERSION>` with the last digit increaded
      by 1):
      ```
      
      - *Replace this line with new entries*
      ```
  14. Create a branch for the changes with `git checkout -b after-release-<VERSION>`
  15. Commit the change with `git commit -m 'Prepare for work on the next release' CHANGELOG.md`
  16. Push the branch with `git push --set-upstream <REMOTE> after-release-<VERSION>`
  17. If tests pass, merge into `master`

  - [tsgdbmi](https://github.com/Guyutongxue/tsgdbmi) A port of pygdbmi to TypeScript
  - [danielzfranklin/gdbmi](https://github.com/danielzfranklin/gdbmi) A port of pygdbmi to Rust

  - [gdbgui](https://github.com/cs01/gdbgui) implements a browser-based frontend to gdb, using pygdbmi on the backend
  - [PINCE](https://github.com/korcankaraokcu/PINCE) is a gdb frontend that aims to provide a reverse engineering tool and a reusable library focused on games. It uses pygdbmi to parse gdb/mi based output for some functions
  - [avatar²](https://github.com/avatartwo/avatar2) is an orchestration framework for reversing and analysing firmware of embedded devices. It utilizes pygdbmi for internal communication to different analysis targets.
  - [UDB](https://undo.io/udb) is a proprietary time-travel debugger for C and C++ based on GDB. It uses pygdbmi in its extensive test suite to parse the debugger's output.
  - Know of another project? Create a PR and add it here.

  - [Chad Smith](https://github.com/cs01) (main author and creator).
  - [Marco Barisione](http://www.barisione.org/) (co-maintainer).
  - [The community](https://github.com/cs01/pygdbmi/graphs/contributors). Thanks especially to @mariusmue, @bobthekingofegypt, @mouuff, and @felipesere.


pkgId: 48683b96ebe9fd54e3f3b1f7692c7eec52e1ca4fc9ef0d80c855650375915a10
name: python-pygelf
arch: src
version: 0.4.2
epoch: 0
release: 1
summary: Logging handlers with GELF support
url: https://github.com/keeprocking/pygelf
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-b2a9538d-e6f2-43c1-951b-36397e91da15
location_href: 00011751-python-pygelf/python-pygelf-0.4.2-1.src.rpm
checksum_type: sha256
description:
  |travis| |coveralls| |pypi| |downloads|
  Python logging handlers with GELF (Graylog Extended Log Format) support.
  Currently TCP, UDP, TLS (encrypted TCP) and HTTP logging handlers are supported.


pkgId: 31b5bced39f22eee2f700be491a4e3d774679ecd04f84cdcc918b94fca4b762b
name: python-pygeoip
arch: src
version: 0.3.2
epoch: 0
release: 1
summary: Pure Python GeoIP API
url: https://github.com/appliedsec/pygeoip
rpm_license: LGPLv3+
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4d72668f-d96e-45bc-af11-c01a1280ddfd
location_href: 00004681-python-pygeoip/python-pygeoip-0.3.2-1.src.rpm
checksum_type: sha256
description:
  This library is based on `Maxmind's GeoIP C API <https://github.com/maxmind/geoip-api-c>`__.
  Tested with Python version 2.6, 2.7, 3.2, 3.3 and 3.4.


pkgId: 6e842b88efbffdbf7acbdce036b581f59f1a7044e47195b9892fa1817cf9492c
name: python-pygerrit2
arch: src
version: 2.0.15
epoch: 0
release: 1
summary: Client library for interacting with Gerrit's REST API
url: https://github.com/dpursehouse/pygerrit2
rpm_license: The MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-d9fce1ed-82ff-4b61-b86a-7e89b1248897
location_href: 00013187-python-pygerrit2/python-pygerrit2-2.0.15-1.src.rpm
checksum_type: sha256
description:
  Pygerrit2 provides a simple interface for clients to interact with
  `Gerrit Code Review`_ via the REST API.


pkgId: deedcb552d6945847b03a8fa1b61fd93d16c70fa462e3c826752cffdc57d7ed7
name: python-pyghmi
arch: src
version: 1.5.59
epoch: 0
release: 1
summary: Python General Hardware Management Initiative (IPMI and others)
url: http://github.com/openstack/pyghmi/
rpm_license: Apache License, Version 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4ce4c9f0-2ff0-4984-894d-5fa1deeaf9fe
location_href: 00004682-python-pyghmi/python-pyghmi-1.5.59-1.src.rpm
checksum_type: sha256
description:
  This is a pure python implementation of IPMI protocol.

  pyghmicons and pyghmiutil are example scripts to show how one may incorporate
  this library into python code


pkgId: 23a54f2a1f378a86875fbfb112aa637d3ab5015dfcba5ff08767662020be49b5
name: python-pygit2
arch: src
version: 1.11.1
epoch: 0
release: 1
summary: Python bindings for libgit2.
url: https://github.com/libgit2/pygit2
rpm_license: GPLv2 with linking exception
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-bfbc67d3-73ce-4df8-8d01-b03a783ada9b
location_href: 00004685-python-pygit2/python-pygit2-1.11.1-1.src.rpm
checksum_type: sha256
description:
  - Documentation - http://www.pygit2.org/
  - Install - http://www.pygit2.org/install.html
  - Download - https://pypi.python.org/pypi/pygit2
  - Source code and issue tracker - https://github.com/libgit2/pygit2
  - Changelog - https://github.com/libgit2/pygit2/blob/master/CHANGELOG.rst
  - Authors - https://github.com/libgit2/pygit2/blob/master/AUTHORS.rst


pkgId: 2f20af0505818c37c542a773adf4467a294c65ad53397006bed65c9547229e57
name: python-pyglet
arch: src
version: 2.0.5
epoch: 0
release: 1
summary: Cross-platform windowing and multimedia library
url: http://pyglet.readthedocs.org/en/latest/
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-be4f6b97-8b6e-48c4-8403-b7fd7003c437
location_href: 00004687-python-pyglet/python-pyglet-2.0.5-1.src.rpm
checksum_type: sha256
description:
  [![pypi](https://badge.fury.io/py/pyglet.svg)](https://pypi.python.org/pypi/pyglet) [![rtd](https://readthedocs.org/projects/pyglet/badge/?version=latest)](https://pyglet.readthedocs.io) [![PyTest](https://github.com/pyglet/pyglet/actions/workflows/unittests.yml/badge.svg)](https://github.com/pyglet/pyglet/actions/workflows/unittests.yml)

  ![logo_large.png](https://bitbucket.org/repo/aejyXX/images/3385888514-logo_large.png)



  *pyglet* is a cross-platform windowing and multimedia library for Python, intended for developing games
  and other visually rich applications. It supports windowing, user interface event handling, Joysticks,
  OpenGL graphics, loading images and videos, and playing sounds and music. *pyglet* works on Windows, OS X and Linux.

  > :exclamation: :exclamation: A major pyglet update has just been released (v2.0). This brings many
  > new exciting features, but also some necessary breaking changes. If your game/application has suddenly
  > stopped working, please read the [migration section in the documentation](https://pyglet.readthedocs.io/en/latest/programming_guide/migration.html)
  > The previous version of pyglet is tracked in the `pyglet-1.5-maintenance` branch.
  > **If you want to do a pull request for the previous release, please target the appropriate branch**.

  > :exclamation: `pyglet.graphics.draw` and `pyglet.graphics.draw_indexed` will be removed
  > in pyglet v2.1. The `shapes` module is an alternative for drawing simple shapes.

  * pyglet [documentation]
  * pyglet on [PyPI]
  * pyglet [discord] server
  * pyglet [mailing list]
  * pyglet [issue tracker]
  * pyglet [website]

  pyglet has an active developer and user community.  If you find a bug or a problem with the documentation,
  please [open an issue](https://github.com/pyglet/pyglet/issues).
  Anyone is welcome to join our [discord] server where a lot of the development discussion is going on.
  It's also a great place to ask for help.

  Some features of pyglet are:

  * **No external dependencies or installation requirements.** For most application and game requirements, *pyglet*
    needs nothing else besides Python, simplifying distribution and installation. It's easy to package your project
    with freezers such as PyInstaller.
  * **Take advantage of multiple windows and multi-monitor desktops.** *pyglet* allows you to use multiple
    platform-native windows, and is fully aware of multi-monitor setups for use with fullscreen games.
  * **Load images, sound, music and video in almost any format.** *pyglet* can optionally use FFmpeg to play back
    audio formats such as MP3, OGG/Vorbis and WMA, and video formats such as MPEG2, H.264, H.265, WMV and Xvid.
    Without FFmpeg, *pyglet* contains built-in support for standard formats such as wav, png, bmp, and others.
  * **pyglet is written entirely in pure Python**, and makes use of the *ctypes* module to interface with system
    libraries. You can modify the codebase or make a contribution without any second language compilation steps or
    compiler setup. Despite being pure Python, *pyglet* has excellent performance thanks to advanced batching for
    drawing thousands of objects.
  * **pyglet is provided under the BSD open-source license**, allowing you to use it for both commercial and other
    open-source projects with very little restriction.



  pyglet runs under Python 3.8+. Being written in pure Python, it also works on other Python interpreters such as PyPy. Supported platforms are:

  * Windows 7 or later
  * Mac OS X 10.3 or later
  * Linux, with the following libraries (most recent distributions will have
    these in a default installation):
    * OpenGL and GLX
    * GDK 2.0+ or Pillow (required for loading images other than PNG and BMP)
    * OpenAL or Pulseaudio (required for playing audio)

  **As of pyglet 2.0, OpenGL 3.3+ is required**.

  To play a large variety of compressed audio and video files,
  pyglet can optionally take advantage of [FFmpeg](https://ffmpeg.org/).



  pyglet is installable from PyPI:

      pip install --upgrade --user pyglet



  If you're reading this `README` from a source distribution, you can install pyglet with:

      python setup.py install --user

  You can also install the latest development version direct from Github using:

      pip install --upgrade --user https://github.com/pyglet/pyglet/archive/master.zip

  For local development install pyglet in editable mode:

  ```bash

  pip install -e .

  python setup.py develop
  ```

  There are no compilation steps during the installation; if you prefer,
  you can simply add this directory to your `PYTHONPATH` and use pyglet without
  installing it. You can also copy pyglet directly into your project folder.



  **A good way to start contributing to a component of pyglet is by its documentation**. When studying the code you
  are going to work with, also read the associated docs. If you don't understand the code with the help of the docs,
  it is a sign that the docs should be improved.

  If you want to contribute to pyglet, we suggest the following:

  * Fork the [official repository](https://github.com/pyglet/pyglet/fork).
  * Checkout the branch you wish to contribute to (such as *pyglet-1.4-maintenance*).
  * Apply your changes to your fork.
  * Submit a [pull request](https://github.com/pyglet/pyglet/pulls) describing the changes you have made.
  * Alternatively you can create a patch and submit it to the issue tracker.

  When making a pull request, check that you have addressed its respective documentation, both within the code docstrings
  and the programming guide (if applicable). It is very important to all of us that the documentation matches the latest
  code and vice-versa.

  Consequently, an error in the documentation, either because it is hard to understand or because it doesn't match the
  code, is a bug that deserves to be reported on a ticket.



      pip install -r doc/requirements.txt
      python setup.py build_sphinx

  Please check [the README.md file in the doc directory](doc/README.md) for more details.



  pyglet makes use of pytest for its test suite.

  ```bash
  pip install -r tests/requirements.txt --user

  pytest tests/unit
  ```

  Please check the [testing section in the development guide](https://pyglet.readthedocs.io/en/latest/internal/testing.html)
  for more information about running and writing tests.



  pyglet is developed by many individual volunteers, and there is no central point of contact. If you have a question
  about developing with pyglet, or you wish to contribute, please join the [mailing list] or the [discord] server.

  For legal issues, please contact [Alex Holkner](mailto:Alex.Holkner@gmail.com).

  [discord]: https://discord.gg/QXyegWe
  [mailing list]: http://groups.google.com/group/pyglet-users
  [documentation]: https://pyglet.readthedocs.io
  [wiki]:  https://github.com/pyglet/pyglet/wiki
  [pypi]:  https://pypi.org/project/pyglet/
  [website]: http://pyglet.org/
  [issue tracker]: https://github.com/pyglet/pyglet/issues


pkgId: 328d67470512d3e04723ab87dd5858900a3d2a5192f50be68b914b957a156961
name: python-pygments-markdown-lexer
arch: src
version: 0.1.0.dev39
epoch: 0
release: 1
summary: Pygments Markdown Lexer – A Markdown lexer for Pygments to highlight Markdown code snippets.
url: https://github.com/jhermann/pygments-markdown-lexer
rpm_license: Apache 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-807d2792-8400-4068-a8c1-a6b642d5115e
location_href: 00004688-python-pygments-markdown-lexer/python-pygments-markdown-lexer-0.1.0.dev39-1.src.rpm
checksum_type: sha256
description:
  Copyright ©  2015 Jürgen Hermann <jh@web.de>

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.


pkgId: fe84bc42e4b0bdd501517c54174def668baaeaf05532fabaa16247255dec44f0
name: python-pygments-pytest
arch: src
version: 2.3.0
epoch: 0
release: 1
summary: A pygments lexer for pytest output.
url: https://github.com/asottile/pygments-pytest
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-0d63c205-30d1-46b0-ae77-a5b7eb4d54da
location_href: 00004689-python-pygments-pytest/python-pygments-pytest-2.3.0-1.src.rpm
checksum_type: sha256
description:
  A pygments lexer for pytest output
  See [some demos](https://asottile.github.io/pygments-pytest)!  Or
  [see it in action on pytest.org](https://pytest.org).

  `pip install pygments-pytest`

  This library provides a pygments lexer called `pytest`.
  ```rst


pkgId: ae98504e313e3b4e57051dab5f329739e7fe4e7961883ed3f24ec17427067ce1
name: python-pygraphviz
arch: src
version: 1.10
epoch: 0
release: 1
summary: Python interface to Graphviz
url: http://pygraphviz.github.io
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4968843f-6a01-4839-8264-63f72affd7a3
location_href: 00004695-python-pygraphviz/python-pygraphviz-1.10-1.src.rpm
checksum_type: sha256
description:
  PyGraphviz is a Python interface to the Graphviz graph layout and
  visualization package.
  With PyGraphviz you can create, edit, read, write, and draw graphs using
  Python to access the Graphviz graph data structure and layout algorithms.
  PyGraphviz provides a similar programming interface to NetworkX
  (https://networkx.org).
  - **Website (including documentation):** https://pygraphviz.github.io
  - **Mailing list:** https://groups.google.com/forum/#!forum/pygraphviz-discuss
  - **Source:** https://github.com/pygraphviz/pygraphviz
  - **Bug reports:** https://github.com/pygraphviz/pygraphviz/issues


pkgId: 9301e5bd16e1a4c6ee0381d5c57d69b692055151a57338ed2379be159798edd7
name: python-pygrib
arch: src
version: 2.1.4
epoch: 0
release: 1
summary: Python module for reading/writing GRIB files
url: https://github.com/jswhit/pygrib
rpm_license: License :: OSI Approved :: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-2886698c-2cb5-4491-8895-1ba9c0a91f67
location_href: 00004697-python-pygrib/python-pygrib-2.1.4-1.src.rpm
checksum_type: sha256
description:
  The easiest way to get everything installed is to use [pip](https://py.pypa.io):
  ```
  pip install pygrib
  ```
  You can also use [conda](https://docs.conda.io/en/latest/):
  ```
  conda install -c conda-forge pygrib
  ```
  Alternately, clone the github repo and run `python setup.py install` (after setting `$ECCCODES_DIR`)
  where `$ECCODES_DIR` is the path to the directory containing `include/grib_api.h`
  and `lib/libeccodes.so`. If `ECCODES_DIR` is not specified, a few common locations
  such as `$CONDA_PREFIX,/usr,/usr/local,/opt/local` will be searched.
  For full installation instructions and API documentation, see https://jswhit.github.io/pygrib.
  Sample [IPython](http://ipython.org/) notebooks illustrating pygrib usage:
  * http://nbviewer.jupyter.org/gist/jswhit/8635665
  * https://github.com/scollis/HRRR/blob/master/notebooks/HRRR%20Grib.ipynb
  Questions or comments - contact Jeff Whitaker <jeffrey.s.whitaker@noaa.gov>
  or use https://github.com/jswhit/pygrib/issues.


pkgId: 6667adc05c98c7fea60164867bdfffaea45785634923de24638f8c07420ce2b5
name: python-pygrocy
arch: src
version: 1.5.0
epoch: 0
release: 1
summary: please add a summary manually as the author left a blank one
url: https://github.com/sebrut/pygrocy
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-51b2f57f-22e7-4f52-b643-312b95bd6842
location_href: 00004698-python-pygrocy/python-pygrocy-1.5.0-1.src.rpm
checksum_type: sha256
description:
  [![Development Build Status](https://api.travis-ci.com/SebRut/pygrocy.svg?branch=develop)](https://travis-ci.com/SebRut/pygrocy)
  [![PyPI](https://img.shields.io/pypi/v/pygrocy.svg)](https://pypi.org/project/pygrocy/)
  ![Python Version](https://img.shields.io/badge/python-3.8%20%7C%203.9%20%7C%203.10-blue)
  ![Grocy Version](https://img.shields.io/badge/grocy-3.1.0-yellow)
  [![Coverage Status](https://coveralls.io/repos/github/SebRut/pygrocy/badge.svg?branch=master)](https://coveralls.io/github/SebRut/pygrocy?branch=master)
  [![CodeFactor](https://www.codefactor.io/repository/github/sebrut/pygrocy/badge)](https://www.codefactor.io/repository/github/sebrut/pygrocy)
  [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
  [Documentation](https://sebrut.github.io/pygrocy/)



  `pip install pygrocy`


  Import the package:
  ```python
  from pygrocy import Grocy
  ```

  Obtain a grocy instance:
  ```python
  grocy = Grocy("https://example.com", "GROCY_API_KEY")
  ```
  or
  ```python
  grocy = Grocy("https://example.com", "GROCY_API_KEY", port = 9192, verify_ssl = True)
  ```

  Get current stock:
  ```python
  for entry in grocy.stock():
      print("{} in stock for product id {}".format(entry.available_amount, entry.id))
  ```



  If you need help using pygrocy check the [discussions](https://github.com/SebRut/pygrocy/issues) section. Feel free to create an issue for feature requests, bugs and errors in the library.


  You need tox and Python 3.8/9/10 to run the tests. Navigate to the root dir of `pygrocy` and execute `tox` to run the tests.


pkgId: 793ddaba1e7b506ade078bf7d80d49205a3d5b6023a640a37359360566cc21a4
name: python-pygrok
arch: src
version: 1.0.0
epoch: 0
release: 1
summary: A Python library to parse strings and extract information from structured/unstructured data
url: https://github.com/garyelephant/pygrok
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-bb51a332-55f4-481c-be9b-9f23cd8541b9
location_href: 00011047-python-pygrok/python-pygrok-1.0.0-1.src.rpm
checksum_type: sha256
description:
  |Join the chat at https://gitter.im/garyelephant/pygrok|
  A Python library to parse strings and extract information from
  structured/unstructured data


pkgId: cbc497429c17c67be52cc3a00f6bf786662a9638808ddad750375b11dde404f5
name: python-pygsheets
arch: src
version: 2.0.6
epoch: 0
release: 1
summary: Google Spreadsheets Python API v4
url: https://github.com/nithinmurali/pygsheets
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-e4621281-ecf6-4cda-aaeb-5d6ed59bb4da
location_href: 00009339-python-pygsheets/python-pygsheets-2.0.6-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://travis-ci.org/nithinmurali/pygsheets.svg?branch=staging)](https://travis-ci.org/nithinmurali/pygsheets)  [![PyPI version](https://badge.fury.io/py/pygsheets.svg)](https://badge.fury.io/py/pygsheets)    [![Documentation Status](https://readthedocs.org/projects/pygsheets/badge/?version=latest)](http://pygsheets.readthedocs.io/en/latest/?badge=latest) [![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/nithinmurali/pygsheets)

  A simple, intuitive library for google sheets which gets your work done.

  Features:

  * Open, create, delete and share spreadsheets using _title_ or _key_
  * Intuitive models - spreadsheet, worksheet, cell, datarange
  * Control permissions of spreadsheets.
  * Set cell format, text format, color, write notes
  * Named and Protected Ranges Support
  * Work with range of cells easily with DataRange and Gridrange
  * Data validation support. checkboxes, drop-downs etc.
  * Conditional formatting support
  * get multiple ranges with get_values_batch and update wit update_values_batch


  * version [2.0.6](https://github.com/nithinmurali/pygsheets/releases/tag/2.0.6) released





  ```sh
  pip install pygsheets

  ```

  If you are installing from pypi please see the docs [here](https://pygsheets.readthedocs.io/en/stable/).




  ```sh
  pip install https://github.com/nithinmurali/pygsheets/archive/staging.zip

  ```

  If you are installing from github please see the docs [here](https://pygsheets.readthedocs.io/en/staging/).



  Basic features are shown here, for complete set of features see the full documentation [here](http://pygsheets.readthedocs.io/en/staging/).

  1. Obtain OAuth2 credentials from Google Developers Console for __google spreadsheet api__ and __drive api__ and save the file as `client_secret.json` in same directory as project. [read more here.](https://pygsheets.readthedocs.io/en/latest/authorization.html)

  2. Start using pygsheets:

  Sample scenario : you want to share a numpy array with your remote friend

  ```python
  import pygsheets
  import numpy as np

  gc = pygsheets.authorize()


  sh = gc.open('my new sheet')
  wks = sh.sheet1


  wks.update_value('A1', "Hey yank this numpy array")
  my_nparray = np.random.randint(10, size=(3, 4))


  wks.update_values('A2', my_nparray.tolist())


  sh.share("myFriend@gmail.com")

  ```

  Sample Scenario: you want to fill height values of students
  ```python



  header = wks.cell('A1')
  header.value = 'Names'
  header.text_format['bold'] = True # make the header bold
  header.update()


  wks.cell('B1').set_text_format('bold', True).value = 'heights'


  wks.update_values('A2:A5',[['name1'],['name2'],['name3'],['name4']])


  heights = wks.range('B2:B5', returnas='range')  # get the range as DataRange object
  heights.name = "heights"  # name the range
  heights.update_values([[50],[60],[67],[66]]) # update the values
  wks.update_value('B6','=average(heights)') # set the avg value of heights using named range

  ```





  ```python

  sh = gc.open("pygsheetTest")


  sht1 = gc.open_by_key('1mwA-NmvjDqd3A65c8hsxOpqdfdggPR0fgfg5nXRKScZAuM')


  sht2 = gc.create("new sheet", folder_name="my worksheets")


  gc.drive.enable_team_drive("Dqd3A65c8hsxOpqdfdggPR0fgfg")

  ```



  <details> <summary>show code</summary>

  ```python

  import pygsheets
  c = pygsheets.authorize()
  sh = c.open('spreadsheet')


  wks = sh.add_worksheet("new sheet",rows=50,cols=60)


  wks = sh.add_worksheet("new sheet",rows=50,cols=60,index=0)


  wks = sh.add_worksheet("new sheet", src_worksheet='<other worksheet instance>')


  sh.del_worksheet(wks)


  sh.remove_permissions("myNotSoFriend@gmail.com")

  ```

  </details>



  <details> <summary>show code</summary>

  ```python
  import pygsheets
  c = pygsheets.authorize()
  sh = c.open('spreadsheet')


  wks = sh.worksheet_by_title("my test sheet")


  wks = sh.worksheet('index', 0)


  wks_list = sh.worksheets()


  wks = sh[0]
  ```

  </details>



  <details> <summary>show code</summary>

  ```python

  values_mat = wks.get_values(start=(1,1), end=(20,20), returnas='matrix')


  wks.get_values_batch(['A1:B10', 'C', '1', (10, None)])


  cell_matrix = wks.get_all_values(returnas='matrix')


  wks.update_values(crange='A1:E10', values=values_mat)


  wks.update_values_batch(['A1:A2', 'B1:B2'], [[[1],[2]], [[3],[4]]])


  wks.insert_rows(row=20, number=2, values=values_list)


  wks.rows=30


  for row in wks:
      print(row)


   A1_value = wks[0][0]


  wks.clear()


  wks.append_table(values=[1,2,3,4])


  wks.export(pygsheets.ExportType.CSV)


  cell_list = worksheet.find("query string")


  filter_re = re.compile(r'(small|big) house')
  cell_list = worksheet.find(filter_re, searchByRegex=True)
  cell_list = worksheet.replace(filter_re, 'some house', searchByRegex=True)


  wks.index = 2 # index start at 1 , not 0


  wks.title = "NewTitle"


  wks.hidden = False


  wks.create_named_range('A1', 'A10', 'prices')
  wks.get_named_range('prices')
  wks.get_named_ranges()  # will return a list of DataRange objects
  wks.delete_named_range('prices')


  wks.apply_format(['A1:B1', 'D:E'], ["NUMBER", "TEXT"])


  wks.add_chart(('A1', 'A6'), [('B1', 'B6')], 'Health Trend')


  wks.set_data_validation(start='C4', end='E7', condition_type='NUMBER_BETWEEN', condition_values=[2,10], strict=True, inputMessage="inut between 2 and 10")


  cell = wks.cell('C1')
  cell.value = '=A1+B1'
  wks.apply_format('C1:C10', cell, 'userEnteredValue.formulaValue')

  ```

  </details>


  If you work with pandas, you can directly use the dataframes
  ```python

  wks.set_dataframe(df,(1,1))


  df = wks.get_as_df()

  ```




  Each cell has a __value__ and cordinates (__row__, __col__, __label__) properties.

  Getting cell objects

  <details open> <summary>show code</summary>

  ```python
  c1 = Cell('A1',"hello")  # create a unlinked cell
  c1 = worksheet.cell('A1')  # creates a linked cell whose changes syncs instantanously
  cl.value  # Getting cell value
  c1.value_unformatted #Getting cell unformatted value
  c1.formula # Getting cell formula if any
  c1.note # any notes on the cell
  c1.address # address object with cell position

  cell_list = worksheet.range('A1:C7')  # get a range of cells
  cell_list = worksheet.col(5, returnas='cell')  # return all cells in 5th column(E)

  ```

  </details>

  Most of the functions has `returnas` param, if whose value is `cell` it will return a list of cell objects. Also you can use *label* or *(row,col)* tuple interchangbly as a cell adress



  Each cell is directly linked with its cell in spreadsheet, hence changing the value of cell object will update the corresponding cell in spreadsheet unless you explictly unlink it
  Also not that bu default only the value of cell is fetched, so if you are directly accessing any cell properties call `cell.fetch()` beforehand.

  Different ways of updating Cells

  <details> <summary>show code</summary>

  ```python

  c1 = worksheet.cell('B1') # created from worksheet, so linked cell
  c1.col = 5  # Now c1 correponds to E1
  c1.value = "hoho"  # will change the value of E1


  worksheet.update_value('B1', 'hehe')


  cell_list = worksheet.range('A1:C7')
  cell_list = worksheet.get_values(start='A1', end='C7', returnas='cells')
  cell_list = worksheet.get_row(2, returnas='cells')



  c1.formula = 'A1+C2'
  c1.formula # '=A1+C2'


  c2 = c1.neighbour('topright') # you can also specify relative position as tuple eg (1,1)


  c1.set_number_format(pygsheets.FormatType.NUMBER, '00.0000')


  c1.note = "yo mom"


  c1.color = (1.0, 1.0, 1.0, 1.0) # Red, Green, Blue, Alpha


  c1.text_format['fontSize'] = 14
  c1.set_text_format('bold', True)


   c1.update()



  c.unlink()
  c.note = "offine note"
  c.link(wks1, True)
  c.link(wks2, True)

  ```

  </details>



  The DataRange is used to represent a range of cells in a worksheet. They can be named or protected.
  Almost all `get_` functions has a `returnas` param, set it to `range` to get a range object.

  <details open> <summary>show code</summary>

  ```python

  rng = wks.get_values('A1', 'C5', returnas='range')
  rng.start_addr = 'A' # make the range unbounded on rows <Datarange Sheet1!A:B>
  drange.end_addr = None # make the range unbounded on both axes <Datarange Sheet1>


  rng.name = 'pricesRange'  # will make this range a named range
  rng = wks.get_named_ranges('commodityCount') # directly get a named range
  rng.name = ''  # will delete this named range


  rng.protected = True
  rng.editors = ('users', 'someemail@gmail.com')


   
  model_cell = Cell('A1')
  model_cell.color = (1.0,0,1.0,1.0) # rose color cell
  model_cell.format = (pygsheets.FormatType.PERCENT, '')

   
  rng.apply_format(model_cell)  # will make all cell in this range rose color and percent format

  Datarange('A1','A10', worksheet=wks).apply_format(model_cell)


  cell = rng[0][1]

  ```
  </details>



  If you are calling a lot of spreadsheet modification functions (non value update). you can merge them into a single call.
  By doing so all the requests will be merged into a single call.

  ```python
  gc.set_batch_mode(True)
  wks.merge_cells("A1", "A2")
  wks.merge_cells("B1", "B2")
  Datarange("D1", "D5", wks).apply_format(cell)
  gc.run_batch() # All the above requests are executed here
  gc.set_batch_mode(False)

  ```
  Batching also happens when you unlink worksheet. But in that case the requests are not merged.




  This library is still in development phase.

  * Follow the [Contributing to Open Source](https://guides.github.com/activities/contributing-to-open-source/) Guide.
  * Branch off of the `staging` branch, and submit Pull Requests back to
    that branch.  Note that the `master` branch is used for version
    bumps and hotfixes only.
  * For quick testing the changes you have made to source, run the file `tests/manual_testing.py`. It will give you an IPython shell with lastest code loaded.



  * Please report bugs and suggest features via the [GitHub Issues](https://github.com/nithinmurali/pygsheets/issues).
  * Before opening an issue, search the tracker for possible duplicates.
  * If you have any usage questions, ask a question on stackoverflow with `pygsheets` Tag


  * install `pip install -r requirements-dev.txt`
  * run `make test`

  Now that you have scrolled all the way down, **finding this library useful?**  <a href="https://www.buymeacoffee.com/pygsheets" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;" ></a>


pkgId: b2cbbef28eeb2ee5403a399606325f39fd2fc31e5728c4143dbdeba645d57996
name: python-pygtail
arch: src
version: 0.14.0
epoch: 0
release: 1
summary: Reads log file lines that have not been read.
url: http://github.com/bgreenlee/pygtail
rpm_license: GPL v2
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-e9145b67-36fa-4c23-b2f3-837ad7c3ab5b
location_href: 00012069-python-pygtail/python-pygtail-0.14.0-1.src.rpm
checksum_type: sha256
description:
  A python "port" of `logcheck's logtail2 <http://logcheck.org>`__.
  Pygtail reads log file lines that have not been read. It will even
  handle log files that have been rotated.


pkgId: a10ba5826e47487c1b89e678ce62dbe6296c13b88c542cd88d009a14d080483e
name: python-pygtrie
arch: src
version: 2.5.0
epoch: 0
release: 1
summary: A pure Python trie data structure implementation.
url: https://github.com/mina86/pygtrie
rpm_license: Apache-2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4e0f4ca4-a335-4fb7-8397-25e1a922ff91
location_href: 00010573-python-pygtrie/python-pygtrie-2.5.0-1.src.rpm
checksum_type: sha256
description:
  pygtrie is a pure Python implementation of a trie data structure
  compatible with Python 2.x and Python 3.x.
  `Trie data structure <http://en.wikipedia.org/wiki/Trie>`_, also known
  as radix or prefix tree, is a tree associating keys to values where
  all the descendants of a node have a common prefix (associated with
  that node).
  The trie module contains ``Trie``, ``CharTrie`` and ``StringTrie``
  classes each implementing a mutable mapping interface, i.e. ``dict``
  interface.  As such, in most circumstances, ``Trie`` could be used as
  a drop-in replacement for a ``dict``, but the prefix nature of the
  data structure is trie’s real strength.
  The module also contains ``PrefixSet`` class which uses a trie to
  store a set of prefixes such that a key is contained in the set if it
  or its prefix is stored in the set.


pkgId: bb5466b611ba236709a0a023ed4b44c14de8d95bf007fc746fb505e0217bb180
name: python-pyhcl
arch: src
version: 0.4.4
epoch: 0
release: 1
summary: HCL configuration parser for python
url: https://github.com/virtuald/pyhcl
rpm_license: Mozilla Public License 2.0 (MPL 2.0)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-f98d26c3-661e-4835-b71a-73acdbc424a1
location_href: 00004702-python-pyhcl/python-pyhcl-0.4.4-1.src.rpm
checksum_type: sha256
description:
  |Build Status|
  Implements a parser for `HCL (HashiCorp Configuration
  Language) <https://github.com/hashicorp/hcl>`__ in Python. This
  implementation aims to be compatible with the original golang version of
  the parser.
  The grammar and many of the tests/fixtures were copied/ported from the
  golang parser into pyhcl. All releases are tested with a variety of
  python versions from Python 2.7 onward.
  This version has been modified to work with terraform 0.12 syntax.
  It should be backward compatible with earlier versions.
  It doesn't cover every situation.  See discussion in pull request:
  https://github.com/virtuald/pyhcl/pull/57


pkgId: 929a22cc63371d2c6f45d6af2981187554c1c72654419ad64ec405301d82541b
name: python-pyhdb
arch: src
version: 0.3.4
epoch: 0
release: 1
summary: SAP HANA Database Client for Python
url: https://github.com/SAP/pyhdb
rpm_license: Apache License Version 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-856f2d8f-bb24-4063-ae4b-c8175b91eb58
location_href: 00010165-python-pyhdb/python-pyhdb-0.3.4-1.src.rpm
checksum_type: sha256
description:
  A pure Python client for the SAP HANA Database based on the `SAP HANA Database SQL Command Network Protocol <http://help.sap.com/hana/SAP_HANA_SQL_Command_Network_Protocol_Reference_en.pdf>`_.
  pyhdb supports Python 2.7, 3.3, 3.4, 3.5 and also PyPy on Linux, OSX and Windows. It implements a large part of the `DBAPI Specification v2.0 (PEP 249) <http://legacy.python.org/dev/peps/pep-0249/>`_. We plan to support Python 2.6 again in the future.


pkgId: 669f14042af89387485d8b6bf53f064bf4117d959a53c584c31b54eccd6288fb
name: python-pyhdfe
arch: src
version: 0.1.2
epoch: 0
release: 1
summary: High dimensional fixed effect absorption with Python 3
url: https://github.com/jeffgortmaker/pyhdfe
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-de987201-ba42-4587-b027-52233dcc08eb
location_href: 00011609-python-pyhdfe/python-pyhdfe-0.1.2-1.src.rpm
checksum_type: sha256
description:
  The PyHDFE package has been tested on `Python <https://www.python.org/downloads/>`_ versions 3.6 through 3.9. The `SciPy instructions <https://scipy.org/install/>`_ for installing related packages is a good guide for how to install a scientific Python environment. A good choice is the `Anaconda Distribution <https://www.anaconda.com/products/distribution>`_, since, along with many other packages that are useful for scientific computing, it comes packaged with PyHDFE's only required dependencies: `NumPy <https://numpy.org/>`_ and `SciPy <https://scipy.org/>`_.
  You can install the current release of PyHDFE with `pip <https://pip.pypa.io/en/latest/>`_::
      pip install pyhdfe
  You can upgrade to a newer release with the ``--upgrade`` flag::
      pip install --upgrade pyhdfe
  If you lack permissions, you can install PyHDFE in your user directory with the ``--user`` flag::
      pip install --user pyhdfe
  Alternatively, you can download a wheel or source archive from `PyPI <https://pypi.org/project/pyhdfe/>`_. You can find the latest development code on `GitHub <https://github.com/jeffgortmaker/pyhdfe/>`_ and the latest development documentation `here <https://pyhdfe.readthedocs.io/en/latest/>`_.


pkgId: 63ea87462a4765d0c7312bd429d5bf8c6ae4b7e7e38f4a7599653692c3ab676f
name: python-pyhumps
arch: src
version: 3.8.0
epoch: 0
release: 1
url: https://github.com/nficano/humps
rpm_license: The Unlicense (Unlicense)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-9ed04839-dcd6-45d4-b78f-c63b17d8fde5
location_href: 00010203-python-pyhumps/python-pyhumps-3.8.0-1.src.rpm
checksum_type: sha256
summary:
  🐫  Convert strings (and dictionary keys) between snake case, camel case and pascal case in Python. Inspired by Humps for Node

description:
  <p align="center">
    <img src="https://raw.githubusercontent.com/nficano/humps/master/artwork/humps.png" alt="Humps logo" width="245" height="118">
  </p>

  <div align="center">
    <a href="http://humps.readthedocs.io/en/latest/?badge=latest">
      <img src="https://readthedocs.org/projects/humps/badge/?version=latest" />
    </a>
    <a href="https://coveralls.io/github/nficano/humps?branch=master">
      <img src="https://coveralls.io/repos/github/nficano/humps/badge.svg?branch=master#cachebus" />
    </a>
    <a href="https://pypi.org/project/pyhumps/">
      <img src="https://img.shields.io/pypi/v/pyhumps.svg#cachebust" />
    </a>
    <a href="https://pypi.org/project/pyhumps/">
      <img src="https://img.shields.io/pypi/dm/pyhumps.svg" />
    </a>
    <a href="https://pypi.python.org/pypi/pyhumps/">
      <img src="https://img.shields.io/pypi/pyversions/pyhumps.svg" />
    </a>
  </div>
  </p>

  Convert strings (and dictionary keys) between snake case, camel case and pascal case in Python. Inspired by [Humps](https://github.com/domchristie/humps) for Node.



  Please email me at nficano@gmail.com.



  To install humps, simply use pipenv (or pip, of course):

  ```bash
  $ pipenv install pyhumps
  ```





  ```python
  import humps

  humps.camelize("jack_in_the_box")  # jackInTheBox
  humps.decamelize("rubyTuesdays")  # ruby_tuesdays
  humps.pascalize("red_robin")  # RedRobin
  humps.kebabize("white_castle")  # white-castle
  ```



  ```python
  import humps

  array = [{"attrOne": "foo"}, {"attrOne": "bar"}]
  humps.decamelize(array) # [{"attr_one": "foo"}, {"attr_one": "bar"}]

  array = [{"attr_one": "foo"}, {"attr_one": "bar"}]
  humps.camelize(array)  # [{"attrOne": "foo"}, {"attrOne": "bar"}]

  array = [{'attr_one': 'foo'}, {'attr_one': 'bar'}]
  humps.kebabize(array)  # [{'attr-one': 'foo'}, {'attr-one': 'bar'}]

  array = [{"attr_one": "foo"}, {"attr_one": "bar"}]
  humps.pascalize(array)  # [{"AttrOne": "foo"}, {"AttrOne": "bar"}]
  ```



  ```python
  import humps

  humps.is_camelcase("illWearYourGranddadsClothes")  # True
  humps.is_pascalcase("ILookIncredible")  # True
  humps.is_snakecase("im_in_this_big_ass_coat")  # True
  humps.is_kebabcase('from-that-thrift-shop')  # True
  humps.is_camelcase("down_the_road")  # False

  humps.is_snakecase("imGonnaPopSomeTags")  # False
  humps.is_kebabcase('only_got_twenty_dollars_in_my_pocket')  # False



  humps.decamelize("APIResponse")  # api_response
  ```

  <hr>





  ```python

  import humps
  import boto3

  def api(service, decamelize=True, *args, **kwargs):
      service, func = service.split(":")
      client = boto3.client(service)
      kwargs = humps.pascalize(kwargs)
      response = getattr(client, func)(*args, **kwargs)
      return (depascalize(response) if decamelize else response)


  api("s3:download_file", bucket="bucket", key="hello.png", filename="hello.png")
  ```


pkgId: b53582bb788267be8dbb17c22e5c201fc2c2c37d2f1ea21b2c5fcb7e9844c063
name: python-pyi2cflash
arch: src
version: 0.2.2
epoch: 0
release: 1
summary: I2C eeprom device drivers (pure Python)
url: http://github.com/eblot/pyi2cflash
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-f056fd9f-926c-4053-8c43-b71c743c3b84
location_href: 00004705-python-pyi2cflash/python-pyi2cflash-0.2.2-1.src.rpm
checksum_type: sha256
description:
  I2C eeprom device drivers (pure Python)
  I2C flash devices, also known as *DataFlash* are commonly found in embedded
  products, to store firmware, microcode or configuration parameters.
  PyI2CFlash_ comes with several pure Python drivers for those flash devices, that
  demonstrate use of I2C devices with PyFtdi_. It could also be useful to dump
  flash contents or recover from a bricked devices.


pkgId: 6c046765c02113c809208bc79922d7d5a41a906736bfe0308ce83cf8c5b9afec
name: python-pyinels
arch: src
version: 0.6.11
epoch: 0
release: 1
summary: Python library for iNels BUS
url: https://github.com/JH-Soft-Technology/pyinels
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-0a4023e6-45fe-4787-97e9-f2fba71b4a20
location_href: 00004707-python-pyinels/python-pyinels-0.6.11-1.src.rpm
checksum_type: sha256
description:
  A Python library that handles communication with proprietary home intelligent system
  named [iNels](https://www.inels.com/) by ElkoEP company.
  This package is developed against iNels BUS version. It is not tested on older
  version CU2 and does not support RF components.


pkgId: f514c7fc2d4c736ca5eec285447bc68bcf00b71a7e58fef72dfcf722a33db2a7
name: python-pyinsane2
arch: src
version: 2.0.13
epoch: 0
release: 1
summary: Python library to access and use image scanners (Linux/Windows/etc)
url: https://github.com/openpaperwork/pyinsane
rpm_license: GPLv3+
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4b6988d6-e396-4cfd-9cbc-e9d5e0b26f68
location_href: 00004708-python-pyinsane2/python-pyinsane2-2.0.13-1.src.rpm
checksum_type: sha256
description:
  Python library to access and use image scanners (devices). Works on GNU/Linux (Sane), *BSD (Sane), Windows >= Vista (WIA 2), MacOSX (Sane), etc.


pkgId: 6cab0f4f381c596034055c65a0dba3f4dba93348211fc53159d8544d05249ecb
name: python-pyinstrument
arch: src
version: 4.4.0
epoch: 0
release: 1
summary: Call stack profiler for Python. Shows you why your code is slow!
url: https://github.com/joerick/pyinstrument
rpm_license: BSD License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-0556c0fb-d134-4ae5-8593-9c0ffef171b5
location_href: 00010436-python-pyinstrument/python-pyinstrument-4.4.0-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/pyinstrument.svg)](https://badge.fury.io/py/pyinstrument)
  [![.github/workflows/test.yml](https://github.com/joerick/pyinstrument/actions/workflows/test.yml/badge.svg)](https://github.com/joerick/pyinstrument/actions/workflows/test.yml)
  [![Build wheels](https://github.com/joerick/pyinstrument/actions/workflows/wheels.yml/badge.svg)](https://github.com/joerick/pyinstrument/actions/workflows/wheels.yml)
  [Documentation](https://pyinstrument.readthedocs.io/)
  <!-- MARK intro start -->
  [![Screenshot](docs/img/screenshot.jpg)](https://raw.githubusercontent.com/joerick/pyinstrument/main/docs/img/screenshot.jpg)
  Pyinstrument is a Python profiler. A profiler is a tool to help you optimize
  your code - make it faster. To get the biggest speed increase you should
  [focus on the slowest part of your program](https://en.wikipedia.org/wiki/Amdahl%27s_law).
  Pyinstrument helps you find it!
  > ☕️ Not sure where to start? Check out this [video tutorial from calmcode.io](https://calmcode.io/pyinstrument/introduction.html)!
  <!-- MARK intro end -->


pkgId: 76ece6ac5d1f1760a84f12423f9959c4a5070c375d2d7d812fca33457f5bef78
name: python-pyinstrument-debuginfo
arch: aarch64
version: 4.4.0
epoch: 0
release: 1
summary: Debug information for package python-pyinstrument
url: https://github.com/joerick/pyinstrument
rpm_license: BSD License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-0556c0fb-d134-4ae5-8593-9c0ffef171b5
rpm_sourcerpm: python-pyinstrument-4.4.0-1.src.rpm
location_href: 00010436-python-pyinstrument/python-pyinstrument-debuginfo-4.4.0-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-pyinstrument.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: fda49f1fc5c030a38a619d7bed424f574a8eaae34e07494895cf8476555ecaeb
name: python-pyinstrument-debugsource
arch: aarch64
version: 4.4.0
epoch: 0
release: 1
summary: Debug sources for package python-pyinstrument
url: https://github.com/joerick/pyinstrument
rpm_license: BSD License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-0556c0fb-d134-4ae5-8593-9c0ffef171b5
rpm_sourcerpm: python-pyinstrument-4.4.0-1.src.rpm
location_href: 00010436-python-pyinstrument/python-pyinstrument-debugsource-4.4.0-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-pyinstrument.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: e03e2c161be46f1f8e3614bba8fd69595959ea6f7a566940867711b2a7fdbc9e
name: python-pyiqvia
arch: src
version: 2022.10.0
epoch: 0
release: 1
summary: A clean, async-focused Python3 API for IQVIA data
url: https://github.com/bachya/pyiqvia
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c75f103c-930d-4f61-96ad-26ee6c8fb696
location_href: 00004709-python-pyiqvia/python-pyiqvia-2022.10.0-1.src.rpm
checksum_type: sha256
description:
  [![CI](https://github.com/bachya/pyiqvia/workflows/CI/badge.svg)](https://github.com/bachya/pyiqvia/actions)
  [![PyPi](https://img.shields.io/pypi/v/pyiqvia.svg)](https://pypi.python.org/pypi/pyiqvia)
  [![Version](https://img.shields.io/pypi/pyversions/pyiqvia.svg)](https://pypi.python.org/pypi/pyiqvia)
  [![License](https://img.shields.io/pypi/l/pyiqvia.svg)](https://github.com/bachya/pyiqvia/blob/master/LICENSE)
  [![Code Coverage](https://codecov.io/gh/bachya/pyiqvia/branch/dev/graph/badge.svg)](https://codecov.io/gh/bachya/pyiqvia)
  [![Maintainability](https://api.codeclimate.com/v1/badges/3bf37f9cabf73b5d991e/maintainability)](https://codeclimate.com/github/bachya/pyiqvia/maintainability)
  [![Say Thanks](https://img.shields.io/badge/SayThanks-!-1EAEDB.svg)](https://saythanks.io/to/bachya)

  <a href="https://www.buymeacoffee.com/bachya1208P" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="41" width="174"></a>

  `pyiqvia` is an async-focused Python3 library for allergen, asthma, and disease
  data from the [IQVIA™](https://www.iqvia.com) family of websites (such as
  https://pollen.com, https://flustar.com, and more).

  - [Python Versions](#python-versions)
  - [Installation](#installation)
  - [Usage](#usage)
  - [Contributing](#contributing)



  `pyiqvia` is currently supported on:

  - Python 3.9
  - Python 3.10
  - Python 3.11



  ```bash
  pip install pyiqvia
  ```



  ```python
  import asyncio

  from aiohttp import ClientSession

  from pyiqvia import Client


  async def main() -> None:
      """Run!"""
      
      client = Client("80012")

      
      await client.allergens.current()

      
      await client.allergens.outlook()

      
      await client.allergens.extended()

      
      await client.allergens.historic()

      
      await client.asthma.current()

      
      await client.asthma.extended()

      
      await client.asthma.historic()

      
      await client.disease.current()

      
      await client.disease.extended()

      
      await client.disease.historic()


  asyncio.run(main())
  ```



  By default, `pyiqvia` will retry appropriate errors 4 times (with an exponentially
  increasing delay in-between). This logic can be changed by passing a different value for
  `request_retries` to the `Client` constructor:

  ```python
  import asyncio

  from pyiqvia import Client


  async def main():
      client = Client("80012", request_retries=5)

      


  asyncio.run(main())
  ```



  By default, the library creates a new connection to IQVIA with each coroutine. If you
  are calling a large number of coroutines (or merely want to squeeze out every second of
  runtime savings possible), an
  [`aiohttp`](https://github.com/aio-libs/aiohttp) `ClientSession` can be used for connection
  pooling:

  ```python
  import asyncio

  from aiohttp import ClientSession

  from pyiqvia import Client


  async def main() -> None:
      """Run!"""
      async with ClientSession() as session:
          client = Client("80012", session=session)

          


  asyncio.run(main())
  ```



  1. [Check for open features/bugs](https://github.com/bachya/pyiqvia/issues)
     or [initiate a discussion on one](https://github.com/bachya/pyiqvia/issues/new).
  2. [Fork the repository](https://github.com/bachya/pyiqvia/fork).
  3. (_optional, but highly recommended_) Create a virtual environment: `python3 -m venv .venv`
  4. (_optional, but highly recommended_) Enter the virtual environment: `source ./.venv/bin/activate`
  5. Install the dev environment: `script/setup`
  6. Code your new feature or bug fix.
  7. Write tests that cover your new functionality.
  8. Run tests and ensure 100% code coverage: `nox -rs coverage`
  9. Update `README.md` with any new documentation.
  10. Add yourself to `AUTHORS.md`.
  11. Submit a pull request!


pkgId: a23b03c2947e57ea97d1a5b307687d850650d0a80f7ba53e8386cd7ea1a8912f
name: python-pyiso8583
arch: src
version: 2.2.0
epoch: 0
release: 1
summary: A serializer and deserializer of ISO8583 data.
url: https://github.com/knovichikhin/pyiso8583
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-15f83900-d039-4112-8b9c-89d60c601b91
location_href: 00011698-python-pyiso8583/python-pyiso8583-2.2.0-1.src.rpm
checksum_type: sha256
description:
  |pypi| |docs| |coverage|
  ``iso8583`` package serializes and deserializes ISO8583 data between
  raw ``bytes`` ISO8583 data and a regular Python ``dict``.
  ``iso8583`` package supports custom `specifications <https://pyiso8583.readthedocs.io/en/latest/specifications.html>`_
  that can define:
  - Field length and data encoding, such as BCD, ASCII, EBCDIC, etc.
  - Field length count measured in bytes or nibbles.
  - Field type, such as fixed, LLVAR, LLLVAR, etc.
  - Maximum length
  - Optional field description
  Multiple specifications can co-exist to support ISO8583 messages for POS, ATM,
  file actions, and so on. Simply define a new specification dictionary. ``iso8583``
  package includes a starter specification in ``iso8583.specs`` module that can be
  used as a base to create own custom/proprietary specifications.
  Additional information is available on `Read The Docs <http://pyiso8583.readthedocs.org>`_.


pkgId: d069433e1ac11a99efa568df854e46cc61803c2ef4a467778edc8cd820d674ba
name: python-pyjks
arch: src
version: 20.0.0
epoch: 0
release: 1
summary: Pure-Python Java Keystore (JKS) library
url: http://github.com/kurtbrose/pyjks
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-88f687dd-0d23-4b6b-9cb2-1c4f95438249
location_href: 00010949-python-pyjks/python-pyjks-20.0.0-1.src.rpm
checksum_type: sha256
description:
  PyJKS enables Python projects to load and manipulate Java KeyStore
  (JKS) data without a JVM dependency. PyJKS supports JKS, JCEKS, BKS
  and UBER (BouncyCastle) keystores. Simply::

    pip install pyjks

  Or::

    easy_install pyjks

  Then::

    import jks

    keystore = jks.KeyStore.load('keystore.jks', 'passphrase')

    print(keystore.private_keys)
    print(keystore.certs)
    print(keystore.secret_keys)

  And that's barely scratching the surface. Check out `the usage examples on
  GitHub <https://github.com/kurtbrose/pyjks#usage-examples>`_ for
  more!


pkgId: 56e85ac9d13e1e9fed0410a2d8580a9b16a67bdf2a2157f3655fb8891a090293
name: python-pyjnius
arch: src
version: 1.4.2
epoch: 0
release: 1
summary: A Python module to access Java classes as Python classes using JNI.
url: https://github.com/kivy/pyjnius
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ad949ef1-c0fb-422a-8f44-cc0e0c5298b4
location_href: 00004710-python-pyjnius/python-pyjnius-1.4.2-1.src.rpm
checksum_type: sha256
description:
  A Python module to access Java classes as Python classes using the Java Native
  Interface (JNI).
  Warning: the pypi name is now `pyjnius` instead of `jnius`.
  [![Tests](https://github.com/kivy/pyjnius/workflows/Continuous%20Integration/badge.svg)](https://github.com/kivy/pyjnius/actions)
  [![Tests (x86)](https://github.com/kivy/pyjnius/workflows/Continuous%20Integration%20(x86)/badge.svg)](https://github.com/kivy/pyjnius/actions)
  [![Builds](https://github.com/kivy/pyjnius/workflows/Continuous%20Delivery/badge.svg)](https://github.com/kivy/pyjnius/actions)
  [![PyPI](https://img.shields.io/pypi/v/pyjnius.svg)]()
  [![Backers on Open Collective](https://opencollective.com/kivy/backers/badge.svg)](#backers)
  [![Sponsors on Open Collective](https://opencollective.com/kivy/sponsors/badge.svg)](#sponsors)


pkgId: 6b6fc7a8343e6069a2b89bdd7f5eccb1938a2e4ef17aeca86d9e71cabfd8fb78
name: python-pykafka
arch: src
version: 2.8.0
epoch: 0
release: 1
summary: Full-Featured Pure-Python Kafka Client
url: https://github.com/Parsely/pykafka
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-d993d98d-fd51-42bc-89cd-4752b4278fca
location_href: 00004712-python-pykafka/python-pykafka-2.8.0-1.src.rpm
checksum_type: sha256
description:
  PyKafka is a programmer-friendly Kafka client for Python. It includes Python
  implementations of Kafka producers and consumers, which are optionally backed
  by a C extension built on `librdkafka`_. It runs under Python 2.7+, Python 3.4+,
  and PyPy, and supports versions of Kafka 0.8.2 and newer.
  PyKafka's primary goal is to provide a similar level of abstraction to the
  `JVM Kafka client`_ using idioms familiar to Python programmers and exposing
  the most Pythonic API possible.
  You can install PyKafka from PyPI with
      $ pip install pykafka
  or from conda-forge with
      $ conda install -c conda-forge pykafka
  Full documentation and usage examples for PyKafka can be found on `readthedocs`_.
  You can install PyKafka for local development and testing by cloning this repository and
  running
      $ python setup.py develop


pkgId: 8779ee1eedc38cad734fc03a4ca05c29b0d6219e028350add0e93821effdf68f
name: python-pykdtree-debuginfo
arch: aarch64
version: 1.3.6
epoch: 0
release: 1
summary: Debug information for package python-pykdtree
url: https://github.com/storpipfugl/pykdtree
rpm_license: GNU Lesser General Public License v3 (LGPLv3)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-a09fa327-85de-4bf9-9428-ca1b80106534
rpm_sourcerpm: python-pykdtree-1.3.6-1.src.rpm
location_href: 00004714-python-pykdtree/python-pykdtree-debuginfo-1.3.6-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-pykdtree.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: 6d482c63942f15f62d2164198cc6cc45a8655dcd9ce8f08a23dba341f534da3a
name: python-pykdtree-debugsource
arch: aarch64
version: 1.3.6
epoch: 0
release: 1
summary: Debug sources for package python-pykdtree
url: https://github.com/storpipfugl/pykdtree
rpm_license: GNU Lesser General Public License v3 (LGPLv3)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-a09fa327-85de-4bf9-9428-ca1b80106534
rpm_sourcerpm: python-pykdtree-1.3.6-1.src.rpm
location_href: 00004714-python-pykdtree/python-pykdtree-debugsource-1.3.6-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-pykdtree.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: 34448f2246c6d3e89418d9bcb8e4846c30f7c89e6a36fdb92b520264adf28e1a
name: python-pykeepass
arch: src
version: 4.0.3
epoch: 0
release: 1
summary: Python library to interact with keepass databases (supports KDBX3 and KDBX4)
url: https://github.com/libkeepass/pykeepass
rpm_license: GPL3
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-fcf1d96e-76f8-4f9e-a911-8c5040d9b788
location_href: 00004717-python-pykeepass/python-pykeepass-4.0.3-1.src.rpm
checksum_type: sha256
description:
  This library allows you to write entries to a KeePass database.
  Come chat at `#pykeepass`_ on Freenode or `#pykeepass:matrix.org`_ on Matrix.


pkgId: d73388e0f394fc9552b882e155dcff75c16ab8b101f0a134eac3a655c4886443
name: python-pykka
arch: src
version: 3.1.1
epoch: 0
release: 1
summary: Pykka is a Python implementation of the actor model
url: https://github.com/jodal/pykka
rpm_license: Apache-2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-92b6c62b-e3eb-487f-8f96-ccaf988dcdee
location_href: 00002877-python-Pykka/python-pykka-3.1.1-1.src.rpm
checksum_type: sha256
description:
  Pykka is a Python implementation of the
  [actor model](https://en.wikipedia.org/wiki/Actor_model).
  The actor model introduces some simple rules to control
  the sharing of state and cooperation between execution units,
  which makes it easier to build concurrent applications.
  For a quickstart guide and a complete API reference,
  see the [documentation](https://pykka.readthedocs.io/).

  Pykka requires Python 3.7 or newer.
  Pykka is available from [PyPI](https://pypi.org/project/pykka/):
  ```
  python3 -m pip install pykka
  ```

  - [Documentation](https://pykka.readthedocs.io/)
  - [Source code](https://github.com/jodal/pykka)
  - [Releases](https://github.com/jodal/pykka/releases)
  - [Issue tracker](https://github.com/jodal/pykka/issues)
  - [Contributors](https://github.com/jodal/pykka/graphs/contributors)
  - [Users](https://github.com/jodal/pykka/wiki/Users)

  Pykka is copyright 2010-2022 Stein Magnus Jodal and contributors.
  Pykka is licensed under the
  [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).


pkgId: bb7cf418658589c9c861b6e90374b58f21fb9d5b5a16031387c185ded273dc61
name: python-pyknp
arch: src
version: 0.6.1
epoch: 0
release: 1
summary: Python module for JUMAN/KNP
url: https://github.com/ku-nlp/pyknp
rpm_license: See COPYING
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a7b8d55a-a134-49c7-a1c0-c20e72fc3486
location_href: 00012380-python-pyknp/python-pyknp-0.6.1-1.src.rpm
checksum_type: sha256
description:
  形態素解析器JUMAN++(JUMAN)と構文解析器KNPのPythonバインディング (Python2系と3系の両方に対応)。


  - Python
      - Verified Versions: 2.7.15,  3.7.11
  - 形態素解析器 [JUMAN++](http://nlp.ist.i.kyoto-u.ac.jp/index.php?JUMAN++) [[EN](http://nlp.ist.i.kyoto-u.ac.jp/EN/index.php?JUMAN++)]
  (or [JUMAN](http://nlp.ist.i.kyoto-u.ac.jp/index.php?JUMAN)[[EN](http://nlp.ist.i.kyoto-u.ac.jp/EN/index.php?JUMAN)])
      - JUMAN++ はJUMANの後継にあたる形態素解析器
  - 構文解析器 [KNP](http://nlp.ist.i.kyoto-u.ac.jp/index.php?KNP) [[EN](http://nlp.ist.i.kyoto-u.ac.jp/EN/index.php?KNP)]


  ```
  $ pip install pyknp
  ```


  https://pyknp.readthedocs.io/en/latest/



  京都大学 黒橋・河原研究室 (contact@nlp.ist.i.kyoto-u.ac.jp)
  - John Richardson, Tomohide Shibata, Yuta Hayashibe, Tomohiro Sakaguchi


pkgId: 7edbe4035077068e175dc0277a4483c2986e59603897ee16a45827afd45f92e7
name: python-pykube-ng
arch: src
version: 22.9.0
epoch: 0
release: 1
summary: Python client library for Kubernetes
url: https://codeberg.org/hjacobs/pykube-ng
rpm_license: Apache
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-15fae336-1569-408b-bca8-4fdb64baaae8
location_href: 00012292-python-pykube-ng/python-pykube-ng-22.9.0-1.src.rpm
checksum_type: sha256
description:
  Pykube (pykube-ng) is a lightweight Python 3.6+ client library for Kubernetes.
  This is a fork of `kelproject/pykube <https://github.com/kelproject/pykube>`_ which is no longer maintained (archived). Here the original text of the pykube README:
      Kel is an open source Platform as a Service (PaaS) from Eldarion, Inc. that
      makes it easy to manage web application deployment and hosting through the
      entire lifecycle from development through testing to production. It adds
      components and tools on top of Kubernetes that help developers manage their
      application infrastructure. Kel builds on Eldarion's 7+ years experience running
      one of the leading Python and Django PaaSes.
      For more information about Kel, see `kelproject.com`_ or follow us on Twitter
      `@projectkel`_.


pkgId: 79e575729b7152fb6a8f883cbcaef6f8a5d517643357d141a6734948ce7949cd
name: python-pylama
arch: src
version: 8.4.1
epoch: 0
release: 1
summary: Code audit tool for python
url: https://github.com/klen/pylama
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-e55a3d2f-68a8-4a06-8df1-dce4e412070d
location_href: 00011801-python-pylama/python-pylama-8.4.1-1.src.rpm
checksum_type: sha256
description:
  - Python (3.7, 3.8, 3.9, 3.10)
  - If your tests are failing on Win platform you are missing: ``curses`` -
    http://www.lfd.uci.edu/~gohlke/pythonlibs/ (The curses library supplies a
    terminal-independent screen-painting and keyboard-handling facility for
    text-based terminals)
  For python versions < 3.7 install pylama 7.7.1


pkgId: 5923361b95a07b6249bd943eb3a584f903a17004fe1a313298a0c05c86188d26
name: python-pylast
arch: src
version: 5.1.0
epoch: 0
release: 1
summary: A Python interface to Last.fm and Libre.fm
url: https://github.com/pylast/pylast
rpm_license: Apache-2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-92c06e18-86c3-4a77-bb1d-9e7dc3004d55
location_href: 00004719-python-pylast/python-pylast-5.1.0-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://img.shields.io/pypi/v/pylast.svg)](https://pypi.org/project/pylast/)
  [![Supported Python versions](https://img.shields.io/pypi/pyversions/pylast.svg)](https://pypi.org/project/pylast/)
  [![PyPI downloads](https://img.shields.io/pypi/dm/pylast.svg)](https://pypistats.org/packages/pylast)
  [![Test](https://github.com/pylast/pylast/workflows/Test/badge.svg)](https://github.com/pylast/pylast/actions)
  [![Coverage (Codecov)](https://codecov.io/gh/pylast/pylast/branch/main/graph/badge.svg)](https://codecov.io/gh/pylast/pylast)
  [![Code style: Black](https://img.shields.io/badge/code%20style-Black-000000.svg)](https://github.com/psf/black)
  [![DOI](https://zenodo.org/badge/7803088.svg)](https://zenodo.org/badge/latestdoi/7803088)

  A Python interface to [Last.fm](https://www.last.fm/) and other API-compatible websites
  such as [Libre.fm](https://libre.fm/).

  Use the pydoc utility for help on usage or see [tests/](tests/) for examples.



  Install via pip:

  ```sh
  python3 -m pip install pylast
  ```

  Install latest development version:

  ```sh
  python3 -m pip install -U git+https://github.com/pylast/pylast
  ```

  Or from requirements.txt:

  ```txt
  -e https://github.com/pylast/pylast.git#egg=pylast
  ```

  Note:

  * pyLast 5.1+ supports Python 3.7-3.11.
  * pyLast 5.0+ supports Python 3.7-3.10.
  * pyLast 4.3+ supports Python 3.6-3.10.
  * pyLast 4.0 - 4.2 supports Python 3.6-3.9.
  * pyLast 3.2 - 3.3 supports Python 3.5-3.8.
  * pyLast 3.0 - 3.1 supports Python 3.5-3.7.
  * pyLast 2.2 - 2.4 supports Python 2.7.10+, 3.4-3.7.
  * pyLast 2.0 - 2.1 supports Python 2.7.10+, 3.4-3.6.
  * pyLast 1.7 - 1.9 supports Python 2.7, 3.3-3.6.
  * pyLast 1.0 - 1.6 supports Python 2.7, 3.3-3.4.
  * pyLast 0.5 supports Python 2, 3.
  * pyLast < 0.5 supports Python 2.



   * Simple public interface.
   * Access to all the data exposed by the Last.fm web services.
   * Scrobbling support.
   * Full object-oriented design.
   * Proxy support.
   * Internal caching support for some web services calls (disabled by default).
   * Support for other API-compatible networks like Libre.fm.




  Here's some simple code example to get you started. In order to create any object from
  pyLast, you need a `Network` object which represents a social music network that is
  Last.fm or any other API-compatible one. You can obtain a pre-configured one for Last.fm
  and use it as follows:

  ```python
  import pylast



  API_KEY = "b25b959554ed76058ac220b7b2e0a026"  # this is a sample key
  API_SECRET = "425b55975eed76058ac220b7b4e8a054"


  username = "your_user_name"
  password_hash = pylast.md5("your_password")

  network = pylast.LastFMNetwork(
      api_key=API_KEY,
      api_secret=API_SECRET,
      username=username,
      password_hash=password_hash,
  )


  track = network.get_track("Iron Maiden", "The Nomad")
  track.love()
  track.add_tags(("awesome", "favorite"))



  ```

  More examples in
  <a href="https://github.com/hugovk/lastfm-tools">hugovk/lastfm-tools</a> and
  [tests/](https://github.com/pylast/pylast/tree/main/tests).



  The [tests/](https://github.com/pylast/pylast/tree/main/tests) directory contains
  integration and unit tests with Last.fm, and plenty of code examples.

  For integration tests you need a test account at Last.fm that will become cluttered with
  test data, and an API key and secret. Either copy
  [example_test_pylast.yaml](example_test_pylast.yaml) to test_pylast.yaml and fill out
  the credentials, or set them as environment variables like:

  ```sh
  export PYLAST_USERNAME=TODO_ENTER_YOURS_HERE
  export PYLAST_PASSWORD_HASH=TODO_ENTER_YOURS_HERE
  export PYLAST_API_KEY=TODO_ENTER_YOURS_HERE
  export PYLAST_API_SECRET=TODO_ENTER_YOURS_HERE
  ```

  To run all unit and integration tests:

  ```sh
  python3 -m pip install -e ".[tests]"
  pytest
  ```

  Or run just one test case:

  ```sh
  pytest -k test_scrobble
  ```

  To run with coverage:

  ```sh
  pytest -v --cov pylast --cov-report term-missing
  coverage report # for command-line report
  coverage html   # for HTML report
  open htmlcov/index.html
  ```



  To enable from your own code:

  ```python
  import logging
  import pylast

  logging.basicConfig(level=logging.INFO)


  network = pylast.LastFMNetwork(...)
  ```

  To enable from pytest:

  ```sh
  pytest --log-cli-level info -k test_album_search_images
  ```

  To also see data returned from the API, use `level=logging.DEBUG` or
  `--log-cli-level debug` instead.


pkgId: fd9f50a6f3d1a781b69e248cb17f03c6266c6861b3138357c824c427e6c3a3cf
name: python-pylev
arch: src
version: 1.4.0
epoch: 0
release: 1
summary: A pure Python Levenshtein implementation that's not freaking GPL'd.
url: http://github.com/toastdriven/pylev
rpm_license: BSD License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-80f20b03-ae93-4464-b4f3-c3d2534d0be1
location_href: 00004721-python-pylev/python-pylev-1.4.0-1.src.rpm
checksum_type: sha256
description:
  A pure Python Levenshtein implementation that's not freaking GPL'd.
  Based off the Wikipedia code samples at
  http://en.wikipedia.org/wiki/Levenshtein_distance.


pkgId: ea8ff611a357e13de1a564916fcc9d4f19ccdcfbab195b9a40d533caa281d47b
name: python-pylibacl
arch: src
version: 0.6.0
epoch: 0
release: 1
summary: POSIX.1e ACLs for python
url: https://pylibacl.k1024.org/
rpm_license: LGPL
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-f19cb1a4-85dc-4b9a-b5c5-f0301d577b70
location_href: 00004722-python-pylibacl/python-pylibacl-0.6.0-1.src.rpm
checksum_type: sha256
description:
  This is a C extension module for Python which
  implements POSIX ACLs manipulation. It is a wrapper on top
  of the systems's acl C library - see acl(5).


pkgId: d66a326ab8739f332345c2912d73482be2d28e9d7f55319e7fd3370805de91d2
name: python-pylibftdi
arch: src
version: 0.20.0
epoch: 0
release: 1
summary: Pythonic interface to FTDI devices using libftdi
url: https://github.com/codedstructure/pylibftdi
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-385d7dca-d7be-4edb-b723-d455608b845b
location_href: 00010719-python-pylibftdi/python-pylibftdi-0.20.0-1.src.rpm
checksum_type: sha256
description:
  pylibftdi is a minimal Pythonic interface to FTDI devices using libftdi_.
   - No dependencies beyond standard library and a `libftdi` install.
   - Supports parallel and serial devices
   - Support for multiple devices
   - File-like interface wherever appropriate
   - Cross-platform
   - The API might change prior to reaching a 1.0 release.


pkgId: c7d1ca93c7461993d93b6d229b7f19357e871a9faab733109e75b6904845be97
name: python-pylibjpeg
arch: src
version: 1.4.0
epoch: 0
release: 1
url: https://github.com/pydicom/pylibjpeg
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-89ed811d-8f87-43d4-b819-7aa90a8f491f
location_href: 00013512-python-pylibjpeg/python-pylibjpeg-1.4.0-1.src.rpm
checksum_type: sha256
summary:
  A Python framework for decoding JPEG and decoding/encoding DICOM RLE data, with a focus on supporting pydicom

description:
  [![codecov](https://codecov.io/gh/pydicom/pylibjpeg/branch/master/graph/badge.svg)](https://codecov.io/gh/pydicom/pylibjpeg)
  [![Build Status](https://github.com/pydicom/pylibjpeg/workflows/build/badge.svg)](https://github.com/pydicom/pylibjpeg/actions?query=workflow%3Abuild)
  [![PyPI version](https://badge.fury.io/py/pylibjpeg.svg)](https://badge.fury.io/py/pylibjpeg)
  [![Python versions](https://img.shields.io/pypi/pyversions/pylibjpeg.svg)](https://img.shields.io/pypi/pyversions/pylibjpeg.svg)



  A Python 3.7+ framework for decoding JPEG images and decoding/encoding RLE datasets, with a focus on providing support for [pydicom](https://github.com/pydicom/pydicom).





  ```
  pip install pylibjpeg
  ```



  The package can be installed with extra requirements to enable support for JPEG (with `libjpeg`), JPEG 2000 (with `openjpeg`) and Run-Length Encoding (RLE) (with `rle`), respectively:

  ```
  pip install pylibjpeg[libjpeg,openjpeg,rle]
  ```

  Or alternatively with just `all`:

  ```
  pip install pylibjpeg[all]
  ```



  Make sure [Git](https://git-scm.com/) is installed, then
  ```bash
  git clone https://github.com/pydicom/pylibjpeg
  python -m pip install pylibjpeg
  ```



  One or more plugins are required before *pylibjpeg* is able to handle JPEG images or RLE datasets. To handle a given format or DICOM Transfer Syntax
  you first have to install the corresponding package:


  |Format                   |Decode?|Encode?|Plugin                 |Based on     |
  |---                      |------ |---    |---                    |---          |
  |JPEG, JPEG-LS and JPEG XT|Yes    |No     |[pylibjpeg-libjpeg][1] |[libjpeg][2] |
  |JPEG 2000                |Yes    |No     |[pylibjpeg-openjpeg][3]|[openjpeg][4]|
  |RLE Lossless (PackBits)  |Yes    |Yes    |[pylibjpeg-rle][5]     |-            |



  |UID                   | Description                                    | Plugin                |
  |---                   |---                                             |----                   |
  |1.2.840.10008.1.2.4.50|JPEG Baseline (Process 1)                       |[pylibjpeg-libjpeg][1] |
  |1.2.840.10008.1.2.4.51|JPEG Extended (Process 2 and 4)                 |[pylibjpeg-libjpeg][1] |
  |1.2.840.10008.1.2.4.57|JPEG Lossless, Non-Hierarchical (Process 14)    |[pylibjpeg-libjpeg][1] |
  |1.2.840.10008.1.2.4.70|JPEG Lossless, Non-Hierarchical, First-Order Prediction</br>(Process 14, Selection Value 1) | [pylibjpeg-libjpeg][1]|
  |1.2.840.10008.1.2.4.80|JPEG-LS Lossless                                |[pylibjpeg-libjpeg][1] |
  |1.2.840.10008.1.2.4.81|JPEG-LS Lossy (Near-Lossless) Image Compression |[pylibjpeg-libjpeg][1] |
  |1.2.840.10008.1.2.4.90|JPEG 2000 Image Compression (Lossless Only)     |[pylibjpeg-openjpeg][4]|
  |1.2.840.10008.1.2.4.91|JPEG 2000 Image Compression                     |[pylibjpeg-openjpeg][4]|
  |1.2.840.10008.1.2.5   |RLE Lossless                                    |[pylibjpeg-rle][5]     |

  If you're not sure what the dataset's *Transfer Syntax UID* is, it can be
  determined with:
  ```python
  >>> from pydicom import dcmread
  >>> ds = dcmread('path/to/dicom_file')
  >>> ds.file_meta.TransferSyntaxUID.name
  ```

  [1]: https://github.com/pydicom/pylibjpeg-libjpeg
  [2]: https://github.com/thorfdbg/libjpeg
  [3]: https://github.com/pydicom/pylibjpeg-openjpeg
  [4]: https://github.com/uclouvain/openjpeg
  [5]: https://github.com/pydicom/pylibjpeg-rle





  Assuming you have *pydicom* v2.1+ and suitable plugins installed:

  ```python
  from pydicom import dcmread
  from pydicom.data import get_testdata_file


  ds = dcmread(get_testdata_file('JPEG-LL.dcm'))
  jpg_arr = ds.pixel_array


  ds = dcmread(get_testdata_file('JPEG2000.dcm'))
  j2k_arr = ds.pixel_array


  ds = dcmread(get_testdata_file('OBXXXX1A_rle.dcm'))


  ds.decompress("pylibjpeg")
  rle_arr = ds.pixel_array
  ```

  For datasets with multiple frames you can reduce your memory usage by
  processing each frame separately using the ``generate_frames()`` generator
  function:
  ```python
  from pydicom import dcmread
  from pydicom.data import get_testdata_file
  from pydicom.pixel_data_handlers.pylibjpeg_handler import generate_frames

  ds = dcmread(get_testdata_file('color3d_jpeg_baseline.dcm'))
  frames = generate_frames(ds)
  arr = next(frames)
  ```


  You can also just use *pylibjpeg* to decode JPEG images to a [numpy ndarray](https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.html), provided you have a suitable plugin installed:
  ```python
  from pylibjpeg import decode


  arr = decode('filename.jpg')


  with open('filename.jpg', 'rb') as f:
      arr = decode(f)


  with open('filename.jpg', 'rb') as f:
      arr  = decode(f.read())
  ```




  Assuming you have *pydicom* v2.2+ and suitable plugins installed:

  ```python
  from pydicom import dcmread
  from pydicom.data import get_testdata_file
  from pydicom.uid import RLELossless

  ds = dcmread(get_testdata_file("CT_small.dcm"))



  ds.compress(uid)


  ds.save_as("CT_small_rle.dcm")
  ```


pkgId: 390c03de4e405690b9cbdfdcaa7878bfe68e2eebd7791dd7ee7bfd6f6251c973
name: python-pylibmc
arch: src
version: 1.6.3
epoch: 0
release: 1
summary: Quick and small memcached client for Python
url: https://sendapatch.se/projects/pylibmc/
rpm_license: 3-clause BSD <https://opensource.org/licenses/bsd-license.php>
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8ed6bb89-9aa5-4be7-9701-435fc9975615
location_href: 00004724-python-pylibmc/python-pylibmc-1.6.3-1.src.rpm
checksum_type: sha256
description:
  Though no major feature overhauls have taken place, this release is partially
  incompatible with 1.5.0. This stems from the fact that python-memcached is now
  using a flag that pylibmc has been using for some years. python-memcached uses
  it for a different purpose, and an incompatible one. We deemed that it would be
  better to support this interoperability. The change also means that Unicode
  strings are now stored as UTF-8 rather than pickled, which may or may not
  result in a slight performance improvement for this type of data.
  We have also introduced a `pickle_protocol` behavior to enable seamless
  interoperability between Python 2.x and 3.x. Also, this release introduces a
  ManyLinux wheel, making installation a breeze on ManyLinux systems (which I
  suppose is many linuxes.)


pkgId: 67fbcf0ee48d7241cb23cdee835ee91e3e463540bf9c00b679ed38a8843565ed
name: python-pylint-celery
arch: src
version: 0.3
epoch: 0
release: 1
description: UNKNOWN
url: https://github.com/landscapeio/pylint-celery
rpm_license: GPLv2
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4deee19e-8a98-4c0a-91f5-d6ea34e9a34a
location_href: 00010616-python-pylint-celery/python-pylint-celery-0.3-1.src.rpm
checksum_type: sha256
summary:
  pylint-celery is a Pylint plugin to aid Pylint in recognising and understandingerrors caused when using the Celery library


pkgId: a9e64c4121fc2cfe1024b4f46e4eb26eb8a8e612006ad2e70e740e5ac13cdb5f
name: python-pylint-flask
arch: src
version: 0.6
epoch: 0
release: 1
url: https://github.com/jschaf/pylint-flask
rpm_license: GPLv2
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-d4958a23-4153-4b5a-8de9-8d82c8913499
location_href: 00010794-python-pylint-flask/python-pylint-flask-0.6-1.src.rpm
checksum_type: sha256
summary:
  pylint-flask is a Pylint plugin to aid Pylint in recognizing and understanding errors caused when using Flask


pkgId: 0823b7a00f1085f97d552d879f25b6992ecdc1408702d028a71ff8c3fcedb1b5
name: python-pylint-protobuf
arch: src
version: 0.20.2
epoch: 0
release: 1
summary: A plugin for making Pylint aware of the fields of protobuf-generated classes
url: https://github.com/nelfin/pylint-protobuf
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8caf77bc-6715-471d-aa3b-4418be42a545
location_href: 00012649-python-pylint-protobuf/python-pylint-protobuf-0.20.2-1.src.rpm
checksum_type: sha256
description:
  `pylint-protobuf` is a Pylint plugin for making Pylint aware of generated
  fields from Protobuf types.

  Install from PyPI via:
      pip install pylint-protobuf
  Add or update `pylintrc` to load `pylint-protobuf`:
      [MASTER]
      load-plugins=pylint_protobuf

      $ cat <<EOF >person.proto
      message Person {
        required string name = 1;
      }
      EOF
      $ protoc person.proto --python_out=.
      $ cat <<EOF >readme.py
      from person_pb2 import Person
      p = Person('all arguments must be kwargs')
      p.invalid_field = 'value'
      p.name = 123
      EOF
      $ pip install pylint-protobuf
      $ pylint --load-plugins=pylint_protobuf readme.py
      ************* Module readme
      readme.py:2:4: E5904: Positional arguments are not allowed in message constructors and will raise TypeError (protobuf-no-posargs)
      readme.py:3:0: E5901: Field 'invalid_field' does not appear in the declared fields of protobuf-generated class 'Person' and will raise AttributeError on access (protobuf-undefined-attribute)
      readme.py:4:0: E5903: Field "Person.name" is of type 'str' and value 123 will raise TypeError at runtime (protobuf-type-error)

  `pylint-protobuf` supports Python 3.5 at a minimum.

  `pylint-protobuf` does not currently support the following concepts:
  * Some features of extensions: non-nested extensions, HasExtension(),
    ClearExtension(), type checking


  A `protoc` compiler plugin for generating `.pyi` stubs from `.proto` files.
  Fully-featured and well supported, a useful extension to a `mypy` workflow.
  May be better suited to your usecase if you control the entire pipeline. May
  _not_ be suited if you are a downstream consumer of generated `_pb2.py` modules
  with no access to the original `.proto` definitions, in which case
  `pylint-protobuf` may be better suited for your use.


pkgId: 1e6910627b6debf44befbfab1a1433c69d1067ee92f28e3aa33e3739d2a6e013
name: python-pylotoncycle
arch: src
version: 0.6.0
epoch: 0
release: 1
summary: Module to access your Peloton workout data
url: https://github.com/justmedude/pylotoncycle
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-cb3274c1-03da-400f-8893-29afa8e26589
location_href: 00004726-python-pylotoncycle/python-pylotoncycle-0.6.0-1.src.rpm
checksum_type: sha256
description:
  Python Library for getting your Peloton workout data.


  * [General info](#general-info)
  * [Example Usage](#example-usage)


  As someone who wants to see my progress over time, I've been wanting a way
  to pull and play with my ride data. However, I'm also cautious about linking
  myself to too many external parties. As I've been playing with other libraries
  out there, I wanted something that was a bit more intuitive and would play
  nicer with the rest of my python code. So, PylotonCycle is born.


  ```
  import pylotoncycle

  username = 'your username or email address'
  password = 'your password'
  conn = pylotoncycle.PylotonCycle(username, password)
  workouts = conn.GetRecentWorkouts(5)
  ```
  `workouts` is a list of workouts.

  An example of a list element

  ```
  {'achievement_templates': [{'description': 'Awarded for working out with a '
                                             'friend.',
                              'id': '<some id hash>',
                              'image_url': 'https://s3.amazonaws.com/peloton-achievement-images-prod/702495cd985d4791bfd3d25f36e0df72',
                              'name': 'Dynamic Duo',
                              'slug': 'two_to_tango'},
                             {'description': 'Awarded for achieving Silver in '
                                             'the May Cycling Challenge.',
                              'id': '<some id hash>',
                              'image_url': 'https://s3.amazonaws.com/challenges-and-tiers-image-prod/6b772477ccd04f189fba16f2f877faad',
                              'name': 'May Cycling Challenge',
                              'slug': 'may_cycling_challenge_silver'}],
   'created': 1589642476,
   'created_at': 1589642476,
   'device_time_created_at': 1589617276,
   'device_type': 'home_bike_v1',
   'device_type_display_name': 'Bike',
   'end_time': 1589644336,
   'fitbit_id': None,
   'fitness_discipline': 'cycling',
   'ftp_info': {'ftp': 111,
                'ftp_source': 'ftp_workout_source',
                'ftp_workout_id': '<some id hash>'},
   'has_leaderboard_metrics': True,
   'has_pedaling_metrics': True,
   'id': '<some id hash>',
   'instructor_name': 'Matt Wilpers',
   'is_total_work_personal_record': False,
   'leaderboard_rank': 5015,
   'metrics_type': 'cycling',
   'name': 'Cycling Workout',
   'overall_summary': {'avg_cadence': 85.48,
                       'avg_heart_rate': 0.0,
                       'avg_power': 179.24,
                       'avg_resistance': 47.61,
                       'avg_speed': 20.39,
                       'cadence': 0.0,
                       'calories': 496.71,
                       'distance': 10.19,
                       'heart_rate': 0.0,
                       'id': '<some id hash>',
                       'instant': 1589644336,
                       'max_cadence': 122.0,
                       'max_heart_rate': 0.0,
                       'max_power': 255.8,
                       'max_resistance': 60.95,
                       'max_speed': 23.48,
                       'power': 0.0,
                       'resistance': 0.0,
                       'seconds_since_pedaling_start': 0,
                       'speed': 0.0,
                       'total_work': 322417.21,
                       'workout_id': '<some id hash>'},
   'peloton_id': '<some id hash>',
   'platform': 'home_bike',
   'ride': {'captions': ['en-US'],
            'class_type_ids': ['<some id hash>'],
            'content_format': 'video',
            'content_provider': 'peloton',
            'description': 'Max out the effectiveness of your training with this '
                           'ride. Instructors will expertly guide you through '
                           'specific output ranges 1 through 7 to help you build '
                           'endurance, strength and speed.',
            'difficulty_estimate': 6.3779,
            'difficulty_level': None,
            'difficulty_rating_avg': 6.3779,
            'difficulty_rating_count': 17157,
            'duration': 1800,
            'equipment_ids': [],
            'equipment_tags': [],
            'excluded_platforms': [],
            'extra_images': [],
            'fitness_discipline': 'cycling',
            'fitness_discipline_display_name': 'Cycling',
            'has_closed_captions': True,
            'has_free_mode': False,
            'has_pedaling_metrics': True,
            'home_peloton_id': '<some id hash>',
            'id': '<some id hash>',
            'image_url': 'https://s3.amazonaws.com/peloton-ride-images/58aa8ebc7d51d09d6513e1a2fab53c4c62c076c6/img_1580922399_a5f1fd0e3a2e48d38ecdd6a3d874820f.png',
            'instructor_id': '<some id hash>',
            'is_archived': True,
            'is_closed_caption_shown': True,
            'is_explicit': False,
            'is_live_in_studio_only': False,
            'language': 'english',
            'length': 1940,
            'live_stream_id': '<some id hash>-live',
            'live_stream_url': None,
            'location': 'nyc',
            'metrics': ['heart_rate', 'cadence', 'calories'],
            'origin_locale': 'en-US',
            'original_air_time': 1580919480,
            'overall_estimate': 0.9956,
            'overall_rating_avg': 0.9956,
            'overall_rating_count': 20737,
            'pedaling_duration': 1800,
            'pedaling_end_offset': 1860,
            'pedaling_start_offset': 60,
            'rating': 0,
            'ride_type_id': '<some id hash>',
            'ride_type_ids': ['<some id hash>'],
            'sample_vod_stream_url': None,
            'scheduled_start_time': 1580920200,
            'series_id': '<some id hash>',
            'sold_out': False,
            'studio_peloton_id': '<some id hash>',
            'title': '30 min Power Zone Endurance Ride',
            'total_in_progress_workouts': 0,
            'total_ratings': 0,
            'total_workouts': 32489,
            'vod_stream_id': '<some id hash>-vod',
            'vod_stream_url': None},
   'start_time': 1589642537,
   'status': 'COMPLETE',
   'strava_id': None,
   'timezone': 'America/Los_Angeles',
   'title': None,
   'total_leaderboard_users': 31240,
   'total_work': 322417.21,
   'user_id': '<some id hash>',
   'workout_type': 'class'}
  ```

  An example of how you may fetch performance data for a ride
  ```
  import pprint

  conn = pylotoncycle.PylotonCycle(username, password)
  workouts = conn.GetRecentWorkouts(5)
  for w in workouts:
      workout_id = w['id']
      resp = conn.GetWorkoutMetricsById(workout_id)
      pprint.pprint(resp)

  ```


  This package is available via pip install.
  ```
  pip install pylotoncycle
  ```


  * Lots more to cover. I want to find the right format for pulling in the
  ride performance data.
  * Pull in GPS data for outdoor runs


  I'm very happy to take pull requests and fix bugs that come up. But, this is definitely a side project for me.


pkgId: 7fa9428be5ab58b980d045897542e167f336c0e3fb70d1f515bc26755105c855
name: python-pyls-black
arch: src
version: 0.4.7
epoch: 0
release: 1
summary: Black plugin for the Python Language Server
url: https://github.com/rupert/pyls-black
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-70ca5fe8-7d0f-4dea-ad40-3d3d21f359f7
location_href: 00004728-python-pyls_black/python-pyls-black-0.4.7-1.src.rpm
checksum_type: sha256
description:
  [![PyPI](https://img.shields.io/pypi/v/pyls-black.svg)](https://pypi.org/project/pyls-black/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)

  > [Black](https://github.com/ambv/black) plugin for the [Python Language Server](https://github.com/palantir/python-language-server).

  In the same `virtualenv` as `python-language-server`:

  ```shell
  pip3 install pyls-black
  ```

  To avoid unexpected results you should make sure `yapf` and `autopep8` are not installed.

  * `pyls-black` can either format an entire file or just the selected text.
  * The code will only be formatted if it is syntactically valid Python.
  * Text selections are treated as if they were a separate Python file.
    Unfortunately this means you can't format an indented block of code.
  * `pyls-black` will use your project's [pyproject.toml](https://github.com/ambv/black#pyprojecttoml) if it has one.

  See the [wiki](https://github.com/rupert/pyls-black/wiki) for instructions on how to use `pyls-black` with popular text editors.


pkgId: 61274145f4859f598ed687dd64011adffefe9991f19c3d8ab62afb27a622015a
name: python-pyls-spyder
arch: src
version: 0.4.0
epoch: 0
release: 1
summary: Spyder extensions for the python-lsp-server
url: https://github.com/spyder-ide/pyls-spyder
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c8fa4f46-6372-4abe-b59b-eea3d3c9edbe
location_href: 00004727-python-pyls-spyder/python-pyls-spyder-0.4.0-1.src.rpm
checksum_type: sha256
description:
  [![Project License - MIT](https://img.shields.io/pypi/l/pyls-spyder.svg)](https://raw.githubusercontent.com/spyder-ide/pyls-spyder/master/LICENSE)
  [![pypi version](https://img.shields.io/pypi/v/pyls-spyder.svg)](https://pypi.org/project/pyls-spyder/)
  [![conda version](https://img.shields.io/conda/vn/conda-forge/pyls-spyder.svg)](https://www.anaconda.com/download/)
  [![download count](https://img.shields.io/conda/dn/conda-forge/pyls-spyder.svg)](https://www.anaconda.com/download/)
  [![Downloads](https://pepy.tech/badge/pyls-spyder)](https://pepy.tech/project/pyls-spyder)
  [![PyPI status](https://img.shields.io/pypi/status/pyls-spyder.svg)](https://github.com/spyder-ide/pyls-spyder)
  ![PyLS-Spyder tests](https://github.com/spyder-ide/pyls-spyder/workflows/PyLS-Spyder%20tests/badge.svg)

  *Copyright © 2020– Spyder Project Contributors*



  Spyder extensions for the [python-lsp-server](https://github.com/python-lsp/python-lsp-server) (pylsp). This package provides Spyder-specific extras for the [Language Server Protocol](https://microsoft.github.io/language-server-protocol/specifications/specification-current/) (LSP) on Python, such as document symbol searching and others.



  To install pyls-spyder, you can use both conda or pip package managers:

  ```bash

  conda install pyls-spyder -c spyder-ide


  pip install pyls-spyder
  ```


  This package depends on the [python-lsp-server](https://github.com/python-lsp/python-lsp-server) to integrate the Spyder-specific extensions.



  To install and develop spyder-pyls locally, you will need to install the python-lsp-server:

  ```bash

  conda install python-lsp-server


  pip install python-lsp-server
  ```

  Then, you can install the package locally using pip:

  ```bash
  pip install -U -e .
  ```


  We use pytest to run tests as it follows:

  ```bash
  pytest -x -v pyls_spyder/tests
  ```



  |          LSP method           |              Spyder extensions                   |
  |:-----------------------------:|:------------------------------------------------:|
  | `textDocument/documentSymbol` | Find code cells `# %` and block comments `# --` |
  | `textDocument/foldingRange`   | Return code cells `# %` as code folding regions |


  This plugin can be configured by using the key `pyls_spyder` when calling `workspace/didChangeConfiguration` on the pyls. Each configuration option is described below:

  <table>
      <thead>
          <tr>
              <th>LSP method</th>
              <th>Configuration Key</th>
              <th>Type</th>
              <th>Description</th>
          </tr>
      </thead>
      <tbody>
          <tr>
              <td rowspan=2><code>textDocument/documentSymbol</code></td>
              <td><code>group_cells</code></td>
              <td><code>bool</code></td>
              <td>Enable/Disable code cell grouping according to the total number of leading percentages</td>
          </tr>
          <tr>
              <td><code>enable_block_comments</code></td>
              <td><code>bool</code></td>
              <td>Enable/disable block comment detection</td>
          </tr>
      </tbody>
  </table>


  Please see our [CHANGELOG](https://github.com/spyder-ide/pyls-spyder/blob/master/CHANGELOG.md) file to learn more about our new features and improvements.



  We follow PEP8 and PEP257 for all Python modules. We use MyPy type annotations for all functions and classes declared on this package. Feel free to send a PR or create an issue if you have any problem/question.


pkgId: f5a2dd18b33739e2d1ab5a3ea7f26974070710c7a401991c78b0912af7f49bca
name: python-pylsqpack
arch: src
version: 0.3.17
epoch: 0
release: 1
summary: Python wrapper for the ls-qpack QPACK library
url: https://pypi.org/project/pylsqpack/
rpm_license: BSD-3-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-94649b9a-2de1-405c-9a71-45901a067bb6
location_href: 00013050-python-pylsqpack/python-pylsqpack-0.3.17-1.src.rpm
checksum_type: sha256
description:
  |rtd| |pypi-v| |pypi-pyversions| |pypi-l| |tests|
  ``pylsqpack`` is a wrapper around the `ls-qpack`_ library. It provides Python
  `Decoder` and `Encoder` objects to read or write HTTP/3 headers compressed
  with QPACK.
  To learn more about ``pylsqpack`` please `read the documentation`_.


pkgId: b7724ad0d67459bd66e89cebbd3f113f6cb08d952a42d2146d9df9e94d812c9e
name: python-pylsqpack-debuginfo
arch: aarch64
version: 0.3.17
epoch: 0
release: 1
summary: Debug information for package python-pylsqpack
url: https://pypi.org/project/pylsqpack/
rpm_license: BSD-3-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-94649b9a-2de1-405c-9a71-45901a067bb6
rpm_sourcerpm: python-pylsqpack-0.3.17-1.src.rpm
location_href: 00013050-python-pylsqpack/python-pylsqpack-debuginfo-0.3.17-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-pylsqpack.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: d1299e04fdc94a93fa274984def2bdf7d76e11352a1e8aad72eff99d4e4ac3a0
name: python-pylsqpack-debugsource
arch: aarch64
version: 0.3.17
epoch: 0
release: 1
summary: Debug sources for package python-pylsqpack
url: https://pypi.org/project/pylsqpack/
rpm_license: BSD-3-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-94649b9a-2de1-405c-9a71-45901a067bb6
rpm_sourcerpm: python-pylsqpack-0.3.17-1.src.rpm
location_href: 00013050-python-pylsqpack/python-pylsqpack-debugsource-0.3.17-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-pylsqpack.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: 733a8201dccc2c49722c3dddebcc62196f2cf1ac4a3a01edadb765c31f5a95b4
name: python-pymannkendall
arch: src
version: 1.4.3
epoch: 0
release: 1
summary: A python package for non-parametric Mann-Kendall family of trend tests.
url: https://github.com/mmhs013/pymannkendall
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-304e41a6-e765-4322-a4b8-92b04f6b0337
location_href: 00010083-python-pymannkendall/python-pymannkendall-1.4.3-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://travis-ci.com/mmhs013/pyMannKendall.svg?branch=master)](https://travis-ci.com/mmhs013/pyMannKendall)
  [![PyPI](https://img.shields.io/pypi/v/pymannkendall.svg)](https://pypi.org/project/pymannkendall/)
  [![PyPI - License](https://img.shields.io/pypi/l/pymannkendall.svg)](https://pypi.org/project/pymannkendall/)
  [![PyPI - Status](https://img.shields.io/pypi/status/pymannkendall.svg)](https://pypi.org/project/pymannkendall/)
  [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pymannkendall.svg)](https://pypi.org/project/pymannkendall/)

  [![Downloads](https://pepy.tech/badge/pymannkendall)](https://pepy.tech/project/pymannkendall)
  [![Conda](https://img.shields.io/conda/dn/conda-forge/pymannkendall?label=conda-downloads)](https://anaconda.org/conda-forge/pymannkendall)

  [![Google Scholar](https://github.com/mmhs013/Citation_Parser/blob/main/images/gs_pymk_cite.svg?raw=true)](https://scholar.google.com/scholar?q=pyMannKendall%3A+a+python+package+for+non+parametric+Mann+Kendall+family+of+trend+tests.)
  [![Researchgate](https://github.com/mmhs013/Citation_Parser/blob/main/images/rg_pymk_cite.svg?raw=true)](https://www.researchgate.net/publication/334688255_pyMannKendall_a_python_package_for_non_parametric_Mann_Kendall_family_of_trend_tests)

  [![status](http://joss.theoj.org/papers/14903dbd55343be89105112e585d262a/status.svg)](http://joss.theoj.org/papers/14903dbd55343be89105112e585d262a)
  [![DOI](https://zenodo.org/badge/174495388.svg)](https://zenodo.org/badge/latestdoi/174495388)


  The Mann-Kendall Trend Test (sometimes called the MK test) is used to analyze time series data for consistently increasing or decreasing trends (monotonic trends). It is a non-parametric test, which means it works for all distributions (i.e. data doesn't have to meet the assumption of normality), but data should have no serial correlation. If the data has a serial correlation, it could affect in significant level (p-value). It could lead to misinterpretation. To overcome this problem, researchers proposed several modified Mann-Kendall tests (Hamed and Rao Modified MK Test, Yue and Wang Modified MK Test, Modified MK test using Pre-Whitening method, etc.). Seasonal Mann-Kendall test also developed to remove the effect of seasonality.

  Mann-Kendall Test is a powerful trend test, so several others modified Mann-Kendall tests like Multivariate MK Test, Regional MK Test, Correlated MK test, Partial MK Test, etc. were developed for the spacial condition. `pyMannkendal` is a pure Python implementation of non-parametric Mann-Kendall trend analysis, which bring together almost all types of Mann-Kendall Test. Currently, this package has 11 Mann-Kendall Tests and 2 sen's slope estimator function. Brief description of functions are below:

  1.	**Original Mann-Kendall test (*original_test*):** Original Mann-Kendall test is a nonparametric test, which does not consider serial correlation or seasonal effects.

  2.	**Hamed and Rao Modified MK Test (*hamed_rao_modification_test*):** This modified MK test proposed by *Hamed and Rao (1998)* to address serial autocorrelation issues. They suggested a variance correction approach to improve trend analysis. User can consider first n significant lag by insert lag number in this function. By default, it considered all significant lags.

  3.	**Yue and Wang Modified MK Test (*yue_wang_modification_test*):** This is also a variance correction method for considered serial autocorrelation proposed by *Yue, S., & Wang, C. Y. (2004)*. User can also set their desired significant n lags for the calculation.

  4.	**Modified MK test using Pre-Whitening method (*pre_whitening_modification_test*):** This test suggested by *Yue and Wang (2002)* to using Pre-Whitening the time series before the application of trend test.

  5.	**Modified MK test using Trend free Pre-Whitening method (*trend_free_pre_whitening_modification_test*):** This test also proposed by *Yue and Wang (2002)* to remove trend component and then Pre-Whitening the time series before application of trend test.

  6.	**Multivariate MK Test (*multivariate_test*):** This is an MK test for multiple parameters proposed by *Hirsch (1982)*. He used this method for seasonal mk test, where he considered every month as a parameter.

  7.	**Seasonal MK Test (*seasonal_test*):** For seasonal time series data, *Hirsch, R.M., Slack, J.R. and Smith, R.A. (1982)* proposed this test to calculate the seasonal trend.

  8.	**Regional MK Test (*regional_test*):** Based on*Hirsch (1982)* proposed seasonal mk test, *Helsel, D.R. and Frans, L.M., (2006)* suggest regional mk test to calculate the overall trend in a regional scale.

  9.	**Correlated Multivariate MK Test (*correlated_multivariate_test*):** This multivariate mk test proposed by *Hipel (1994)* where the parameters are correlated.

  10.	**Correlated Seasonal MK Test (*correlated_seasonal_test*):** This method proposed by *Hipel (1994)* used, when time series significantly correlated with the preceding one or more months/seasons.

  11.	**Partial MK Test (*partial_test*):** In a real event, many factors are affecting the main studied response parameter, which can bias the trend results. To overcome this problem, *Libiseller (2002)* proposed this partial mk test. It required two parameters as input, where, one is response parameter and other is an independent parameter.

  12.	**Theil-Sen's Slope Estimator (*sens_slope*):** This method proposed by *Theil (1950)* and *Sen (1968)* to estimate the magnitude of the monotonic trend. Intercept is calculate using *Conover, W.J. (1980)* method.

  13.	**Seasonal Theil-Sen's Slope Estimator (*seasonal_sens_slope*):** This method proposed by *Hipel (1994)* to estimate the magnitude of the monotonic trend, when data has seasonal effects. Intercept is calculate using *Conover, W.J. (1980)* method.



  All Mann-Kendall test functions have almost similar input parameters. Those are:

  - **x**:   a vector (list, numpy array or pandas series) data
  - **alpha**: significance level (0.05 is the default)
  - **lag**: No. of First Significant Lags (Only available in hamed_rao_modification_test and yue_wang_modification_test)
  - **period**: seasonal cycle. For monthly data it is 12, weekly data it is 52 (Only available in seasonal tests)

  And all Mann-Kendall tests return a named tuple which contained:

  - **trend**: tells the trend (increasing, decreasing or no trend)
  - **h**: True (if trend is present) or False (if the trend is absence)
  - **p**: p-value of the significance test
  - **z**: normalized test statistics
  - **Tau**: Kendall Tau
  - **s**: Mann-Kendal's score
  - **var_s**: Variance S
  - **slope**: Theil-Sen estimator/slope
  - **intercept**: intercept of Kendall-Theil Robust Line, for seasonal test, full period cycle consider as unit time step

  sen's slope function required data vector. seasonal sen's slope also has optional input period, which by the default value is 12. Both sen's slope function return only slope value.



  For the installation of `pyMannKendall`, the following packages are required:
  - [numpy](https://www.numpy.org/)
  - [scipy](https://www.scipy.org/)



  You can install `pyMannKendall` using pip. For Linux users

  ```python
  sudo pip install pymannkendall
  ```

  or, for Windows user

  ```python
  pip install pymannkendall
  ```

  or, you can use conda
  ```python
  conda install -c conda-forge pymannkendall
  ```

  or you can clone the repo and install it:

  ```bash
  git clone https://github.com/mmhs013/pymannkendall
  cd pymannkendall
  python setup.py install
  ```



  `pyMannKendall` is automatically tested using `pytest` package on each commit [here](https://travis-ci.org/mmhs013/pyMannKendall/), but the tests can be manually run:

  ```
  pytest -v
  ```



  A quick example of `pyMannKendall` usage is given below. Several more examples are provided [here](https://github.com/mmhs013/pyMannKendall/blob/master/Examples/Example_pyMannKendall.ipynb).

  ```python
  import numpy as np
  import pymannkendall as mk


  data = np.random.rand(360,1)

  result = mk.original_test(data)
  print(result)
  ```
  Output are like this:
  ```python
  Mann_Kendall_Test(trend='no trend', h=False, p=0.9507221701045581, z=0.06179991635055463, Tau=0.0021974620860414733, s=142.0, var_s=5205500.0, slope=1.0353584906597959e-05, intercept=0.5232692553379981)
  ```
  Whereas, the output is a named tuple, so you can call by name for specific result:
  ```python
  print(result.slope)
  ```
  or, you can directly unpack your results like this:
  ```python
  trend, h, p, z, Tau, s, var_s, slope, intercept = mk.original_test(data)
  ```



  [![Google Scholar](https://github.com/mmhs013/Citation_Parser/blob/main/images/gs_pymk_cite.svg?raw=true)](https://scholar.google.com/scholar?q=pyMannKendall%3A+a+python+package+for+non+parametric+Mann+Kendall+family+of+trend+tests.)
  [![Researchgate](https://github.com/mmhs013/Citation_Parser/blob/main/images/rg_pymk_cite.svg?raw=true)](https://www.researchgate.net/publication/334688255_pyMannKendall_a_python_package_for_non_parametric_Mann_Kendall_family_of_trend_tests)

  If you publish results for which you used `pyMannKendall`, please give credit by citing [Hussain et al., (2019)](https://doi.org/10.21105/joss.01556):

  > Hussain et al., (2019). pyMannKendall: a python package for non parametric Mann Kendall family of trend tests.. Journal of Open Source Software, 4(39), 1556, https://doi.org/10.21105/joss.01556


  ```
  @article{Hussain2019pyMannKendall,
  	journal = {Journal of Open Source Software},
  	doi = {10.21105/joss.01556},
  	issn = {2475-9066},
  	number = {39},
  	publisher = {The Open Journal},
  	title = {pyMannKendall: a python package for non parametric Mann Kendall family of trend tests.},
  	url = {http://dx.doi.org/10.21105/joss.01556},
  	volume = {4},
  	author = {Hussain, Md. and Mahmud, Ishtiak},
  	pages = {1556},
  	date = {2019-07-25},
  	year = {2019},
  	month = {7},
  	day = {25},
  }
  ```



  `pyMannKendall` is a community project and welcomes contributions. Additional information can be found in the [contribution guidelines](https://github.com/mmhs013/pyMannKendall/blob/master/CONTRIBUTING.md).




  `pyMannKendall` wishes to maintain a positive community. Additional details can be found in the [Code of Conduct](https://github.com/mmhs013/pyMannKendall/blob/master/CODE_OF_CONDUCT.md).




  1. Bari, S. H., Rahman, M. T. U., Hoque, M. A., & Hussain, M. M. (2016). Analysis of seasonal and annual rainfall trends in the northern region of Bangladesh. *Atmospheric Research*, 176, 148-158. doi:[10.1016/j.atmosres.2016.02.008](https://doi.org/10.1016/j.atmosres.2016.02.008)

  2. Conover, W.J., (1980). Some methods based on ranks (Chapter 5), [Practical nonparametric statistics (2nd Ed.)](https://www.wiley.com/en-us/Practical+Nonparametric+Statistics%2C+3rd+Edition-p-9780471160687), *John Wiley and Sons*.

  3. Cox, D. R., & Stuart, A. (1955). Some quick sign tests for trend in location and dispersion. *Biometrika*, 42(1/2), 80-95. doi:[10.2307/2333424](https://doi.org/10.2307/2333424)

  4. Hamed, K. H., & Rao, A. R. (1998). A modified Mann-Kendall trend test for autocorrelated data. *Journal of hydrology*, 204(1-4), 182-196. doi:[10.1016/S0022-1694(97)00125-X](https://doi.org/10.1016/S0022-1694(97)00125-X)

  5. Helsel, D. R., & Frans, L. M. (2006). Regional Kendall test for trend. *Environmental science & technology*, 40(13), 4066-4073. doi:[10.1021/es051650b](https://doi.org/10.1021/es051650b)

  6. Hipel, K. W., & McLeod, A. I. (1994). Time series modelling of water resources and environmental systems (Vol. 45). Elsevier.

  7. Hirsch, R. M., Slack, J. R., & Smith, R. A. (1982). Techniques of trend analysis for monthly water quality data. *Water resources research*, 18(1), 107-121. doi:[10.1029/WR018i001p00107](https://doi.org/10.1029/WR018i001p00107)

  8. Jacquelin Dietz, E., (1987). A comparison of robust estimators in simple linear regression: A comparison of robust estimators. Communications in Statistics-Simulation and Computation, 16(4), pp.1209-1227. doi: [10.1080/03610918708812645](https://doi.org/10.1080/03610918708812645)

  9. Kendall, M. (1975). Rank correlation measures. *Charles Griffin*, London, 202, 15.

  10. Libiseller, C., & Grimvall, A. (2002). Performance of partial Mann-Kendall tests for trend detection in the presence of covariates. *Environmetrics: The official journal of the International Environmetrics Society*, 13(1), 71-84. doi:[10.1002/env.507](https://doi.org/1010.1002/env.507)

  11. Mann, H. B. (1945). Nonparametric tests against trend. *Econometrica: Journal of the Econometric Society*, 245-259. doi:[10.2307/1907187](https://doi.org/10.2307/1907187)

  12. Sen, P. K. (1968). Estimates of the regression coefficient based on Kendall's tau. *Journal of the American statistical association*, 63(324), 1379-1389. doi:[10.1080/01621459.1968.10480934](https://doi.org/10.1080/01621459.1968.10480934)

  13. Theil, H. (1950). A rank-invariant method of linear and polynominal regression analysis (parts 1-3). In *Ned. Akad. Wetensch. Proc. Ser. A* (Vol. 53, pp. 1397-1412).

  14. Yue, S., & Wang, C. (2004). The Mann-Kendall test modified by effective sample size to detect trend in serially correlated hydrological series. *Water resources management*, 18(3), 201-218. doi:[10.1023/B:WARM.0000043140.61082.60](https://doi.org/10.1023/B:WARM.0000043140.61082.60)

  15. Yue, S., & Wang, C. Y. (2002). Applicability of prewhitening to eliminate the influence of serial correlation on the Mann-Kendall test. *Water resources research*, 38(6), 4-1. doi:[10.1029/2001WR000861](https://doi.org/10.1029/2001WR000861)

  16. Yue, S., Pilon, P., Phinney, B., & Cavadias, G. (2002). The influence of autocorrelation on the ability to detect trend in hydrological series. *Hydrological processes*, 16(9), 1807-1829. doi:[10.1002/hyp.1095](https://doi.org/10.1002/hyp.1095)


pkgId: d89b0c4101a7ad89593f0d9ecf66590d0694a2e0180461b4131b8357f56397a3
name: python-pymatreader
arch: src
version: 0.0.30
epoch: 0
release: 1
summary: Convenient reader for Matlab mat files
url: https://gitlab.com/obob/pymatreader
rpm_license: BSD (2 clause)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-74e39c00-7454-402a-bdc6-aac238684383
location_href: 00004731-python-pymatreader/python-pymatreader-0.0.30-1.src.rpm
checksum_type: sha256
description:
  A Python module to read Matlab files. This module works with both the old (< 7.3) and the new (>= 7.3) HDF5 based format. The output should be the same for both kinds of files.


  ```python
  from pymatreader import read_mat

  data = read_mat(filename)
  ```

  `data` is a python `dict` containing all variables of the mat file.


  Documentation can be found here: <http://pymatreader.readthedocs.io/en/latest/>


  The source code can be found here: <https://gitlab.com/obob/pymatreader>


  This module is developed by Dirk Gütlin & Thomas Hartmann at the Universität Salzburg. You are free to use, copy, modify, distribute it under the terms of the BSD 2 clause license.


pkgId: be624111399410978d5d8a083a5b979267111e02424cecdc350876da27e457d1
name: python-pymc3
arch: src
version: 3.11.5
epoch: 0
release: 1
url: http://github.com/pymc-devs/pymc3
rpm_license: Apache License, Version 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-5e13563c-f5cd-4ae7-82a4-e4438285a61f
location_href: 00004732-python-pymc3/python-pymc3-3.11.5-1.src.rpm
checksum_type: sha256
summary:
  Probabilistic Programming in Python: Bayesian Modeling and Probabilistic Machine Learning with Theano

description:
  There have been many questions and uncertainty around the future of PyMC3 since Theano
  stopped getting developed by the original authors, and we started experiments with a PyMC version based on tensorflow probability.
  Since then many things changed and we are happy to announce that PyMC3 will continue to rely on Theano,
  or rather its successors Theano-PyMC (`pymc3 <4)` and Aesara (`pymc3 >=4`).
  Check out <https://github.com/aesara-devs/aesara>`__) and specifically the latest developments on the `PyMC3 `main` branch <https://github.com/pymc-devs/pymc3/>`.


pkgId: 446373181a6da156253977c83615e30da21c3715e3c3697e5db88b2640bc079c
name: python-pymediainfo
arch: src
version: 6.0.1
epoch: 0
release: 1
summary: A Python wrapper for the mediainfo library.
url: https://github.com/sbraz/pymediainfo
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-cd304f6f-fbbf-47b3-a4d0-9be41ead8384
location_href: 00004734-python-pymediainfo/python-pymediainfo-6.0.1-1.src.rpm
checksum_type: sha256
description:
  This small package is a wrapper around the MediaInfo library.
  It works on Linux, Mac OS X and Windows and is tested with Python 3.7 to 3.11 and PyPy3.
  See https://pymediainfo.readthedocs.io/ for more information.


pkgId: 0a53c3d6b997698dfcd92aa970df00528e9d7e8dff75b80f4d52e42730252569
name: python-pymemcache
arch: src
version: 4.0.0
epoch: 0
release: 1
summary: A comprehensive, fast, pure Python memcached client
url: https://github.com/pinterest/pymemcache
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8ed720a4-8651-4391-9881-bc4231836dc3
location_href: 00004736-python-pymemcache/python-pymemcache-4.0.0-1.src.rpm
checksum_type: sha256
description:
  A comprehensive, fast, pure-Python memcached client.
  pymemcache supports the following features:
  * Complete implementation of the memcached text protocol.
  * Connections using UNIX sockets, or TCP over IPv4 or IPv6.
  * Configurable timeouts for socket connect and send/recv calls.
  * Access to the "noreply" flag, which can significantly increase the speed of writes.
  * Flexible, modular and simple approach to serialization and deserialization.
  * The (optional) ability to treat network and memcached errors as cache misses.


pkgId: 154fdc25c222d338b0ab3dbc65464c544ef00481e4b7c003215fc4a50d53b1ec
name: python-pymilter
arch: src
version: 1.0.5
epoch: 0
release: 1
summary: Python interface to sendmail milter API
url: https://www.pymilter.org/
rpm_license: GPL
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-b57d04f3-ff61-488d-b233-4ab5d2f5e3b4
location_href: 00004738-python-pymilter/python-pymilter-1.0.5-1.src.rpm
checksum_type: sha256
description:
  This is a python extension module to enable python scripts to attach to
  Sendmail's libmilter API, enabling filtering of messages as they arrive.
  Since it's a script, you can do anything you want to the message - screen
  out viruses, collect statistics, add or modify headers, etc.  You can, at
  any point, tell Sendmail to reject, discard, or accept the message.

  Additional python modules provide for navigating and modifying MIME parts, and
  sending DSNs or doing CBVs.



  Python milter extension: https://pypi.python.org/pypi/pymilter/
  Python: http://www.python.org
  Sendmail: http://www.sendmail.org



   1. Build and install Sendmail, enabling libmilter (see libmilter/README).
   2. Build and install Python, enabling threading.
   3. Install this module: python setup.py --help
   4. Add these two lines to sendmail.cf[a]:

   O InputMailFilters=pythonfilter
   Xpythonfilter,        S=local:/home/username/pythonsock

   5. Run the sample.py example milter with: python sample.py
   Note that milters should almost certainly not run as root.

  That's it.  Incoming mail will cause the milter to print some things, and
  some email will be rejected (see the "header" method).  Edit and play.
  See spfmilter.py for a functional SPF milter, or see bms.py for an complex
  milter used in production.

  [a] This is for a quick test.  Your sendmail.cf in most distros will get
  overwritten whenever sendmail.mc is updated.  To make a milter permanent,
  add something like:
  ```
  INPUT_MAIL_FILTER(`pythonfilter', `S=local:/home/username/pythonsock, F=T, T=C:5m;S:20s;R:5m;E:5m')
  ```
  to sendmail.mc instead.



  First install Sendmail.  Make sure you read libmilter/README in the Sendmail
  source directory, and make sure you enable libmilter before you build.  The
  8.11 series had libmilter marked as FFR (For Future Release); 8.12
  officially supports libmilter, but it's still not built by default.

  Install Python, and enable threading in Modules/Setup.

  Install this miltermodule package; DistUtils Automatic Installation:

  $ python setup.py --help

  For versions of python prior to 2.0, you will need to download distutils
  separately or build manually.  You will need to download unittest
  separately to run the test programs.  The bdist_rpm distutils option seems
  not to work for python 2.0; upgrade to at least 2.1.1.

  Now that everything is installed, we need to tell sendmail that we're going
  to filter incoming email.  Add lines similar to the following to
  sendmail.cf:

  O InputMailFilters=pythonfilter
  Xpythonfilter,        S=local:/home/username/pythonsock

  The "O" line tells sendmail which filters to use in what order; here we're
  telling sendmail to use the filter named "pythonfilter".

  The next line, the "X" line (for "eXternal"), lists that filter along with
  some options associated with it.  In this case, we have the "S" option, which
  names the socket that sendmail will use to communicate with this particular
  milter.  This milter's socket is a unix-domain socket in the filesystem.
  See libmilter/README for the definitive list of options.

  NB: The name is specified in two places: here, in sendmail's cf file, and
  in the milter itself.  Make sure the two match.

  NB: The above lines can be added in your .mc file with this line:
  ```
  INPUT_MAIL_FILTER(`pythonfilter', `S=local:/home/username/pythonsock')
  ```
  For versions of sendmail prior to 8.12, you will need to enable
  `_FFR_MILTER` for the cf macros.  For example,

  m4 -D_FFR_MILTER ../m4/cf.m4 myconfig.mc > myconfig.cf



  The IPv6 protocol is supported if your operation system supports it
  and if sendmail was compiled with IPv6 support.  To determine if your
  sendmail supports IPv6, run "sendmail -d0" and check for the NETINET6
  compilation option.  To compile sendmail with IPv6 support, add this
  declaration to your site.config.m4 before building it:
  ```
  APPENDDEF(`confENVDEF', `-DNETINET6=1')
  ```
  IPv6 support can show up in two places; the communications socket
  between the milter and sendmail processes and in the host address
  argument to the connect() callback method.

  For sendmail to be able to accept IPv6 SMTP sessions, you must
  configure the daemon to listen on an IPv6 port.  Furthermore if you
  want to allow both IPv4 and IPv6 connections, some operating systems
  will require that each listens to different port numbers.  For an
  IPv6-only setup, your sendmail configuration should contain a line
  similar to (first line is for sendmail.mc, second is sendmail.cf):
  ```
  DAEMON_OPTIONS(`Name=MTA-v6, Family=inet6, Modify=C, Port=25')
  O DaemonPortOptions=Name=MTA-v6, Family=inet6, Modify=C, Port=25
  ```
  To allow sendmail and the milter process to communicate with each
  other over IPv6, you may use the "inet6" socket name prefix, as in:

  Xpythonfilter,        S=inet6:1234@fec0:0:0:7::5c

  The connect() callback method in the milter class will pass the
  IPv6-specific information in the 'hostaddr' argument as a tuple.  Note
  that the type of this value is dependent upon the protocol family, and
  is not compatible with IPv4 connections.  Therefore you should always
  check the family argument before attempting to use the hostaddr
  argument.  A quick example showing this follows:

    import socket

    class ipv6awareMilter(Milter.Milter):

       def connect(self,hostname,family,hostaddr):
  	if family==socket.AF_INET:
  	   ipaddress, port = hostaddr
  	elif family==socket.AF_INET6:
  	   ip6address, port, flowinfo, scopeid = hostaddr
  	elif family==socket.AF_UNIX:
  	   socketpath = hostaddr

  The hostname argument is always safe to use without interpreting the
  protocol family.  For IPv6 connections for which the hostname can not
  be determined the hostname will appear similar to the string
  "[IPv6:::1]" with the corresponding hostaddr[0] being "::1".  Refer to
  RFC 2553 for information on interpreting and using the flowinfo and
  scopeid socket attributes, both of which are integers.



  Jim Niemira (urmane@urmane.org) wrote the original C module and some quick
  and dirty python to use it.  Stuart D. Gathman (stuart@gathman.org) took that
  kludge and added threading and context objects to it, wrote a proper OO
  wrapper (Milter.py) that handles attachments, did lots of testing, packaged
  it with distutils, and generally transformed it from a quick hack to a
  real, usable Python extension.


pkgId: 6b67dde941d3e19cdcf999919ca90f71e1b8eb79cb6259996a4841f6da7f531e
name: python-pymitter
arch: src
version: 0.4.0
epoch: 0
release: 1
url: https://github.com/riga/pymitter
rpm_license: BSD-3-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c93d0ea6-52e6-4c2b-910f-1c19117b0e78
location_href: 00013346-python-pymitter/python-pymitter-0.4.0-1.src.rpm
checksum_type: sha256
summary:
  Python port of the extended Node.js EventEmitter 2 approach providing namespaces, wildcards and TTL.

description:
  [![Package Status](https://img.shields.io/pypi/v/pymitter.svg?style=flat)](https://pypi.python.org/pypi/pymitter) [![License](https://img.shields.io/github/license/riga/pymitter.svg)](https://github.com/riga/pymitter/blob/master/LICENSE)
  [![Lint and test](https://github.com/riga/pymitter/actions/workflows/lint_and_test.yml/badge.svg)](https://github.com/riga/pymitter/actions/workflows/lint_and_test.yml)

  Python port of the extended Node.js EventEmitter 2 approach of https://github.com/asyncly/EventEmitter2 providing namespaces, wildcards and TTL.




  - Namespaces with wildcards
  - Times to listen (TTL)
  - Usage via decorators or callbacks
  - Coroutine support
  - Lightweight implementation, good performance




  *pymitter* is a registered [PyPI module](https://pypi.python.org/pypi/pymitter), so the installation with *pip* is quite easy:

  ```shell
  pip install pymitter
  ```

  The last version with Python 2 support was v0.3.2 ([tag](https://github.com/riga/pymitter/tree/v0.3.2), [PypI](https://pypi.org/project/pymitter/0.3.2)).






  ```python
  from pymitter import EventEmitter


  ee = EventEmitter()



  @ee.on("my_event")
  def handler1(arg):
      print("handler1 called with", arg)



  def handler2(arg):
      print("handler2 called with", arg)


  ee.on("my_other_event", handler2)



  @ee.on("my_third_event")
  async def handler3(arg):
      print("handler3 called with", arg)



  ee.emit("my_event", "foo")


  ee.emit("my_other_event", "bar")


  ee.emit("my_third_event", "baz")

  ```




  Wrapping `async` functions outside an event loop will start an internal event loop and calls to `emit` return synchronously.

  ```python
  from pymitter import EventEmitter


  ee = EventEmitter()



  @ee.on("my_event")
  async def handler1(arg):
      print("handler1 called with", arg)



  ee.emit("my_event", "foo")

  ```

  Wrapping `async` functions inside an event loop a will use the running event loop and `emit_async` is awaitable.

  ```python
  from pymitter import EventEmitter


  ee = EventEmitter()


  async def main():
      
      awaitable = ee.emit_async("my_event", "foo")
      

      await awaitable
      
  ```




  ```python
  from pymitter import EventEmitter


  ee = EventEmitter()


  @ee.once("my_event")
  def handler1():
      print("handler1 called")


  @ee.on("my_event", ttl=2)
  def handler2():
      print("handler2 called")


  ee.emit("my_event")



  ee.emit("my_event")


  ee.emit("my_event")

  ```




  ```python
  from pymitter import EventEmitter


  ee = EventEmitter(wildcard=True)


  @ee.on("my_event.foo")
  def handler1():
      print("handler1 called")


  @ee.on("my_event.bar")
  def handler2():
      print("handler2 called")


  @ee.on("my_event.*")
  def hander3():
      print("handler3 called")


  ee.emit("my_event.foo")



  ee.emit("my_event.bar")



  ee.emit("my_event.*")



  ```






  EventEmitter constructor. **Note**: always use *kwargs* for configuration.
  When *wildcard* is *True*, wildcards are used as shown in [this example](#wildcards).
  *delimiter* is used to seperate namespaces within events.
  If *new_listener* is *True*, the *"new_listener"* event is emitted every time a new listener is registered.
  Functions listening to this event are passed ``(func, event=None)``.
  *max_listeners* defines the maximum number of listeners per event.
  Negative values mean infinity.

  - #### ``on(event, func=None, ttl=-1)``
      Registers a function to an event.
      When *func* is *None*, decorator usage is assumed.
      *ttl* defines the times to listen. Negative values mean infinity.
      Returns the function.

  - #### ``once(event, func=None)``
      Registers a function to an event with ``ttl = 1``.
      When *func* is *None*, decorator usage is assumed.
      Returns the function.

  - #### ``on_any(func=None)``
      Registers a function that is called every time an event is emitted.
      When *func* is *None*, decorator usage is assumed.
      Returns the function.

  - #### ``off(event, func=None)``
      Removes a function that is registered to an event.
      When *func* is *None*, decorator usage is assumed.
      Returns the function.

  - #### ``off_any(func=None)``
      Removes a function that was registered via ``on_any()``.
      When *func* is *None*, decorator usage is assumed.
      Returns the function.

  - #### ``off_all()``
      Removes all functions of all events.

  - #### ``listeners(event)``
      Returns all functions that are registered to an event.
      Wildcards are not applied.

  - #### ``listeners_any()``
      Returns all functions that were registered using ``on_any()``.

  - #### ``listeners_all()``
      Returns all registered functions.

  - #### ``emit(event, *args, **kwargs)``
      Emits an event.
      All functions of events that match *event* are invoked with *args* and *kwargs* in the exact order of their registeration.
      Wildcards might be applied.
      There is no return value.




  - Source hosted at [GitHub](https://github.com/riga/pymitter)
  - Python module hostet at [PyPI](https://pypi.python.org/pypi/pymitter)
  - Report issues, questions, feature requests on [GitHub Issues](https://github.com/riga/pymitter/issues)


pkgId: 9df8a29932f3aaddb0bf3c1dbead0505537e20f9d1997ba73dc8f1557d85c6a5
name: python-pymongo-debuginfo
arch: aarch64
version: 4.3.3
epoch: 0
release: 1
summary: Debug information for package python-pymongo
url: http://github.com/mongodb/mongo-python-driver
rpm_license: Apache License, Version 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-39d4881f-7e78-4262-b49a-98f938094a66
rpm_sourcerpm: python-pymongo-4.3.3-1.src.rpm
location_href: 00009039-python-pymongo/python-pymongo-debuginfo-4.3.3-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-pymongo.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: c00e9bcdebc3c4270c0f8eb1663b226e797451b1e2cfb8c80148acda4023f179
name: python-pymongo-debugsource
arch: aarch64
version: 4.3.3
epoch: 0
release: 1
summary: Debug sources for package python-pymongo
url: http://github.com/mongodb/mongo-python-driver
rpm_license: Apache License, Version 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-39d4881f-7e78-4262-b49a-98f938094a66
rpm_sourcerpm: python-pymongo-4.3.3-1.src.rpm
location_href: 00009039-python-pymongo/python-pymongo-debugsource-4.3.3-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-pymongo.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: f7f12abc92b795e8d6176838891b6efdb9916d0bfd32d82196ff3f144341f72c
name: python-pymorphy2
arch: src
version: 0.9.1
epoch: 0
release: 1
summary: Morphological analyzer (POS tagger + inflection engine) for Russian language.
url: https://github.com/kmike/pymorphy2/
rpm_license: MIT license
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-d5b015ac-292d-4e6c-9244-69524487929e
location_href: 00011539-python-pymorphy2/python-pymorphy2-0.9.1-1.src.rpm
checksum_type: sha256
description:
  Morphological analyzer (POS tagger + inflection engine)
  for Russian and Ukrainian languages. License is MIT.
  * docs: https://pymorphy2.readthedocs.io
  * changelog: https://github.com/kmike/pymorphy2/blob/master/CHANGES.rst
  * source code: github_
  * bug tracker: https://github.com/kmike/pymorphy2/issues
  * support: https://groups.google.com/forum/?fromgroups#!forum/pymorphy


pkgId: 9ab1af3f1d4582b4b00c09f14f529a4acb4e3db335346750dc5024ebf340c564
name: python-pymssql
arch: src
version: 2.2.7
epoch: 0
release: 1
summary: DB-API interface to Microsoft SQL Server for Python. (new Cython-based version)
url: https://pypi.org/project/pymssql/
rpm_license: LGPL
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-78fb9b4d-3bd5-4617-ad90-f30a4d964c5d
location_href: 00004743-python-pymssql/python-pymssql-2.2.7-1.src.rpm
checksum_type: sha256
description:
  A simple database interface for `Python`_ that builds on top of `FreeTDS`_ to
  provide a Python DB-API (`PEP-249`_) interface to `Microsoft SQL Server`_.
  Detailed information on pymssql is available on the website:
  `pymssql.readthedocs.io <https://pymssql.readthedocs.io/en/stable/>`_
  New development is happening on GitHub at:
  `github.com/pymssql/pymssql <https://github.com/pymssql/pymssql>`_
  There is a Google Group for discussion at:
  `groups.google.com <https://groups.google.com/forum/?fromgroups#!forum/pymssql>`_


pkgId: 801b5046eb00677b4085e24ef14ea23316de23b619cf3ad10a979b5a245d27be
name: python-pymsteams
arch: src
version: 0.2.2
epoch: 0
release: 1
summary: Format messages and post to Microsoft Teams.
url: https://github.com/rveachkc/pymsteams
rpm_license: Apache
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-71c55690-aa54-4364-a00a-bc5d98f01767
location_href: 00009667-python-pymsteams/python-pymsteams-0.2.2-1.src.rpm
checksum_type: sha256
description:
  [![CircleCI](https://circleci.com/gh/rveachkc/pymsteams/tree/master.svg?style=shield)](https://circleci.com/gh/rveachkc/pymsteams/tree/master) [![PyPI version](https://badge.fury.io/py/pymsteams.svg)](https://badge.fury.io/py/pymsteams)

  Python Wrapper Library to send requests to Microsoft Teams Webhooks.
  Microsoft refers to these messages as Connector Cards.  A message can be sent with only the main Connector Card, or additional sections can be included into the message.

  This library uses Webhook Connectors for Microsoft Teams.  Please visit the following Microsoft Documentation link for instructions on how to obtain the correct url for your Channel: https://dev.outlook.com/Connectors/GetStarted#creating-messages-through-office-365-connectors-in-microsoft-teams

  Please refer to the Microsoft Documentation for the most up to date screenshots.
  https://dev.outlook.com/connectors/reference



  Install with pip:

  ```bash
  pip install pymsteams
  ```

  Install with async capabilities (python 3.6+):

  ```bash
  pip install pymsteams[async]
  ```



  At time of writing, the latest release supported by Python 2 is [Version 0.1.16](https://github.com/rveachkc/pymsteams/releases/tag/0.1.16)





  This is the simplest implementation of pymsteams.  It will send a message to the teams webhook url with plain text in the message.

  ```python
  import pymsteams


  myTeamsMessage = pymsteams.connectorcard("<Microsoft Webhook URL>")


  myTeamsMessage.text("this is my text")


  myTeamsMessage.send()
  ```



  ```python
  import asyncio
  import pymsteams

  loop = asyncio.get_event_loop()


  myTeamsMessage = pymsteams.async_connectorcard("<Microsoft Webhook URL>")


  myTeamsMessage.text("This is my message")


  loop.run_until_complete(myTeamsMessage.send())
  ```

  Please visit the python asyncio documentation for more info on using asyncio and the event loop: https://docs.python.org/3/library/asyncio-eventloop.html





  ```python
  myTeamsMessage.title("This is my message title")
  ```


  ```python
  myTeamsMessage.addLinkButton("This is the button Text", "https://github.com/rveachkc/pymsteams/")
  ```


  This is useful in the event you need to post the same message to multiple rooms.
  ```python
  myTeamsMessage.newhookurl("<My New URL>")
  ```


  This sets the theme color of the card. The parameter is expected to be a hex color code without the hash or the string red.
  ```python
  myTeamsMessage.color("<Hex Color Code>")
  ```


  This is a simple print command to view your connector card message object before sending.
  ```python
  myTeamsMessage.printme()
  ```


  To create a section and add various formatting elements
  ```python

  myMessageSection = pymsteams.cardsection()


  myMessageSection.title("Section title")


  myMessageSection.activityTitle("my activity title")
  myMessageSection.activitySubtitle("my activity subtitle")
  myMessageSection.activityImage("http://i.imgur.com/c4jt321l.png")
  myMessageSection.activityText("This is my activity Text")


  myMessageSection.addFact("this", "is fine")
  myMessageSection.addFact("this is", "also fine")


  myMessageSection.text("This is my section text")


  myMessageSection.addImage("http://i.imgur.com/c4jt321l.png", ititle="This Is Fine")


  myTeamsMessage.addSection(myMessageSection)
  ```
  You may also add multiple sections to a connector card message as well.
  ```python

  Section1 = pymsteams.cardsection()
  Section1.text("My First Section")


  Section2 = pymsteams.cardsection()
  Section2.text("My Second Section")


  myTeamsMessage.addSection(Section1)
  myTeamsMessage.addSection(Section2)


  myTeamsMessage.send()
  ```

  To create a actions on which the user can interect with in MS Teams
  To find out more information on what actions can be used, please visit https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/connectors/connectors-using#setting-up-a-custom-incoming-webhook

  ```python
  myTeamsMessage = pymsteams.connectorcard("<Microsoft Webhook URL>")

  myTeamsPotentialAction1 = pymsteams.potentialaction(_name = "Add a comment")
  myTeamsPotentialAction1.addInput("TextInput","comment","Add a comment here",False)
  myTeamsPotentialAction1.addAction("HttpPost","Add Comment","https://..."")

  myTeamsPotentialAction2 = pymsteams.potentialaction(_name = "Set due date")
  myTeamsPotentialAction2.addInput("DateInput","dueDate","Enter due date")
  myTeamsPotentialAction2.addAction("HttpPost","save","https://...")

  myTeamsPotentialAction3 = pymsteams.potentialaction(_name = "Change Status")
  myTeamsPotentialAction3.choices.addChoices("In progress","0")
  myTeamsPotentialAction3.choices.addChoices("Active","1")
  myTeamsPotentialAction3.addInput("MultichoiceInput","list","Select a status",False)
  myTeamsPotentialAction3.addAction("HttpPost","Save","https://...")

  myTeamsMessage.addPotentialAction(myTeamsPotentialAction1)
  myTeamsMessage.addPotentialAction(myTeamsPotentialAction2)
  myTeamsMessage.addPotentialAction(myTeamsPotentialAction3)

  myTeamsMessage.summary("Test Message")

  myTeamsMessage.send()
  ```


  ```python
  myTeamsMessage = pymsteams.connectorcard("<Microsoft Webhook URL>")

  myTeamsPotentialAction1 = pymsteams.potentialaction(_name = "Add a comment")

  myTeamsPotentialAction1.addInput("TextInput","comment","Add a comment here",False)

  myTeamsPotentialAction1.addAction("HttpPost","Add Comment","https://...", "{{comment.value}}")
  myTeamsMessage.addPotentialAction(myTeamsPotentialAction1)


  myTeamsMessage.summary("Test Message")

  myTeamsMessage.send()






  ```

  Please use Github issues to report any bugs or request enhancements.



  This module is really just a nice wrapper pointed at the Microsoft API. To help troubleshoot missing messages, the requests response content is saved to the connectorcard class attribute `last_http_response`.

  To get the last http status code:
  ```python
  import pymsteams

  myTeamsMessage = pymsteams.connectorcard("<Microsoft Webhook URL>")
  myTeamsMessage.text("this is my text")
  myTeamsMessage.send()

  last_status_code = myTeamsMessage.last_http_response.status_code
  ```

  More info on the Response Content is available in the requests documentation, [link](https://2.python-requests.org/en/master/user/quickstart/#response-content).



  If the call to the Microsoft Teams webhook service fails, a `TeamsWebhookException` will be thrown.



  In order to test in your environment with pytest, set the environment variable `MS_TEAMS_WEBHOOK` to the Microsoft Teams Webhook url you would like to use.

  Then, from the root of the repo, install the requirements and run pytest.

  ```bash
  pip install -r dev-requirements.txt
  MS_TEAMS_WEBHOOK=MicrosoftWebhookURL
  export MS_TEAMS_WEBHOOK
  pytest --cov=./pymsteams --cov-report=term-missing --cov-branch
  ```

  This will send two MS Teams messages describing how they are formatted.  Manually validate that the message comes through as expected.



  In some situations, a custom CA bundle must be used.  This can be set on class initialization, by setting the verify parameter.

  ```python
  import pymsteams


  msg = pymsteams.connectorcard("<Microsoft Webhook URL>", verify="/path/to/file")


  msg = pymsteams.connectorcard("<Microsoft Webhook URL>", verify=False)
  ```

  Set to either the path of a custom CA bundle or False to disable.

  The requests documentation can be referenced for full details: https://2.python-requests.org/en/master/user/advanced/#ssl-cert-verification


pkgId: 8e623699d234bf421bf9b7b78034eb58c2372dd5741b7bbf6f6e3b9b5844107e
name: python-pymunk
arch: src
version: 6.4.0
epoch: 0
release: 1
summary: Pymunk is a easy-to-use pythonic 2d physics library
url: http://www.pymunk.org
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-551d75d3-c033-4f83-a0c4-aff1d7607a59
location_href: 00011776-python-pymunk/python-pymunk-6.4.0-1.src.rpm
checksum_type: sha256
description:
  Pymunk is a easy-to-use pythonic 2d physics library that can be used whenever
  you need 2d rigid body physics from Python. Perfect when you need 2d physics
  in your game, demo or simulation! It is built on top of the very
  capable 2d physics library `Chipmunk <http://chipmunk-physics.net>`_.
  The first version was released in 2007 and Pymunk is still actively developed
  and maintained today, more than 10 years of active development!
  Pymunk has been used with success in many projects, big and small. For example:
  3 Pyweek game competition winners, more than a dozen published scientific
  papers and even in a self-driving car simulation! See the Showcases section on
  the Pymunk webpage for some examples.
  2007 - 2022, Victor Blomqvist - vb@viblo.se, MIT License
  This release is based on the latest Pymunk release (6.4.0),
  using Chipmunk 7 rev 0593976ef47fcb3957166bd342f6b2bafe4d0e44 .


pkgId: 170a35f13a07a22441164d9baf9f87bdb8b0ee40f8b03acdd65a6ebe0a06a2a2
name: python-pymunk-debuginfo
arch: aarch64
version: 6.4.0
epoch: 0
release: 1
summary: Debug information for package python-pymunk
url: http://www.pymunk.org
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-551d75d3-c033-4f83-a0c4-aff1d7607a59
rpm_sourcerpm: python-pymunk-6.4.0-1.src.rpm
location_href: 00011776-python-pymunk/python-pymunk-debuginfo-6.4.0-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-pymunk.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: e4a19ee1ab076df914fa86945a7479ee04a6c335e5727753591b647a69bcf391
name: python-pymunk-debugsource
arch: aarch64
version: 6.4.0
epoch: 0
release: 1
summary: Debug sources for package python-pymunk
url: http://www.pymunk.org
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-551d75d3-c033-4f83-a0c4-aff1d7607a59
rpm_sourcerpm: python-pymunk-6.4.0-1.src.rpm
location_href: 00011776-python-pymunk/python-pymunk-debugsource-6.4.0-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-pymunk.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: ec7fb0841264b98b0233b401ce54dd0d2c79e52a93105c3819db516f82d0dd14
name: python-pynetdicom
arch: src
version: 2.0.2
epoch: 0
release: 1
summary: A Python implementation of the DICOM networking protocol
url: https://github.com/pydicom/pynetdicom
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-020c319c-583f-4c64-9770-907851cf68aa
location_href: 00004745-python-pynetdicom/python-pynetdicom-2.0.2-1.src.rpm
checksum_type: sha256
description:
  A Python implementation of the `DICOM <http://dicom.nema.org>`_
  networking protocol, originally based on (legacy)
  `pynetdicom <https://github.com/patmun/pynetdicom_legacy>`_.


pkgId: 15ce16b04d21d480d0868ef25f9b4640ba5c3b0fdb3fd42f42c9436d2721083e
name: python-pynuvo
arch: src
version: 0.2
epoch: 0
release: 1
summary: Python API for talking to Nuvo multi zone amplifier
url: https://github.com/ejonesnospam/pynuvo
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-b6606d77-a010-42a0-b9b9-5d48a00ef383
location_href: 00004748-python-pynuvo/python-pynuvo-0.2-1.src.rpm
checksum_type: sha256
description:
  Python3 interface implementation for Nuvo zone amplifier
   Initially developed/tested with older Concerto model
  *** Should/could also work with any Nuvo amp, via RS-232 serial, such NV-E6D


  This is for use with [Home-Assistant](http://home-assistant.io)


  ```python

  ```


pkgId: 50ae4f00698cd1094365b011484189a1c169bfac9fb92a296d0e5f26c7d55d93
name: python-pynvml
arch: src
version: 11.5.0
epoch: 0
release: 1
summary: Python Bindings for the NVIDIA Management Library
url: http://www.nvidia.com/
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-b8708c41-6d9f-413f-94ea-c536fc191571
location_href: 00011373-python-pynvml/python-pynvml-11.5.0-1.src.rpm
checksum_type: sha256
description:
  Provides a Python interface to GPU management and monitoring functions.
  This is a wrapper around the NVML library.
  For information about the NVML library, see the NVML developer page
  http://developer.nvidia.com/nvidia-management-library-nvml
  As of version 11.0.0, the NVML-wrappers used in pynvml are identical
  to those published through [nvidia-ml-py](https://pypi.org/project/nvidia-ml-py/).
  Note that this file can be run with 'python -m doctest -v README.txt'
  although the results are system dependent


pkgId: a8fa1c19853abd0a2101ab5a97ad18a183dc0e57317f570345ef9091620254d6
name: python-pyobd
arch: src
version: 0.1.7
epoch: 0
release: 1
summary: PyOBD - Open BYMA Data API
url: https://github.com/franco-lamas/PyOBD
rpm_license: GPL V3
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-5ebb58bf-d45b-464c-8a06-b86831155a45
location_href: 00004750-python-pyobd/python-pyobd-0.1.7-1.src.rpm
checksum_type: sha256
description:
  PyOBD es una API para conectar cualquier script de Python con datos del mercado con 20 minutos de retraso provistos por Open BYMA Data, además permite la descarga de datos histórico. Fue desarrollada en conjunto por [Nacho Herrera](https://github.com/nacho-herrera), [St1tch](https://twitter.com/St1tch_BL) y [Franco Lamas](https://www.linkedin.com/in/franco-lamas/).



      from PyOBD import *
      PyOBD=openBYMAdata()



  Por el momento solo se encuentra disponible el plazo de 48hs que viene cargado por defecto



      PyOBD.get_bonds()



      PyOBD.get_short_term_bonds()


      PyOBD.get_corporateBonds()



      PyOBD.get_bluechips()



      PyOBD.get_galpones()



      PyOBD.get_cedears()



      PyOBD.indices()



      PyOBD.get_options()




      PyOBD.byma_news()



      PyOBD.isworkingDay()



      PyOBD.marketResume()



  La instalación vía pip aún no está disponible, únicamente desde el repositorio. Se requiere instalar [Git](https://git-scm.com/).

      pip install git+https://github.com/franco-lamas/PyOBD --upgrade --no-cache-dir



  *   Luego de las 2am se reinicia el servidor y cambia la estructura de datos.
  *   Luego de las 17 la sección de noticias se desconecta.




  *   Agregar más plazos
  *   Formatear links de noticias
  *   Dashboard de bonos IAMC
  *   Datos de empresas
  *   Históricos
  *   Balances históricos




  La información es mostrada “tal cual es”, puede ser incorrecta o contener errores, eso es responsabilidad de cada sitio. No somos responsables por el uso indebido de los Scripts.


pkgId: a020029e4fad4cbbc3f38ff4cf1b04af7a40d764c3e7dfdb58d14d951988a0e5
name: python-pyodbc
arch: src
version: 4.0.35
epoch: 0
release: 1
summary: DB API Module for ODBC
url: https://github.com/mkleehammer/pyodbc
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-715c87d1-92bf-4b33-9379-190a9bb9fd32
location_href: 00004752-python-pyodbc/python-pyodbc-4.0.35-1.src.rpm
checksum_type: sha256
description:
  [![Windows Status](https://ci.appveyor.com/api/projects/status/github/mkleehammer/pyodbc?branch=master&svg=true&passingText=Windows%20build)](https://ci.appveyor.com/project/mkleehammer/pyodbc)
  [![Ubuntu build](https://github.com/mkleehammer/pyodbc/actions/workflows/ubuntu_build.yml/badge.svg)](https://github.com/mkleehammer/pyodbc/actions/workflows/ubuntu_build.yml)
  [![PyPI](https://img.shields.io/pypi/v/pyodbc?color=brightgreen)](https://pypi.org/project/pyodbc/)

  pyodbc is an open source Python module that makes accessing ODBC databases simple.  It
  implements the [DB API 2.0](https://www.python.org/dev/peps/pep-0249) specification but is
  packed with even more Pythonic convenience.

  The easiest way to install is to use pip:

      pip install pyodbc

  If you are using Mac, you should be using `Homebrew` for installing pyodbc:

      brew install unixodbc
      pip install pyodbc

  Precompiled binary wheels are provided for most Python versions on Windows and macOS.  On other
  operating systems this will build from source.  Note, pyodbc contains C++ extensions so you will
  need a suitable C++ compiler on your computer to install pyodbc, for all operating systems.  See
  the [docs](https://github.com/mkleehammer/pyodbc/wiki/Install) for details.

  [Documentation](https://github.com/mkleehammer/pyodbc/wiki)

  [Release Notes](https://github.com/mkleehammer/pyodbc/releases)

  IMPORTANT: Python 2.7 support is being ended.  The pyodbc 4.x versions will be the last to
  support Python 2.7.  The pyodbc 5.x versions will only support Python 3.7 and above.


pkgId: e6ba41ca17fa06fffe6cd56c3b60d7edb08b87c6f7ef7f29027f763f70dccfeb
name: python-pyone
arch: src
version: 6.6.1
epoch: 0
release: 1
summary: Python Bindings for OpenNebula XML-RPC API
url: http://opennebula.io
rpm_license: http://www.apache.org/licenses/LICENSE-2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8b221571-2f07-47c0-b879-c43749110c72
location_href: 00004753-python-pyone/python-pyone-6.6.1-1.src.rpm
checksum_type: sha256
description:
  PyOne is an implementation of OpenNebula XML-RPC
  bindings in Python. It works as a proxy over the XML-RPC api and
  utilizes generateDS (https://www.davekuhlman.org/generateDS.html)
  to ecapsulate the xml response to Python objects.


pkgId: 0caa492a1eb8573be698fc91027842560c2b84f603ce4817a45a607609231a3e
name: python-pyopencl
arch: src
version: 2022.3.1
epoch: 0
release: 1
summary: Python wrapper for OpenCL
url: http://mathema.tician.de/software/pyopencl
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-48ade010-c569-48fe-863a-70d53b7c3b62
location_href: 00004754-python-pyopencl/python-pyopencl-2022.3.1-1.src.rpm
checksum_type: sha256
description:
  PyOpenCL lets you access GPUs and other massively parallel compute
  devices from Python. It tries to offer computing goodness in the
  spirit of its sister project `PyCUDA <https://mathema.tician.de/software/pycuda>`__:
  * Object cleanup tied to lifetime of objects. This idiom, often
    called `RAII <https://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization>`__
    in C++, makes it much easier to write correct, leak- and
    crash-free code.
  * Completeness. PyOpenCL puts the full power of OpenCL's API at
    your disposal, if you wish.  Every obscure ``get_info()`` query and
    all CL calls are accessible.
  * Automatic Error Checking. All CL errors are automatically
    translated into Python exceptions.
  * Speed. PyOpenCL's base layer is written in C++, so all the niceties
    above are virtually free.
  * Helpful and complete `Documentation <https://documen.tician.de/pyopencl>`__
    as well as a `Wiki <https://wiki.tiker.net/PyOpenCL>`__.
  * Liberal license. PyOpenCL is open-source under the
    `MIT license <https://en.wikipedia.org/wiki/MIT_License>`__
    and free for commercial, academic, and private use.
  * Broad support. PyOpenCL was tested and works with Apple's, AMD's, and Nvidia's
    CL implementations.
  Simple 4-step `install instructions <https://documen.tician.de/pyopencl/misc.html#installation>`__
  using Conda on Linux and macOS (that also install a working OpenCL implementation!)
  can be found in the `documentation <https://documen.tician.de/pyopencl/>`__.
  What you'll need if you do *not* want to use the convenient instructions above and
  instead build from source:
  * gcc/g++ new enough to be compatible with pybind11
    (see their `FAQ <https://pybind11.readthedocs.io/en/stable/faq.html>`__)
  * `numpy <https://numpy.org>`__, and
  * an OpenCL implementation. (See this `howto <https://wiki.tiker.net/OpenCLHowTo>`__
    for how to get one.)


pkgId: c0ea23e876feb4727585f988ee68884df65643210f724b7c9bf1b565fe61072d
name: python-pyopenuv
arch: src
version: 2023.2.0
epoch: 0
release: 1
summary: A simple Python API data from openuv.io
url: https://github.com/bachya/pyopenuv
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-042dcd49-d05d-4c7d-bee7-255588a2f9eb
location_href: 00004757-python-pyopenuv/python-pyopenuv-2023.2.0-1.src.rpm
checksum_type: sha256
description:
  [![CI][ci-badge]][ci]
  [![PyPI][pypi-badge]][pypi]
  [![Version][version-badge]][version]
  [![License][license-badge]][license]
  [![Code Coverage][codecov-badge]][codecov]
  [![Maintainability][maintainability-badge]][maintainability]

  <a href="https://www.buymeacoffee.com/bachya1208P" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="41" width="174"></a>

  `pyopenuv` is a simple Python library for retrieving UV-related information from
  [openuv.io][openuv].

  - [Installation](#installation)
  - [Python Versions](#python-versions)
  - [API Key](#api-key)
  - [Usage](#usage)
  - [Contributing](#contributing)



  ```bash
  pip install pyopenuv
  ```



  `pyopenuv` is currently supported on:

  - Python 3.9
  - Python 3.10
  - Python 3.11



  You can get an API key from [the OpenUV console][openuv-console].



  ```python
  import asyncio

  from pyopenuv import Client
  from pyopenuv.errors import OpenUvError


  async def main():
      client = Client(
          "<OPENUV_API_KEY>", "<LATITUDE>", "<LONGITUDE>", altitude="<ALTITUDE>"
      )

      try:
          
          print(await client.api_status())
          

          
          print(await client.uv_index())
          

          
          print(await client.uv_forecast())
          

          
          print(await client.uv_protection_window())
          

          
          print(await client.api_statistics())
          
      except OpenUvError as err:
          print(f"There was an error: {err}")


  asyncio.run(main())
  ```



  If you would prefer to not call `api_status` manually, you can configure the `Client` object
  to automatically check the status of the OpenUV API before executing any of the API
  methods—simply pass the `check_status_before_request` parameter:

  ```python
  import asyncio

  from pyopenuv import Client
  from pyopenuv.errors import ApiUnavailableError, OpenUvError


  async def main():
      client = Client(
          "<OPENUV_API_KEY>",
          "<LATITUDE>",
          "<LONGITUDE>",
          altitude="<ALTITUDE>",
          check_status_before_request=True,
      )

      try:
          print(await client.uv_index())
      except ApiUnavailableError:
          print("The API is unavailable")
      except OpenUvError as err:
          print(f"There was an error: {err}")


  asyncio.run(main())
  ```



  By default, the library creates a new connection to OpenUV with each coroutine. If you
  are calling a large number of coroutines (or merely want to squeeze out every second of
  runtime savings possible), an [`aiohttp`][aiohttp] `ClientSession` can be used for
  connection pooling:

  ```python
  import asyncio

  from aiohttp import ClientSession
  from pyopenuv import Client
  from pyopenuv.errors import OpenUvError


  async def main():
      async with ClientSession() as session:
          client = Client(
              "<OPENUV_API_KEY>",
              "<LATITUDE>",
              "<LONGITUDE>",
              altitude="<ALTITUDE>",
              session=session,
          )

          try:
              print(await client.uv_index())
          except OpenUvError as err:
              print(f"There was an error: {err}")


  asyncio.run(main())
  ```



  Thanks to all of [our contributors][contributors] so far!

  1. [Check for open features/bugs][issues] or [initiate a discussion on one][new-issue].
  2. [Fork the repository][fork].
  3. (_optional, but highly recommended_) Create a virtual environment: `python3 -m venv .venv`
  4. (_optional, but highly recommended_) Enter the virtual environment: `source ./.venv/bin/activate`
  5. Install the dev environment: `script/setup`
  6. Code your new feature or bug fix on a new branch.
  7. Write tests that cover your new functionality.
  8. Run tests and ensure 100% code coverage: `poetry run pytest --cov pyopenuv tests`
  9. Update `README.md` with any new documentation.
  10. Submit a pull request!

  [aiohttp]: https://github.com/aio-libs/aiohttp
  [ci-badge]: https://github.com/bachya/pyopenuv/workflows/CI/badge.svg
  [ci]: https://github.com/bachya/pyopenuv/actions
  [codecov-badge]: https://codecov.io/gh/bachya/pyopenuv/branch/dev/graph/badge.svg
  [codecov]: https://codecov.io/gh/bachya/pyopenuv
  [contributors]: https://github.com/bachya/pyopenuv/graphs/contributors
  [fork]: https://github.com/bachya/pyopenuv/fork
  [issues]: https://github.com/bachya/pyopenuv/issues
  [license-badge]: https://img.shields.io/pypi/l/pyopenuv.svg
  [license]: https://github.com/bachya/pyopenuv/blob/main/LICENSE
  [maintainability-badge]: https://api.codeclimate.com/v1/badges/a03c9e96f19a3dc37f98/maintainability
  [maintainability]: https://codeclimate.com/github/bachya/pyopenuv/maintainability
  [new-issue]: https://github.com/bachya/pyopenuv/issues/new
  [new-issue]: https://github.com/bachya/pyopenuv/issues/new
  [openuv]: https://openuv.io/
  [openuv-console]: https://www.openuv.io/console
  [pypi-badge]: https://img.shields.io/pypi/v/pyopenuv.svg
  [pypi]: https://pypi.python.org/pypi/pyopenuv
  [version-badge]: https://img.shields.io/pypi/pyversions/pyopenuv.svg
  [version]: https://pypi.python.org/pypi/pyopenuv


