# packages

pkgId: 07fba42e456648f1391133bbbb5d268fce42828f5c2f0aa2685830748bdab0df
name: python-pwntools
arch: src
version: 4.9.0
epoch: 0
release: 1
summary: Pwntools CTF framework and exploit development library.
url: https://pwntools.com
rpm_license: Mostly MIT, some GPL/BSD, see LICENSE-pwntools.txt
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-43c77e6c-15ed-48f7-aa25-2928988f2708
location_href: 00004618-python-pwntools/python-pwntools-4.9.0-1.src.rpm
checksum_type: sha256
description:
     pwntools logo
  |PyPI| |Docs| |Travis| |GitHub Workflow Status (branch)| |Coveralls|
  |MIT License| |Packaging status| |Discord| |Twitter|
  Pwntools is a CTF framework and exploit development library. Written in
  Python, it is designed for rapid prototyping and development, and
  intended to make exploit writing as simple as possible.
     from pwn import *
     context(arch = 'i386', os = 'linux')
     r = remote('exploitme.example.com', 31337)
     
     r.send(asm(shellcraft.sh()))
     r.interactive()


pkgId: 8119b0a287a38a0cea25405c8aabd5e6430f8843688f05c98a37637dc6fbb421
name: python-py-Ultroid
arch: src
version: 2022.6.6
epoch: 0
release: 1
summary: A Secure and Powerful Python-Telethon Based Library For Ultroid Userbot.
url: https://github.com/TeamUltroid/pyUltroid
rpm_license: GNU AFFERO GENERAL PUBLIC LICENSE (v3)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ef44790d-935b-4e79-a57c-11d47cad94d6
location_href: 00011138-python-py-ultroid/python-py-Ultroid-2022.6.6-1.src.rpm
checksum_type: sha256
description:
  Core library of [The Ultroid](https://github.com/TeamUltroid/Ultroid), a python based telegram userbot.

  [![CodeFactor](https://www.codefactor.io/repository/github/teamultroid/pyultroid/badge)](https://www.codefactor.io/repository/github/teamultroid/pyultroid)
  [![PyPI - Version](https://img.shields.io/pypi/v/py-Ultroid?style=round)](https://pypi.org/project/py-Ultroid)
  [![PyPI - Downloads](https://img.shields.io/pypi/dm/py-Ultroid?label=DOWNLOADS&style=round)](https://pypi.org/project/py-Ultroid)
  [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/TeamUltroid/Ultroid/graphs/commit-activity)
  [![Open Source Love svg2](https://badges.frapsoft.com/os/v2/open-source.svg?v=103)](https://github.com/TeamUltroid/Ultroid)
  [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://makeapullrequest.com)


  ```bash
  pip3 install -U py-Ultroid
  ```


  [![Documentation](https://img.shields.io/badge/Documentation-Ultroid-blue)](http://ultroid.tech/)


  - Create folders named `plugins`, `addons`, `assistant` and `resources`.
  - Add your plugins in the `plugins` folder and others accordingly.
  - Create a `.env` file with following mandatory Environment Variables
     ```
     API_ID
     API_HASH
     SESSION
     REDIS_URI
     REDIS_PASSWORD
     ```
  - Check
  [`.env.sample`](https://github.com/TeamUltroid/Ultroid/blob/main/.env.sample) for more details.
  - Run `python3 -m pyUltroid` to start the bot.


   - ### To work everywhere

  ```python
  @ultroid_cmd(
      pattern="start"
  )
  async def _(e):
      await e.eor("Ultroid Started!")
  ```

  - ### To work only in groups

  ```python
  @ultroid_cmd(
      pattern="start",
      groups_only=True,
  )
  async def _(e):
      await eor(e, "Ultroid Started.")
  ```

  - ### Assistant Plugins 👇

  ```python
  @asst_cmd("start")
  async def _(e):
      await e.reply("Ultroid Started.")
  ```

  See more working plugins on [the offical repository](https://github.com/TeamUltroid/Ultroid)!

  > Made with 💕 by [@TeamUltroid](https://t.me/TeamUltroid).



  [![License](https://www.gnu.org/graphics/agplv3-155x51.png)](LICENSE)
  Ultroid is licensed under [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.en.html) v3 or later.


  * [![TeamUltroid-Devs](https://img.shields.io/static/v1?label=TeamUltroid&message=devs&color=critical)](https://t.me/UltroidDevs)
  * [Lonami](https://github.com/Lonami) for [Telethon](https://github.com/LonamiWebs/Telethon)


pkgId: 3a81ac436ed253d90d9b61eea0a8f5a7ca22a1f876571547ad8fdfc4757e1098
name: python-py-bcrypt
arch: src
version: 0.4
epoch: 0
release: 1
summary: bcrypt password hashing and key derivation
url: https://code.google.com/p/py-bcrypt
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-65e9d964-6bf0-4e3c-b05d-b2e04c77f1b8
location_href: 00004619-python-py-bcrypt/python-py-bcrypt-0.4-1.src.rpm
checksum_type: sha256
description:
  py-bcrypt is an implementation the OpenBSD Blowfish password hashing
  algorithm, as described in "A Future-Adaptable Password Scheme" by
  Niels Provos and David Mazieres and related bcrypt-based key derivation
  function implemented in OpenBSD libutil.

  This system hashes passwords using a version of Bruce Schneier's
  Blowfish block cipher with modifications designed to raise the cost
  of off-line password cracking. The computation cost of the algorithm
  is parametised, so it can be increased as computers get faster.

  Two interfaces are supported: a classic password hashing interface and
  a key derivation function (KDF) intended for generating cryptographic
  keys.


pkgId: ccec3fb7ad670c21f76501910b366b0f96d691cacb5999baa6959d5449628d2c
name: python-py-cord
arch: src
version: 2.4.1
epoch: 0
release: 1
summary: A Python wrapper for the Discord API
url: https://pycord.dev
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-52c8650b-72d9-4f5d-aa2d-fce0871527ae
location_href: 00012265-python-py-cord/python-py-cord-2.4.1-1.src.rpm
checksum_type: sha256
description:
  A fork of discord.py. Pycord is a modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python.


pkgId: 389420ecacf24ef554476b847e1ed7f7da35ce163cb1780256de1e84da2654d0
name: python-py-cpuinfo
arch: src
version: 9.0.0
epoch: 0
release: 1
summary: Get CPU info with pure Python
url: https://github.com/workhorsy/py-cpuinfo
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4ec81f92-e9d4-46c5-894f-7b9b7ecc939d
location_href: 00009658-python-py-cpuinfo/python-py-cpuinfo-9.0.0-1.src.rpm
checksum_type: sha256
description:
  Py-cpuinfo gets CPU info with pure Python. Py-cpuinfo should work
  without any extra programs or libraries, beyond what your OS provides.
  It does not require any compilation(C/C++, assembly, et cetera) to use.
  It works with Python 3.
  Documentation can be viewed here: https://github.com/workhorsy/py-cpuinfo


pkgId: 2d7625b5a310621b4a220a4fe2f536899cbbd50af4d4213a7554cdf43ae08e32
name: python-py-dateutil
arch: src
version: 2.2
epoch: 0
release: 1
summary: Extensions to the standard Python datetime module
url: https://bitbucket.org/cld/dateutil
rpm_license: Simplified BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-fa6811c8-e51c-403e-8d17-29d30b00c373
location_href: 00012599-python-py-dateutil/python-py-dateutil-2.2-1.src.rpm
checksum_type: sha256
description:
  The dateutil module provides powerful extensions to the
  datetime module available in the Python standard library.


pkgId: 6ab61eceebec8fe3d4a4761e3efac12dbf893d1a83f779862c7213ebcedfb2e7
name: python-py-gfm
arch: src
version: 2.0.0
epoch: 0
release: 1
url: https://github.com/zopieux/py-gfm
rpm_license: BSD License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-79bacd35-f41e-4e4d-882c-3de8f032be8b
location_href: 00004620-python-py-gfm/python-py-gfm-2.0.0-1.src.rpm
checksum_type: sha256
summary:
  An implementation of Github-Flavored Markdown written as an extension to the Python Markdown library.

description:
  **PLEASE READ BEFORE USING:**
  **This repository will not receive bug fixes, and might become read-only soon.**
  Rationale: this library has well-known `consistency issues`_ with GitHub-Flavored Markdown rendering. Fixing
  them would require time investment the maintainer cannot provide. The maintainer is also fatigued by
  Markdown's library constantly breaking their internal API with each minor release.
  **Consider instead using** |pycmarkgfm|_ (PyPi_), a lightweight Python 3.5+ wrapper for GitHub's
  own implementation of GFM from the same author,
  which is faster, virtually byte-compatible with GitHub rendering,
  and provides a nice API for managing task lists aka. TODO lists.
  |Build status| |Coverage status| |Documentation status|
  This is an implementation of `GitHub-Flavored Markdown`_ written as an
  extension to the Python `Markdown`_ library. It aims for, but does not
  achieve, maximal compatibility with GitHub's rendering.
  Tested Python versions are 3.5 to 3.8. Sorry, no Python 2.7 support starting
  with py-gfm 1.x since the Python Markdown library itself is Python 3 only.


pkgId: 86d9ffa423a113f0f6b9a7d1e60eb99d5071f5b4a73434ac31b6c881a5583f1e
name: python-py-gql
arch: src
version: 0.6.1
epoch: 0
release: 1
summary: Comprehensive GraphQL implementation for Python.
url: https://github.com/lirsacc/py-gql
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-43aa4ca2-ee30-486c-a697-bc42811bf406
location_href: 00004621-python-py-gql/python-py-gql-0.6.1-1.src.rpm
checksum_type: sha256
description:
  [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/lirsacc/py-gql/ci?logo=GitHub)](https://github.com/lirsacc/py-gql/actions?query=workflow%3Aci) [![Codecov](https://img.shields.io/codecov/c/github/lirsacc/py-gql.svg?logo=CodeCov)](https://codecov.io/gh/lirsacc/py-gql) [![PyPI](https://img.shields.io/pypi/v/py-gql.svg?logo=PyPi&logoColor=white)](https://pypi.org/project/py-gql/) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/py-gql.svg?logo=python&logoColor=white) ![Wheel](https://img.shields.io/pypi/wheel/py-gql.svg) [![Read the Docs (version)](https://img.shields.io/readthedocs/pip/latest.svg?logoColor=white&logo=read-the-docs)](https://py-gql.readthedocs.io/)
  py-gql is a pure python [GraphQL](http://facebook.github.io/graphql/) implementation aimed at creating GraphQL servers and providing common tooling.
  It supports:
  - Parsing the GraphQL query language and schema definition language.
  - Building a GraphQL type schema programmatically and from Schema Definition files (including support for schema directives).
  - Validating and Executing a GraphQL request against a type schema.


pkgId: 59877a3b7255b2608187f71ace194ca187e79d2ad0b4afe04c2a1918d1f238ef
name: python-py-healthcheck
arch: src
version: 1.10.1
epoch: 0
release: 1
summary: Adds healthcheck endpoints to Flask or Tornado apps
url: https://github.com/ateliedocodigo/py-healthcheck
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c311b74b-bd1d-40d6-be13-407e821a35ef
location_href: 00011998-python-py-healthcheck/python-py-healthcheck-1.10.1-1.src.rpm
checksum_type: sha256
description:
  Healthcheck is a library to write simple healthcheck functions that can
  be used to monitor your application. It is possible to use in a ``Flask``
  app or ``Tornado`` app. It's useful for asserting that your dependencies
  are up and running and your application can respond to HTTP requests.
  The Healthcheck functions can be exposed via a user defined ``Flask``
  route so you can use an external monitoring application (``monit``,
  ``nagios``, ``Runscope``, etc.) to check the status and uptime of your
  application.
  New in version 1.1: Healthcheck also gives you a simple Flask route to
  view information about your application's environment. By default, this
  includes data about the operating system, the Python environment, the
  current process, and the application config. You can customize which
  sections are included, or add your own sections to the output.


pkgId: 2f35b4a7f88cbd90fbb16fe58e653b9e611dcd23990ee5b17d19522be5f9ea27
name: python-py-moneyed
arch: src
version: 3.0
epoch: 0
release: 1
summary: Provides Currency and Money classes for use in your Python code.
url: http://github.com/py-moneyed/py-moneyed
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-bda9f2b8-f470-447f-84a7-922096ebcb00
location_href: 00011019-python-py-moneyed/python-py-moneyed-3.0-1.src.rpm
checksum_type: sha256
description:
  The need to represent instances of money frequently arises in software
  development, particularly any financial/economics software. To address that
  need, the py-moneyed package provides the classes of Money and Currency, at a
  level more useful than just using Python's Decimal class, or ($DEITY forbid) the
  float primitive. The package is meant to be stand-alone and used directly, or
  be subclassed further. py-moneyed is BSD-licensed.


pkgId: 3a078bfc337609a30d0dd9422eea6097685834aee8a75bd278ebbcdad3337b5d
name: python-py-radix
arch: src
version: 0.10.0
epoch: 0
release: 1
summary: Radix tree implementation
url: https://github.com/mjschultz/py-radix
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-81fdfb13-1a9b-4533-abd9-18be302582fe
location_href: 00004622-python-py-radix/python-py-radix-0.10.0-1.src.rpm
checksum_type: sha256
description:
  py-radix implements the radix tree data structure for the storage and
  retrieval of IPv4 and IPv6 network prefixes.
  The radix tree is commonly used for routing table lookups. It efficiently
  stores network prefixes of varying lengths and allows fast lookups of
  containing networks.


pkgId: 80ae36ffe6a0028c0a688168acaa1f8be10106967be1e23d9c00a1460792d9dd
name: python-py-vapid
arch: src
version: 1.9.0
epoch: 0
release: 1
summary: Simple VAPID header generation library
url: https://github.com/mozilla-services/vapid
rpm_license: MPL2
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-e3eaa070-4179-4212-9a94-7db1f2655f96
location_href: 00012102-python-py-vapid/python-py-vapid-1.9.0-1.src.rpm
checksum_type: sha256
description:
  This minimal library contains the minimal set of functions you need to
  generate a VAPID key set and get the headers you’ll need to sign a
  WebPush subscription update.
  VAPID is a voluntary standard for WebPush subscription providers (sites
  that send WebPush updates to remote customers) to self-identify to Push
  Servers (the servers that convey the push notifications).
  The VAPID “claims” are a set of JSON keys and values. There are two
  required fields, one semi-optional and several optional additional
  fields.
  At a minimum a VAPID claim set should look like:
     {"sub":"mailto:YourEmail@YourSite.com","aud":"https://PushServer","exp":"ExpirationTimestamp"}
  A few notes:
  **sub** is the email address you wish to have on record for this
  request, prefixed with “``mailto:``”. If things go wrong, this is the
  email that will be used to contact you (for instance). This can be a
  general delivery address like “``mailto:push_operations@example.com``”
  or a specific address like “``mailto:bob@example.com``”.
  **aud** is the audience for the VAPID. This is the scheme and host you
  use to send subscription endpoints and generally coincides with the
  ``endpoint`` specified in the Subscription Info block.
  As example, if a WebPush subscription info contains:
  ``{"endpoint": "https://push.example.com:8012/v1/push/...", ...}``
  then the ``aud`` would be “``https://push.example.com:8012``”
  While some Push Services consider this an optional field, others may be
  stricter.
  **exp** This is the UTC timestamp for when this VAPID request will
  expire. The maximum period is 24 hours. Setting a shorter period can
  prevent “replay” attacks. Setting a longer period allows you to reuse
  headers for multiple sends (e.g. if you’re sending hundreds of updates
  within an hour or so.) If no ``exp`` is included, one that will expire
  in 24 hours will be auto-generated for you.
  Claims should be stored in a JSON compatible file. In the examples
  below, we’ve stored the claims into a file named ``claims.json``.
  py_vapid can either be installed as a library or used as a stand along
  app, ``bin/vapid``.


pkgId: f125f320fef9f1bec6312eeda80468a8cb3721ff1ed703490ff91e42e46e114b
name: python-py2pack
arch: src
version: 0.8.7
epoch: 0
release: 1
summary: Generate distribution packages from PyPI
url: http://github.com/openSUSE/py2pack
rpm_license: Apache Software License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-aec94851-dc98-4e0d-b3a9-cdb4cf28af5b
location_href: 00004623-python-py2pack/python-py2pack-0.8.7-1.src.rpm
checksum_type: sha256
description:
  This script allows to generate RPM spec or DEB dsc files from Python modules.
  It allows to list Python modules or search for them on the Python Package Index
  (PyPI). Conveniently, it can fetch tarballs and changelogs making it an
  universal tool to package Python modules.


pkgId: 6dbc39f59beabbf97c0b2d66f703259f4f8b51acf953e8499a233ca8e6e63dd8
name: python-py3Dmol
arch: src
version: 2.0.1.post1
epoch: 0
release: 1
summary: An IPython interface for embedding 3Dmol.js views in Jupyter notebooks
url: https://3dmol.org
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-34a7ed4f-7aa0-49c5-bbeb-818d4f73a7b6
location_href: 00012689-python-py3dmol/python-py3Dmol-2.0.1.post1-1.src.rpm
checksum_type: sha256
description:
  A simple [IPython/Jupyter](http://jupyter.org/) widget to
  embed an interactive [3Dmol.js](http://3dmol.org) viewer in a notebook.
  The widget is completely static, which means the viewer doesn't need a running
  IPython kernel to be useful and web pages and presentations generated from
  the notebook will work as expected.  However, this also means there is only
  one-way communication between the notebook and the viewer.
  If you experience problems, please file
  an [issue](https://github.com/3dmol/3Dmol.js/issues).
  [An example notebook](http://nbviewer.jupyter.org/github/3dmol/3Dmol.js/blob/master/py3Dmol/examples.ipynb)


pkgId: a05ba5912882e65e997cf2cc2505f7dfc53d4f8f4919ecebdeb440c501fe47b7
name: python-py3nvml
arch: src
version: 0.2.7
epoch: 0
release: 1
summary: Python 3 Bindings for the NVIDIA Management Library
url: https://github.com/fbcotter/py3nvml.git
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-29507957-47c1-4b57-807b-32078ac7552c
location_href: 00004625-python-py3nvml/python-py3nvml-0.2.7-1.src.rpm
checksum_type: sha256
description:
  Documentation also available at `readthedocs`__.
  Python 3 compatible bindings to the NVIDIA Management Library. Can be used to
  query the state of the GPUs on your system. This was ported from the NVIDIA
  provided python bindings `nvidia-ml-py`__, which only
  supported python 2. I have forked from version 7.352.0. The old library was
  itself a wrapper around the `NVIDIA Management Library`__.
  __ https://py3nvml.readthedocs.io/en/latest/
  __ https://pypi.python.org/pypi/nvidia-ml-py/7.352.0
  __ http://developer.nvidia.com/nvidia-management-library-nvml
  In addition to these NVIDIA functions to query the state of the GPU, I have written
  a couple functions/tools to help in using gpus (particularly for a shared
  gpu server). These are:
  - A function to 'restrict' the available GPUs by setting the `CUDA_VISIBLE_DEVICES`
    environment variable.
  - A script for displaying a differently formatted nvidia-smi.
  See the Utils section below for more info.


pkgId: aa3a29cc7e1531a3d4ff767d8cd9707f274d9c9d7f1cf6e07d40fbca128bf57b
name: python-py4j
arch: src
version: 0.10.9.7
epoch: 0
release: 1
summary: Enables Python programs to dynamically access arbitrary Java objects
url: https://www.py4j.org/
rpm_license: BSD License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-3e64d4f7-8347-4ad6-bb81-509d5b8e20a7
location_href: 00004627-python-py4j/python-py4j-0.10.9.7-1.src.rpm
checksum_type: sha256
description:
  Py4J enables Python programs running in a Python interpreter to dynamically access Java objects in a Java Virtual Machine. Methods are called as if the Java objects resided in the Python interpreter and Java collections can be accessed through standard Python collection methods. Py4J also enables Java programs to call back Python objects.


pkgId: 6f61fd66e7b8fb109c1116253a5d6b09ac0613233ecd322d2d31cb8ae9205c4e
name: python-py9p
arch: src
version: 1.0.8
epoch: 0
release: 1
summary: 9P Protocol Implementation
url: https://github.com/svinota/py9p
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-86b3703e-48a7-432b-9dd8-e0728095d74e
location_href: 00004628-python-py9p/python-py9p-1.0.8-1.src.rpm
checksum_type: sha256
description:
  The library allows you to use 9P protocol in your
  applications. Please note, that the library is not
  fully compatible with the original version by
  Andrey Mirtchovski.
  Also, this package provides two components:
   * fuse9p -- FUSE 9p client
   * 9pfs -- simple file server (alpha state)


pkgId: 5aa056baf0daa81f3a4a41aed1f7fa5632cec99a0cad0dd5b79080ae389a38a6
name: python-pyArango
arch: src
version: 2.0.1
epoch: 0
release: 1
summary: An easy to use python driver for ArangoDB with built-in validation
url: https://github.com/tariqdaouda/pyArango
rpm_license: ApacheV2
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-69e88b77-4784-45bb-ad4d-715fcbe296f1
location_href: 00011854-python-pyarango/python-pyArango-2.0.1-1.src.rpm
checksum_type: sha256
description:
  pyArango aims to be an easy to use driver for ArangoDB with built in validation. Collections are treated as types that apply to the documents within. You can be 100% permissive or enforce schemas and validate fields on set, on save or on both.
  pyArango supports graphs, indexes and probably everything that arangodb_ can do.
  pyArango is developed by `Tariq Daouda`_, the full source code is available from github_.
  For the latest news about pyArango, you can follow me on twitter `@tariqdaouda`_.
  If you have any issues with it, please file a github issue.


pkgId: 4b0d26c1c98c283f34234e33ecb926e03acf694b6c4dfb231afd06b84e42e131
name: python-pyCEC
arch: src
version: 0.5.2
epoch: 0
release: 1
summary: Provide HDMI CEC devices as objects, especially for use with Home Assistant
url: https://github.com/konikvranik/pycec/
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-846f84b7-577f-48e3-80c4-0e24681ba3a3
location_href: 00004645-python-pycec/python-pyCEC-0.5.2-1.src.rpm
checksum_type: sha256
description:
  Purpose of this project is to provide object API to libcec for
  home-assistant hdmi\_cec module as `primary
  goal <https://github.com/konikvranik/pyCEC/projects/1>`__ and to make
  TCP <=> HDMI bridge to control HDMI devices over TCP network as a
  `secondary goal <https://github.com/konikvranik/pyCEC/projects/2>`__.


pkgId: 96db4a2ccd55648cbbeb2eaeed1ac68c3bfba04362f1745860ca7b4decb700f4
name: python-pyCLI
arch: src
version: 2.0.3
epoch: 0
release: 1
summary: Simple, object-oriented approach to Python CLI apps
url: http://packages.python.org/pyCLI/
rpm_license: UNKNOWN
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ddc26439-d38d-45b0-905b-bfec11bc0fa8
location_href: 00012315-python-pycli/python-pyCLI-2.0.3-1.src.rpm
checksum_type: sha256
description:
  The cli package is a framework for making simple, correct command
  line applications in Python. With cli, you can quickly add standard
  `command line parsing`_; `logging`_; `unit`_ and `functional`_ testing;
  and `profiling`_ to your CLI apps. To make it easier to do the right
  thing, cli wraps all of these tools into a single, consistent application
  interface.

  .. _command line parsing:   http://www.python.org/dev/peps/pep-0389/#deprecation-of-optparse
  .. _logging:                http://docs.python.org/library/logging.html
  .. _unit:                   http://docs.python.org/library/unittest.html
  .. _functional:             http://pythonpaste.org/scripttest/
  .. _profiling:              http://docs.python.org/library/profile.html


pkgId: 90aab7f18cccb9e54e28ef2e3a75d352dd108f698add4687dd5735519a2bc522
name: python-pyClamd
arch: src
version: 0.4.0
epoch: 0
release: 1
summary: pyClamd is a python interface to Clamd (Clamav daemon).
url: http://xael.org/pages/pyclamd-en.html
rpm_license: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a562dbb7-94c8-4777-a10b-5566a7a43fd3
location_href: 00013393-python-pyclamd/python-pyClamd-0.4.0-1.src.rpm
checksum_type: sha256
description:
  pyClamd is a python interface to Clamd (Clamav daemon). By using pyClamd, you can add virus detection capabilities to your python software in an efficient and easy way. Instead of pyClamav which uses libclamav, pyClamd may be used by a closed source product.


pkgId: b626710925b0fe8b7f6ac584c430fb961008d3d8c7ebf2fe22b0cd4fe757c959
name: python-pyLibravatar
arch: src
version: 1.7
epoch: 0
release: 1
summary: Python module for Libravatar
url: https://launchpad.net/pylibravatar
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8f830440-82c2-42df-bded-510078928626
location_href: 00004725-python-pylibravatar/python-pyLibravatar-1.7-1.src.rpm
checksum_type: sha256
description:
  PyLibravatar is an easy way to make use of the federated `Libravatar`_
  avatar hosting service from within your Python applications.

  See the `project page`_ to file bugs or ask questions.

  .. _Libravatar: https://www.libravatar.org/
  .. _project page: https://launchpad.net/pylibravatar


pkgId: 6bea3680604be3ae3c4864aca8e91dad5fd20d981cdc61d3ecc69522a4f6ac15
name: python-pyModbusTCP
arch: src
version: 0.2.0
epoch: 0
release: 1
summary: A simple Modbus/TCP library for Python
url: https://github.com/sourceperl/pyModbusTCP
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ad235955-b4c5-467a-9d73-c9005443f02e
location_href: 00004629-python-pyModbusTCP/python-pyModbusTCP-0.2.0-1.src.rpm
checksum_type: sha256
description:
  A simple Modbus/TCP client library for Python.
  pyModbusTCP is pure Python code without any extension or external module dependency.
  Since version 0.1.0, a server is also available for test purpose only (don't use in project).


pkgId: 969e54f0ce4262a3826d8467af0b728708d9489f89a6825065f2f57aaf50d845
name: python-pyPrivnote
arch: src
version: 0.0.1a1
epoch: 0
release: 1
summary: A Python Interface to Privnote service
url: https://github.com/intelligentguy/pyPrivnote
rpm_license: GPLv3+
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a161be99-8d73-4072-8b3d-0ec318cd68b1
location_href: 00011453-python-pyprivnote/python-pyPrivnote-0.0.1a1-1.src.rpm
checksum_type: sha256
description:
  A Python Interface to Privnote service




  Privnote allows you to create one-time-pad encrypted, burn-after-reading notes over the internet. It's a great way to share passwords or other sensitive peices of information.



  ```shell
  pip install pyPrivnote
  ```



  Functions **create_note** and **read_note** thats all you need to use full functionality of Privnote



  ```python
  import pyPrivnote as pn

  note_link = pn.create_note("Private message")

  ```



  ```python
  note_text = pn.read_note(note_link)

  ```



  ```python
  import pyPrivnote as pn

  note_link = pn.create_note("Super secret message", manual_pass="12345")


  note_text = pn.read_note(note_link, password="12345")

  ```


  **Manual password** <br>
  **E-mail notification** with _reference name_ <br>
  Note **self-destructs** after reading or _expire lifetime_ <br>
  **Asking confirmation** before reading _(only for web reading)_

  ```python
  import pyPrivnote as pn

  note_link = pn.create_note(
                  "Super secret message",
                  manual_pass="12345",
                  duration_hours=5,
                  ask_confirm=False,
                  notify_email="address@domain.com",
                  email_ref_name="Note sent to Bob"
                  )
  ```



  v0.0.1 - First release


pkgId: 3fda5bb45c7fc71ae38a64afdba201af64176f4d32a0bcc94b144c8b83b3ca28
name: python-pyRFC3339
arch: src
version: 1.1
epoch: 0
release: 1
summary: Generate and parse RFC 3339 timestamps
url: https://github.com/kurtraschke/pyRFC3339
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-3e19f708-267c-4965-9b12-6fab2995d7e5
location_href: 00004784-python-pyrfc3339/python-pyRFC3339-1.1-1.src.rpm
checksum_type: sha256
description:
  pyRFC3339 parses and generates :RFC:`3339`-compliant timestamps using `Python <https://www.python.org/>`_ `datetime.datetime <https://docs.python.org/2/library/datetime.html#datetime-objects>`_ objects.
  >>> from pyrfc3339 import generate, parse
  >>> from datetime import datetime
  >>> import pytz
  >>> generate(datetime.utcnow().replace(tzinfo=pytz.utc)) #doctest:+ELLIPSIS
  '...T...Z'
  >>> parse('2009-01-01T10:01:02Z')
  datetime.datetime(2009, 1, 1, 10, 1, 2, tzinfo=<UTC>)
  >>> parse('2009-01-01T14:01:02-04:00')
  datetime.datetime(2009, 1, 1, 14, 1, 2, tzinfo=<UTC-04:00>)


pkgId: 99c41522528ba1574a8a327c0a495ffcf1c6b69aa4cf09c30ec466b911fbadde
name: python-pySmartDL
arch: src
version: 1.3.4
epoch: 0
release: 1
summary: A Smart Download Manager for Python
url: http://pypi.python.org/pypi/pySmartDL/
rpm_license: Public Domain
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a46e411a-be2e-4182-b632-46d2ef2b8a78
location_href: 00011680-python-pysmartdl/python-pySmartDL-1.3.4-1.src.rpm
checksum_type: sha256
description:
  ``pySmartDL`` strives to be a full-fledged smart download manager for Python. Main features:
  * Built-in download acceleration (with the `multipart downloading technique <http://stackoverflow.com/questions/93642/how-do-download-accelerators-work>`_).
  * Mirrors support.
  * Pause/Unpause feature.
  * Speed limiting feature.
  * Hash checking.
  * Non-blocking, shows progress bar, download speed and eta.
  * Full support for custom headers and methods.
  * Python 3 Support


pkgId: 66199b3694547cf045be5bf43461a8b35e49c8611de1501349a9f99ad4ab3d16
name: python-pyTelegramBotAPI
arch: src
version: 4.10.0
epoch: 0
release: 1
summary: Python Telegram bot api.
url: https://github.com/eternnoir/pyTelegramBotAPI
rpm_license: GPL2
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-3185d19b-928a-4732-b5fd-6f5e4b0f0e1e
location_href: 00004823-python-pytelegrambotapi/python-pyTelegramBotAPI-4.10.0-1.src.rpm
checksum_type: sha256
description:
  [![PyPi Package Version](https://img.shields.io/pypi/v/pyTelegramBotAPI.svg)](https://pypi.python.org/pypi/pyTelegramBotAPI)
  [![Supported Python versions](https://img.shields.io/pypi/pyversions/pyTelegramBotAPI.svg)](https://pypi.python.org/pypi/pyTelegramBotAPI)
  [![Documentation Status](https://readthedocs.org/projects/pytba/badge/?version=latest)](https://pytba.readthedocs.io/en/latest/?badge=latest)
  [![Build Status](https://travis-ci.org/eternnoir/pyTelegramBotAPI.svg?branch=master)](https://travis-ci.org/eternnoir/pyTelegramBotAPI)
  [![PyPi downloads](https://img.shields.io/pypi/dm/pyTelegramBotAPI.svg)](https://pypi.org/project/pyTelegramBotAPI/)
  [![PyPi status](https://img.shields.io/pypi/status/pytelegrambotapi.svg?style=flat-square)](https://pypi.python.org/pypi/pytelegrambotapi)



  <p align="center">A simple, but extensible Python implementation for the <a href="https://core.telegram.org/bots/api">Telegram Bot API</a>.</p>
  <p align="center">Both synchronous and asynchronous.</p>



  <h2><a href='https://pytba.readthedocs.io/en/latest/index.html'>Official documentation</a></h2>
  <h2><a href='https://pytba.readthedocs.io/ru/latest/index.html'>Official ru documentation</a></h2>



    * [Getting started](#getting-started)
    * [Writing your first bot](#writing-your-first-bot)
      * [Prerequisites](#prerequisites)
      * [A simple echo bot](#a-simple-echo-bot)
    * [General API Documentation](#general-api-documentation)
      * [Types](#types)
      * [Methods](#methods)
      * [General use of the API](#general-use-of-the-api)
        * [Message handlers](#message-handlers)
        * [Edited Message handler](#edited-message-handler)
        * [Channel Post handler](#channel-post-handler)
        * [Edited Channel Post handler](#edited-channel-post-handler)
        * [Callback Query handlers](#callback-query-handler)
        * [Shipping Query Handler](#shipping-query-handler)
        * [Pre Checkout Query Handler](#pre-checkout-query-handler)
        * [Poll Handler](#poll-handler)
        * [Poll Answer Handler](#poll-answer-handler)
        * [My Chat Member Handler](#my-chat-member-handler)
        * [Chat Member Handler](#chat-member-handler)
        * [Chat Join request handler](#chat-join-request-handler)
      * [Inline Mode](#inline-mode)
        * [Inline handler](#inline-handler)
        * [Chosen Inline handler](#chosen-inline-handler)
        * [Answer Inline Query](#answer-inline-query)
      * [Additional API features](#additional-api-features)
        * [Middleware handlers](#middleware-handlers)
        * [Custom filters](#custom-filters)
        * [TeleBot](#telebot)
        * [Reply markup](#reply-markup)
    * [Advanced use of the API](#advanced-use-of-the-api)
      * [Using local Bot API Server](#using-local-bot-api-sever)
      * [Asynchronous TeleBot](#asynchronous-telebot)
      * [Sending large text messages](#sending-large-text-messages)
      * [Controlling the amount of Threads used by TeleBot](#controlling-the-amount-of-threads-used-by-telebot)
      * [The listener mechanism](#the-listener-mechanism)
      * [Using web hooks](#using-web-hooks)
      * [Logging](#logging)
      * [Proxy](#proxy)
      * [Testing](#testing)
    * [API conformance limitations](#api-conformance-limitations)
    * [AsyncTeleBot](#asynctelebot)
    * [F.A.Q.](#faq)
      * [How can I distinguish a User and a GroupChat in message.chat?](#how-can-i-distinguish-a-user-and-a-groupchat-in-messagechat)
      * [How can I handle reocurring ConnectionResetErrors?](#how-can-i-handle-reocurring-connectionreseterrors)
    * [The Telegram Chat Group](#the-telegram-chat-group)
    * [Telegram Channel](#telegram-channel)
    * [More examples](#more-examples)
    * [Code Template](#code-template)
    * [Bots using this library](#bots-using-this-library)



  This API is tested with Python 3.7-3.11 and Pypy 3.
  There are two ways to install the library:

  * Installation using pip (a Python package manager):

  ```
  $ pip install pyTelegramBotAPI
  ```
  * Installation from source (requires git):

  ```
  $ git clone https://github.com/eternnoir/pyTelegramBotAPI.git
  $ cd pyTelegramBotAPI
  $ python setup.py install
  ```
  or:
  ```
  $ pip install git+https://github.com/eternnoir/pyTelegramBotAPI.git
  ```

  It is generally recommended to use the first option.

  *While the API is production-ready, it is still under development and it has regular updates, do not forget to update it regularly by calling*
  ```
  pip install pytelegrambotapi --upgrade
  ```





  It is presumed that you [have obtained an API token with @BotFather](https://core.telegram.org/bots#botfather). We will call this token `TOKEN`.
  Furthermore, you have basic knowledge of the Python programming language and more importantly [the Telegram Bot API](https://core.telegram.org/bots/api).



  The TeleBot class (defined in \__init__.py) encapsulates all API calls in a single class. It provides functions such as `send_xyz` (`send_message`, `send_document` etc.) and several ways to listen for incoming messages.

  Create a file called `echo_bot.py`.
  Then, open the file and create an instance of the TeleBot class.
  ```python
  import telebot

  bot = telebot.TeleBot("TOKEN", parse_mode=None) # You can set parse_mode by default. HTML or MARKDOWN
  ```
  *Note: Make sure to actually replace TOKEN with your own API token.*

  After that declaration, we need to register some so-called message handlers. Message handlers define filters which a message must pass. If a message passes the filter, the decorated function is called and the incoming message is passed as an argument.

  Let's define a message handler which handles incoming `/start` and `/help` commands.
  ```python
  @bot.message_handler(commands=['start', 'help'])
  def send_welcome(message):
  	bot.reply_to(message, "Howdy, how are you doing?")
  ```
  A function which is decorated by a message handler __can have an arbitrary name, however, it must have only one parameter (the message)__.

  Let's add another handler:
  ```python
  @bot.message_handler(func=lambda m: True)
  def echo_all(message):
  	bot.reply_to(message, message.text)
  ```
  This one echoes all incoming text messages back to the sender. It uses a lambda function to test a message. If the lambda returns True, the message is handled by the decorated function. Since we want all messages to be handled by this function, we simply always return True.

  *Note: all handlers are tested in the order in which they were declared*

  We now have a basic bot which replies a static message to "/start" and "/help" commands and which echoes the rest of the sent messages. To start the bot, add the following to our source file:
  ```python
  bot.infinity_polling()
  ```
  Alright, that's it! Our source file now looks like this:
  ```python
  import telebot

  bot = telebot.TeleBot("YOUR_BOT_TOKEN")

  @bot.message_handler(commands=['start', 'help'])
  def send_welcome(message):
  	bot.reply_to(message, "Howdy, how are you doing?")

  @bot.message_handler(func=lambda message: True)
  def echo_all(message):
  	bot.reply_to(message, message.text)

  bot.infinity_polling()
  ```
  To start the bot, simply open up a terminal and enter `python echo_bot.py` to run the bot! Test it by sending commands ('/start' and '/help') and arbitrary text messages.





  All types are defined in types.py. They are all completely in line with the [Telegram API's definition of the types](https://core.telegram.org/bots/api#available-types), except for the Message's `from` field, which is renamed to `from_user` (because `from` is a Python reserved token). Thus, attributes such as `message_id` can be accessed directly with `message.message_id`. Note that `message.chat` can be either an instance of `User` or `GroupChat` (see [How can I distinguish a User and a GroupChat in message.chat?](#how-can-i-distinguish-a-user-and-a-groupchat-in-messagechat)).

  The Message object also has a `content_type`attribute, which defines the type of the Message. `content_type` can be one of the following strings:
  `text`, `audio`, `document`, `photo`, `sticker`, `video`, `video_note`, `voice`, `location`, `contact`, `new_chat_members`, `left_chat_member`, `new_chat_title`, `new_chat_photo`, `delete_chat_photo`, `group_chat_created`, `supergroup_chat_created`, `channel_chat_created`, `migrate_to_chat_id`, `migrate_from_chat_id`, `pinned_message`, `web_app_data`.

  You can use some types in one function. Example:

  ```content_types=["text", "sticker", "pinned_message", "photo", "audio"]```



  All [API methods](https://core.telegram.org/bots/api#available-methods) are located in the TeleBot class. They are renamed to follow common Python naming conventions. E.g. `getMe` is renamed to `get_me` and `sendMessage` to `send_message`.



  Outlined below are some general use cases of the API.


  A message handler is a function that is decorated with the `message_handler` decorator of a TeleBot instance. Message handlers consist of one or multiple filters.
  Each filter must return True for a certain message in order for a message handler to become eligible to handle that message. A message handler is declared in the following way (provided `bot` is an instance of TeleBot):
  ```python
  @bot.message_handler(filters)
  def function_name(message):
  	bot.reply_to(message, "This is a message handler")
  ```
  `function_name` is not bound to any restrictions. Any function name is permitted with message handlers. The function must accept at most one argument, which will be the message that the function must handle.
  `filters` is a list of keyword arguments.
  A filter is declared in the following manner: `name=argument`. One handler may have multiple filters.
  TeleBot supports the following filters:

  |name|argument(s)|Condition|
  |:---:|---| ---|
  |content_types|list of strings (default `['text']`)|`True` if message.content_type is in the list of strings.|
  |regexp|a regular expression as a string|`True` if `re.search(regexp_arg)` returns `True` and `message.content_type == 'text'` (See [Python Regular Expressions](https://docs.python.org/2/library/re.html))|
  |commands|list of strings|`True` if `message.content_type == 'text'` and `message.text` starts with a command that is in the list of strings.|
  |chat_types|list of chat types|`True` if `message.chat.type` in your filter|
  |func|a function (lambda or function reference)|`True` if the lambda or function reference returns `True`|

  Here are some examples of using the filters and message handlers:

  ```python
  import telebot
  bot = telebot.TeleBot("TOKEN")


  @bot.message_handler(commands=['start', 'help'])
  def handle_start_help(message):
  	pass


  @bot.message_handler(content_types=['document', 'audio'])
  def handle_docs_audio(message):
  	pass


  @bot.message_handler(regexp="SOME_REGEXP")
  def handle_message(message):
  	pass


  @bot.message_handler(func=lambda message: message.document.mime_type == 'text/plain', content_types=['document'])
  def handle_text_doc(message):
  	pass


  def test_message(message):
  	return message.document.mime_type == 'text/plain'

  @bot.message_handler(func=test_message, content_types=['document'])
  def handle_text_doc(message):
  	pass



  @bot.message_handler(commands=['hello'])
  @bot.message_handler(func=lambda msg: msg.text.encode("utf-8") == SOME_FANCY_EMOJI)
  def send_something(message):
      pass
  ```
  **Important: all handlers are tested in the order in which they were declared**


  Handle edited messages
  `@bot.edited_message_handler(filters) # <- passes a Message type object to your function`


  Handle channel post messages
  `@bot.channel_post_handler(filters) # <- passes a Message type object to your function`


  Handle edited channel post messages
  `@bot.edited_channel_post_handler(filters) # <- passes a Message type object to your function`


  Handle callback queries
  ```python
  @bot.callback_query_handler(func=lambda call: True)
  def test_callback(call): # <- passes a CallbackQuery type object to your function
      logger.info(call)
  ```


  Handle shipping queries
  `@bot.shipping_query_handler() # <- passes a ShippingQuery type object to your function`


  Handle pre checkoupt queries
  `@bot.pre_checkout_query_handler() # <- passes a PreCheckoutQuery type object to your function`


  Handle poll updates
  `@bot.poll_handler() # <- passes a Poll type object to your function`


  Handle poll answers
  `@bot.poll_answer_handler() # <- passes a PollAnswer type object to your function`


  Handle updates of a the bot's member status in a chat
  `@bot.my_chat_member_handler() # <- passes a ChatMemberUpdated type object to your function`


  Handle updates of a chat member's status in a chat
  `@bot.chat_member_handler() # <- passes a ChatMemberUpdated type object to your function`
  *Note: "chat_member" updates are not requested by default. If you want to allow all update types, set `allowed_updates` in `bot.polling()` / `bot.infinity_polling()` to `util.update_types`*


  Handle chat join requests using:
  `@bot.chat_join_request_handler() # <- passes ChatInviteLink type object to your function`



  More information about [Inline mode](https://core.telegram.org/bots/inline).



  Now, you can use inline_handler to get inline queries in telebot.

  ```python

  @bot.inline_handler(lambda query: query.query == 'text')
  def query_text(inline_query):
      
  ```



  Use chosen_inline_handler to get chosen_inline_result in telebot. Don't forgot add the /setinlinefeedback
  command for @Botfather.

  More information : [collecting-feedback](https://core.telegram.org/bots/inline#collecting-feedback)

  ```python
  @bot.chosen_inline_handler(func=lambda chosen_inline_result: True)
  def test_chosen(chosen_inline_result):
      
  ```



  ```python
  @bot.inline_handler(lambda query: query.query == 'text')
  def query_text(inline_query):
      try:
          r = types.InlineQueryResultArticle('1', 'Result', types.InputTextMessageContent('Result message.'))
          r2 = types.InlineQueryResultArticle('2', 'Result2', types.InputTextMessageContent('Result message2.'))
          bot.answer_inline_query(inline_query.id, [r, r2])
      except Exception as e:
          print(e)

  ```





  A middleware handler is a function that allows you to modify requests or the bot context as they pass through the
  Telegram to the bot. You can imagine middleware as a chain of logic connection handled before any other handlers are
  executed. Middleware processing is disabled by default, enable it by setting `apihelper.ENABLE_MIDDLEWARE = True`.

  ```python
  apihelper.ENABLE_MIDDLEWARE = True

  @bot.middleware_handler(update_types=['message'])
  def modify_message(bot_instance, message):
      
      message.another_text = message.text + ':changed'

  @bot.message_handler(commands=['start'])
  def start(message):
      
      assert message.another_text == message.text + ':changed'
  ```
  There are other examples using middleware handler in the [examples/middleware](examples/middleware) directory.


  There are class-based middlewares.
  Basic class-based middleware looks like this:
  ```python
  class Middleware(BaseMiddleware):
      def __init__(self):
          self.update_types = ['message']
      def pre_process(self, message, data):
          data['foo'] = 'Hello' # just for example
          
          
          
      def post_process(self, message, data, exception=None):
          print(data['foo'])
          if exception: # check for exception
              print(exception)
  ```
  Class-based middleware should have to functions: post and pre process.
  So, as you can see, class-based middlewares work before and after handler execution.
  For more, check out in [examples](https://github.com/eternnoir/pyTelegramBotAPI/tree/master/examples/middleware/class_based)


  Also, you can use built-in custom filters. Or, you can create your own filter.

  [Example of custom filter](https://github.com/eternnoir/pyTelegramBotAPI/blob/master/examples/custom_filters/general_custom_filters.py)

  Also, we have examples on them. Check this links:

  You can check some built-in filters in source [code](https://github.com/eternnoir/pyTelegramBotAPI/blob/master/telebot/custom_filters.py)

  Example of [filtering by id](https://github.com/eternnoir/pyTelegramBotAPI/blob/master/examples/custom_filters/id_filter_example.py)

  Example of [filtering by text](https://github.com/eternnoir/pyTelegramBotAPI/blob/master/examples/custom_filters/text_filter_example.py)

  If you want to add some built-in filter, you are welcome to add it in custom_filters.py file.

  Here is example of creating filter-class:

  ```python
  class IsAdmin(telebot.custom_filters.SimpleCustomFilter):
      
      key='is_chat_admin'
      @staticmethod
      def check(message: telebot.types.Message):
          return bot.get_chat_member(message.chat.id,message.from_user.id).status in ['administrator','creator']


  bot.add_custom_filter(IsAdmin())


  @bot.message_handler(is_chat_admin=True)
  def admin_of_group(message):
  	bot.send_message(message.chat.id, 'You are admin of this group!')

  ```



  ```python
  import telebot

  TOKEN = '<token_string>'
  tb = telebot.TeleBot(TOKEN)	#create a new Telegram Bot object





  tb.infinity_polling(interval=0, timeout=20)


  user = tb.get_me()


  tb.set_webhook(url="http://example.com", certificate=open('mycert.pem'))

  tb.remove_webhook()


  updates = tb.get_updates()

  updates = tb.get_updates(1234,100,20) #get_Updates(offset, limit, timeout):


  tb.send_message(chat_id, text)


  tb.edit_message_text(new_text, chat_id, message_id)


  tb.forward_message(to_chat_id, from_chat_id, message_id)



  photo = open('/tmp/photo.png', 'rb')
  tb.send_photo(chat_id, photo)
  tb.send_photo(chat_id, "FILEID")


  audio = open('/tmp/audio.mp3', 'rb')
  tb.send_audio(chat_id, audio)
  tb.send_audio(chat_id, "FILEID")


  tb.send_audio(CHAT_ID, file_data, 1, 'eternnoir', 'pyTelegram')


  voice = open('/tmp/voice.ogg', 'rb')
  tb.send_voice(chat_id, voice)
  tb.send_voice(chat_id, "FILEID")


  doc = open('/tmp/file.txt', 'rb')
  tb.send_document(chat_id, doc)
  tb.send_document(chat_id, "FILEID")


  sti = open('/tmp/sti.webp', 'rb')
  tb.send_sticker(chat_id, sti)
  tb.send_sticker(chat_id, "FILEID")


  video = open('/tmp/video.mp4', 'rb')
  tb.send_video(chat_id, video)
  tb.send_video(chat_id, "FILEID")


  videonote = open('/tmp/videonote.mp4', 'rb')
  tb.send_video_note(chat_id, videonote)
  tb.send_video_note(chat_id, "FILEID")


  tb.send_location(chat_id, lat, lon)




  tb.send_chat_action(chat_id, action_string)




  import requests
  file_info = tb.get_file(file_id)

  file = requests.get('https://api.telegram.org/file/bot{0}/{1}'.format(API_TOKEN, file_info.file_path))


  ```

  All `send_xyz` functions of TeleBot take an optional `reply_markup` argument. This argument must be an instance of `ReplyKeyboardMarkup`, `ReplyKeyboardRemove` or `ForceReply`, which are defined in types.py.

  ```python
  from telebot import types









  markup = types.ReplyKeyboardMarkup(row_width=2)
  itembtn1 = types.KeyboardButton('a')
  itembtn2 = types.KeyboardButton('v')
  itembtn3 = types.KeyboardButton('d')
  markup.add(itembtn1, itembtn2, itembtn3)
  tb.send_message(chat_id, "Choose one letter:", reply_markup=markup)


  markup = types.ReplyKeyboardMarkup()
  itembtna = types.KeyboardButton('a')
  itembtnv = types.KeyboardButton('v')
  itembtnc = types.KeyboardButton('c')
  itembtnd = types.KeyboardButton('d')
  itembtne = types.KeyboardButton('e')
  markup.row(itembtna, itembtnv)
  markup.row(itembtnc, itembtnd, itembtne)
  tb.send_message(chat_id, "Choose one letter:", reply_markup=markup)
  ```
  The last example yields this result:

  ![ReplyKeyboardMarkup](https://farm3.staticflickr.com/2933/32418726704_9ef76093cf_o_d.jpg "ReplyKeyboardMarkup")

  ```python


  markup = types.ReplyKeyboardRemove(selective=False)
  tb.send_message(chat_id, message, reply_markup=markup)
  ```

  ```python


  markup = types.ForceReply(selective=False)
  tb.send_message(chat_id, "Send me another word:", reply_markup=markup)
  ```
  ForceReply:

  ![ForceReply](https://farm4.staticflickr.com/3809/32418726814_d1baec0fc2_o_d.jpg "ForceReply")



  This object represents one special entity in a text message. For example, hashtags, usernames, URLs, etc.
  Attributes:
  * `type`
  * `url`
  * `offset`
  * `length`
  * `user`


  **Here's an Example:**`message.entities[num].<attribute>`<br>
  Here `num` is the entity number or order of entity in a reply, for if incase there are multiple entities in the reply/message.<br>
  `message.entities` returns a list of entities object. <br>
  `message.entities[0].type` would give the type of the first entity<br>
  Refer [Bot Api](https://core.telegram.org/bots/api#messageentity) for extra details




  Since version 5.0 of the Bot API, you have the possibility to run your own [Local Bot API Server](https://core.telegram.org/bots/api#using-a-local-bot-api-server).
  pyTelegramBotAPI also supports this feature.
  ```python
  from telebot import apihelper

  apihelper.API_URL = "http://localhost:4200/bot{0}/{1}"
  ```
  **Important: Like described [here](https://core.telegram.org/bots/api#logout), you have to log out your bot from the Telegram server before switching to your local API server. in pyTelegramBotAPI use `bot.log_out()`**

  *Note: 4200 is an example port*


  New: There is an asynchronous implementation of telebot.
  To enable this behaviour, create an instance of AsyncTeleBot instead of TeleBot.
  ```python
  tb = telebot.AsyncTeleBot("TOKEN")
  ```
  Now, every function that calls the Telegram API is executed in a separate asynchronous task.
  Using AsyncTeleBot allows you to do the following:
  ```python
  import telebot

  tb = telebot.AsyncTeleBot("TOKEN")

  @tb.message_handler(commands=['start'])
  async def start_message(message):
  	await bot.send_message(message.chat.id, 'Hello!')

  ```

  See more in [examples](https://github.com/eternnoir/pyTelegramBotAPI/tree/master/examples/asynchronous_telebot)


  Sometimes you must send messages that exceed 5000 characters. The Telegram API can not handle that many characters in one request, so we need to split the message in multiples. Here is how to do that using the API:
  ```python
  from telebot import util
  large_text = open("large_text.txt", "rb").read()



  splitted_text = util.split_string(large_text, 3000)

  for text in splitted_text:
  	tb.send_message(chat_id, text)
  ```

  Or you can use the new `smart_split` function to get more meaningful substrings:
  ```python
  from telebot import util
  large_text = open("large_text.txt", "rb").read()



  splitted_text = util.smart_split(large_text, chars_per_string=3000)
  for text in splitted_text:
  	tb.send_message(chat_id, text)
  ```

  The TeleBot constructor takes the following optional arguments:

   - threaded: True/False (default True). A flag to indicate whether
     TeleBot should execute message handlers on it's polling Thread.


  As an alternative to the message handlers, one can also register a function as a listener to TeleBot.

  NOTICE: handlers won't disappear! Your message will be processed both by handlers and listeners. Also, it's impossible to predict which will work at first because of threading. If you use threaded=False, custom listeners will work earlier, after them handlers will be called.
  Example:
  ```python
  def handle_messages(messages):
  	for message in messages:
  		
  		bot.reply_to(message, 'Hi')

  bot.set_update_listener(handle_messages)
  bot.infinity_polling()
  ```


  When using webhooks telegram sends one Update per call, for processing it you should call process_new_messages([update.message]) when you recieve it.

  There are some examples using webhooks in the [examples/webhook_examples](examples/webhook_examples) directory.


  You can use the Telebot module logger to log debug info about Telebot. Use `telebot.logger` to get the logger of the TeleBot module.
  It is possible to add custom logging Handlers to the logger. Refer to the [Python logging module page](https://docs.python.org/2/library/logging.html) for more info.

  ```python
  import logging

  logger = telebot.logger
  telebot.logger.setLevel(logging.DEBUG) # Outputs debug messages to console.
  ```


  For sync:

  You can use proxy for request. `apihelper.proxy` object will use by call `requests` proxies argument.

  ```python
  from telebot import apihelper

  apihelper.proxy = {'http':'http://127.0.0.1:3128'}
  ```

  If you want to use socket5 proxy you need install dependency `pip install requests[socks]` and make sure, that you have the latest version of `gunicorn`, `PySocks`, `pyTelegramBotAPI`, `requests` and `urllib3`.

  ```python
  apihelper.proxy = {'https':'socks5://userproxy:password@proxy_address:port'}
  ```

  For async:
  ```python
  from telebot import asyncio_helper

  asyncio_helper.proxy = 'http://127.0.0.1:3128' #url
  ```



  You can disable or change the interaction with real Telegram server by using
  ```python
  apihelper.CUSTOM_REQUEST_SENDER = your_handler
  ```
  parameter. You can pass there your own function that will be called instead of _requests.request_.

  For example:
  ```python
  def custom_sender(method, url, **kwargs):
      print("custom_sender. method: {}, url: {}, params: {}".format(method, url, kwargs.get("params")))
      result = util.CustomRequestResponse('{"ok":true,"result":{"message_id": 1, "date": 1, "chat": {"id": 1, "type": "private"}}}')
      return result
  ```

  Then you can use API and proceed requests in your handler code.
  ```python
  apihelper.CUSTOM_REQUEST_SENDER = custom_sender
  tb = TeleBot("test")
  res = tb.send_message(123, "Test")
  ```

  Result will be:

  `custom_sender. method: post, url: https://api.telegram.org/botololo/sendMessage, params: {'chat_id': '123', 'text': 'Test'}`




  * ➕ [Bot API 4.5](https://core.telegram.org/bots/api-changelog#december-31-2019) - No nested MessageEntities and Markdown2 support
  * ➕ [Bot API 4.1](https://core.telegram.org/bots/api-changelog#august-27-2018)   - No Passport support
  * ➕ [Bot API 4.0](https://core.telegram.org/bots/api-changelog#july-26-2018)     - No Passport support




  We have a fully asynchronous version of TeleBot.
  This class is not controlled by threads. Asyncio tasks are created to execute all the stuff.


  Echo Bot example on AsyncTeleBot:

  ```python



  from telebot.async_telebot import AsyncTeleBot
  import asyncio
  bot = AsyncTeleBot('TOKEN')




  @bot.message_handler(commands=['help', 'start'])
  async def send_welcome(message):
      await bot.reply_to(message, """\
  Hi there, I am EchoBot.
  I am here to echo your kind words back to you. Just say anything nice and I'll say the exact same thing to you!\
  """)



  @bot.message_handler(func=lambda message: True)
  async def echo_message(message):
      await bot.reply_to(message, message.text)


  asyncio.run(bot.polling())
  ```
  As you can see here, keywords are await and async.


  Asynchronous tasks depend on processor performance. Many asynchronous tasks can run parallelly, while thread tasks will block each other.


  AsyncTeleBot is asynchronous. It uses aiohttp instead of requests module.


  See more examples in our [examples](https://github.com/eternnoir/pyTelegramBotAPI/tree/master/examples/asynchronous_telebot) folder





  Telegram Bot API support new type Chat for message.chat.

  - Check the ```type``` attribute in ```Chat``` object:
  ```python
  if message.chat.type == "private":
      

  if message.chat.type == "group":
  	

  if message.chat.type == "supergroup":
  	

  if message.chat.type == "channel":
  	

  ```



  Bot instances that were idle for a long time might be rejected by the server when sending a message due to a timeout of the last used session. Add `apihelper.SESSION_TIME_TO_LIVE = 5 * 60` to your initialisation to force recreation after 5 minutes without any activity.



  Get help. Discuss. Chat.

  * Join the [pyTelegramBotAPI Telegram Chat Group](https://telegram.me/joinchat/Bn4ixj84FIZVkwhk2jag6A)



  Join the [News channel](https://t.me/pyTelegramBotAPI). Here we will post releases and updates.



  * [Echo Bot](https://github.com/eternnoir/pyTelegramBotAPI/blob/master/examples/echo_bot.py)
  * [Deep Linking](https://github.com/eternnoir/pyTelegramBotAPI/blob/master/examples/deep_linking.py)
  * [next_step_handler Example](https://github.com/eternnoir/pyTelegramBotAPI/blob/master/examples/step_example.py)


  Template is a ready folder that contains architecture of basic project.
  Here are some examples of template:

  * [AsyncTeleBot template](https://github.com/coder2020official/asynctelebot_template)
  * [TeleBot template](https://github.com/coder2020official/telebot_template)



  * [SiteAlert bot](https://telegram.me/SiteAlert_bot) ([source](https://github.com/ilteoood/SiteAlert-Python)) by *ilteoood* - Monitors websites and sends a notification on changes
  * [TelegramLoggingBot](https://github.com/aRandomStranger/TelegramLoggingBot) by *aRandomStranger*
  * [Telegram LMGTFY_bot](https://github.com/GabrielRF/telegram-lmgtfy_bot) by *GabrielRF* - Let me Google that for you.
  * [Telegram Proxy Bot](https://github.com/mrgigabyte/proxybot) by *mrgigabyte*
  * [RadRetroRobot](https://github.com/Tronikart/RadRetroRobot) by *Tronikart* - Multifunctional Telegram Bot RadRetroRobot.
  * [League of Legends bot](https://telegram.me/League_of_Legends_bot) ([source](https://github.com/i32ropie/lol)) by *i32ropie*
  * [NeoBot](https://github.com/neoranger/NeoBot) by [@NeoRanger](https://github.com/neoranger)
  * [ColorCodeBot](https://t.me/colorcodebot) ([source](https://github.com/andydecleyre/colorcodebot)) - Share code snippets as beautifully syntax-highlighted HTML and/or images.
  * [ComedoresUGRbot](http://telegram.me/ComedoresUGRbot) ([source](https://github.com/alejandrocq/ComedoresUGRbot)) by [*alejandrocq*](https://github.com/alejandrocq) - Telegram bot to check the menu of Universidad de Granada dining hall.
  * [proxybot](https://github.com/p-hash/proxybot) - Simple Proxy Bot for Telegram. by p-hash
  * [DonantesMalagaBot](https://github.com/vfranch/DonantesMalagaBot) - DonantesMalagaBot facilitates information to Malaga blood donors about the places where they can donate today or in the incoming days. It also records the date of the last donation so that it helps the donors to know when they can donate again. - by vfranch
  * [DuttyBot](https://github.com/DmytryiStriletskyi/DuttyBot) by *Dmytryi Striletskyi* - Timetable for one university in Kiev.
  * [wat-bridge](https://github.com/rmed/wat-bridge) by [*rmed*](https://github.com/rmed) - Send and receive messages to/from WhatsApp through Telegram
  * [filmratingbot](http://t.me/filmratingbot)([source](https://github.com/jcolladosp/film-rating-bot)) by [*jcolladosp*](https://github.com/jcolladosp) - Telegram bot using the Python API that gets films rating from IMDb and metacritic
  * [Send2Kindlebot](http://t.me/Send2KindleBot) ([source](https://github.com/GabrielRF/Send2KindleBot)) by *GabrielRF* - Send to Kindle service.
  * [RastreioBot](http://t.me/RastreioBot) ([source](https://github.com/GabrielRF/RastreioBot)) by *GabrielRF* - Bot used to track packages on the Brazilian Mail Service.
  * [Spbu4UBot](http://t.me/Spbu4UBot)([link](https://github.com/EeOneDown/spbu4u)) by *EeOneDown* - Bot with timetables for SPbU students.
  * [SmartySBot](http://t.me/ZDU_bot)([link](https://github.com/0xVK/SmartySBot)) by *0xVK* - Telegram timetable bot, for Zhytomyr Ivan Franko State University students.
  * [LearnIt](https://t.me/LearnItbot)([link](https://github.com/tiagonapoli/LearnIt)) - A Telegram Bot created to help people to memorize other languages’ vocabulary.
  * [Bot-Telegram-Shodan ](https://github.com/rubenleon/Bot-Telegram-Shodan) by [rubenleon](https://github.com/rubenleon)
  * [VigoBusTelegramBot](https://t.me/vigobusbot) ([GitHub](https://github.com/Pythoneiro/VigoBus-TelegramBot)) - Bot that provides buses coming to a certain stop and their remaining time for the city of Vigo (Galicia - Spain)
  * [kaishnik-bot](https://t.me/kaishnik_bot) ([source](https://github.com/airatk/kaishnik-bot)) by *airatk* - bot which shows all the necessary information to KNTRU-KAI students.
  * [Robbie](https://t.me/romdeliverybot) ([source](https://github.com/FacuM/romdeliverybot_support)) by @FacuM - Support Telegram bot for developers and maintainers.
  * [AsadovBot](https://t.me/asadov_bot) ([source](https://github.com/desexcile/BotApi)) by @DesExcile - Сatalog of poems by Eduard Asadov.
  * [thesaurus_com_bot](https://t.me/thesaurus_com_bot) ([source](https://github.com/LeoSvalov/words-i-learn-bot)) by @LeoSvalov - words and synonyms from [dictionary.com](https://www.dictionary.com) and [thesaurus.com](https://www.thesaurus.com) in the telegram.
  * [InfoBot](https://t.me/info2019_bot) ([source](https://github.com/irevenko/info-bot)) by @irevenko - An all-round bot that displays some statistics (weather, time, crypto etc...)
  * [FoodBot](https://t.me/ChensonUz_bot) ([source](https://github.com/Fliego/old_restaurant_telegram_chatbot)) by @Fliego - a simple bot for food ordering
  * [Sporty](https://t.me/SportydBot) ([source](https://github.com/0xnu/sporty)) by @0xnu - Telegram bot for displaying the latest news, sports schedules and injury updates.
  * [JoinGroup Silencer Bot](https://t.me/joingroup_silencer_bot) ([source](https://github.com/zeph1997/Telegram-Group-Silencer-Bot)) by [@zeph1997](https://github.com/zeph1997) - A Telegram Bot to remove "join group" and "removed from group" notifications.
  * [TasksListsBot](https://t.me/TasksListsBot) ([source](https://github.com/Pablo-Davila/TasksListsBot)) by [@Pablo-Davila](https://github.com/Pablo-Davila) - A (tasks) lists manager bot for Telegram.
  * [MyElizaPsychologistBot](https://t.me/TasksListsBot) ([source](https://github.com/Pablo-Davila/MyElizaPsychologistBot)) by [@Pablo-Davila](https://github.com/Pablo-Davila) - An implementation of the famous Eliza psychologist chatbot.
  * [Frcstbot](https://t.me/frcstbot) ([source](https://github.com/Mrsqd/frcstbot_public)) by [Mrsqd](https://github.com/Mrsqd). A Telegram bot that will always be happy to show you the weather forecast.
  * [MineGramBot](https://github.com/ModischFabrications/MineGramBot) by [ModischFabrications](https://github.com/ModischFabrications). This bot can start, stop and monitor a minecraft server.
  * [Tabletop DiceBot](https://github.com/dexpiper/tabletopdicebot) by [dexpiper](https://github.com/dexpiper). This bot can roll multiple dices for RPG-like games, add positive and negative modifiers and show short descriptions to the rolls.
  * [BarnameKon](https://t.me/BarnameKonBot) by [Anvaari](https://github.com/anvaari). This Bot make "Add to google calendar" link for your events. It give information about event and return link. It work for Jalali calendar and in Tehran Time. [Source code](https://github.com/anvaari/BarnameKon)
  * [Translator bot](https://github.com/AREEG94FAHAD/translate_text_bot) by Areeg Fahad. This bot can be used to translate texts.
  * [Digital Cryptocurrency bot](https://github.com/AREEG94FAHAD/currencies_bot) by Areeg Fahad. With this bot, you can now monitor the prices of more than 12 digital Cryptocurrency.
  * [Anti-Tracking Bot](https://t.me/AntiTrackingBot) by Leon Heess [(source)](https://github.com/leonheess/AntiTrackingBot). Send any link, and the bot tries its best to remove all tracking from the link you sent.
  * [Developer Bot](https://t.me/IndDeveloper_bot) by [Vishal Singh](https://github.com/vishal2376) [(source code)](https://github.com/vishal2376/telegram-bot) This telegram bot can do tasks like GitHub search & clone,provide c++ learning resources ,Stackoverflow search, Codeforces(profile visualizer,random problems)
  * [oneIPO bot](https://github.com/aaditya2200/IPO-proj) by [Aadithya](https://github.com/aaditya2200) & [Amol Soans](https://github.com/AmolDerickSoans) This Telegram bot provides live updates , data and documents on current and upcoming IPOs(Initial Public Offerings)
  * [CoronaGraphsBot](https://t.me/CovidGraph_bot) ([source](https://github.com/TrevorWinstral/CoronaGraphsBot)) by *TrevorWinstral* - Gets live COVID Country data, plots it, and briefs the user
  * [ETHLectureBot](https://t.me/ETHLectureBot) ([source](https://github.com/TrevorWinstral/ETHLectureBot)) by *TrevorWinstral* - Notifies ETH students when their lectures have been uploaded
  * [Vlun Finder Bot](https://github.com/resinprotein2333/Vlun-Finder-bot) by [Resinprotein2333](https://github.com/resinprotein2333). This bot can help you to find The information of CVE vulnerabilities.
  * [ETHGasFeeTrackerBot](https://t.me/ETHGasFeeTrackerBot) ([Source](https://github.com/DevAdvik/ETHGasFeeTrackerBot]) by *DevAdvik* - Get Live Ethereum Gas Fees in GWEI
  * [Google Sheet Bot](https://github.com/JoachimStanislaus/Tele_Sheet_bot) by [JoachimStanislaus](https://github.com/JoachimStanislaus). This bot can help you to track your expenses by uploading your bot entries to your google sheet.
  * [GrandQuiz Bot](https://github.com/Carlosma7/TFM-GrandQuiz) by [Carlosma7](https://github.com/Carlosma7). This bot is a trivia game that allows you to play with people from different ages. This project addresses the use of a system through chatbots to carry out a social and intergenerational game as an alternative to traditional game development.
  * [Diccionario de la RAE](https://t.me/dleraebot) ([source](https://github.com/studentenherz/dleraebot)) This bot lets you find difinitions of words in Spanish using [RAE's dictionary](https://dle.rae.es/). It features direct message and inline search.
  * [remoteTelegramShell](https://github.com/EnriqueMoran/remoteTelegramShell) by [EnriqueMoran](https://github.com/EnriqueMoran). Control your LinuxOS computer through Telegram.
  * [Commerce Telegram Bot](https://github.com/ayitinya/commerce-telegram-bot/). Make purchases of items in a store with an Admin panel for data control and notifications.
  * [Pyfram-telegram-bot](https://github.com/skelly37/pyfram-telegram-bot) Query wolframalpha.com and make use of its API through Telegram.
  * [TranslateThisVideoBot](https://gitlab.com/WuerfelDev/translatethisvideo) This Bot can understand spoken text in videos and translate it to English
  * [Zyprexa](https://t.me/mathemathicsBot) ([source](https://github.com/atif5/zyprexa)) Zyprexa can solve, help you solve any mathematical problem you encounter and convert your regular mathematical expressions into beautiful imagery using LaTeX.
  * [Bincode-telegram-bot](https://github.com/tusharhero/bincode-telegram-bot) by [tusharhero](https://github.com/tusharhero) - Makes [bincodes](https://github.com/tusharhero/bincode) from text provides and also converts them back to text.
  * [hydrolib_bot](https://github.com/Mayson90/hydrolib_bot) Toolset for Hydrophilia tabletop game (game cards, rules, structure...).
  * [Gugumoe-bot](http://t.me/gugumoe_bot) ([source](https://github.com/GooGuJiang/Gugumoe-bot)) by [咕谷酱](https://gmoe.cc) GuXiaoJiang is a multi-functional robot, such as OSU game information query, IP test, animation screenshot search and other functions.
  * [Feedback-bot](https://github.com/coder2020official/feedbackbot) A feedback bot for user-admin communication. Made on AsyncTeleBot, using [template](https://github.com/coder2020official/asynctelebot_template).
  * [TeleServ](https://github.com/ablakely/TeleServ) by [ablakely](https://github.com/ablakely) This is a Telegram to IRC bridge which links as an IRC server and makes Telegram users appear as native IRC users.
  * [Simple Store Bot](https://github.com/AntonGlyzin/myshopbot) by [Anton Glyzin](https://github.com/AntonGlyzin) This is a simple telegram-store with an admin panel. Designed according to a template.
  * [Media Rating Bot](https://t.me/mediaratingbot) ([source](https://github.com/CommanderCRM/MediaRatingBot))by [CommanderCRM](https://github.com/CommanderCRM). This bot aggregates media (movies, TV series, etc.) ratings from IMDb, Rotten Tomatoes, Metacritic, TheMovieDB, FilmAffinity and also provides number of votes of said media on IMDb.

  **Want to have your bot listed here? Just make a pull request. Only bots with public source code are accepted.**


pkgId: 370e83b11cc6ca2c95f80b073d7f8a3fcbf62e8b5453ec39da26beeb4c7d8b18
name: python-pyTenable
arch: src
version: 1.4.12
epoch: 0
release: 1
summary: Python library to interface into Tenable's products and applications
url: https://github.com/tenable/pytenable
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-7d029264-8fec-41cc-9798-3ed9ee4d12a4
location_href: 00004824-python-pytenable/python-pyTenable-1.4.12-1.src.rpm
checksum_type: sha256
description:
  pyTenable is intended to be a pythonic interface into the Tenable application
  APIs.  Further by providing a common interface and a common structure between
  all of the various applications, we can ease the transition from the vastly
  different APIs between some of the products.
  - Issue Tracker: https://github.com/tenable/pyTenable/issues
  - Github Repository: https://github.com/tenable/pyTenable


pkgId: 8c116d3d26b2f917a99904778e0cace9bf4691f4a24a2ba2b71736fa12dfbc70
name: python-pyaes
arch: src
version: 1.6.1
epoch: 0
release: 1
summary: Pure-Python Implementation of the AES block-cipher and common modes of operation
url: https://github.com/ricmoo/pyaes
rpm_license: License :: OSI Approved :: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c71a372a-5a50-4827-974c-bd0eccaaa969
location_href: 00004632-python-pyaes/python-pyaes-1.6.1-1.src.rpm
checksum_type: sha256
description:
  A pure-Python implementation of the AES (FIPS-197)
  block-cipher algorithm and common modes of operation (CBC, CFB, CTR, ECB,
  OFB) with no dependencies beyond standard Python libraries. See README.md
  for API reference and details.


pkgId: d0a8635d48bed6ecb8854f9a9e46371e2360174ca70ce3f681635a60692e2226
name: python-pyahocorasick
arch: src
version: 2.0.0
epoch: 0
release: 1
url: http://github.com/WojciechMula/pyahocorasick
rpm_license: BSD-3-Clause and Public-Domain
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-63f56b2a-b975-4f8a-a9e8-c273a037eeb5
location_href: 00010308-python-pyahocorasick/python-pyahocorasick-2.0.0-1.src.rpm
checksum_type: sha256
summary:
  pyahocorasick is a fast and memory efficient library for exact or approximate multi-pattern string search.  With the ``ahocorasick.Automaton`` class, you can find multiple key string occurrences at once in some input text.  You can use it as a plain dict-like Trie or convert a Trie to an automaton for efficient Aho-Corasick search. And pickle to disk for easy reuse of large automatons. Implemented in C and tested on Python 3.6+. Works on Linux, macOS and Windows. BSD-3-Cause license.


pkgId: 3b498c5f83f0f5212ae6dee680eabd98a076f3e95d22010eaed30a4ca7531266
name: python-pyahocorasick-debuginfo
arch: aarch64
version: 2.0.0
epoch: 0
release: 1
summary: Debug information for package python-pyahocorasick
url: http://github.com/WojciechMula/pyahocorasick
rpm_license: BSD-3-Clause and Public-Domain
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-63f56b2a-b975-4f8a-a9e8-c273a037eeb5
rpm_sourcerpm: python-pyahocorasick-2.0.0-1.src.rpm
location_href: 00010308-python-pyahocorasick/python-pyahocorasick-debuginfo-2.0.0-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-pyahocorasick.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: 825991a05e055c25c28da4621683d9d8e7bdf6f0962cdaa6a986c3ba825674a1
name: python-pyahocorasick-debugsource
arch: aarch64
version: 2.0.0
epoch: 0
release: 1
summary: Debug sources for package python-pyahocorasick
url: http://github.com/WojciechMula/pyahocorasick
rpm_license: BSD-3-Clause and Public-Domain
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-63f56b2a-b975-4f8a-a9e8-c273a037eeb5
rpm_sourcerpm: python-pyahocorasick-2.0.0-1.src.rpm
location_href: 00010308-python-pyahocorasick/python-pyahocorasick-debugsource-2.0.0-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-pyahocorasick.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: 09e9aecae64d7a5bdc58eef764a3cbdf571d58d0b291d436e6b63c6386346f63
name: python-pyairnow
arch: src
version: 1.2.1
epoch: 0
release: 1
summary: A lightweight Python wrapper for EPA AirNow Air Quality API
url: https://github.com/asymworks/pyairnow
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-9c6d2703-63ef-4b88-bcfc-f59684f620f1
location_href: 00004634-python-pyairnow/python-pyairnow-1.2.1-1.src.rpm
checksum_type: sha256
description:
  [![CI](https://github.com/asymworks/pyairnow/workflows/CI/badge.svg)](https://github.com/asymworks/pyairnow/actions)
  [![PyPi](https://img.shields.io/pypi/v/pyairnow.svg)](https://pypi.python.org/pypi/pyairnow)
  [![Version](https://img.shields.io/pypi/pyversions/pyairnow.svg)](https://pypi.python.org/pypi/pyairnow)
  [![License](https://img.shields.io/pypi/l/pyairnow.svg)](https://github.com/asymworks/pyairnow/blob/master/LICENSE)
  [![Code Coverage](https://codecov.io/gh/asymworks/pyairnow/branch/master/graph/badge.svg)](https://codecov.io/gh/asymworks/pyairnow)

  `pyairnow` is a simple, tested, thin client library for interacting with the
  [AirNow](https://www.airnow.gov) United States EPA Air Quality Index API.

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



  `pyairnow` is currently supported and tested on:

  * Python 3.8
  * Python 3.9
  * Python 3.10
  * Python 3.11



  ```python
  pip install pyairnow
  ```



  You can get an AirNow API key from
  [the AirNow API site](https://docs.airnowapi.org/account/request/). Ensure you
  read and understand the expectations and limitations of API usage, which can
  be found at [the AirNow FAQ](https://docs.airnowapi.org/faq).



  ```python
  import asyncio
  import datetime

  from pyairnow import WebServiceAPI


  async def main() -> None:
    client = WebServiceAPI('your-api-key')

    
    data = await client.observations.zipCode(
      '90001',
      
      
      distance=50,
    )

    
    data = await client.observations.latLong(
      34.053718, -118.244842,
      
      
      distance=50,
    )

    
    data = await client.forecast.zipCode(
      '90001',
      
      
      date='2020-09-01',
      
      
      distance=50,
    )

    
    data = await client.forecast.latLong(
      
      '34.053718', '-118.244842',
      
      date=datetime.date(2020, 9, 1),
      
      
      distance=50,
    )


  asyncio.run(main())
  ```

  By default, the library creates a new connection to AirNow 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
  import datetime

  from aiohttp import ClientSession

  from pyairnow import WebServiceAPI


  async def main() -> None:
      async with ClientSession() as session:
          client = WebServiceAPI('your-api-key', session=session)

          


  asyncio.run(main())
  ```

  The library provides two convenience functions to convert between AQI and
  pollutant concentrations. See
  [this EPA document](https://www.airnow.gov/sites/default/files/2020-05/aqi-technical-assistance-document-sept2018.pdf)
  for more details.

  ```python

  from pyairnow.conv import aqi_to_concentration, concentration_to_aqi











  aqi_to_concentration(144, 'PM2.5')


  concentration_to_aqi(53.0, 'PM2.5')

  ```



  1. [Check for open features/bugs](https://github.com/asymworks/pyairnow/issues)
    or [start a discussion on one](https://github.com/asymworks/pyairnow/issues/new).
  2. [Fork the repository](https://github.com/asymworks/pyairnow/fork).
  3. Install [Poetry](https://python-poetry.org/) and set up the development workspace:
    `poetry install`
  4. Code your new feature or bug fix.
  5. Write tests that cover your new functionality.
  6. Run tests and ensure 100% code coverage: `make test`
  7. Run the linter to ensure 100% code style correctness: `make lint`
  8. Update `README.md` with any new documentation.
  9. Add yourself to `AUTHORS.md`.
  10. Submit a pull request!


pkgId: 40b922326d6d4f3cca6fca3519084aaf231604dacf911c6ef1f97319c9091466
name: python-pyairvisual
arch: src
version: 2022.12.1
epoch: 0
release: 1
summary: A simple API for AirVisual air quality data
url: https://github.com/bachya/pyairvisual
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4433e7df-1eff-47bf-ac44-23af2b948f0f
location_href: 00004635-python-pyairvisual/python-pyairvisual-2022.12.1-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>

  `pyairvisual` is a simple, clean, well-tested library for interacting with
  [AirVisual][airvisual] to retrieve air quality information.

  - [Python Versions](#python-versions)
  - [Installation](#installation)
  - [API Key](#api-key)
    - [Community](#community)
    - [Startup](#startup)
    - [Enterprise](#enterprise)
  - [Usage](#usage)
    - [Using the Cloud API](#using-the-cloud-api)
    - [Working with Node/Pro Units](#working-with-node-pro-units)
  - [Contributing](#contributing)



  `pyairvisual` is currently supported on:

  - Python 3.9
  - Python 3.10
  - Python 3.11



  ```bash
  pip install pyairvisual
  ```



  You can get an AirVisual API key from [the AirVisual API site][airvisual-api].
  Depending on the plan you choose, more functionality will be available from the API:



  The Community Plan gives access to:

  - List supported countries
  - List supported states
  - List supported cities
  - Get data from the nearest city based on IP address
  - Get data from the nearest city based on latitude/longitude
  - Get data from a specific city



  The Startup Plan gives access to:

  - List supported stations in a city
  - Get data from the nearest station based on IP address
  - Get data from the nearest station based on latitude/longitude
  - Get data from a specific station



  The Enterprise Plan gives access to:

  - Get a global city ranking of air quality





  ```python
  import asyncio

  from pyairvisual.cloud_api import CloudAPI


  async def main() -> None:
      """Run!"""
      cloud_api = CloudAPI("<YOUR_AIRVISUAL_API_KEY>")

      
      data = await cloud_api.air_quality.nearest_city()

      
      data = await cloud_api.air_quality.nearest_city(
          latitude=39.742599, longitude=-104.9942557
      )

      
      data = await cloud_api.air_quality.city(
          city="Los Angeles", state="California", country="USA"
      )

      
      
      data = await cloud_api.air_quality.nearest_station()
      data = await cloud_api.air_quality.nearest_station(
          latitude=39.742599, longitude=-104.9942557
      )
      data = await cloud_api.air_quality.station(
          station="US Embassy in Beijing",
          city="Beijing",
          state="Beijing",
          country="China",
      )

      
      data = await cloud_api.air_quality.ranking()

      
      countries = await cloud_api.supported.countries()
      states = await cloud_api.supported.states("USA")
      cities = await cloud_api.supported.cities("USA", "Colorado")
      stations = await cloud_api.supported.stations("USA", "Colorado", "Denver")


  asyncio.run(main())
  ```

  By default, the library creates a new connection to AirVisual 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 pyairvisual.cloud_api import CloudAPI


  async def main() -> None:
      """Run!"""
      async with ClientSession() as session:
          cloud_api = CloudAPI("<YOUR_AIRVISUAL_API_KEY>", session=session)

          


  asyncio.run(main())
  ```



  `pyairvisual` also allows users to interact with [Node/Pro units][airvisual-pro], both via
  the cloud API:

  ```python
  import asyncio

  from aiohttp import ClientSession

  from pyairvisual.cloud_api import CloudAPI


  async def main() -> None:
      """Run!"""
      cloud_api = CloudAPI("<YOUR_AIRVISUAL_API_KEY>")

      
      
      data = await cloud_api.node.get_by_node_id("<NODE_ID>")


  asyncio.run(main())
  ```

  ...or over the local network via Samba (the unit password can be found
  [on the device itself][airvisual-samba-instructions]):

  ```python
  import asyncio

  from aiohttp import ClientSession

  from pyairvisual.node import NodeSamba


  async def main() -> None:
      """Run!"""
      async with NodeSamba("<IP_ADDRESS_OR_HOST>", "<PASSWORD>") as node:
          measurements = await node.async_get_latest_measurements()

          
          
          
          
          history = await node.async_get_history()


  asyncio.run(main())
  ```

  Check out the examples, the tests, and the source files themselves for method
  signatures and more examples.



  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 pyairvisual tests`
  9. Update `README.md` with any new documentation.
  10. Submit a pull request!

  [aiohttp]: https://github.com/aio-libs/aiohttp
  [airvisual]: https://www.airvisual.com/
  [airvisual-api]: https://www.airvisual.com/user/api
  [airvisual-pro]: https://www.airvisual.com/air-quality-monitor
  [airvisual-samba-instructions]: https://support.airvisual.com/en/articles/3029331-download-the-airvisual-node-pro-s-data-using-samba
  [ci-badge]: https://github.com/bachya/pyairvisual/workflows/CI/badge.svg
  [ci]: https://github.com/bachya/pyairvisual/actions
  [codecov-badge]: https://codecov.io/gh/bachya/pyairvisual/branch/dev/graph/badge.svg
  [codecov]: https://codecov.io/gh/bachya/pyairvisual
  [contributors]: https://github.com/bachya/pyairvisual/graphs/contributors
  [fork]: https://github.com/bachya/pyairvisual/fork
  [issues]: https://github.com/bachya/pyairvisual/issues
  [license-badge]: https://img.shields.io/pypi/l/pyairvisual.svg
  [license]: https://github.com/bachya/pyairvisual/blob/main/LICENSE
  [maintainability-badge]: https://api.codeclimate.com/v1/badges/a03c9e96f19a3dc37f98/maintainability
  [maintainability]: https://codeclimate.com/github/bachya/pyairvisual/maintainability
  [new-issue]: https://github.com/bachya/pyairvisual/issues/new
  [new-issue]: https://github.com/bachya/pyairvisual/issues/new
  [pypi-badge]: https://img.shields.io/pypi/v/pyairvisual.svg
  [pypi]: https://pypi.python.org/pypi/pyairvisual
  [version-badge]: https://img.shields.io/pypi/pyversions/pyairvisual.svg
  [version]: https://pypi.python.org/pypi/pyairvisual


pkgId: 34cfc4833a6f12560650295ecdc166bc1893adc0bda9c7b00b9caa66c95c5c3d
name: python-pyaml
arch: src
version: 21.10.1
epoch: 0
release: 1
summary: PyYAML-based module to produce pretty and readable YAML-serialized data
url: https://github.com/mk-fg/pretty-yaml
rpm_license: WTFPL
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-75686b84-c178-4091-921b-1f17efb934f4
location_href: 00009475-python-pyaml/python-pyaml-21.10.1-1.src.rpm
checksum_type: sha256
description:
  PyYAML-based python module to produce pretty and readable YAML-serialized data.
  This module is for serialization only, see `ruamel.yaml`_ module for literate
  YAML parsing (keeping track of comments, spacing, line/column numbers of values, etc).
  [note: to dump stuff parsed by ruamel.yaml with this module, use only ``YAML(typ='safe')`` there]


pkgId: 6d54a4999e937786691f01beb2e068bf43fdaa2837563d67a0184dbfd499f513
name: python-pyangbind
arch: src
version: 0.8.1
epoch: 0
release: 1
url: https://github.com/robshakir/pyangbind
rpm_license: Apache
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-0f18a0b5-9f0e-4adc-9c7a-46ae5273b228
location_href: 00012056-python-pyangbind/python-pyangbind-0.8.1-1.src.rpm
checksum_type: sha256
summary:
  PyangBind is a plugin for pyang which converts YANG datamodels into a Python class hierarchy, such that Python can be used to manipulate data that conforms with a YANG model.

description:
  PyangBind is a plugin for pyang which converts YANG data models into a Python class hierarchy, such that Python can be used to manipulate data that conforms with a YANG model.
  This module provides the supporting classes and functions that PyangBind modules utilise, particularly:
  * pyangbind.base.PybindBase - which is the parent class inherited by all container or module YANG objects.
  * pyangbind.pybindJSON - which containers wrapper functions which can be used to help with serialisation of YANG to JSON.
  * pyangbind.serialise.pybindJSONEncoder - a class that can be used as a custom encoder for the JSON module to serialise PyangBind class hierarchies to JSON.
  * pyangbind.serialise.pybindJSONDecoder - a class that can be used as a custom decoder to load JSON-encoded instances of YANG models into a PyangBind class hierarchy.
  * pyangbind.xpathhelper.YANGPathHelper - a class which can have objects registered against it, and subsequently retrieved from it using XPATH expressions. This module also includes parent classes that can be used to implement other helper modules of this nature.
  * pyangbind.yangtypes: The various functions which generate python types that are used to represent YANG types, and some helper methods.
    - pyangbind.yangtypes.is_yang_list and is_yang_leaflist are self explainatory, but may be useful.
    - pyangbind.yangtypes.safe_name is used throughout PyangBind to determine how to map YANG element names into Python attribute names safely.
    - pyangbind.yangtypes.RestrictedPrecisionDecimalType - generates wrapped Decimal types that has a restricted set of decimal digits - i.e., can deal with fraction-digits arguments in YANG.
    - pyangbind.yangtypes.RestrictedClassType - generates types which wrap a 'base' type (e.g., integer) with particular restrictions. The restrictions are supplied as a dictionary, or with specific arguments if single restrictions are required. Currently, the restrictions supported are regexp matches, ranges, lengths, and restrictions to a set of values (provided as keys to a dict).
    - pyangbind.yangtypes.TypedListType - generates types which wrap a list to restrict the objects that it may contain.
    - pyangbind.yangtypes.YANGListType - generates types which wrap a class representing a container, such that it acts as a YANG list.
    - pyangbind.yangtypes.YANGBool - a boolean class.
    - pyangbind.yangtypes.YANGDynClass - generates types which consist of a wrapper (YANGDynClass) and a wrapped object which may be any other class. YANGDynClass is a meta-class that provides additional data on top of the attributes and functions of the wrapped class.
    - pyangbind.yangtypes.ReferenceType - generates types which can use a pyangbind.xpathhelper.PybindXpathHelper instance to look up values - particularly to support leafrefs in YANG.
  Usage documentation for PyangBind itself can be found on GitHub: https://github.com/robshakir/pyangbind


pkgId: 29d395a14f255a2a00e1b0cd5cf97d6a59f388118581a1fa5a35bcb9bd549b92
name: python-pyapacheatlas
arch: src
version: 0.15.0
epoch: 0
release: 1
summary: A package to simplify working with the Apache Atlas REST APIs for Atlas and Azure Purview.
url: https://github.com/wjohnson/pyapacheatlas
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-46721dfe-8f61-4d9c-bb1d-7ecc6089e43b
location_href: 00013534-python-pyapacheatlas/python-pyapacheatlas-0.15.0-1.src.rpm
checksum_type: sha256
description:
  PyApacheAtlas lets you work with the Azure Purview and Apache Atlas APIs in a Pythonic way. Supporting bulk loading, custom lineage, custom type definition and more from an SDK and Excel templates / integration.

  The package supports programmatic interaction and an Excel template for low-code uploads.



  * Bulk upload entities.
    * Upload entities / assets for built-in or custom types.
    * Supports adding glossary terms to entities.
    * Supports adding classifications to entities.
    * Supports creating relationships between entities (e.g. columns of a table).
  * Creating custom lineage between existing entities.
  * Defining Purview Column Mappings / Column Lineage.
  * Bulk upload custom type definitions.
  * Bulk upload of classification definitions (Purview Classification Rules not supported).



  The PyApacheAtlas package itself supports those operations and more for the advanced user:
  * Programmatically create Entities, Types (Entity, Relationship, etc.).
  * Perform partial updates of an entity (for non-complex attributes like strings or integers).
  * Extracting entities by guid or qualified name.
  * Creating custom lineage with Process and Entity types.
  * Working with the glossary.
    * Uploading terms.
    * Downloading individual or all terms.
  * Working with classifications.
    * Classify one entity with multiple classifications.
    * Classify multiple entities with a single classification.
    * Remove classification ("declassify") from an entity.
  * Working with relationships.
    * Able to create arbitrary relationships between entities.
    * e.g. associating a given column with a table.
  * Deleting types (by name) or entities (by guid).
  * Performing "What-If" analysis to check if...
     * Your entities are valid types.
     * Your entities are missing required attributes.
     * Your entities are using undefined attributes.
  * Azure Purview's Search: query, autocomplete, suggest, browse.
  * Authentication to Azure Purview using azure-identity and Service Principal
  * Authentication to Apache Atlas using basic authentication of username and password.


pkgId: 707ad2489886a1f29bd3d4095a923d8f1183e23b972c64b7dc7067582179af8b
name: python-pyarlo
arch: src
version: 0.2.4
epoch: 0
release: 1
url: https://github.com/tchellomello/python-arlo
rpm_license: LGPLv3+
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-61bf3aee-248c-4406-843c-eb294d356d9e
location_href: 00004636-python-pyarlo/python-pyarlo-0.2.4-1.src.rpm
checksum_type: sha256
summary:
  Python Arlo is a library written in Python 2.7/3x that exposes the Netgear Arlo cameras as Python objects.

description:
  Python Arlo  is a library written in Python 2.7/3x that exposes the Netgear Arlo cameras as Python objects.
  Developer Documentation: `http://python-arlo.readthedocs.io/ <http://python-arlo.readthedocs.io/>`_


pkgId: d931ec3075fb85d2e6e3c174c641c4801ad57dd88ff8af130625ddbf2bf9e513
name: python-pyasn1-modules
arch: src
version: 0.2.8
epoch: 0
release: 1
summary: A collection of ASN.1-based protocols modules.
url: https://github.com/etingof/pyasn1-modules
rpm_license: BSD-2-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-500425a9-0e3d-41a1-9109-cea67d1c3be2
location_href: 00008921-python-pyasn1-modules/python-pyasn1-modules-0.2.8-1.src.rpm
checksum_type: sha256
description:
  A collection of ASN.1 modules expressed in form of pyasn1 classes. Includes protocols PDUs definition (SNMP, LDAP etc.) and various data structures (X.509, PKCS etc.).


pkgId: 7bd5cc420a52264231e2cc2c7cf0c9cfe60f81b8ca047f5cbe4b4bb4d13d9b20
name: python-pyaztro
arch: src
version: 0.3
epoch: 0
release: 1
summary: A client library for aztro - The Astrology API
url: https://github.com/sameerkumar18/pyaztro
rpm_license: Apache 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-e7ec9bd2-dd04-4bea-a430-f5673e4109e3
location_href: 00013656-python-pyaztro/python-pyaztro-0.3-1.src.rpm
checksum_type: sha256
description:
  PyAztro is a client library for `aztro <https://github.com/sameerkumar18/aztro>`_ written in Python.
  aztro provides horoscope info for sun signs such as Lucky Number, Lucky Color, Mood, Color, Compatibility with other sun signs, description of a sign for that day etc.
  Documentation for aztro API is available `here <https://aztro.sameerkumar.website>`_, documentation for PyAztro is under development.


pkgId: cab5615367752b9db97c2b2349645ef6a59cd39b15cc570569dfb606f01f4e2c
name: python-pybacklogpy
arch: src
version: 0.12
epoch: 0
release: 1
summary: A library for backlog api
url: https://kitadakyou.github.io/PyBacklogPy/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-fbc46257-6029-42bd-9f4b-fd49fa6c901d
location_href: 00011149-python-pybacklogpy/python-pybacklogpy-0.12-1.src.rpm
checksum_type: sha256
description:
  [![CircleCI](https://circleci.com/gh/kitadakyou/PyBacklogPy/tree/master.svg?style=svg)](https://circleci.com/gh/kitadakyou/PyBacklogPy/tree/master)



  [BacklogAPI](https://developer.nulab.com/ja/docs/backlog/) を Python から簡単に呼べるようにラップしたものです。



  - `Python 3.5` 以上
    - `typing` モジュールを使用しているため
    - 開発およびテスト環境は `Python 3.7.3` を使用



  詳細な仕様については[ドキュメント](https://kitadakyou.github.io/PyBacklogPy/)を参照してください



  pip からインストールします。

  ```bash
  pip install pybacklogpy
  ```



  ドメイン及びシークレットキーを登録するには以下の2種類の方法があります。

  1. プログラム上で指定する
  1. 設定ファイルを置く

  なお、どちらも設定していた場合、 __プログラム上で指定する__ の方が優先されます。



  Backlogのドメイン別に以下3種類のクラスを用意しています。

  - BacklogComConfigure (backlog.com)
  - BacklogJpConfigure (backlog.jp)
  - BacklogToolConfigure (backlogtool.com)

  このクラスのコンストラクタ引数として、スペースID と API のキーを渡すことで設定を行えます。

  例えば、下記のような場合
  - Backlogドメイン: `kitadakyou.backlog.com`
  - API キー: `qwertyuiopasdfghjklzxcvbnmqazwsxedcrfvtgbyhnujmikolp`

  コードは次のようになります。

  ```python
  from pybacklogpy.BacklogConfigure import BacklogComConfigure
  from pybacklogpy.Issue import Issue


  config = BacklogComConfigure(space_key='kitadakyou',
                               api_key='qwertyuiopasdfghjklzxcvbnmqazwsxedcrfvtgbyhnujmikolp')


  issue_api = Issue(config)  # API を呼ぶクラスのコンストラクタ引数として Configure クラスのインスタンスは使用可能
  response = issue_api.get_issue_list()


  ```



  使用するプロジェクトの直下に `secrets` というファイルを作り、以下のように値を入れておいてください。
  なお、当プロジェクト直下にある `secrets_sample` をコピーすると楽です。

  なお、このファイルは誤ってリポジトリにあげないよう、 `.gitignore` に追加しておくことを推奨します

  ```ini
  [backlog]
  Host = kitadakyou.backlog.com
  ApiKey = qwertyuiopasdfghjklzxcvbnmqazwsxedcrfvtgbyhnujmikolp
  ```

  `secrets` を指定した場合、先ほどの例で使用した configure クラスは省略して、以下のように書くことが出来ます

  ```python
  from pybacklogpy.Issue import Issue


  issue_api_2 = Issue()  # Configure クラスを渡さなかった場合は、設定ファイルの情報を読みに行く
  response_2 = issue_api_2.get_issue_list()

  ```

  なお、 `configure` クラスを渡さず、 `secrets` も設置していない場合は実行エラーとなります。



  使用するモジュールをロードします。
  それぞれはクラスになっているので、そのインスタンスを生成します。

  例として、Wiki の API を呼びたいと考えます。

  ```python:sample.py
  from pybacklogpy.Wiki import Wiki


  wiki_api = Wiki()

  ```



  どのような API があるかは [PyBacklogPy のドキュメント](https://kitadakyou.github.io/PyBacklogPy/)、もしくは [BacklogAPI のドキュメント](https://developer.nulab.com/ja/docs/backlog/)を参照してください。
  また、プロジェクトID や Wiki ID 等の調べ方は…ググればすぐに出てきます

  Wiki を追加するサンプル

  ```python:sample3.py
  from pybacklogpy.Wiki import Wiki


  wiki_api = Wiki()


  response = wiki_api.add_wiki_page(
      project_id=1000,
      name='SampleWikiName',
      content='サンプル Wiki 本文',
      mail_notify=False,
  )

  ```

  Wiki を更新するサンプル

  ```python:sample3.py
  from pybacklogpy.Wiki import Wiki


  wiki_api = Wiki()


  response = wiki_api.update_wiki_page(
      wiki_id=12345,
      name='TestWikiName',
      content='テスト 本文',
      mail_notify=False,
  )

  ```



  全ての関数は [request](https://requests-docs-ja.readthedocs.io/en/latest/) の [レスポンスオブジェクト](https://requests-docs-ja.readthedocs.io/en/latest/user/quickstart/#id3) を返します。

  リクエストが成功しているかを確認するには、 `response.ok` を見るのが１番早いです。

  Wiki の更新が成功しているか確認するサンプル

  ```python:sample4.py
  from pybacklogpy.Wiki import Wiki


  wiki_api = Wiki()


  response = wiki_api.update_wiki_page(
      wiki_id=12345,
      name='TestWikiName',
      content='テスト 本文',
      mail_notify=False,
  )
  if not response.ok:
      raise ValueError('Wiki の更新に失敗')

  ```

  また、レスポンス本文は `response.text` の中身に生(=テキストの)の JSON が入っています。標準ライブラリ `json` を使って parse してあげれば、簡単に使えます。

  Wiki の内容を取得するサンプル

  ```python:sample5.py
  import json


  from pybacklogpy.Wiki import Wiki


  wiki_api = Wiki()


  response = wiki_api.get_wiki_page(
      wiki_id=12345,
  )

  if not response.ok:
      raise ValueError('Wiki ページ情報の取得に失敗')

  wiki_data = json.loads(response.text)
  wiki_name = wiki_data['name']
  wiki_content = wiki_data['content']

  ```



  ファイル取得については、特殊な返り値のため、別途こちらで説明します。

  ファイルを取得する関数を使用する場合は、まずディレクトリを作成する必要があります。
  デフォルトではプロジェクト直下の `/tmp` ディレクトリにファイルがダウンロードされます。(今の所、変更不可💦)

  ファイルを取得する関数は「1番目がファイルのPATH」、「2番目がレスポンスオブジェクト」のタプルを返します。
  そのため、一度に受け取るには、以下のように返り値を受け取る変数を2つ用意する必要があります。

  ```python:sample3.py
  from pybacklogpy.Wiki import Wiki


  wiki_api = Wiki()


  downloaded_file_path, response = self.wiki_attachment.get_wiki_page_attachment(
      wiki_id=12345,
      attachment_id=987654,
  )
  print(downloaded_file_path)
  ```



  自由にブランチを切って、 PullRequest を出してください。Issue を上げるだけでも大丈夫です。
  一週間に一回くらいは見るようにするので、対応出来たら対応します。(全て対応するとは言っていない)

  もし、PR出しても全くリアクションがない場合は Twitter の [kitadakyou](https://twitter.com/kitadakyou) 、若しくは<a href='mailto:kitadakyou@gmail.com'>作者のメール</a>宛にご連絡ください。



  `PyBacklog` も `BacklogPy` も既に存在したので、苦肉の策で Py で挟みました。
  もし、`PyBacklogPy` も存在したら、 `PyBacklogXPyBacklog` という HUNTER×HUNTER 方式で行こうと考えていました。


pkgId: 8bb4d72e9b43f139a11469466b102f04d211adcb9f3bb2e71c53c40050b963f2
name: python-pybalboa
arch: src
version: 1.0.1
epoch: 0
release: 1
summary: Module to communicate with a Balboa spa wifi adapter.
url: https://github.com/garbled1/pybalboa
rpm_license: Apache 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-92cbba78-a75a-48be-bc58-882d59188c9f
location_href: 00004638-python-pybalboa/python-pybalboa-1.0.1-1.src.rpm
checksum_type: sha256
description:
  Python Module to interface with a balboa spa
  Requires Python 3 with asyncio.
  To Install::
    pip install pybalboa
  To test::
    python3 pybalboa <ip-of-spa-wifi> <debug-flag>
  To Use
  ``````
  See ``__main__.py`` for usage examples.
  Minimal example::
    import asyncio
    import pybalboa
    async with pybalboa.SpaClient(spa_host) as spa:
      
    return
  Related
  ```````
  - https://github.com/ccutrer/balboa_worldwide_app/wiki - invaluable wiki for Balboa module protocol


pkgId: 382e91ddd1da8ef81fa10d8ed2e3f2cab32cd4f7b120e8b8128b12df5e21424b
name: python-pybase64
arch: src
version: 1.2.3
epoch: 0
release: 1
summary: Fast Base64 encoding/decoding
url: https://github.com/mayeut/pybase64
rpm_license: BSD-2-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-cfe83371-2e67-40f4-9102-c5df4b1519e2
location_href: 00010831-python-pybase64/python-pybase64-1.2.3-1.src.rpm
checksum_type: sha256
description:
  |license-status| |pypi-status| |python-versions| |rtd-status| |gha-status| |codecov-status|
  This project is a wrapper on `libbase64 <https://github.com/aklomp/base64>`_.
  It aims to provide a fast base64 implementation for base64 encoding/decoding.


pkgId: 57e514e2d289edee4354c6c5135705059d3ab01ac2eb552bba1d7f94a4aaf319
name: python-pybase64-debuginfo
arch: aarch64
version: 1.2.3
epoch: 0
release: 1
summary: Debug information for package python-pybase64
url: https://github.com/mayeut/pybase64
rpm_license: BSD-2-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-cfe83371-2e67-40f4-9102-c5df4b1519e2
rpm_sourcerpm: python-pybase64-1.2.3-1.src.rpm
location_href: 00010831-python-pybase64/python-pybase64-debuginfo-1.2.3-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-pybase64.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: 2d21802d77586c09ae16c7f4b987d4b4a82badd1e5ca85d84af6578cf399bc06
name: python-pybase64-debugsource
arch: aarch64
version: 1.2.3
epoch: 0
release: 1
summary: Debug sources for package python-pybase64
url: https://github.com/mayeut/pybase64
rpm_license: BSD-2-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-cfe83371-2e67-40f4-9102-c5df4b1519e2
rpm_sourcerpm: python-pybase64-1.2.3-1.src.rpm
location_href: 00010831-python-pybase64/python-pybase64-debugsource-1.2.3-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-pybase64.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: 00a64d65926fea1a916aca38618ceabac7ee64fcb3215c094391de1992ff54e4
name: python-pybaseconv
arch: src
version: 0.0.1
epoch: 0
release: 1
summary: This library allows you to convert a number from any base to any base
url: https://pypi.org/project/pybaseconv/
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-6b795726-9bf0-4287-9522-45841fcdaea6
location_href: 00011286-python-pybaseconv/python-pybaseconv-0.0.1-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://travis-ci.com/El-Sam/pybaseconv.svg?branch=master)](https://travis-ci.com/El-Sam/pybaseconv)

  **pybaseconv** is a library that allows you to convert any large number (no fractions) from any base to any other base, thus freedom to choose source and/or destination bases.

  There are 5 predefined bases that are supported by **pybaseconv**, which are:

  * `DEC` : the decimal base  `"0123456789"`.
  * `BIN` : the binary base `"01"`.
  * `OCT` : the octal base `"01234567"`.
  * `HEX` : the hexadecimal base `"0123456789abcdef"`.
  * `FLICKER_BASE_58` & `BITCOIN_BASE_58`: two variations of the **Base58** encoding, more info [here](https://en.wikipedia.org/wiki/Base58).



  ```python
  from pybaseconv import Converter, BASE

  dec2hex_converter = Converter(BASE.DEC, BASE.HEX)
  print(dec2hex_converter.convert('738653'))  # returns b455d

  dec2bitcoin_converter = Converter(BASE.DEC, BASE.BITCOIN_BASE_58)
  print(dec2bitcoin_converter.convert('292251'))  # returns 2Vsp

  dec2custom_base_converter = Converter(BASE.DEC, '*&@#$')
  print(dec2custom_base_converter.convert('539'))  # returns $&@$

  bin2dec_converter = Converter(BASE.BIN, BASE.DEC)
  print(bin2dec_converter.convert('11112'))  # raises exception because 11112 is not a binary number

  ```

  *PS*: when using custom bases, make sure that the digits are sorted from smallest to the largest, in order to get the appropriate conversion.


pkgId: 490c18a7e8af7ab89e71da0bd864a45a36619cea40f8d31fb178202524bad12f
name: python-pybcj-debuginfo
arch: aarch64
version: 1.0.1
epoch: 0
release: 1
summary: Debug information for package python-pybcj
url: http://codeberg.org/miurahr/pybcj
rpm_license: LGPL-2.1-or-later
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-842ad917-38b6-4da7-8dfd-fcb44714954a
rpm_sourcerpm: python-pybcj-1.0.1-1.src.rpm
location_href: 00010858-python-pybcj/python-pybcj-debuginfo-1.0.1-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-pybcj.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: 0e72666578a9fd9c5e911a6ec6279f384ed4368f677488074f9bc4853faa0b3a
name: python-pybcj-debugsource
arch: aarch64
version: 1.0.1
epoch: 0
release: 1
summary: Debug sources for package python-pybcj
url: http://codeberg.org/miurahr/pybcj
rpm_license: LGPL-2.1-or-later
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-842ad917-38b6-4da7-8dfd-fcb44714954a
rpm_sourcerpm: python-pybcj-1.0.1-1.src.rpm
location_href: 00010858-python-pybcj/python-pybcj-debugsource-1.0.1-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-pybcj.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: db308ba04a91f151ab0869f4c35b3a4fe599b3b17b3fe8e7c1b522ab1ba548c7
name: python-pybids
arch: src
version: 0.15.6
epoch: 0
release: 1
summary: bids: interface with datasets conforming to BIDS
url: http://github.com/bids-standard/pybids
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-bbfd9ec2-8bf5-4c03-bafd-9af99731ec99
location_href: 00004639-python-pybids/python-pybids-0.15.6-1.src.rpm
checksum_type: sha256
description:
  [![DOI](https://joss.theoj.org/papers/10.21105/joss.01294/status.svg)](https://doi.org/10.21105/joss.01294)
  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.2537312.svg)](https://doi.org/10.5281/zenodo.2537312)

  [![Build Status (Linux and OS X)](https://travis-ci.org/bids-standard/pybids.svg?branch=master)](https://travis-ci.org/bids-standard/pybids)<!---[![Build Status (Windows)](https://ci.appveyor.com/api/projects/status/5aa4c6e3m15ew4v7?svg=true)](https://ci.appveyor.com/project/chrisfilo/pybids-ilb80)-->
  [![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/bids-standard/pybids/master)
  [![PyPI version](https://badge.fury.io/py/pybids.svg)](https://badge.fury.io/py/pybids)
  [![Conda version](https://img.shields.io/conda/vn/conda-forge/pybids)](https://anaconda.org/conda-forge/pybids)

  PyBIDS is a Python library to centralize interactions with datasets conforming
  BIDS (Brain Imaging Data Structure) format.  For more information about BIDS
  visit http://bids.neuroimaging.io.

  PyBIDS currently supports Python 3 on POSIX operating systems (including Mac OS).  Windows is not officially supported, though most PyBIDS functionality will probably work fine.


  PyBIDS is most easily installed from pip. To install the latest official release:

  > pip install pybids

  Or, alternatively via conda:

  > conda install -c conda-forge pybids

  If you want to live on the bleeding edge, you can install from master:

  > pip install git+https://github.com/bids-standard/pybids.git


  PyBIDS has a number of dependencies. The core querying functionality requires only the `BIDS-Validator` package. However, most other modules require the core Python neuroimaging stack: `numpy`, `scipy`, `pandas`, and `nibabel`. The `reports` module additionally requires `num2words`. By default, all dependencies will be installed with pybids (if they aren't already available).


  Get started by checking out [the documentation](https://bids-standard.github.io/pybids)!

  Or you can start at [our tutorial](https://bids-standard.github.io/pybids/examples/pybids_tutorial.html)! You can run it interactively without installing anything via [binder](https://mybinder.org/v2/gh/bids-standard/pybids/master). Click on the link and then navigate to `doc/examples/pybids_tutorial.md` to explore.


  To credit PyBIDS in your work, please cite both the [JOSS paper](https://joss.theoj.org/papers/10.21105/joss.01294) and the [Zenodo archive](https://zenodo.org/record/3363985). The former provides a high level description of the package, and the latter points to a permanent record of all PyBIDS versions (we encourage you to cite the specific version you used). Example citations (for PyBIDS 0.9.3):

  Yarkoni et al., (2019). PyBIDS: Python tools for BIDS datasets. Journal of Open Source Software, 4(40), 1294, https://doi.org/10.21105/joss.01294

  Yarkoni, Tal, Markiewicz, Christopher J., de la Vega, Alejandro, Gorgolewski, Krzysztof J., Halchenko, Yaroslav O., Salo, Taylor, … Blair, Ross. (2019, August 8). bids-standard/pybids: 0.9.3 (Version 0.9.3). Zenodo. http://doi.org/10.5281/zenodo.3363985


  Bug reports, feedback, and other contributions to PyBIDS are welcome. To report a bug, request a feature, or raise a technical (non-usage-related) question for discussion, please [open an issue on GitHub](https://github.com/bids-standard/pybids/issues). Requests for support and questions about usage (where no bug is suspected) should be posted on the [NeuroStars](https://neurostars.org) forum. For questions about the [BIDS specification](https://github.com/bids-standard/bids-specification) or [BIDS-Validator](https://github.com/bids-standard/bids-validator), please see the corresponding repositories. For general BIDS-related discussion, see the [bids-discussion](https://groups.google.com/forum/#!forum/bids-discussion) mailing list.

  Pull requests are always welcome. If you have any doubts about the suitability of a PR, or want to discuss implementation-related issues, feel free to open an issue for discussion.

rpm_license:
  The MIT License (MIT)  Copyright (c) 2015-2016, Ariel Rokem, The University of Washington eScience Institute. Copyright (c) 2016--, PyBIDS developers, Planet Earth  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: 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: bb9c00f0e625e347843e647440cf6042abefb929d6ad3c6204f3b4d6e614eb40
name: python-pyforce
arch: src
version: 1.9.1
epoch: 0
release: 1
summary: A Python client wrapping the Salesforce.com SOAP API
url: https://github.com/alanjcastonguay/pyforce
rpm_license: GNU GENERAL PUBLIC LICENSE Version 2
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-53ecef5e-df6c-4458-b490-eab7acd7e040
location_href: 00014124-python-pyforce/python-pyforce-1.9.1-1.src.rpm
checksum_type: sha256
description:
  This is a reluctant fork of the beatbox project originally authored by Simon
  Fell, (their version locked at 0.92) later drastically changed by these folks
  https://code.google.com/p/salesforce-beatbox/ (versioned at 20.0).
  Renamed to `pyforce` to avoid confusion related to the fractured community
  version. (https://github.com/superfell/Beatbox/issues/6) Long story short,
  the python client in the fork at version 20.0 is exceptionally useful, so
  going back to 0.92 would be a mistake, however the beatbox version at 20.0 is
  also no longer maintained (judging by the issues). `pyforce` builds off
  the version available there, integrating bug fixes, and new features.
  This module contains 2 versions of the Salesforce.com client:
   XMLClient
      An xmltramp wrapper that handles the xml fun.
   PythonClient
     Marshalls the returned objects into proper Python data types. e.g. integer
     fields return integers.


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: 69f41c84ecc33b1a3810ba490725638eef2d1bbcdaa12f195b7721287aa76e73
name: python-pygount
arch: src
version: 1.5.1
epoch: 0
release: 1
summary: count source lines of code (SLOC) using pygments
url: https://github.com/roskakori/pygount
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ebf0a493-93db-47e5-ab51-e35bff7a3ffe
location_href: 00014287-python-pygount/python-pygount-1.5.1-1.src.rpm
checksum_type: sha256
description:
  Python               19   51.35  1924   72.99      322   86.10
  reStructuredText      7   18.92   332   12.59        7    1.87
  markdown              3    8.11   327   12.41        1    0.27
  Batchfile             1    2.70    24    0.91        1    0.27
  YAML                  1    2.70    11    0.42        2    0.53
  Makefile              1    2.70     9    0.34        7    1.87
  INI                   1    2.70     5    0.19        0    0.00
  TOML                  1    2.70     4    0.15        0    0.00


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.


