# packages

pkgId: acbc46686e5351691232e74d050b954c7c6ab35ccc9913811975a05690a15fc9
name: python-envoy
arch: src
version: 0.0.3
epoch: 0
release: 1
summary: Simple API for running external processes.
url: https://github.com/kennethreitz/envoy
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-b5c1e44a-b692-4059-80df-4ae868605451
location_href: 00013662-python-envoy/python-envoy-0.0.3-1.src.rpm
checksum_type: sha256
description:
  **Note:** Work in progress.
  This is a convenience wrapper around the `subprocess` module.
  You don't need this.
  But you want it.


pkgId: 4cae3f6004f7c03ee52d7cb9419def91e1aa82430ad73c8fd7df8aef2922f052
name: python-envparse
arch: src
version: 0.2.0
epoch: 0
release: 1
summary: Simple environment variable parsing
url: https://github.com/rconradharris/envparse
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-d36ebf60-98b6-455c-aa31-148671f1c6a1
location_href: 00011369-python-envparse/python-envparse-0.2.0-1.src.rpm
checksum_type: sha256
description:
  ``envparse`` is a simple utility to parse environment variables.
  If you use Heroku and/or subscribe to the tenets of the
  `12 Factor App <http://www.12factor.net/>`_
  you'll be using a lot of environment variable-based configuration in your app.
  ``os.environ`` is a great choice to start off with but over time you'll find
  yourself duplicating quite a bit of code around handling raw environment
  variables.
  ``envparse`` aims to eliminate this duplicated, often inconsistent parsing
  code and instead provide a single, easy-to-use wrapper.
  Ideas, and code portions, have been taken from `django-environ
  <https://github.com/joke2k/django-environ>`_ project but made framework
  agnostic.


pkgId: 955abfb8d9ed6ff3b4e16693cad75eccdebaecf2a2ac9335a354070da7b92cb4
name: python-envyaml
arch: src
version: 1.10.211231
epoch: 0
release: 1
summary: Simple YAML configuration file parser with easy access for structured data
url: https://github.com/thesimj/envyaml
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-6e94b9ab-e4f2-42e0-bf1a-170e40af3f39
location_href: 00013082-python-envyaml/python-envyaml-1.10.211231-1.src.rpm
checksum_type: sha256
description:
  [![Latest Version](https://pypip.in/version/envyaml/badge.svg)](https://pypi.python.org/pypi/envyaml/)
  [![EnvYaml CI/CD Pipeline](https://github.com/thesimj/envyaml/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/thesimj/envyaml/actions/workflows/main.yml)
  [![Coverage Status](https://coveralls.io/repos/github/thesimj/envyaml/badge.svg?branch=master)](https://coveralls.io/github/thesimj/envyaml?branch=master)
  ![Versions](https://img.shields.io/pypi/pyversions/envyaml.svg)
  [![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
  [![Alerts](https://img.shields.io/lgtm/alerts/g/thesimj/envyaml.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/thesimj/envyaml/alerts/)
  [![Code Quality](https://img.shields.io/lgtm/grade/python/g/thesimj/envyaml.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/thesimj/envyaml/context:python)
  [![License](https://img.shields.io/pypi/l/envyaml.svg)](LICENSE)



  Modern configuration files become to be more and more complex, flexible, and readable.
  YAML file format is perfect to store configuration but had no option to pass environment variables. They give flexibility, readability and provide an option to store complex data structure.
  This project goal is to simplify usage of the YAML file and environment variables as program configuration files with easy config key access.



  ```bash
  pip install envyaml
  ```



  Let's assume we had a project with this config file `env.yaml`

  ```yaml

  project:
    name: "${PROJECT_NAME}-${PROJECT_ID}"

  database:
      host: $DATABASE_HOST
      port: 3301
      username: username
      password: $DATABASE_PASSWORD
      database: test

      table:
        user: table_user
        blog: table_blog

      query: |-
        SELECT * FROM "users" WHERE "user" = $1 AND "login" = $2 AND "pwd" = $3

      insert: |-
        INSERT INTO "{table}" (user, login) VALUES ($1, $2)

  redis:
      host: $REDIS_HOST|127.0.0.1
      port: 5040
      db: $REDIS_DB|3 # with default value

      config:
        expire: 300
        prefix: $REDIS_PREFIX

  escaped: $$.extra

  empty_env: $NOT_EXIST_ENV_VARIABLE
  ```

  Environment variables set to
  ```
  PROJECT_NAME=simple-hello
  PROJECT_ID=42
  DATABASE_HOST=xxx.xxx.xxx.xxx
  DATABASE_PASSWORD=super-secret-password
  REDIS_PREFIX=state
  ```

  Parse file with `EnvYAML`

  ```python
  from envyaml import EnvYAML


  env = EnvYAML('env.yaml')


  print(env['project.name'])




  print(env['database'])















  print(env['database.host'])




  print(env['database.table.user'])




  print(env['database.query'])





  print(env['redis.host'])




  print(env['redis.db'])




  print(env['list_test'][0])




  print(env['list_test.1'])




  print('redis.port' in env)



  ```

  Access config with `get` function and default value
  ```python
  print(env.get('not.exist.value', 'default'))


  print(env.get('empty_env', 'default'))


  print(env['empty_env'])

  ```

  Use `format` function to update placeholder
  ```python
  print(env.format('database.insert', table="users"))

  ```


  This mode is **enable by default** and prevents from declaring variables that do not exist in `environment variables` or `.env` file. This leads to having runtime `ValueError` exception when variables do not define with message `Strict mode enabled, variable $VAR not defined!`. To disable **strict** mode specify `strict=False` at EnvYAML object initialization. Another option to disable `strict` mode is to define `ENVYAML_STRICT_DISABLE` environment variable before initializing EnvYAML object.



  In case of usage `$` in env.yaml file as value double `$$` should be used. Example:
  Use `escaped` variable
  ```python
  print(env['escaped'])

  ```



  MIT licensed. See the [LICENSE](LICENSE) file for more details.


pkgId: 9c1e5e2da26b0ce52ea24422ca48fc23ff49e512e81bd437dcc60a69d3d0c212
name: python-epc
arch: src
version: 0.0.5
epoch: 0
release: 1
summary: EPC (RPC stack for Emacs Lisp) implementation in Python
url: https://github.com/tkf/python-epc
rpm_license: GNU General Public License v3 (GPLv3)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-d959458d-a705-48a2-b39f-b59d14dd0b84
location_href: 00003576-python-epc/python-epc-0.0.5-1.src.rpm
checksum_type: sha256
description:
  Links:
  * `Documentation <http://python-epc.readthedocs.org/>`_ (at Read the Docs)
  * `Repository <https://github.com/tkf/python-epc>`_ (at GitHub)
  * `Issue tracker <https://github.com/tkf/python-epc/issues>`_ (at GitHub)
  * `PyPI <http://pypi.python.org/pypi/epc>`_
  * `Travis CI <https://travis-ci.org/#!/tkf/python-epc>`_ |build-status|
  Other resources:
  * `kiwanami/emacs-epc <https://github.com/kiwanami/emacs-epc>`_
    (Client and server implementation in Emacs Lisp and Perl.)
  * `tkf/emacs-jedi <https://github.com/tkf/emacs-jedi>`_
    (Python completion for Emacs using EPC server.)
     image:: https://secure.travis-ci.org/tkf/python-epc.png
             ?branch=master


pkgId: 05735c634cffad16e1d443e666562248d614c00d4943ea8969d21485a5760076
name: python-ephem-debuginfo
arch: x86_64
version: 4.1.4
epoch: 0
release: 1
summary: Debug information for package python-ephem
url: http://rhodesmill.org/pyephem/
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-48487355-bc23-4501-a55b-d792a3d8cc4b
rpm_sourcerpm: python-ephem-4.1.4-1.src.rpm
location_href: 00003577-python-ephem/python-ephem-debuginfo-4.1.4-1.x86_64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-ephem.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: d9922eff6ae4134a92da90645da78cbd8f31d5285dcb8528452b8a84f9395a9a
name: python-ephem-debugsource
arch: x86_64
version: 4.1.4
epoch: 0
release: 1
summary: Debug sources for package python-ephem
url: http://rhodesmill.org/pyephem/
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-48487355-bc23-4501-a55b-d792a3d8cc4b
rpm_sourcerpm: python-ephem-4.1.4-1.src.rpm
location_href: 00003577-python-ephem/python-ephem-debugsource-4.1.4-1.x86_64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-ephem.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: ff5ba9bdea50561cde3cafd937f32ad565b45db41bcde998e37befd42348abb8
name: python-epiweeks
arch: src
version: 2.1.4
epoch: 0
release: 1
summary: Epidemiological weeks calculation based on the US CDC (MMWR) and ISO week numbering systems
url: https://github.com/mhalshehri/epiweeks
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-f84322be-ebc1-40b4-b467-a494bb72b8b1
location_href: 00011477-python-epiweeks/python-epiweeks-2.1.4-1.src.rpm
checksum_type: sha256
description:
  <!-- start description -->

  A Python package to calculate epidemiological weeks using the US CDC (MMWR) and
  ISO week numbering systems.

  <!-- end description -->

  [![Build Status](https://img.shields.io/github/workflow/status/mhalshehri/epiweeks/Release)][build]
  [![Coverage Status](https://img.shields.io/badge/coverage-100%25-success)][coverage]
  [![Code Quality](https://img.shields.io/codefactor/grade/github/mhalshehri/epiweeks/main?&label=codefactor)][quality]
  [![Docs Status](https://img.shields.io/readthedocs/epiweeks/stable)][docs]
  [![PyPI Downloads](https://img.shields.io/pypi/dm/epiweeks?color=blue)][downloads]
  [![PyPI Version](https://img.shields.io/pypi/v/epiweeks)][pypi-version]
  [![Conda Version](https://img.shields.io/conda/vn/bioconda/epiweeks)][conda-version]
  [![Package License](https://img.shields.io/github/license/mhalshehri/epiweeks)][license]

  [build]: https://github.com/mhalshehri/epiweeks/actions/workflows/release.yml
  [coverage]: https://github.com/mhalshehri/epiweeks/actions/workflows/release.yml
  [quality]:
    https://www.codefactor.io/repository/github/mhalshehri/epiweeks/overview/main
  [docs]: https://epiweeks.readthedocs.io
  [downloads]: https://pypistats.org/packages/epiweeks
  [pypi-version]: https://pypi.python.org/pypi/epiweeks
  [conda-version]: https://anaconda.org/bioconda/epiweeks
  [license]: https://github.com/mhalshehri/epiweeks/blob/main/LICENSE

  <!-- start summary -->



  - Support for both the US CDC (MMWR) and ISO week numbering systems.
  - Accurate and tested calculations.
  - Intuitive, clean, and easy-to-use interface.
  - Calculation of the start and end dates of weeks.
  - Iteration of year's weeks or week's dates.
  - Rich comparison between weeks.
  - Logical operations for weeks (addition, subtraction and containment).
  - Validation of input data.
  - Works on Python 3.6+ with zero dependencies.
  - Thoroughly tested with 100% test coverage.



  To install using `pip`, run:

  ```shell
  pip install epiweeks
  ```

  To install using `conda`, run:

  ```shell
  conda install -c bioconda epiweeks
  ```



  ```python
  from epiweeks import Week, Year

  week = Week(2019, 1)
  print(week.enddate())


  for week in Year(2019).iterweeks():
      print(week.enddate())





  ```

  <!-- end summary -->



  Please see <https://epiweeks.readthedocs.io> for full documentation of this
  package, including background, more usage examples and API reference.



  This project is licensed under the terms of the MIT license.


pkgId: cf0d4e479a60de1d12a74cb3ea8aa8935aba99391ff101f8701bb73e91214b3d
name: python-epsagon
arch: src
version: 1.82.0
epoch: 0
release: 1
summary: Epsagon Instrumentation for Python
url: https://github.com/epsagon/epsagon-python
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-e634c53b-6de7-4e46-9ec2-caa3543ab48a
location_href: 00012739-python-epsagon/python-epsagon-1.82.0-1.src.rpm
checksum_type: sha256
description:
  <p align="center">
    <a href="https://epsagon.com" target="_blank" align="center">
      <img src="https://cdn2.hubspot.net/hubfs/4636301/Positive%20RGB_Logo%20Horizontal%20-01.svg" width="300">
    </a>
    <br />
  </p>

  [![Build Status](https://travis-ci.com/epsagon/epsagon-python.svg?token=wsveVqcNtBtmq6jpZfSf&branch=master)](https://travis-ci.com/epsagon/epsagon-python)
  [![Pyversions](https://img.shields.io/pypi/pyversions/epsagon.svg?style=flat)](https://pypi.org/project/epsagon/)
  [![PypiVersions](https://img.shields.io/pypi/v/epsagon.svg)](https://pypi.org/project/epsagon/)



  ![Trace](trace.png)

  This package provides tracing to Python applications for the collection of distributed tracing and performance metrics in [Epsagon](https://app.epsagon.com/?utm_source=github).



  - [Installation](#installation)
  - [Usage](#usage)
    - [Auto-tracing](#auto-tracing)
    - [Calling the SDK](#calling-the-sdk)
    - [Tagging Traces](#tagging-traces)
    - [Measuring Function Duration](#measuring-function-duration)
    - [Custom Errors](#custom-errors)
    - [Filter Sensitive Data](#filter-sensitive-data)
    - [Ignore Endpoints](#ignore-endpoints)
    - [Trace URL](#trace-url)
  - [Frameworks](#frameworks)
  - [Integrations](#integrations)
  - [Configuration](#configuration)
  - [Getting Help](#getting-help)
  - [Opening Issues](#opening-issues)
  - [License](#license)




  To install Epsagon, simply run:
  ```sh
  pip install -U epsagon
  ```





  The simplest way to get started is to run your python command with the following environment variable:
  ```sh
  export EPSAGON_TOKEN=<epsagon-token>
  export EPSAGON_APP_NAME=<app-name-stage>
  export EPSAGON_METADATA=FALSE
  export AUTOWRAPT_BOOTSTRAP=epsagon
  <python command>
  ```

  For example:
  ```sh
  export EPSAGON_TOKEN=<your-token>
  export EPSAGON_APP_NAME=django-prod
  export EPSAGON_METADATA=FALSE
  export AUTOWRAPT_BOOTSTRAP=epsagon
  python app.py
  ```

  When using inside a `Dockerfile`, you can use `ENV` instead of `export`.

  You can see the list of auto-tracing [supported frameworks](#frameworks)



  Another simple alternative is to copy the snippet into your code:
  ```python
  import epsagon
  epsagon.init(
      token='epsagon-token',
      app_name='app-name-stage',
      metadata_only=False,
  )
  ```

  To run on your framework please refer to [supported frameworks](#frameworks)




  You can add custom tags to your traces, for easier filtering and aggregations.

  Add the following call inside your code:
  ```python
  epsagon.label('key', 'value')
  epsagon.label('user_id', user_id)
  ```

  You can also use it to ship custom metrics:
  ```python
  epsagon.label('key', 'metric')
  epsagon.label('items_in_cart', items_in_cart)
  ```

  Valid types are `string`, `bool`, `int` and `float`.
  In some [frameworks](#frameworks) tagging can be done in different ways.



  You can measure internal functions duration by using the `@epsagon.measure` decorator. For example:
  ```python
  @epsagon.measure
  def heavy_calculation():
      
  ```

  This will ship another metric label to epsagon where the `key=heavy_calculation_duration` and the value will be the actual duration, in seconds.
  You'll be able to see this label in the trace search, visualize it over time, and generate alerts based on this metric.



  You can set a trace as an error (although handled correctly) to get an alert or just follow it on the dashboard.

  Add the following call inside your code:
  ```python
  try:
      fail = 1 / 0
  except Exception as ex:
      epsagon.error(ex)


  epsagon.error(Exception('My custom error'))
  ```

  In some [frameworks](#frameworks) custom errors can be declared in different ways.



  You can pass a list of sensitive properties and hostnames and they will be filtered out from the traces:

  ```python
  epsagon.init(
      token='epsagon-token',
      app_name='app-name-stage',
      metadata_only=False,
      keys_to_ignore=['password', 'user_name'],
      url_patterns_to_ignore=['example.com', 'auth.com']
  )
  ```

  Or specify keys that are allowed:

  ```python
  epsagon.init(
      token='epsagon-token',
      app_name='app-name-stage',
      metadata_only=False,
      keys_to_allow=['Request Data', 'Status_Code'],
  )
  ```

  The `keys_to_ignore` and `keys_to_allow` properties can contain strings (will perform a loose match, so that `First Name` also matches `first_name`).
  Also, you can set `url_patterns_to_ignore` to ignore HTTP calls to specific domains.




  You can ignore certain incoming requests by specifying endpoints:
  ```python
  epsagon.init(
      token='epsagon-token',
      app_name='app-name-stage',
      metadata_only=False,
      ignored_endpoints=['/healthcheck'],
  )
  ```



  You can get the Epsagon dashboard URL for the current trace, using the following:
  ```python
  import epsagon


  print('Epsagon trace URL:', epsagon.get_trace_url())
  ```

  This can be useful to have an easy access the trace from different platforms.



  The following frameworks are supported by Epsagon:

  |Framework                               |Supported Version          |Auto-tracing Supported                               |
  |----------------------------------------|---------------------------|-----------------------------------------------------|
  |[AWS Lambda](#aws-lambda)               |All                        |<ul><li>- [x] (Through the dashboard only)</li></ul> |
  |[Step Functions](#step-functions)       |All                        |<ul><li>- [ ] </li></ul>                             |
  |[Generic](#generic)                     |All                        |<ul><li>- [ ] </li></ul>                             |
  |[Gunicorn](#gunicorn)                   |`>=20.0.4`                 |<ul><li>- [x] </li></ul>                             |
  |[Django](#django)                       |`>=1.11`                   |<ul><li>- [x] </li></ul>                             |
  |[Flask](#flask)                         |`>=0.5`                    |<ul><li>- [x] </li></ul>                             |
  |[Tornado](#tornado)                     |`>=4.0`                    |<ul><li>- [x] </li></ul>                             |
  |[fastapi](#fastapi)                     |`>=0.62.0`                 |<ul><li>- [x] </li></ul>                             |
  |[Celery](#celery)                       |`>=4.0.0`                  |<ul><li>- [x] </li></ul>                             |
  |[Azure Functions](#azure-functions)     |`>=2.0.0`                  |<ul><li>- [ ] </li></ul>                             |
  |[Chalice](#chalice)                     |`>=1.0.0`                  |<ul><li>- [ ] </li></ul>                             |
  |[Zappa](#zappa)                         |`>=0.30.0`                 |<ul><li>- [ ] </li></ul>                             |




  Tracing Lambda functions can be done in three methods:
  1. Auto-tracing through the Epsagon dashboard.
  2. Using the [`serverless-plugin-epsagon`](https://github.com/epsagon/serverless-plugin-epsagon) if you're using The Serverless Framework.
  3. Calling the SDK.

  **Make sure to choose just one of the methods**

  Calling the SDK is simple:

  ```python
  import epsagon
  epsagon.init(
      token='<epsagon-token>',
      app_name='<app-name-stage>',
      metadata_only=False,
  )


  @epsagon.lambda_wrapper
  def handle(event, context):
      
  ```



  Tracing Step Functions is similar to regular Lambda functions, but the wrapper changes from `lambda_wrapper` to `step_lambda_wrapper`:

  ```python
  import epsagon
  epsagon.init(
      token='<epsagon-token>',
      app_name='<app-name-stage>',
      metadata_only=False,
  )


  @epsagon.step_lambda_wrapper
  def handle(event, context):
      
  ```



  Tracing Django application can be done in two methods:
  1. [Auto-tracing](#auto-tracing) using the environment variable.
  2. Calling the SDK.

  Calling the SDK is simple, and should be done in your main `settings.py` file where the application is being initialized:
  ```python
  import epsagon
  epsagon.init(
      token='<epsagon-token>',
      app_name='<app-name-stage>',
      metadata_only=False,
  )
  ```




  Tracing Flask application can be done in two methods:
  1. [Auto-tracing](#auto-tracing) using the environment variable.
  2. Calling the SDK.

  Calling the SDK is simple, and should be done in your main `py` file where the application is being initialized:
  ```python
  import epsagon
  epsagon.init(
      token='<epsagon-token>',
      app_name='<app-name-stage>',
      metadata_only=False,
  )
  ```



  Tracing Tornado application can be done in two methods:
  1. [Auto-tracing](#auto-tracing) using the environment variable.
  2. Calling the SDK.

  Calling the SDK is simple, and should be done in your main `py` file where the application is being initialized:
  ```python
  import epsagon
  epsagon.init(
      token='<epsagon-token>',
      app_name='<app-name-stage>',
      metadata_only=False,
  )
  ```



  Tracing fastapi application can be done in two methods:
  1. [Auto-tracing](#auto-tracing) using the environment variable.
  2. Calling the SDK.

  Calling the SDK is simple, and should be done in your main `py` file where the application is being initialized:
  ```python
  import epsagon
  epsagon.init(
      token='<epsagon-token>',
      app_name='<app-name-stage>',
      metadata_only=False,
  )
  ```



  Tracing Celery consumer can be done in two methods:
  1. [Auto-tracing](#auto-tracing) using the environment variable.
  2. Calling the SDK.

  Calling the SDK is simple, and should be done in your main `py` file where the consumer is being initialized:
  ```python
  import epsagon
  epsagon.init(
      token='epsagon-token',
      app_name='app-name-stage',
      metadata_only=False,
  )
  ```



  Tracing Gunicorn application can be done in two methods:
  1. [Auto-tracing](#auto-tracing) using the environment variable.
  2. Calling the SDK.

  Calling the SDK is simple, and should be done in your main `py` file where the application is being initialized:
  ```python
  import epsagon
  epsagon.init(
      token='<epsagon-token>',
      app_name='<app-name-stage>',
      metadata_only=False,
  )
  ```



  Tracing Azure Functions can be done in the following method:

  ```python
  import azure.functions as func
  import epsagon
  epsagon.init(
      token='epsagon-token',
      app_name='app-name-stage',
      metadata_only=False,
  )

  @epsagon.azure_wrapper
  def main(req):
      return func.HttpResponse('Success')
  ```



  Tracing Chalice applications running on Lambda functions can be done by:
  ```python
  from chalice import Chalice
  import epsagon
  epsagon.init(
      token='epsagon-token',
      app_name='app-name-stage',
      metadata_only=False
  )
  app = Chalice(app_name='hello-world')



  app = epsagon.chalice_wrapper(app)
  ```



  Tracing web applications running on Lambda functions using Zappa can be done by:
  ```python
  from zappa.handler import lambda_handler
  import epsagon

  epsagon.init(
      token='epsagon-token',
      app_name='app-name-stage',
      metadata_only=False
  )



  epsagon_handler = epsagon.lambda_wrapper(lambda_handler)
  ```

  And in your `zappa_settings.json` file include the following:

  ```json
  {
    "lambda_handler": "module.path_to.epsagon_handler"
  }
  ```



  For any tracing, you can simply use the generic Epsagon wrapper using the following example:

  ```python
  import epsagon
  epsagon.init(
      token='epsagon-token',
      app_name='app-name-stage',
      metadata_only=False,
  )


  @epsagon.python_wrapper(name='my-resource')
  def main(params):
      
  ```



  Epsagon provides out-of-the-box instrumentation (tracing) for many popular frameworks and libraries.

  |Library             |Supported Version          |
  |--------------------|---------------------------|
  |logging             |Fully supported            |
  |urllib              |Fully supported            |
  |urllib3             |Fully supported            |
  |requests            |`>=2.0.0`                  |
  |httplib2            |`>=0.9.2`                  |
  |redis               |`>=2.10.0`                 |
  |pymongo             |`>=3.0.0`                  |
  |pynamodb            |`>=2.0.0`                  |
  |PyMySQL             |`>=0.7.0`                  |
  |MySQLdb             |`>=1.0.0`                  |
  |psycopg2            |`>=2.2.0`                  |
  |pg8000              |`>=1.9.0`                  |
  |botocore (boto3)    |`>=1.4.0`                  |
  |azure.cosmos        |`>=4.0.0`                  |
  |celery              |`>=4.0.0`                  |
  |greengrasssdk       |`>=1.4.0`                  |
  |SQLAlchemy          |`>=1.2.0,<1.4.0`           |
  |kafka-python        |`>=1.4.0`                  |





  Advanced options can be configured as a parameter to the init() method or as environment variables.

  |Parameter               |Environment Variable           |Type   |Default      |Description                                                                        |
  |----------------------  |------------------------------ |-------|-------------|-----------------------------------------------------------------------------------|
  |token                   |EPSAGON_TOKEN                  |String |-            |Epsagon account token                                                              |
  |app_name                |EPSAGON_APP_NAME               |String |`Application`|Application name that will be set for traces                                       |
  |metadata_only           |EPSAGON_METADATA               |Boolean|`True`       |Whether to send only the metadata (`True`) or also the payloads (`False`)          |
  |use_ssl                 |EPSAGON_SSL                    |Boolean|`True`       |Whether to send the traces over HTTPS SSL or not                                   |
  |collector_url           |EPSAGON_COLLECTOR_URL          |String |-            |The address of the trace collector to send trace to                                |
  |keys_to_ignore          |EPSAGON_IGNORED_KEYS           |List   |-            |List of keys names to be removed from the trace                                    |
  |keys_to_allow           |EPSAGON_ALLOWED_KEYS           |List   |-            |List of keys names to be included from the trace                                   |
  |ignored_endpoints       |EPSAGON_ENDPOINTS_TO_IGNORE    |List   |-            |List of endpoints to ignore from tracing (for example `/healthcheck`               |
  |url_patterns_to_ignore  |EPSAGON_URLS_TO_IGNORE         |List   |`[]`         |Array of URL patterns to ignore the calls                                          |
  |debug                   |EPSAGON_DEBUG                  |Boolean|`False`      |Enable debug prints for troubleshooting                                            |
  |disable_timeout_send    |EPSAGON_DISABLE_ON_TIMEOUT     |Boolean|`False`      |Disable timeout detection in Lambda functions                                      |
  |split_on_send           |EPSAGON_SPLIT_ON_SEND          |Boolean|`False`      |Split the trace into multiple chunks to support large traces                       |
  |propagate_lambda_id     |EPSAGON_PROPAGATE_LAMBDA_ID    |Boolean|`False`      |Insert Lambda request ID into the response payload                                 |
  |logging_tracing_enabled |EPSAGON_LOGGING_TRACING_ENABLED|Boolean|`True`      |Add Epsagon Log Id to all `logging` messages                            |
  |step_dict_output_path |EPSAGON_STEPS_OUTPUT_PATH|List|`None`      |Path in the result dict to append the Epsagon steps data  |
  |-                       |EPSAGON_HTTP_ERR_CODE          |Integer|`500`        |The minimum number of an HTTP response status code to treat as an error            |
  |-                       |EPSAGON_SEND_TIMEOUT_SEC       |Float  |`1.0`        |The timeout duration in seconds to send the traces to the trace collector          |
  |-                       |EPSAGON_DISABLE_LOGGING_ERRORS |Boolean|`False`      |Disable the automatic capture of error messages into `logging`                     |
  |-                       |EPSAGON_IGNORE_FLASK_RESPONSE  |Boolean|`False`      |Disable the automatic capture of Flask response data                     |
  |-                       |EPSAGON_SKIP_HTTP_RESPONSE     |Boolean|`False`      |Disable the automatic capture of http client response data                     |
  |-                       |DISABLE_EPSAGON                |Boolean|`False`      |A flag to completely disable Epsagon (can be used for tests or locally)            |
  |-                       |DISABLE_EPSAGON_PATCH          |Boolean|`False`      |Disable the library patching (instrumentation)                                     |
  |-                       |EPSAGON_LAMBDA_TIMEOUT_THRESHOLD_MS          |Integer|`200`      |The threshold in millieseconds to send the trace before a Lambda timeout occurs                                     |
  |-                       |EPSAGON_PAYLOADS_TO_IGNORE     |List   |-            |Array of dictionaries to not instrument. Example: `'[{"source": "serverless-plugin-warmup"}]'` |
  |-                       |EPSAGON_REMOVE_EXCEPTION_FRAMES|Boolean|`False`      |Disable the automatic capture of exception frames data (Python 3)                             |
  |-                       |EPSAGON_FASTAPI_ASYNC_MODE|Boolean|`False`      |Enable capturing of Fast API async endpoint handlers calls(Python 3)                             |






  If you have any issue around using the library or the product, please don't hesitate to:

  * Use the [documentation](https://docs.epsagon.com).
  * Use the help widget inside the product.
  * Open an issue in GitHub.




  If you encounter a bug with the Epsagon library for Python, we want to hear about it.

  When opening a new issue, please provide as much information about the environment:
  * Library version, Python runtime version, dependencies, etc.
  * Snippet of the usage.
  * A reproducible example can really help.

  The GitHub issues are intended for bug reports and feature requests.
  For help and questions about Epsagon, use the help widget inside the product.



  Provided under the MIT license. See LICENSE for details.

  Copyright 2020, Epsagon


pkgId: 914615ea3c16dc64f35d418db6044cd48a1d287de94d1e3004e9d89ef7b0abda
name: python-epson-projector
arch: src
version: 0.5.0
epoch: 0
release: 1
summary: Epson projector support for Python
url: https://github.com/pszafer/epson_projector
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-063cd67b-9d4f-499d-8740-6d0292436ece
location_href: 00003579-python-epson-projector/python-epson-projector-0.5.0-1.src.rpm
checksum_type: sha256
description:
  Requires Python 3.5. asyncio, aiohttp.

  Created mostly to use with Home Assistant.



  Check out test.py and const.py to see all posibilities to send to projector.

  ```python
  """Test and example of usage of Epson module."""
  import epson_projector as epson
  from epson_projector.const import (POWER)

  import asyncio
  import aiohttp


  async def main():
      """Run main with aiohttp ClientSession."""
      async with aiohttp.ClientSession() as session:
          await run(session)


  async def run(websession):
      """Use Projector class of epson module and check if it is turned on."""
      projector = epson.Projector(
          host='HOSTNAME',
          websession=websession,
          encryption=False)
      data = await projector.get_property(POWER)
      print(data)

  asyncio.get_event_loop().run_until_complete(main())
  ```


pkgId: f856333ad3857f43655c6af7b7a7d94ece0a65f2eff295863cadb799b5798b62
name: python-esprima
arch: src
version: 4.0.1
epoch: 0
release: 1
summary: ECMAScript parsing infrastructure for multipurpose analysis in Python
url: https://github.com/Kronuz/esprima-python
rpm_license: BSD License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a565f204-aa76-4af4-a68f-2b47b316c37e
location_href: 00012675-python-esprima/python-esprima-4.0.1-1.src.rpm
checksum_type: sha256
description:
  |Donate| |PyPI Version| |PyPI License| |PyPI Format| |PyPI Status|

  **Esprima** (`esprima.org <http://esprima.org>`__, BSD license) is a
  high performance, standard-compliant
  `ECMAScript <http://www.ecma-international.org/publications/standards/Ecma-262.htm>`__
  parser officially written in ECMAScript (also popularly known as
  `JavaScript <https://en.wikipedia.org/wiki/JavaScript>`__) and ported to
  Python. Esprima is created and maintained by `Ariya
  Hidayat <https://twitter.com/ariyahidayat>`__, with the help of `many
  contributors <https://github.com/jquery/esprima/contributors>`__.

  Python port is a line-by-line manual translation and was created and is
  maintained by `German Mendez Bravo
  (Kronuz) <https://twitter.com/germbravo>`__.

  Features
  ~~~~~~~~

  -  Full support for ECMAScript 2017 (`ECMA-262 8th
     Edition <http://www.ecma-international.org/publications/standards/Ecma-262.htm>`__)
  -  Sensible `syntax tree
     format <https://github.com/estree/estree/blob/master/es5.md>`__ as
     standardized by `ESTree project <https://github.com/estree/estree>`__
  -  Experimental support for `JSX <https://facebook.github.io/jsx/>`__, a
     syntax extension for `React <https://facebook.github.io/react/>`__
  -  Optional tracking of syntax node location (index-based and
     line-column)
  -  `Heavily tested <http://esprima.org/test/ci.html>`__ (~1500 `unit
     tests <https://github.com/jquery/esprima/tree/master/test/fixtures>`__
     with `full code
     coverage <https://codecov.io/github/jquery/esprima>`__)

  Installation
  ~~~~~~~~~~~~

  .. code:: shell

      pip install esprima

  API
  ~~~

  Esprima can be used to perform `lexical
  analysis <https://en.wikipedia.org/wiki/Lexical_analysis>`__
  (tokenization) or `syntactic
  analysis <https://en.wikipedia.org/wiki/Parsing>`__ (parsing) of a
  JavaScript program.

  A simple example:

  .. code:: javascript

      >>> import esprima
      >>> program = 'const answer = 42'

      >>> esprima.tokenize(program)
      [{
          type: "Keyword",
          value: "const"
      }, {
          type: "Identifier",
          value: "answer"
      }, {
          type: "Punctuator",
          value: "="
      }, {
          type: "Numeric",
          value: "42"
      }]

      >>> esprima.parseScript(program)
      {
          body: [
              {
                  kind: "const",
                  declarations: [
                      {
                          init: {
                              raw: "42",
                              type: "Literal",
                              value: 42
                          },
                          type: "VariableDeclarator",
                          id: {
                              type: "Identifier",
                              name: "answer"
                          }
                      }
                  ],
                  type: "VariableDeclaration"
              }
          ],
          type: "Program",
          sourceType: "script"
      }

  For more information, please read the `complete
  documentation <http://esprima.org/doc>`__.

  .. |Donate| image:: https://img.shields.io/badge/Donate-PayPal-green.svg
     :target: https://www.paypal.me/Kronuz/25
  .. |PyPI Version| image:: https://img.shields.io/pypi/v/esprima.svg
     :target: https://pypi.python.org/pypi/esprima
  .. |PyPI License| image:: https://img.shields.io/pypi/l/esprima.svg
     :target: https://pypi.python.org/pypi/esprima
  .. |PyPI Wheel| image:: https://img.shields.io/pypi/wheel/esprima.svg
     :target: https://pypi.python.org/pypi/esprima
  .. |PyPI Format| image:: https://img.shields.io/pypi/format/esprima.svg
     :target: https://pypi.python.org/pypi/esprima
  .. |PyPI Python Version| image:: https://img.shields.io/pypi/pyversions/esprima.svg
     :target: https://pypi.python.org/pypi/esprima
  .. |PyPI Implementation| image:: https://img.shields.io/pypi/implementation/esprima.svg
     :target: https://pypi.python.org/pypi/esprima
  .. |PyPI Status| image:: https://img.shields.io/pypi/status/esprima.svg
     :target: https://pypi.python.org/pypi/esprima
  .. |PyPI Downloads| image:: https://img.shields.io/pypi/dm/esprima.svg
     :target: https://pypi.python.org/pypi/esprima


pkgId: 8993189b7a62f8ec0a81e3108d9b7a323e639878249bf2e41df2c3507df9e844
name: python-et-xmlfile
arch: src
version: 1.1.0
epoch: 0
release: 1
summary: An implementation of lxml.xmlfile for the standard library
url: https://foss.heptapod.net/openpyxl/et_xmlfile
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-f63da376-96bf-4ce3-9663-2a3cec80e988
location_href: 00003584-python-et_xmlfile/python-et-xmlfile-1.1.0-1.src.rpm
checksum_type: sha256
description:
  et_xmlfile is a low memory library for creating large XML files.
  It is based upon the `xmlfile module from lxml <http://lxml.de/api.html#incremental-xml-generation>`_ with the aim of allowing code to be developed that will work with both libraries. It was developed initially for the openpyxl project but is now a standalone module.
  The code was written by Elias Rabel as part of the `Python Düsseldorf <http://pyddf.de>`_ openpyxl sprint in September 2014.


pkgId: e315d17940c421ab25a69a9093ab55a1feb1768d3fae8ae96aa386858ac43925
name: python-etcd3gw
arch: src
version: 2.1.0
epoch: 0
release: 1
summary: A python client for etcd3 grpc-gateway v3 API
url: https://docs.openstack.org/etcd3gw/latest/
rpm_license: Apache Software License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-3f687b80-2651-43cd-875e-2ede042808b0
location_href: 00003586-python-etcd3gw/python-etcd3gw-2.1.0-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://travis-ci.org/dims/etcd3-gateway.svg?branch=master)](https://travis-ci.org/dims/etcd3-gateway)
  [![PyPI version](https://badge.fury.io/py/etcd3gw.svg)](https://badge.fury.io/py/etcd3gw)
  [![codecov](https://codecov.io/gh/dims/etcd3-gateway/branch/master/graph/badge.svg)](https://codecov.io/gh/dims/etcd3-gateway "Non-generated packages only")
  [![pypi status](https://img.shields.io/pypi/status/etcd3gw.svg)](https://pypi.python.org/pypi/etcd3gw)
  [![pypi supported versions](https://img.shields.io/pypi/pyversions/etcd3gw.svg)](https://pypi.python.org/pypi/etcd3gw)

  A python client for etcd3 grpc-gateway v3 API


pkgId: 458ebdd2196ff54e4d40b7d65eb43e0773992a5bf094911090620b801104e0a6
name: python-eth-account
arch: src
version: 0.8.0
epoch: 0
release: 1
summary: eth-account: Sign Ethereum transactions and messages with local private keys
url: https://github.com/ethereum/eth-account
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-393cec51-d4fb-4e3b-aaba-096165a531f5
location_href: 00010626-python-eth-account/python-eth-account-0.8.0-1.src.rpm
checksum_type: sha256
description:
  [![Join the chat at https://gitter.im/ethereum/eth-account](https://badges.gitter.im/ethereum/eth-account.svg)](https://gitter.im/ethereum/eth-account?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
  [![Build Status](https://circleci.com/gh/ethereum/eth-account.svg?style=shield)](https://circleci.com/gh/ethereum/eth-account)
  [![PyPI version](https://badge.fury.io/py/eth-account.svg)](https://badge.fury.io/py/eth-account)
  [![Python versions](https://img.shields.io/pypi/pyversions/eth-account.svg)](https://pypi.python.org/pypi/eth-account)
  [![Docs build](https://readthedocs.org/projects/eth-account/badge/?version=latest)](http://eth-account.readthedocs.io/en/latest/?badge=latest)


  Sign Ethereum transactions and messages with local private keys

  Read more in the [documentation on ReadTheDocs](https://eth-account.readthedocs.io/). [View the change log](https://eth-account.readthedocs.io/en/latest/release_notes.html).



  ```sh
  pip install eth-account
  ```



  If you would like to hack on eth-account, please check out the [Snake Charmers
  Tactical Manual](https://github.com/ethereum/snake-charmers-tactical-manual)
  for information on how we do:

  - Testing
  - Pull Requests
  - Code Style
  - Documentation



  You can set up your dev environment with:

  ```sh
  git clone git@github.com:ethereum/eth-account.git
  cd eth-account
  virtualenv -p python3 venv
  . venv/bin/activate
  pip install -e ".[dev]"
  ```

  To run the integration test cases, you need to install node and the custom cli tool as follows:

  ```sh
  apt-get install -y nodejs  # As sudo
  ./tests/integration/ethers-cli/setup_node_v12.sh  # As sudo
  cd tests/integration/ethers-cli
  npm install -g .  # As sudo
  ```



  During development, you might like to have tests run on every file save.

  Show flake8 errors on file change:

  ```sh

  when-changed -v -s -r -1 eth_account/ tests/ -c "clear; flake8 eth_account tests && echo 'flake8 success' || echo 'error'"
  ```

  Run multi-process tests in one command, but without color:

  ```sh

  pytest --numprocesses=4 --looponfail --maxfail=1

  pytest -n 4 -f --maxfail=1
  ```

  Run in one thread, with color and desktop notifications:

  ```sh
  cd venv
  ptw --onfail "notify-send -t 5000 'Test failure ⚠⚠⚠⚠⚠' 'python 3 test on eth-account failed'" ../tests ../eth_account
  ```



  For Debian-like systems:
  ```
  apt install pandoc
  ```

  To release a new version:

  ```sh
  make release bump=$$VERSION_PART_TO_BUMP$$
  ```



  The version format for this repo is `{major}.{minor}.{patch}` for stable, and
  `{major}.{minor}.{patch}-{stage}.{devnum}` for unstable (`stage` can be alpha or beta).

  To issue the next version in line, specify which part to bump,
  like `make release bump=minor` or `make release bump=devnum`. This is typically done from the
  master branch, except when releasing a beta (in which case the beta is released from master,
  and the previous stable branch is released from said branch).

  If you are in a beta version, `make release bump=stage` will switch to a stable.

  To issue an unstable version when the current version is stable, specify the
  new version explicitly, like `make release bump="--new-version 4.0.0-alpha.1 devnum"`


pkgId: 6e877cb63c8427d64a5db62e2d60578db0a74520d2b839406f2884b19a3f2763
name: python-eth-brownie
arch: src
version: 1.19.3
epoch: 0
release: 1
summary: A Python framework for Ethereum smart contract deployment, testing and interaction.
url: https://github.com/eth-brownie/brownie
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-34f5099a-4be7-4d54-a942-42848d453de9
location_href: 00014111-python-eth-brownie/python-eth-brownie-1.19.3-1.src.rpm
checksum_type: sha256
description:
  [![Pypi Status](https://img.shields.io/pypi/v/eth-brownie.svg)](https://pypi.org/project/eth-brownie/) [![Build Status](https://img.shields.io/github/workflow/status/eth-brownie/brownie/brownie%20workflow)](https://github.com/eth-brownie/brownie/actions) [![Docs Status](https://readthedocs.org/projects/eth-brownie/badge/?version=latest)](https://eth-brownie.readthedocs.io/en/stable/) [![Coverage Status](https://img.shields.io/codecov/c/github/eth-brownie/brownie)](https://codecov.io/gh/eth-brownie/brownie)

  Brownie is a Python-based development and testing framework for smart contracts targeting the [Ethereum Virtual Machine](https://solidity.readthedocs.io/en/v0.6.0/introduction-to-smart-contracts.html#the-ethereum-virtual-machine).



  * Full support for [Solidity](https://github.com/ethereum/solidity) (`>=0.4.22`) and [Vyper](https://github.com/vyperlang/vyper) (`>=0.1.0-beta.16`)
  * Contract testing via [`pytest`](https://github.com/pytest-dev/pytest), including trace-based coverage evaluation
  * Property-based and stateful testing via [`hypothesis`](https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python)
  * Powerful debugging tools, including python-style tracebacks and custom error strings
  * Built-in console for quick project interaction



  * [python3](https://www.python.org/downloads/release/python-3910/) version 3.7 or greater, python3-dev
  * [ganache](https://github.com/trufflesuite/ganache) - tested with version [7.0.2](https://github.com/trufflesuite/ganache/releases/tag/v7.0.2)





  The recommended way to install Brownie is via [`pipx`](https://github.com/pipxproject/pipx). pipx installs Brownie into a virtual environment and makes it available directly from the commandline. Once installed, you will never have to activate a virtual environment prior to using Brownie.

  To install `pipx`:

  ```bash
  python3 -m pip install --user pipx
  python3 -m pipx ensurepath
  ```

  To install Brownie using `pipx`:

  ```bash
  pipx install eth-brownie
  ```

  To upgrade to the latest version:

  ```bash
  pipx upgrade eth-brownie
  ```

  To use lastest master or another branch as version:
  ```bash
  pipx install git+https://github.com/eth-brownie/brownie.git@master
  ```



  You can install the latest release via [`pip`](https://pypi.org/project/pip/):

  ```bash
  pip install eth-brownie
  ```



  You can clone the repository and use [`setuptools`](https://github.com/pypa/setuptools) for the most up-to-date version:

  ```bash
  git clone https://github.com/eth-brownie/brownie.git
  cd brownie
  python3 setup.py install
  ```



  If you want to install brownie inside your own project (rather than as a standalone cli tool):

  ```bash
  export BROWNIE_LIB=1
  pip install eth-brownie
  ```

  This loosens the pins on all dependencies. You'll want to make sure you have your own `requirements.txt` to make sure upgrades upstream don't surprise anyone.



  There are extra tools that are helpful when developing:

  ```bash
  git clone https://github.com/eth-brownie/brownie.git
  cd brownie
  python3 -m venv venv
  ./venv/bin/pip install wheel
  ./venv/bin/pip install -e . -r requirements-dev.txt
  ```

  Upgrading the pinned versions of dependencies is easy:
  ```
  ./venv/bin/pip-compile --upgrade
  ./venv/bin/pip-compile --upgrade requirements-dev.in
  ./venv/bin/pip-compile --upgrade requirements-windows.in
  ```

  Even small upgrades of patch versions have broken things in the past, so be sure to run all tests after upgrading things!



  To initialize a new Brownie project, start by creating a new folder. From within that folder, type:

  ```bash
  brownie init
  ```

  Next, type `brownie --help` for basic usage information.



  Brownie documentation is hosted at [Read the Docs](https://eth-brownie.readthedocs.io/en/latest/).

  If you have any questions about how to use Brownie, feel free to ask on [Ethereum StackExchange](https://ethereum.stackexchange.com/) or join us on [Gitter](https://gitter.im/eth-brownie/community).



  To run the tests, first install the developer dependencies:

  ```bash
  pip install -e . -r requirements-dev.txt
  ```

  Then use [`tox`](https://github.com/tox-dev/tox) to run the complete suite against the full set of build targets, or [`pytest`](https://github.com/pytest-dev/pytest) to run tests against a specific version of Python. If you are using [`pytest`](https://github.com/pytest-dev/pytest) you must include the `-p no:pytest-brownie` flag to prevent it from loading the Brownie plugin.



  You can use a sandbox container provided in the [`docker-compose.yml`](docker-compose.yml) file for testing inside a Docker environment.

  This container provides everything you need to test using a Python 3.6 interpreter.

  Start the test environment:

  ```bash
  docker-compose up -d
  ```

  To open a session to the container:

  ```bash
  docker-compose exec sandbox bash
  ```

  To run arbitrary commands, use the `bash -c` prefix.

  ```bash
  docker-compose exec sandbox bash -c ''
  ```

  For example, to run the tests in `brownie/tests/test_format_input.py`:

  ```bash
  docker-compose exec sandbox bash -c 'python -m pytest tests/convert/test_format_input.py'
  ```



  You can also attach to a RPC client already running inside a docker container.

  For example for running ganache-cli you could just startup the official ganache-cli docker image:

  ```bash
  docker run -p 8545:8545 trufflesuite/ganache-cli
  ```

  Then in another terminal on your host you could connect to it:

  ```bash
  brownie console
  ```

  If you have your RPC client bound to a specific hostname e.g. `ganache` you could create a separate brownie network for it:

  ```bash
  brownie networks add Development dev cmd=ganache-cli host=http://ganache:8545
  ```

  Then connect to it with:

  ```bash
  brownie console --network dev
  ```



  Help is always appreciated! Feel free to open an issue if you find a problem, or a pull request if you've solved an issue.

  Please check out our [Contribution Guide](CONTRIBUTING.md) prior to opening a pull request, and join the Brownie [Gitter channel](https://gitter.im/eth-brownie/community) if you have any questions.



  This project is licensed under the [MIT license](LICENSE).


pkgId: 460e409bafaad5dd76f3b1d495f694b7cd3f4b115c20b577952f5057f1995d98
name: python-eth-hash
arch: src
version: 0.5.1
epoch: 0
release: 1
summary: eth-hash: The Ethereum hashing function, keccak256, sometimes (erroneously) called sha3
url: https://github.com/ethereum/eth-hash
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4a07f202-8a09-49b5-961b-30df6f39be7e
location_href: 00010352-python-eth-hash/python-eth-hash-0.5.1-1.src.rpm
checksum_type: sha256
description:
  [![Join the chat at https://gitter.im/ethereum/web3.py](https://badges.gitter.im/ethereum/web3.py.svg)](https://gitter.im/ethereum/web3.py?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
  [![Build Status](https://circleci.com/gh/ethereum/eth-hash.svg?style=shield)](https://circleci.com/gh/ethereum/eth-hash)
  [![PyPI version](https://badge.fury.io/py/eth-hash.svg)](https://badge.fury.io/py/eth-hash)
  [![Python versions](https://img.shields.io/pypi/pyversions/eth-hash.svg)](https://pypi.python.org/pypi/eth-hash)
  [![Docs build](https://readthedocs.org/projects/eth-hash/badge/?version=latest)](http://eth-hash.readthedocs.io/en/latest/?badge=latest)


  The Ethereum hashing function, keccak256, sometimes (erroneously) called sha3

  Note: the similarly named [pyethash](https://github.com/ethereum/ethash)
  has a completely different use: it generates proofs of work.

  This is a low-level library, intended to be used internally by other Ethereum tools.
  If you're looking for a convenient hashing tool, check out
  [`eth_utils.keccak()`](https://eth-utils.readthedocs.io/en/stable/utilities.html#keccak-bytes-int-bool-text-str-hexstr-str-bytes)
  which will be a little friendlier, and provide access to other helpful utilities.

  Read more in the [documentation on ReadTheDocs](https://eth-hash.readthedocs.io/). [View the change log](https://eth-hash.readthedocs.io/en/latest/release_notes.html).




  ```sh
  pip install eth-hash[pycryptodome]
  ```

  ```py
  >>> from eth_hash.auto import keccak
  >>> keccak(b'')
  b"\xc5\xd2F\x01\x86\xf7#<\x92~}\xb2\xdc\xc7\x03\xc0\xe5\x00\xb6S\xca\x82';{\xfa\xd8\x04]\x85\xa4p"
  ```

  See the [docs](http://eth-hash.readthedocs.io/en/latest/quickstart.html#quickstart)
  for more about choosing and installing backends.



  If you would like to hack on eth-hash, please check out the [Snake Charmers
  Tactical Manual](https://github.com/ethereum/snake-charmers-tactical-manual)
  for information on how we do:

  - Testing
  - Pull Requests
  - Code Style
  - Documentation



  You can set up your dev environment with:

  ```sh
  git clone git@github.com:ethereum/eth-hash.git
  cd eth-hash
  virtualenv -p python3 venv
  . venv/bin/activate
  pip install -e .[dev]
  ```



  During development, you might like to have tests run on every file save.

  Show flake8 errors on file change:

  ```sh

  when-changed -v -s -r -1 eth_hash/ tests/ -c "clear; flake8 eth_hash tests && echo 'flake8 success' || echo 'error'"
  ```

  Run multi-process tests in one command, but without color:

  ```sh

  pytest --numprocesses=4 --looponfail --maxfail=1

  pytest -n 4 -f --maxfail=1
  ```

  Run in one thread, with color and desktop notifications:

  ```sh
  cd venv
  ptw --onfail "notify-send -t 5000 'Test failure ⚠⚠⚠⚠⚠' 'python 3 test on eth-hash failed'" ../tests ../eth_hash
  ```



  For Debian-like systems:
  ```
  apt install pandoc
  ```

  To release a new version:

  ```sh
  make release bump=$$VERSION_PART_TO_BUMP$$
  ```



  The version format for this repo is `{major}.{minor}.{patch}` for stable, and
  `{major}.{minor}.{patch}-{stage}.{devnum}` for unstable (`stage` can be alpha or beta).

  To issue the next version in line, specify which part to bump,
  like `make release bump=minor` or `make release bump=devnum`. This is typically done from the
  master branch, except when releasing a beta (in which case the beta is released from master,
  and the previous stable branch is released from said branch).

  If you are in a beta version, `make release bump=stage` will switch to a stable.

  To issue an unstable version when the current version is stable, specify the
  new version explicitly, like `make release bump="--new-version 4.0.0-alpha.1 devnum"`


pkgId: 8723004537bdb62044a472760684bcb8036f7a0f5df8793b0620c836f39e340b
name: python-eth-keyfile
arch: src
version: 0.6.1
epoch: 0
release: 1
summary: A library for handling the encrypted keyfiles used to store ethereum private keys.
url: https://github.com/ethereum/eth-keyfile
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c148d211-6851-4f9f-9f9d-1a3985af186c
location_href: 00010666-python-eth-keyfile/python-eth-keyfile-0.6.1-1.src.rpm
checksum_type: sha256
description:
  A library for handling the encrypted keyfiles used to store ethereum private keys


  > This library and repository was previously located at https://github.com/pipermerriam/ethereum-keyfile.  It was transferred to the Ethereum foundation github in November 2017 and renamed to `eth-keyfile`.  The PyPi package was also renamed from `ethereum-keyfile` to `eth-keyfile`.



  ```sh
  pip install eth-keyfile
  ```




  ```sh
  pip install -e .[dev]
  ```




  You can run the tests with:

  ```sh
  py.test tests
  ```

  Or you can install `tox` to run the full test suite.




  Pandoc is required for transforming the markdown README to the proper format to
  render correctly on pypi.

  For Debian-like systems:

  ```
  apt install pandoc
  ```

  Or on OSX:

  ```sh
  brew install pandoc
  ```

  To release a new version:

  ```sh
  make release bump=$$VERSION_PART_TO_BUMP$$
  ```



  The version format for this repo is `{major}.{minor}.{patch}` for stable, and
  `{major}.{minor}.{patch}-{stage}.{devnum}` for unstable (`stage` can be alpha or beta).

  To issue the next version in line, specify which part to bump,
  like `make release bump=minor` or `make release bump=devnum`.

  If you are in a beta version, `make release bump=stage` will switch to a stable.

  To issue an unstable version when the current version is stable, specify the
  new version explicitly, like `make release bump="--new-version 2.0.0-alpha.1 devnum"`






  Takes either a filesystem path represented as a string or a file object and
  returns the parsed keyfile json as a python dictionary.

  ```python
  >>> from eth_keyfile import load_keyfile
  >>> load_keyfile('path/to-my-keystore/keystore.json')
  {
      "crypto" : {
          "cipher" : "aes-128-ctr",
          "cipherparams" : {
              "iv" : "6087dab2f9fdbbfaddc31a909735c1e6"
          },
          "ciphertext" : "5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46",
          "kdf" : "pbkdf2",
          "kdfparams" : {
              "c" : 262144,
              "dklen" : 32,
              "prf" : "hmac-sha256",
              "salt" : "ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"
          },
          "mac" : "517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"
      },
      "id" : "3198bc9c-6672-5ab3-d995-4942343ae5b6",
      "version" : 3
  }
  ```




  Takes the following parameters:

  * `private_key`: A bytestring of length 32
  * `password`: A bytestring which will be the password that can be used to decrypt the resulting keyfile.
  * `kdf`: The key derivation function.  Allowed values are `pbkdf2` and `scrypt`.  By default, `pbkdf2` will be used.
  * `work_factor`: The work factor which will be used for the given key derivation function.  By default `1000000` will be used for `pbkdf2` and `262144` for `scrypt`.
  * `salt_size`: Salt size in bytes.

  Returns the keyfile json as a python dictionary.

  ```python
  >>> private_key = b'\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01'
  >>> create_keyfile_json(private_key, b'foo')
  {
      "address" : "1a642f0e3c3af545e7acbd38b07251b3990914f1",
      "crypto" : {
          "cipher" : "aes-128-ctr",
          "cipherparams" : {
              "iv" : "6087dab2f9fdbbfaddc31a909735c1e6"
          },
          "ciphertext" : "5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46",
          "kdf" : "pbkdf2",
          "kdfparams" : {
              "c" : 262144,
              "dklen" : 32,
              "prf" : "hmac-sha256",
              "salt" : "ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"
          },
          "mac" : "517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"
      },
      "id" : "3198bc9c-6672-5ab3-d995-4942343ae5b6",
      "version" : 3
  }
  ```



  Takes the keyfile json as a python dictionary and the password for the keyfile,
  returning the decoded private key.

  ```python
  >>> keyfile_json = {
  ...     "crypto" : {
  ...         "cipher" : "aes-128-ctr",
  ...         "cipherparams" : {
  ...             "iv" : "6087dab2f9fdbbfaddc31a909735c1e6"
  ...         },
  ...         "ciphertext" : "5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46",
  ...         "kdf" : "pbkdf2",
  ...         "kdfparams" : {
  ...             "c" : 262144,
  ...             "dklen" : 32,
  ...             "prf" : "hmac-sha256",
  ...             "salt" : "ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"
  ...         },
  ...         "mac" : "517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"
  ...     },
  ...     "id" : "3198bc9c-6672-5ab3-d995-4942343ae5b6",
  ...     "version" : 3
  ... }
  >>> decode_keyfile_json(keyfile_json, b'foo')
  b'\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01'
  ```



  Takes a filesystem path represented by a string or a file object and the
  password for the keyfile.  Returns the private key as a bytestring.

  ```python
  >>> extract_key_from_keyfile('path/to-my-keystore/keyfile.json', b'foo')
  b'\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01'
  ```


pkgId: b64444f922a14842ec28ea1331c1768d2e4724dd01321c62ccef750122929eb2
name: python-eth-keys
arch: src
version: 0.4.0
epoch: 0
release: 1
summary: Common API for Ethereum key operations.
url: https://github.com/ethereum/eth-keys
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-7316e3ef-3b69-4556-b247-31cf4b716a93
location_href: 00010572-python-eth-keys/python-eth-keys-0.4.0-1.src.rpm
checksum_type: sha256
description:
  A common API for Ethereum key operations with pluggable backends.


  > This library and repository was previously located at https://github.com/pipermerriam/ethereum-keys.  It was transferred to the Ethereum foundation github in November 2017 and renamed to `eth-keys`.  The PyPi package was also renamed from `ethereum-keys` to `eth-keys`.



  ```sh
  pip install eth-keys
  ```



  ```sh
  pip install -e .[dev]
  ```




  You can run the tests with:

  ```sh
  py.test tests
  ```

  Or you can install `tox` to run the full test suite.




  Pandoc is required for transforming the markdown README to the proper format to
  render correctly on pypi.

  For Debian-like systems:

  ```
  apt install pandoc
  ```

  Or on OSX:

  ```sh
  brew install pandoc
  ```

  To release a new version:

  ```sh
  make release bump=$$VERSION_PART_TO_BUMP$$
  ```




  The version format for this repo is `{major}.{minor}.{patch}` for stable, and
  `{major}.{minor}.{patch}-{stage}.{devnum}` for unstable (`stage` can be alpha or beta).

  To issue the next version in line, specify which part to bump,
  like `make release bump=minor` or `make release bump=devnum`.

  If you are in a beta version, `make release bump=stage` will switch to a stable.

  To issue an unstable version when the current version is stable, specify the
  new version explicitly, like `make release bump="--new-version 2.0.0-alpha.1 devnum"`





  ```python
  >>> from eth_keys import keys
  >>> pk = keys.PrivateKey(b'\x01' * 32)
  >>> signature = pk.sign_msg(b'a message')
  >>> pk
  '0x0101010101010101010101010101010101010101010101010101010101010101'
  >>> pk.public_key
  '0x1b84c5567b126440995d3ed5aaba0565d71e1834604819ff9c17f5e9d5dd078f70beaf8f588b541507fed6a642c5ab42dfdf8120a7f639de5122d47a69a8e8d1'
  >>> signature
  '0xccda990dba7864b79dc49158fea269338a1cf5747bc4c4bf1b96823e31a0997e7d1e65c06c5bf128b7109e1b4b9ba8d1305dc33f32f624695b2fa8e02c12c1e000'
  >>> pk.public_key.to_checksum_address()
  '0x1a642f0E3c3aF545E7AcBD38b07251B3990914F1'
  >>> signature.verify_msg(b'a message', pk.public_key)
  True
  >>> signature.recover_public_key_from_msg(b'a message') == pk.public_key
  True
  ```






  The `KeyAPI` object is the primary API for interacting with the `eth-keys`
  libary.  The object takes a single optional argument in its constructor which
  designates what backend will be used for eliptical curve cryptography
  operations.  The built-in backends are:

  * `eth_keys.backends.NativeECCBackend`: A pure python implementation of the ECC operations.
  * `eth_keys.backends.CoinCurveECCBackend`: Uses the [`coincurve`](https://github.com/ofek/coincurve) library for ECC operations.

  By default, `eth-keys` will *try* to use the `CoinCurveECCBackend`,
  falling back to the `NativeECCBackend` if the `coincurve` library is not
  available.

  > Note: The `coincurve` library is not automatically installed with `eth-keys` and must be installed separately.

  The `backend` argument can be given in any of the following forms.

  * Instance of the backend class
  * The backend class
  * String with the dot-separated import path for the backend class.

  ```python
  >>> from eth_keys import KeyAPI
  >>> from eth_keys.backends import NativeECCBackend

  >>> keys = KeyAPI(NativeECCBackend)
  >>> keys = KeyAPI(NativeECCBackend())
  >>> keys = KeyAPI('eth_keys.backends.NativeECCBackend')

  >>> keys = KeyAPI('eth_keys.backends.CoinCurveECCBackend')
  ```

  The backend can also be configured using the environment variable
  `ECC_BACKEND_CLASS` which should be set to the dot-separated python import path
  to the desired backend.

  ```python
  >>> import os
  >>> os.environ['ECC_BACKEND_CLASS'] = 'eth_keys.backends.CoinCurveECCBackend'
  ```




  This method returns a signature for the given `message_hash`, signed by the
  provided `private_key`.

  * `message_hash`: **must** be a byte string of length 32
  * `private_key`: **must** be an instance of `PrivateKey`




  Returns `True` or `False` based on whether the provided `signature` is a valid
  signature for the provided `message_hash` and `public_key`.

  * `message_hash`: **must** be a byte string of length 32
  * `signature`: **must** be an instance of `Signature`
  * `public_key`: **must** be an instance of `PublicKey`




  Returns the `PublicKey` instances recovered from the given `signature` and
  `message_hash`.

  * `message_hash`: **must** be a byte string of length 32
  * `signature`: **must** be an instance of `Signature`




  Returns the `PublicKey` instances computed from the given `private_key`
  instance.

  * `private_key`: **must** be an instance of `PublicKey`




  There is a common API for the following objects.

  * `PublicKey`
  * `PrivateKey`
  * `Signature`

  Each of these objects has all of the following APIs.

  * `obj.to_bytes()`: Returns the object in it's canonical `bytes` serialization.
  * `obj.to_hex()`: Returns a text string of the hex encoded canonical representation.




  The `PublicKey` class takes a single argument which must be a bytes string with length 64.

  > Note that there are two other common formats for public keys: 65 bytes with a leading `\x04` byte
  > and 33 bytes starting with either `\x02` or `\x03`. To use the former with the `PublicKey` object,
  > remove the first byte. For the latter, refer to `PublicKey.from_compressed_bytes`.

  The following methods are available:




  This `classmethod` returns a new `PublicKey` instance computed from its compressed representation.

  * `compressed_bytes` **must** be a byte string of length 33 starting with `\x02` or `\x03`.




  This `classmethod` returns a new `PublicKey` instance computed from the
  given `private_key`.

  * `private_key` may either be a byte string of length 32 or an instance of the `KeyAPI.PrivateKey` class.




  This `classmethod` returns a new `PublicKey` instance computed from the
  provided `message` and `signature`.

  * `message` **must** be a byte string
  * `signature` **must** be an instance of `KeyAPI.Signature`




  Same as `PublicKey.recover_from_msg` except that `message_hash` should be the Keccak
  hash of the `message`.




  This method returns `True` or `False` based on whether the signature is a valid
  for the given message.




  Same as `PublicKey.verify_msg` except that `message_hash` should be the Keccak
  hash of the `message`.




  Returns the compressed representation of this public key.




  Returns the hex encoded ethereum address for this public key.




  Returns the ERC55 checksum formatted ethereum address for this public key.




  Returns the 20-byte representation of the ethereum address for this public key.




  The `PrivateKey` class takes a single argument which must be a bytes string with length 32.

  The following methods and properties are available




  This *property* holds the `PublicKey` instance coresponding to this private key.




  This method returns a signature for the given `message` in the form of a
  `Signature` instance

  * `message` **must** be a byte string.




  Same as `PrivateKey.sign` except that `message_hash` should be the Keccak
  hash of the `message`.




  The `Signature` class can be instantiated in one of two ways.

  * `signature_bytes`: a bytes string with length 65.
  * `vrs`: a 3-tuple composed of the integers `v`, `r`, and `s`.

  > Note: If using the `signature_bytes` to instantiate, the byte string should be encoded as `r_bytes | s_bytes | v_bytes` where `|` represents concatenation.  `r_bytes` and `s_bytes` should be 32 bytes in length.  `v_bytes` should be a single byte `\x00` or `\x01`.

  Signatures are expected to use `1` or `0` for their `v` value.

  The following methods and properties are available




  This property returns the `v` value from the signature as an integer.




  This property returns the `r` value from the signature as an integer.




  This property returns the `s` value from the signature as an integer.




  This property returns a 3-tuple of `(v, r, s)`.




  This method returns `True` or `False` based on whether the signature is a valid
  for the given public key.

  * `message`: **must** be a byte string.
  * `public_key`: **must** be an instance of `PublicKey`




  Same as `Signature.verify_msg` except that `message_hash` should be the Keccak
  hash of the `message`.




  This method returns a `PublicKey` instance recovered from the signature.

  * `message`: **must** be a byte string.




  Same as `Signature.recover_public_key_from_msg` except that `message_hash`
  should be the Keccak hash of the `message`.






  This error is raised during instantaition of any of the `PublicKey`,
  `PrivateKey` or `Signature` classes if their constructor parameters are
  invalid.




  This error is raised from any of the `recover` or `verify` methods involving
  signatures if the signature is invalid.


pkgId: 88135ec5d25587e941eb76a63f0bcf72a9fc2e0117abb7dfe902d8f8c069a924
name: python-eth-rlp
arch: src
version: 0.3.0
epoch: 0
release: 1
summary: eth-rlp: RLP definitions for common Ethereum objects in Python
url: https://github.com/ethereum/eth-rlp
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-62723018-39ff-458f-8c72-32972ce9724f
location_href: 00010682-python-eth-rlp/python-eth-rlp-0.3.0-1.src.rpm
checksum_type: sha256
description:
  [![Join the chat at https://gitter.im/ethereum/eth-rlp](https://badges.gitter.im/ethereum/eth-rlp.svg)](https://gitter.im/ethereum/eth-rlp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
  [![Build Status](https://circleci.com/gh/ethereum/eth-rlp.svg?style=shield)](https://circleci.com/gh/ethereum/eth-rlp)
  [![PyPI version](https://badge.fury.io/py/eth-rlp.svg)](https://badge.fury.io/py/eth-rlp)
  [![Python versions](https://img.shields.io/pypi/pyversions/eth-rlp.svg)](https://pypi.python.org/pypi/eth-rlp)
  [![Docs build](https://readthedocs.org/projects/eth-rlp/badge/?version=latest)](http://eth-rlp.readthedocs.io/en/latest/?badge=latest)


  RLP definitions for common Ethereum objects in Python

  Read more in the [documentation on ReadTheDocs](http://eth-rlp.readthedocs.io/). [View the change log](http://eth-rlp.readthedocs.io/en/latest/release_notes.html).



  ```sh
  pip install eth-rlp
  ```



  If you would like to hack on eth-rlp, please check out the [Snake Charmers
  Tactical Manual](https://github.com/ethereum/snake-charmers-tactical-manual)
  for information on how we do:

  - Testing
  - Pull Requests
  - Code Style
  - Documentation



  You can set up your dev environment with:

  ```sh
  git clone git@github.com:ethereum/eth-rlp.git
  cd eth-rlp
  virtualenv -p python3 venv
  . venv/bin/activate
  pip install -e .[dev]
  ```



  During development, you might like to have tests run on every file save.

  Show flake8 errors on file change:

  ```sh

  when-changed -v -s -r -1 eth_rlp/ tests/ -c "clear; flake8 eth_rlp tests && echo 'flake8 success' || echo 'error'"
  ```

  Run multi-process tests in one command, but without color:

  ```sh

  pytest --numprocesses=4 --looponfail --maxfail=1

  pytest -n 4 -f --maxfail=1
  ```

  Run in one thread, with color and desktop notifications:

  ```sh
  cd venv
  ptw --onfail "notify-send -t 5000 'Test failure ⚠⚠⚠⚠⚠' 'python 3 test on eth-rlp failed'" ../tests ../eth_rlp
  ```



  For Debian-like systems:
  ```
  apt install pandoc
  ```

  To release a new version:

  ```sh
  make release bump=$$VERSION_PART_TO_BUMP$$
  ```



  The version format for this repo is `{major}.{minor}.{patch}` for stable, and
  `{major}.{minor}.{patch}-{stage}.{devnum}` for unstable (`stage` can be alpha or beta).

  To issue the next version in line, specify which part to bump,
  like `make release bump=minor` or `make release bump=devnum`. This is typically done from the
  master branch, except when releasing a beta (in which case the beta is released from master,
  and the previous stable branch is released from said branch).

  If you are in a beta version, `make release bump=stage` will switch to a stable.

  To issue an unstable version when the current version is stable, specify the
  new version explicitly, like `make release bump="--new-version 4.0.0-alpha.1 devnum"`


pkgId: 01ce51b74864630fcbfaccc8069e9539e2f4caf8718f9cfe91e44456f6a5e44d
name: python-eth-utils
arch: src
version: 2.1.0
epoch: 0
release: 1
summary: eth-utils: Common utility functions for python code that interacts with Ethereum
url: https://github.com/ethereum/eth-utils
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c97f3866-56c7-4d86-ba98-fa1a3185dcde
location_href: 00010375-python-eth-utils/python-eth-utils-2.1.0-1.src.rpm
checksum_type: sha256
description:
  [![Join the chat at https://gitter.im/ethereum/eth-utils](https://badges.gitter.im/ethereum/eth-utils.svg)](https://gitter.im/ethereum/eth-utils?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
  [![Build Status](https://circleci.com/gh/ethereum/eth-utils.svg?style=shield)](https://circleci.com/gh/ethereum/eth-utils)
  [![PyPI version](https://badge.fury.io/py/eth-utils.svg)](https://badge.fury.io/py/eth-utils)
  [![Python versions](https://img.shields.io/pypi/pyversions/eth-utils.svg)](https://pypi.python.org/pypi/eth-utils)
  [![Docs build](https://readthedocs.org/projects/eth-utils/badge/?version=latest)](http://eth-utils.readthedocs.io/en/latest/?badge=latest)


  Common utility functions for python code that interacts with Ethereum

  Read more in the [documentation on ReadTheDocs](https://eth-utils.readthedocs.io/). [View the change log](https://eth-utils.readthedocs.io/en/latest/release_notes.html).



  ```sh
  pip install eth-utils
  ```



  If you would like to hack on eth-utils, please check out the [Snake Charmers
  Tactical Manual](https://github.com/ethereum/snake-charmers-tactical-manual)
  for information on how we do:

  - Testing
  - Pull Requests
  - Code Style
  - Documentation



  You can set up your dev environment with:

  ```sh
  git clone git@github.com:ethereum/eth-utils.git
  cd eth-utils
  virtualenv -p python3 venv
  . venv/bin/activate
  pip install -e .[dev]
  pip install -e eth-hash[pycryptodome]
  ```



  During development, you might like to have tests run on every file save.

  Show flake8 errors on file change:

  ```sh

  when-changed -v -s -r -1 eth_utils/ tests/ -c "clear; flake8 eth_utils tests && echo 'flake8 success' || echo 'error'"
  ```

  Run multi-process tests in one command, but without color:

  ```sh

  pytest --numprocesses=4 --looponfail --maxfail=1

  pytest -n 4 -f --maxfail=1
  ```

  Run in one thread, with color and desktop notifications:

  ```sh
  cd venv
  ptw --onfail "notify-send -t 5000 'Test failure ⚠⚠⚠⚠⚠' 'python 3 test on eth-utils failed'" ../tests ../eth_utils
  ```



  To release a new version:

  ```sh
  make release bump=$$VERSION_PART_TO_BUMP$$
  ```



  The version format for this repo is `{major}.{minor}.{patch}` for stable, and
  `{major}.{minor}.{patch}-{stage}.{devnum}` for unstable (`stage` can be alpha or beta).

  To issue the next version in line, specify which part to bump,
  like `make release bump=minor` or `make release bump=devnum`. This is typically done from the
  master branch, except when releasing a beta (in which case the beta is released from master,
  and the previous stable branch is released from said branch).

  If you are in a beta version, `make release bump=stage` will switch to a stable.

  To issue an unstable version when the current version is stable, specify the
  new version explicitly, like `make release bump="--new-version 4.0.0-alpha.1 devnum"`


pkgId: 007d56204e9f94d68f4615303a3969a103ead8be6b7d29bbae8e5a15f5ea0635
name: python-eventlet
arch: src
version: 0.33.3
epoch: 0
release: 1
summary: Highly concurrent networking library
url: http://eventlet.net
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-bbd8d7a1-3ea4-473c-a60d-452653c0c03f
location_href: 00003587-python-eventlet/python-eventlet-0.33.3-1.src.rpm
checksum_type: sha256
description:
  Here's something you can try right on the command line::
      % python3
      >>> import eventlet
      >>> from eventlet.green.urllib.request import urlopen
      >>> gt = eventlet.spawn(urlopen, 'http://eventlet.net')
      >>> gt2 = eventlet.spawn(urlopen, 'http://secondlife.com')
      >>> gt2.wait()
      >>> gt.wait()


pkgId: 3ad3e40f6413f11d5e35ab8a4321c0aeac715c032365287be0315285d3804e83
name: python-evergreen.py
arch: src
version: 3.5.5
epoch: 0
release: 1
summary: Python client for the Evergreen API
url: https://github.com/evergreen-ci/evergreen.py
rpm_license: Apache-2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c033d5d4-bdaa-4201-8e5d-f7064c41e605
location_href: 00009844-python-evergreen-py/python-evergreen.py-3.5.5-1.src.rpm
checksum_type: sha256
description:
  A client library for the Evergreen API written in python. Currently supports the V2 version of
  the API. For more details, see https://github.com/evergreen-ci/evergreen/wiki/REST-V2-Usage.

  ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/evergreen.py) [![PyPI](https://img.shields.io/pypi/v/evergreen.py.svg)](https://pypi.org/project/evergreen.py/) [![Coverage Status](https://coveralls.io/repos/github/evergreen-ci/evergreen.py/badge.svg?branch=master)](https://coveralls.io/github/evergreen-ci/evergreen.py?branch=master)



  1. [Description](#description)
  2. [Getting Help](#getting-help)
  3. [Dependencies](#dependencies)
  4. [Installation](#installation)
  5. [Usage](#usage)
  6. [Documentation](#documentation)
  7. [Contributor's Guide](#contributors-guide)
      - [Setting up a local development environment](#setting-up-a-local-development-environment)
      - [Linting/formatting](#lintingformatting)
      - [Running tests](#running-tests)
      - [Automatically running checks on commit](#automatically-running-checks-on-commit)
      - [Versioning](#versioning)
      - [Code Review](#code-review)
      - [Deployment](#deployment)



  This is a Python client library for interacting with Evergreen and Evergreen objects. It currently only
  supports the V2 version of Evergreen's api. It can be used either by Python code in a separate application
  or on the command line to get data about Evergreen objects quickly and easily.




  If you have a question about evergreen.py, please mention @dag-on-call in
  slack channel [#evergreen-users](https://mongodb.slack.com/messages/#evergreen-users/),
  or email us at
  dev-prod-dag@mongodb.com.


  Create a [DAG ticket](https://jira.mongodb.org/projects/DAG).


  Since #evergreen-users questions are interrupts,
  please include as much information as possible.
  This can help avoid long information-gathering threads.

  Please include the following:
  * **Motivation for Request**
    * provide us the motivation for this change.
  * **Context**
    * provide some background contexts for this issue.
  * **Description**
    * provide some descriptions on how this issue happened.



  * Python 3.7 or later



  ```bash
  $ pip install evergreen.py
  ```



  This client can be used either in code or directly via the command line.

  In code:
  ```python
  >> from evergreen.api import EvgAuth, EvergreenApi
  >> api = EvergreenApi.get_api(EvgAuth('david.bradford', '***'))
  >> project = api.project_by_id('mongodb-mongo-master')
  >> project.display_name
  'MongoDB (master)'
  ```

  Cli:
  ```bash
  $ evg-api --json list-hosts
  {
      "host_id": "host num 0",
      "host_url": "host.num.com",
      "distro": {
          "distro_id": "ubuntu1804-build",
          "provider": "static",
          "image_id": ""
      },
      "provisioned": true,
      "started_by": "mci",
      "host_type": "",
      "user": "mci-exec",
      "status": "running",
      "running_task": {
          "task_id": null,
          "name": null,
          "dispatch_time": null,
          "version_id": null,
          "build_id": null
      },
      "user_host": false
  }
  ```



  You can find the documentation [here](https://evergreen-ci.github.io/evergreen.py/).






  * Poetry 1.1 or later

  You will need Evergreen credentials on your local machine to use this library or the attached CLI. You
  can set up your credentials by following the link [here](https://github.com/evergreen-ci/evergreen/wiki/Using-the-Command-Line-Tool#downloading-the-command-line-tool).



  This project uses [black](https://github.com/psf/black) for formatting.

  ```bash
  poetry run black src tests
  ```



  ```bash
  poetry run pytest
  ```

  There are a few tests that are slow running. These tests are not run by default, but can be included
  by setting the env variable RUN_SLOW_TESTS to any value.

  ```
  $ RUN_SLOW_TEST=1 poetry run pytest
  ```

  To get code coverage information:

  ```
  $ poetry run pytest --cov=src --cov-report=html
  ```



  This project has [pre-commit](https://pre-commit.com/) configured. Pre-commit will run
  configured checks at git commit time. To enable pre-commit on your local repository run:

  ```bash
  $ poetry run pre-commit install
  ```



  Before deploying a new version, please update the `CHANGELOG.md` file with a description of what
  is being changed.

  Deploys to [PyPi](https://pypi.org/project/evergreen.py/) are done automatically on merges to master.
  In order to avoid overwriting a previous deploy, the version should be updated on all changes. The
  [semver](https://semver.org/) versioning scheme should be used for determining the version number.

  The version is found in the `pyproject.toml` file.



  This project uses the [Evergreen Commit Queue](https://github.com/evergreen-ci/evergreen/wiki/Commit-Queue#pr).
  Add a PR comment with `evergreen merge` to trigger a merge.



  Deployment to production is automatically triggered on merges to master.


pkgId: b35b0494a578d1a4190859eaceb94bae13077cad55da6628059fb57f0cd2c20b
name: python-exif
arch: src
version: 1.6.0
epoch: 0
release: 1
summary: Read and modify image EXIF metadata using Python.
url: https://gitlab.com/TNThieding/exif
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-361697ab-778b-48c4-bc45-76410c646705
location_href: 00003592-python-exif/python-exif-1.6.0-1.src.rpm
checksum_type: sha256
description:
  [exif] Package


  .. image:: https://www.gitlab.com/TNThieding/exif/badges/master/pipeline.svg
      :target: https://gitlab.com/TNThieding/exif

  .. image:: https://www.gitlab.com/tnthieding/exif/badges/master/coverage.svg
      :target: https://gitlab.com/TNThieding/exif

  .. image:: https://readthedocs.org/projects/exif/badge/?version=latest
      :target: https://exif.readthedocs.io/en/latest/?badge=latest
      :alt: Documentation Status

  .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
      :target: https://github.com/psf/black

  .. image:: http://www.mypy-lang.org/static/mypy_badge.svg
      :target: http://mypy-lang.org/
      :alt: Checked with mypy

  Read and modify image EXIF metadata using Python without any third-party software
  dependencies. For example, batch process image metadata using a Python script.

  .. note::

      I developed this package in 2018 as a hobby; however, I no longer have the same bandwidth
      to work on this project. As always, contributions and bug fixes are welcome and appreciated.
      If this package does not suit your needs in its current form, I encourage you to investigate
      alternative packages such as piexif_, Pillow_, or the like.

      .. _piexif: https://pypi.org/project/piexif/
      .. _Pillow: https://pypi.org/project/Pillow/

  ***********
  Quick Start
  ***********

  Open an image with EXIF metadata using the Python ``open()`` built-in function. Ensure the
  binary mode flag is set. Pass this image file object into the ``exif.Image`` class::

      >>> from exif import Image
      >>> with open('grand_canyon.jpg', 'rb') as image_file:
      ...     my_image = Image(image_file)
      ...
      >>> my_image.has_exif
      True

  List EXIF attributes using the ``list_all()`` method::

      >>> my_image.list_all()
      ['_exif_ifd_pointer', '_gps_ifd_pointer', 'aperture_value', 'brightness_value', 'color_space',
       'components_configuration', 'compression', 'datetime', 'datetime_digitized', 'datetime_original', 'exif_version',
       'exposure_bias_value', 'exposure_mode', 'exposure_program', 'exposure_time', 'f_number', 'flash',
       'flashpix_version', 'focal_length', 'focal_length_in_35mm_film', 'gps_altitude', 'gps_altitude_ref',
       'gps_datestamp', 'gps_dest_bearing', 'gps_dest_bearing_ref', 'gps_horizontal_positioning_error',
       'gps_img_direction', 'gps_img_direction_ref', 'gps_latitude', 'gps_latitude_ref', 'gps_longitude',
       'gps_longitude_ref', 'gps_speed', 'gps_speed_ref', 'gps_timestamp', 'jpeg_interchange_format',
       'jpeg_interchange_format_length', 'lens_make', 'lens_model', 'lens_specification', 'make', 'maker_note',
       'metering_mode', 'model', 'orientation', 'photographic_sensitivity', 'pixel_x_dimension', 'pixel_y_dimension',
       'resolution_unit', 'scene_capture_type', 'scene_type', 'sensing_method', 'shutter_speed_value', 'software',
       'subject_area', 'subsec_time_digitized', 'subsec_time_original', 'white_balance', 'x_resolution',
       'y_and_c_positioning', 'y_resolution']

  Access EXIF metadata tags using Python attribute notation::

      >>> # Read tags with Python "get" notation.
      >>> my_image.gps_latitude
      (36.0, 3.0, 11.08)
      >>> my_image.gps_longitude
      (112.0, 5.0, 4.18)
      >>> my_image.model
      'iPhone 7'
      >>>
      >>> # Modify tags with Python "set" notation.
      >>> my_image.make = "Python"
      >>>
      >>> # Delete tags with Python "del" notation.
      >>> del my_image.gps_latitude
      >>> del my_image.gps_longitude
      >>>
      >>> # Add new tags with Python "set" notation.
      >>> from exif import LightSource
      >>> my_image.light_source = LightSource.DAYLIGHT

  Write the image with modified EXIF metadata to an image file using ``open()`` in binary
  write mode::

      >>> with open('modified_image.jpg', 'wb') as new_image_file:
      ...     new_image_file.write(my_image.get_file())
      ...

  Refer to the `usage page <https://exif.readthedocs.io/en/latest/usage.html>`_ for information and examples of alternative ways to access EXIF tags (e.g.
  with index/item syntax or with methods).


pkgId: d679d71359bdbf0cfb88f3d07ebfbbda972b9cd85b6bf84c4bd4cd493f42c942
name: python-exitstatus
arch: src
version: 2.3.0
epoch: 0
release: 1
summary: POSIX exit status codes
url: https://github.com/johnthagen/exitstatus
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4d871a9c-3f46-4926-85ac-7856335b43fc
location_href: 00014127-python-exitstatus/python-exitstatus-2.3.0-1.src.rpm
checksum_type: sha256
description:
  ``exitstatus`` provides expressive, portable definitions for the
  `standard POSIX exit codes <https://www.gnu.org/software/libc/manual/html_node/Exit-Status.html>`__.
  While Python does provide some Unix-specific exit status codes in the
  `os module <https://docs.python.org/3/library/os.html#os._exit>`__, they are not portable to
  all platforms and are missing the generic failure case.


pkgId: 84b74b3bab06c0bd0ac820e6bc70220fec9581393ec6d99bac15e45f7e5eaba1
name: python-expects
arch: src
version: 0.9.0
epoch: 0
release: 1
summary: Expressive and extensible TDD/BDD assertion library for Python
url: https://github.com/jaimegildesagredo/expects
rpm_license: Apache 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-5ae7f9b3-9aea-4d1b-9219-77cd604c1750
location_href: 00013651-python-expects/python-expects-0.9.0-1.src.rpm
checksum_type: sha256
description:
  **Expects** is an *expressive* and *extensible* TDD/BDD assertion library for Python. Expects can be *extended* by defining `new matchers <http://expects.readthedocs.io/en/latest/custom-matchers.html>`_.


pkgId: b3207db7a5a569bacbd08a65d6f8c543074b44e0f6ca78810ecf523e17a8d343
name: python-expecttest
arch: src
version: 0.1.4
epoch: 0
release: 1
summary: please add a summary manually as the author left a blank one
url: https://github.com/ezyang/expecttest
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-25ab129d-a25f-4b1a-bfc5-b96626feaf8b
location_href: 00010722-python-expecttest/python-expecttest-0.1.4-1.src.rpm
checksum_type: sha256
description:
  This library implements expect tests (also known as "golden" tests). Expect
  tests are a method of writing tests where instead of hard-coding the expected
  output of a test, you run the test to get the output, and the test framework
  automatically populates the expected output.  If the output of the test changes,
  you can rerun the test with the environment variable `EXPECTTEST_ACCEPT=1` to
  automatically update the expected output.

  Somewhat unusually, this library implements *inline* expect tests: that is to
  say, the expected output isn't saved to an external file, it is saved directly
  in the Python file (and we modify your Python file when updating the expect
  test.)

  The general recipe for how to use this is as follows:

    1. Write your test and use `assertExpectedInline()` instead of a normal
       `assertEqual`.  Leave the expected argument blank with an empty string:
       ```py
       self.assertExpectedInline(some_func(), "")
       ```

    2. Run your test.  It should fail, and you get an error message about
       accepting the output with `EXPECTTEST_ACCEPT=1`

    3. Rerun the test with `EXPECTTEST_ACCEPT=1`.  Now the previously blank string
       literal will contain the expected value of the test.
       ```py
       self.assertExpectedInline(some_func(), "my_value")
       ```

  Some tips and tricks:

    - Often, you will want to expect test on a multiline string.  This framework
      understands triple-quoted strings, so you can just write `"""my_value"""`
      and it will turn into triple-quoted strings.

    - Take some time thinking about how exactly you want to design the output
      format of the expect test.  It is often profitable to design an output
      representation specifically for expect tests.


pkgId: c2e062d7e3b14440f67dce5c6d5db35b145b7b28e8e560599ea29e700073b500
name: python-expiringdict
arch: src
version: 1.2.2
epoch: 0
release: 1
summary: Dictionary with auto-expiring values for caching purposes
url: https://www.mailgun.com/
rpm_license: Apache 2
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-b3574a77-dc4c-436a-9815-8d0b0ad7de59
location_href: 00009631-python-expiringdict/python-expiringdict-1.2.2-1.src.rpm
checksum_type: sha256
description:
  ChangeLog_
  expiringdict is a Python caching library. The core of the library is ExpiringDict class which
  is an ordered dictionary with auto-expiring values for caching purposes. Expiration happens on
  any access, object is locked during cleanup from expired values. ExpiringDict can not store
  more than `max_len` elements - the oldest will be deleted.
  **Note:** Iteration over dict and also keys() do not remove expired values!


pkgId: 7a6866aa018f5c92861c6f293913e61f9f24fc2520eaf3c4b9e00f518870d99e
name: python-exrex
arch: src
version: 0.11.0
epoch: 0
release: 1
summary: Irregular methods for regular expressions
url: https://github.com/asciimoo/exrex
rpm_license: AGPLv3+
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-e26baa36-cde3-45f0-b7ff-204932596815
location_href: 00013075-python-exrex/python-exrex-0.11.0-1.src.rpm
checksum_type: sha256
description:
  Irregular methods for regular expressions.
  Exrex is a command line tool and python module that generates all - or random - matching strings to a given regular expression and more.
  It's pure python, without external dependencies.
  There are regular expressions with infinite matching strings (eg.: `[a-z]+`), in these cases exrex limits the maximum length of the infinite parts.
  Exrex uses generators, so the memory usage does not depend on the number of matching strings.
  [![Version](https://img.shields.io/pypi/v/exrex.svg)](https://crate.io/packages/exrex/)   [![Downloads](https://img.shields.io/pypi/dm/exrex.svg)](https://crate.io/packages/exrex/)
  *Features*
   * Generating all matching strings
   * Generating a random matching string
   * Counting the number of matching strings
   * Simplification of regular expressions

  To install exrex, simply:
  ```bash
  $ pip install exrex
  ```
  or
  ```bash
  $ easy_install exrex
  ```


pkgId: b8b05f3b50869451f448c732c2bf3ea25bebc6929a0d7e711bcf5acdec496c56
name: python-fab-classic
arch: src
version: 1.19.2
epoch: 0
release: 1
summary: fab-classic is a simple, Pythonic tool for remote execution and deployment.
url: https://github.com/ploxiln/fab-classic
rpm_license: BSD License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a1fc7471-96f9-4a15-8f28-65bdebb27237
location_href: 00010291-python-fab-classic/python-fab-classic-1.19.2-1.src.rpm
checksum_type: sha256
description:
  fab-classic is `on PyPI <https://pypi.org/project/fab-classic/>`_,
  so you can ``pip install fab-classic``
  Be sure to ``pip uninstall fabric`` first if you happen to have it installed,
  because *fab-classic* uses the same import name "fabric" and entrypoint (tool)
  name "fab".
  Starting with version 1.16, *fab-classic* depends on
  `paramiko-ng <https://github.com/ploxiln/paramiko-ng/>`_ instead of
  `paramiko <https://github.com/paramiko/paramiko/>`_. Both of those packages
  are imported with the name ``paramiko``, and unfortunately that means that you
  should make sure you uninstall *paramiko* before *paramiko-ng* is installed,
  or you will get strange issues (even if things seem to work at first).
  Starting with version 1.18, you can switch back to depending on the package
  named *paramiko* by setting the environment variable ``PARAMIKO_REPLACE=1``
  while installing *fab-classic*::
      PARAMIKO_REPLACE=1 pip install --no-binary fab-classic fab-classic==1.18.0
  (*paramiko-ng* also supports ``PARAMIKO_REPLACE``,
  see `paramiko-ng#installation <https://github.com/ploxiln/paramiko-ng/#installation>`_)


pkgId: 4d0cf15046113df8478b14771a01cb465796c524a3cb1ab35124c2c0fc227208
name: python-fabric
arch: src
version: 3.0.0
epoch: 0
release: 1
summary: High level SSH command execution
url: https://fabfile.org
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-933cd1c5-6078-43c5-9a6d-0e5e7b4093f1
location_href: 00009609-python-fabric/python-fabric-3.0.0-1.src.rpm
checksum_type: sha256
description:
  Fabric is a high level Python (2.7, 3.4+) library designed to execute shell
  commands remotely over SSH, yielding useful Python objects in return. It builds
  on top of `Invoke <https://pyinvoke.org>`_ (subprocess command execution and
  command-line features) and `Paramiko <https://paramiko.org>`_ (SSH protocol
  implementation), extending their APIs to complement one another and provide
  additional functionality.
  To find out what's new in this version of Fabric, please see `the changelog
  <https://fabfile.org/changelog.html#{}>`_.
  The project maintainer keeps a `roadmap
  <https://bitprophet.org/projects#roadmap>`_ on his website.


pkgId: 0a0d5ebafc753688eaf173cf963ac4b2689b8aee30e09d04ee331688bb801553
name: python-face
arch: src
version: 22.0.0
epoch: 0
release: 1
description:
  A command-line interface parser and framework, friendly for users,
  full-featured for developers.

url: https://github.com/mahmoud/face
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c7b58382-f55f-4feb-b0c8-2222c2bf5b33
location_href: 00010024-python-face/python-face-22.0.0-1.src.rpm
checksum_type: sha256
summary:
  A command-line application framework (and CLI parser). Friendly for users, full-featured for developers.


pkgId: 5ba5cdaf08216fa0947ebb6bffcbb11e06afaf83abcfa3d23bc4a2981b57ab83
name: python-facebook-sdk
arch: src
version: 3.1.0
epoch: 0
release: 1
url: https://github.com/mobolic/facebook-sdk
rpm_license: Apache
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-531b6281-bf0c-489e-9618-f17da3671921
location_href: 00011411-python-facebook-sdk/python-facebook-sdk-3.1.0-1.src.rpm
checksum_type: sha256
summary:
  This client library is designed to support the Facebook Graph API and the official Facebook JavaScript SDK, which is the canonical way to implement Facebook authentication.


pkgId: f0a8a872646cc43547371810e687c9e2121eab1a84340fad91be115827c76065
name: python-falcon
arch: src
version: 3.1.1
epoch: 0
release: 1
summary: The ultra-reliable, fast ASGI+WSGI framework for building data plane APIs at scale.
url: https://falconframework.org
rpm_license: Apache 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-6969e0d4-aba9-4f36-81cb-80d700fe0d2c
location_href: 00003600-python-falcon/python-falcon-3.1.1-1.src.rpm
checksum_type: sha256
description:
  `Falcon <https://falconframework.org>`__ is a minimalist ASGI/WSGI framework for
  building mission-critical REST APIs and microservices, with a focus on
  reliability, correctness, and performance at scale.
  When it comes to building HTTP APIs, other frameworks weigh you down with tons
  of dependencies and unnecessary abstractions. Falcon cuts to the chase with a
  clean design that embraces HTTP and the REST architectural style.
  Falcon apps work with any `WSGI <https://www.python.org/dev/peps/pep-3333/>`_
  or `ASGI <https://asgi.readthedocs.io/en/latest/>`_ server, and run like a
  champ under CPython 3.5+ and PyPy 3.5+ (3.6+ required for ASGI).


pkgId: d629df0e7867548d102468324fcde5fec30964724cb4e16fe4fb2d44b7432f1d
name: python-falcon-multipart
arch: src
version: 0.2.0
epoch: 0
release: 1
summary: Multipart form parsing for Falcon.
url: https://github.com/yohanboniface/falcon-multipart
rpm_license: WTFPL
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-9ea3ea75-887c-4d4d-8589-f2a8799b973f
location_href: 00010979-python-falcon-multipart/python-falcon-multipart-0.2.0-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://travis-ci.org/yohanboniface/falcon-multipart.svg?branch=master)](https://travis-ci.org/yohanboniface/falcon-multipart)





      pip install falcon-multipart




  Add the `MultipartMiddleware` to your api middlewares:

      from falcon_multipart.middleware import MultipartMiddleware

      api = falcon.API(middleware=[MultipartMiddleware()])

  This will parse any `multipart/form-data` incoming request, and put the keys
  in `req._params`, including files, so you get the field as other params.




  Files will be available as [`cgi.FieldStorage`](https://docs.python.org/3/library/cgi.html),
  with following main parameters:

  - `file`: act as a python file, you can call `read()` on it, and you will
    retrieve content (as *bytes*)
  - `filename`: the filename, if given
  - `value`: the file content in *bytes*
  - `type`: the content-type, or None if not specified
  - `disposition`: content-disposition, or None if not specified




      
      
      

      def on_post(req, resp, **kwargs):
          title = req.get_param('title')
          image = req.get_param('image')
          
          raw = image.file.read()
          
          filename = image.filename


pkgId: 507346f994ea8b04b36af764313d58e8cad8dad601fd1276c33feb9be23b2cb4
name: python-fasjson-client
arch: src
version: 1.0.7
epoch: 0
release: 1
summary: An OpenAPI client for FASJSON
url: https://github.com/fedora-infra/fasjson-client
rpm_license: LGPL-3.0-or-later
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-2d210da7-5ae3-40f7-806f-3afddd5e3769
location_href: 00003601-python-fasjson-client/python-fasjson-client-1.0.7-1.src.rpm
checksum_type: sha256
description:
  A python client library for the FASJSON API

  This client uses the bravado library to build dynamic api methods based on open-api specs (version 2.0): https://github.com/Yelp/bravado

  The documentation is available at https://fasjson-client.readthedocs.io/



  Licensed under [lgpl-3.0](./LICENSE)


pkgId: 0cab4d038e3be3d72baf3056f649e86648353232521d1148e07432f03451ef76
name: python-fastai
arch: src
version: 2.7.12
epoch: 0
release: 1
summary: fastai simplifies training fast and accurate neural nets using modern best practices
url: https://github.com/fastai/fastai
rpm_license: Apache Software License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-60d45a64-0d62-4a46-baec-b10ebc7abe1d
location_href: 00010076-python-fastai/python-fastai-2.7.12-1.src.rpm
checksum_type: sha256
description:
  <!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->
  ![CI](https://github.com/fastai/fastai/workflows/CI/badge.svg)
  [![PyPI](https://img.shields.io/pypi/v/fastai?color=blue&label=pypi%20version.png)](https://pypi.org/project/fastai/#description)
  [![Conda (channel
  only)](https://img.shields.io/conda/vn/fastai/fastai?color=seagreen&label=conda%20version.png)](https://anaconda.org/fastai/fastai)
  [![Build fastai
  images](https://github.com/fastai/docker-containers/workflows/Build%20fastai%20images/badge.svg)](https://github.com/fastai/docker-containers)
  ![docs](https://github.com/fastai/fastai/workflows/docs/badge.svg)

  You can use fastai without any installation by using [Google
  Colab](https://colab.research.google.com/). In fact, every page of this
  documentation is also available as an interactive notebook - click “Open
  in colab” at the top of any page to open it (be sure to change the Colab
  runtime to “GPU” to have it run fast!) See the fast.ai documentation on
  [Using Colab](https://course.fast.ai/start_colab) for more information.
  You can install fastai on your own machines with conda (highly
  recommended), as long as you’re running Linux or Windows (NB: Mac is not
  supported). For Windows, please see the “Running on Windows” for
  important notes.
  If you’re using
  [miniconda](https://docs.conda.io/en/latest/miniconda.html)
  (recommended) then run (note that if you replace `conda` with
  [mamba](https://github.com/mamba-org/mamba) the install process will be
  much faster and more reliable):
  ``` bash
  conda install -c fastchan fastai
  ```
  …or if you’re using
  [Anaconda](https://www.anaconda.com/products/individual) then run:
  ``` bash
  conda install -c fastchan fastai anaconda
  ```
  To install with pip, use: `pip install fastai`. If you install with pip,
  you should install PyTorch first by following the PyTorch [installation
  instructions](https://pytorch.org/get-started/locally/).
  If you plan to develop fastai yourself, or want to be on the cutting
  edge, you can use an editable install (if you do this, you should also
  use an editable install of
  [fastcore](https://github.com/fastai/fastcore) to go with it.) First
  install PyTorch, and then:
      git clone https://github.com/fastai/fastai
      pip install -e "fastai[dev]"

  The best way to get started with fastai (and deep learning) is to read
  [the
  book](https://www.amazon.com/Deep-Learning-Coders-fastai-PyTorch/dp/1492045527),
  and complete [the free course](https://course.fast.ai).
  To see what’s possible with fastai, take a look at the [Quick
  Start](https://docs.fast.ai/quick_start.html), which shows how to use
  around 5 lines of code to build an image classifier, an image
  segmentation model, a text sentiment model, a recommendation system, and
  a tabular model. For each of the applications, the code is much the
  same.
  Read through the [Tutorials](https://docs.fast.ai/tutorial.html) to
  learn how to train your own models on your own datasets. Use the
  navigation sidebar to look through the fastai documentation. Every
  class, function, and method is documented here.
  To learn about the design and motivation of the library, read the [peer
  reviewed paper](https://www.mdpi.com/2078-2489/11/2/108/htm).

  fastai is a deep learning library which provides practitioners with
  high-level components that can quickly and easily provide
  state-of-the-art results in standard deep learning domains, and provides
  researchers with low-level components that can be mixed and matched to
  build new approaches. It aims to do both things without substantial
  compromises in ease of use, flexibility, or performance. This is
  possible thanks to a carefully layered architecture, which expresses
  common underlying patterns of many deep learning and data processing
  techniques in terms of decoupled abstractions. These abstractions can be
  expressed concisely and clearly by leveraging the dynamism of the
  underlying Python language and the flexibility of the PyTorch library.
  fastai includes:
  - A new type dispatch system for Python along with a semantic type
    hierarchy for tensors
  - A GPU-optimized computer vision library which can be extended in pure
    Python
  - An optimizer which refactors out the common functionality of modern
    optimizers into two basic pieces, allowing optimization algorithms to
    be implemented in 4–5 lines of code
  - A novel 2-way callback system that can access any part of the data,
    model, or optimizer and change it at any point during training
  - A new data block API
  - And much more…
  fastai is organized around two main design goals: to be approachable and
  rapidly productive, while also being deeply hackable and configurable.
  It is built on top of a hierarchy of lower-level APIs which provide
  composable building blocks. This way, a user wanting to rewrite part of
  the high-level API or add particular behavior to suit their needs does
  not have to learn how to use the lowest level.
  <img alt="Layered API" src="https://raw.githubusercontent.com/fastai/fastai/master/images/layered.png" width="345">

  It’s very easy to migrate from plain PyTorch, Ignite, or any other
  PyTorch-based library, or even to use fastai in conjunction with other
  libraries. Generally, you’ll be able to use all your existing data
  processing code, but will be able to reduce the amount of code you
  require for training, and more easily take advantage of modern best
  practices. Here are migration guides from some popular libraries to help
  you on your way:
  - [Plain PyTorch](https://docs.fast.ai/examples/migrating_pytorch.html)
  - [Ignite](https://docs.fast.ai/examples/migrating_ignite.html)
  - [Lightning](https://docs.fast.ai/examples/migrating_lightning.html)
  - [Catalyst](https://docs.fast.ai/examples/migrating_catalyst.html)

  When installing with `mamba` or `conda` replace `-c fastchan` in the
  installation with `-c pytorch -c nvidia -c fastai`, since fastchan is
  not currently supported on Windows.
  Due to python multiprocessing issues on Jupyter and Windows,
  `num_workers` of `Dataloader` is reset to 0 automatically to avoid
  Jupyter hanging. This makes tasks such as computer vision in Jupyter on
  Windows many times slower than on Linux. This limitation doesn’t exist
  if you use fastai from a script.
  See [this
  example](https://github.com/fastai/fastai/blob/master/nbs/examples/dataloader_spawn.py)
  to fully leverage the fastai API on Windows.

  To run the tests in parallel, launch:
  `nbdev_test`
  For all the tests to pass, you’ll need to install the dependencies
  specified as part of dev_requirements in settings.ini
  `pip install -e .[dev]`
  Tests are written using `nbdev`, for example see the documentation for
  `test_eq`.

  After you clone this repository, make sure you have run
  `nbdev_install_hooks` in your terminal. This install Jupyter and git
  hooks to automatically clean, trust, and fix merge conflicts in
  notebooks.
  After making changes in the repo, you should run `nbdev_prepare` and
  make additional and necessary changes in order to pass all the tests.

  For those interested in official docker containers for this project,
  they can be found
  [here](https://github.com/fastai/docker-containers#fastai).


pkgId: 941cce9ed4783a74ff2d195fb3da888f2c21e2e3934f72a5d019d1aee7f0c69d
name: python-fastapi-utils
arch: src
version: 0.2.1
epoch: 0
release: 1
summary: Reusable utilities for FastAPI
url: https://fastapi-utils.davidmontague.xyz
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-cf5145ba-2f34-4bbb-9ba2-f30914eb84bf
location_href: 00011337-python-fastapi-utils/python-fastapi-utils-0.2.1-1.src.rpm
checksum_type: sha256
description:
  **Documentation**: <a href="https://fastapi-utils.davidmontague.xyz" target="_blank">https://fastapi-utils.davidmontague.xyz</a>


pkgId: c2ec76c440a7e415e837bc2497f4ac22470a35b96b11d2f4e64c5fae39f391b8
name: python-fastavro
arch: src
version: 1.7.3
epoch: 0
release: 1
summary: Fast read/write of AVRO files
url: https://github.com/fastavro/fastavro
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-b31f8775-bc1f-4303-b859-38c2b4c0942f
location_href: 00003604-python-fastavro/python-fastavro-1.7.3-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://github.com/fastavro/fastavro/workflows/Build/badge.svg)](https://github.com/fastavro/fastavro/actions)
  [![Documentation Status](https://readthedocs.org/projects/fastavro/badge/?version=latest)](http://fastavro.readthedocs.io/en/latest/?badge=latest)
  [![codecov](https://codecov.io/gh/fastavro/fastavro/branch/master/graph/badge.svg)](https://codecov.io/gh/fastavro/fastavro)


  Because the Apache Python `avro` package is written in pure Python, it is
  relatively slow. In one test case, it takes about 14 seconds to iterate through
  a file of 10,000 records. By comparison, the JAVA `avro` SDK reads the same file in
  1.9 seconds.

  The `fastavro` library was written to offer performance comparable to the Java
  library. With regular CPython, `fastavro` uses C extensions which allow it to
  iterate the same 10,000 record file in 1.7 seconds. With PyPy, this drops to 1.5
  seconds (to be fair, the JAVA benchmark is doing some extra JSON
  encoding/decoding).

  `fastavro` supports the following Python versions:

  * Python 3.7
  * Python 3.8
  * Python 3.9
  * Python 3.10
  * Python 3.11
  * PyPy3



  * File Writer
  * File Reader (iterating via records or blocks)
  * Schemaless Writer
  * Schemaless Reader
  * JSON Writer
  * JSON Reader
  * Codecs (Snappy, Deflate, Zstandard, Bzip2, LZ4, XZ)
  * Schema resolution
  * Aliases
  * Logical Types
  * Parsing schemas into the canonical form
  * Schema fingerprinting



  * Anything involving Avro's RPC features

  [Cython]: http://cython.org/



  Documentation is available at http://fastavro.readthedocs.io/en/latest/


  `fastavro` is available both on [PyPI](http://pypi.python.org/pypi)

      pip install fastavro

  and on [conda-forge](https://conda-forge.github.io) `conda` channel.

      conda install -c conda-forge fastavro



  * Bugs and new feature requests typically start as GitHub issues where they can be discussed. I try to resolve these as time affords, but PRs are welcome from all.
  * Get approval from discussing on the GitHub issue before opening the pull request
  * Tests must be passing for pull request to be considered

  Developer requirements can be installed with `pip install -r developer_requirements.txt`.
  If those are installed, you can run the tests with `./run-tests.sh`. If you have trouble
  installing those dependencies, you can run `docker build .` to run the tests inside
  a Docker container. This won't test on all versions of Python or on PyPy, so it's possible
  to still get CI failures after making a pull request, but we can work through those errors
  if/when they happen. `.run-tests.sh` only covers the Cython tests. In order to test the
  pure Python implementation, comment out `python setup.py build_ext --inplace`
  and re-run.

  NOTE: Some tests might fail when running the tests locally. An example of this
  is this codec tests. If the supporting codec library is not available, the test
  will fail. These failures can be ignored since the tests will on pull requests
  and will be run in the correct environments with the correct dependencies set up.



  We release both to [PyPI][pypi] and to [conda-forge][conda-forge].

  We assume you have [twine][twine] installed and that you've created your own
  fork of [fastavro-feedstock][feedstock].

  * Make sure the tests pass
  * Run `make tag`
  * Wait for all artifacts to be built and published the the Github release
  * Run `make publish`
  * The conda-forge PR should get created and merged automatically

  [conda-forge]: https://conda-forge.org/
  [feedstock]: https://github.com/conda-forge/fastavro-feedstock
  [pypi]: https://pypi.python.org/pypi
  [twine]: https://pypi.python.org/pypi/twine




  See the [ChangeLog]

  [ChangeLog]: https://github.com/fastavro/fastavro/blob/master/ChangeLog



  [Project Home](https://github.com/fastavro/fastavro)


pkgId: 6bf5bf7143dd4b0608887446b84ec9d916c721098f09166861bb0790ff988a9f
name: python-fastavro-debuginfo
arch: x86_64
version: 1.7.3
epoch: 0
release: 1
summary: Debug information for package python-fastavro
url: https://github.com/fastavro/fastavro
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-b31f8775-bc1f-4303-b859-38c2b4c0942f
rpm_sourcerpm: python-fastavro-1.7.3-1.src.rpm
location_href: 00003604-python-fastavro/python-fastavro-debuginfo-1.7.3-1.x86_64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-fastavro.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: b9c6c9ac5442d5858f181ed502b79590f2cb8774077087ada118761de2cc6e5e
name: python-fastavro-debugsource
arch: x86_64
version: 1.7.3
epoch: 0
release: 1
summary: Debug sources for package python-fastavro
url: https://github.com/fastavro/fastavro
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-b31f8775-bc1f-4303-b859-38c2b4c0942f
rpm_sourcerpm: python-fastavro-1.7.3-1.src.rpm
location_href: 00003604-python-fastavro/python-fastavro-debugsource-1.7.3-1.x86_64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-fastavro.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: a0517a63f3e997ee13583155d1074d9c24d271b02e8e2edbea224ae70b833137
name: python-fastcache
arch: src
version: 1.1.0
epoch: 0
release: 1
summary: C implementation of Python 3 functools.lru_cache
url: https://github.com/pbrady/fastcache
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-bf708312-713a-4982-b2eb-007394d42940
location_href: 00003605-python-fastcache/python-fastcache-1.1.0-1.src.rpm
checksum_type: sha256
description:
  C implementation of Python 3 functools.lru_cache.  Provides speedup of 10-30x
  over standard library.  Passes test suite from standard library for lru_cache.

  Provides 2 Least Recently Used caching function decorators:

    clru_cache - built-in (faster)
               >>> from fastcache import clru_cache, __version__
               >>> __version__
               '1.1.0'
               >>> @clru_cache(maxsize=325, typed=False)
               ... def fib(n):
               ...     """Terrible Fibonacci number generator."""
               ...     return n if n < 2 else fib(n-1) + fib(n-2)
               ...
               >>> fib(300)
               222232244629420445529739893461909967206666939096499764990979600
               >>> fib.cache_info()
               CacheInfo(hits=298, misses=301, maxsize=325, currsize=301)
               >>> print(fib.__doc__)
               Terrible Fibonacci number generator.
               >>> fib.cache_clear()
               >>> fib.cache_info()
               CacheInfo(hits=0, misses=0, maxsize=325, currsize=0)
               >>> fib.__wrapped__(300)
               222232244629420445529739893461909967206666939096499764990979600
               >>> type(fib)
               >>> <class 'fastcache.clru_cache'>

    lru_cache  - python wrapper around clru_cache
               >>> from fastcache import lru_cache
               >>> @lru_cache(maxsize=128, typed=False)
               ... def f(a, b):
               ...     pass
               ...
               >>> type(f)
               >>> <class 'function'>


    (c)lru_cache(maxsize=128, typed=False, state=None, unhashable='error')

        Least-recently-used cache decorator.

        If *maxsize* is set to None, the LRU features are disabled and the cache
        can grow without bound.

        If *typed* is True, arguments of different types will be cached separately.
        For example, f(3.0) and f(3) will be treated as distinct calls with
        distinct results.

        If *state* is a list or dict, the items will be incorporated into the
        argument hash.

        The result of calling the cached function with unhashable (mutable)
        arguments depends on the value of *unhashable*:

            If *unhashable* is 'error', a TypeError will be raised.

            If *unhashable* is 'warning', a UserWarning will be raised, and
            the wrapped function will be called with the supplied arguments.
            A miss will be recorded in the cache statistics.

            If *unhashable* is 'ignore', the wrapped function will be called
            with the supplied arguments. A miss will will be recorded in
            the cache statistics.

        View the cache statistics named tuple (hits, misses, maxsize, currsize)
        with f.cache_info().  Clear the cache and statistics with f.cache_clear().
        Access the underlying function with f.__wrapped__.

        See:  http://en.wikipedia.org/wiki/Cache_algorithms#Least_Recently_Used


pkgId: 109a21eeb17fd0bc79314f057446c5c52b885361e78eea17622afa0138bd3c73
name: python-fastcore
arch: src
version: 1.5.29
epoch: 0
release: 1
summary: Python supercharged for fastai development
url: https://github.com/fastai/fastcore/
rpm_license: Apache Software License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-d279595a-89a5-451d-8570-e91162c4c7d8
location_href: 00009895-python-fastcore/python-fastcore-1.5.29-1.src.rpm
checksum_type: sha256
description:
  <!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->
  Python is a powerful, dynamic language. Rather than bake everything into
  the language, it lets the programmer customize it to make it work for
  them. `fastcore` uses this flexibility to add to Python features
  inspired by other languages we’ve loved, like multiple dispatch from
  Julia, mixins from Ruby, and currying, binding, and more from Haskell.
  It also adds some “missing features” and clean up some rough edges in
  the Python standard library, such as simplifying parallel processing,
  and bringing ideas from NumPy over to Python’s `list` type.

  To install fastcore run: `conda install fastcore -c fastai` (if you use
  Anaconda, which we recommend) or `pip install fastcore`. For an
  [editable
  install](https://stackoverflow.com/questions/35064426/when-would-the-e-editable-option-be-useful-with-pip-install),
  clone this repo and run: `pip install -e ".[dev]"`. fastcore is tested
  to work on Ubuntu, macOS and Windows (versions tested are those show
  with the `-latest` suffix
  [here](https://docs.github.com/en/actions/reference/specifications-for-github-hosted-runners#supported-runners-and-hardware-resources).
  `fastcore` contains many features, including:
  - `fastcore.test`: Simple testing functions
  - `fastcore.foundation`: Mixins, delegation, composition, and more
  - `fastcore.xtras`: Utility functions to help with functional-style
    programming, parallel processing, and more
  - `fastcore.dispatch`: Multiple dispatch methods
  - `fastcore.transform`: Pipelines of composed partially reversible
    transformations
  To get started, we recommend you read through [the fastcore
  tour](https://fastcore.fast.ai/tour.html).

  After you clone this repository, please run `nbdev_install_hooks` in
  your terminal. This sets up git hooks, which clean up the notebooks to
  remove the extraneous stuff stored in the notebooks (e.g. which cells
  you ran) which causes unnecessary merge conflicts.
  To run the tests in parallel, launch `nbdev_test`.
  Before submitting a PR, check that the local library and notebooks
  match.
  - If you made a change to the notebooks in one of the exported cells,
    you can export it to the library with `nbdev_prepare`.
  - If you made a change to the library, you can export it back to the
    notebooks with `nbdev_update`.


pkgId: 554b01003783de558a450fc9ae756c89a4cfc1efb74a5ebe8de60001111d6741
name: python-fastdownload
arch: src
version: 0.0.7
epoch: 0
release: 1
summary: A general purpose data downloading library.
url: https://github.com/fastai/fastdownload/tree/master/
rpm_license: Apache Software License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c054d3ff-79e4-41b3-adeb-8e0d1ee5b07a
location_href: 00010322-python-fastdownload/python-fastdownload-0.0.7-1.src.rpm
checksum_type: sha256
description:
  > Easily download, verify, and extract archives


  If you have datasets or other archives that you want to make available to your users, and ensure they always have the latest versions and that they are downloaded correctly, `fastdownload` can help.



  Using pip:

      pip install fastdownload

  ...or using conda:

      conda install -c fastai fastdownload



  The situation where you might want to use `fastdownload` is where you have one or more URLs pointing at some archives you want to make available, and you want to ensure that your users download those archives correctly, have the latest version, and that it's as easy as possible for them to access the information in those archives.

  Your user just calls a single method, `FastDownload.get`, passing the URL required, and the URL will be downloaded and extracted to the directories you choose. The path to the extracted file is returned. If that URL has already been downloaded, then the cached archive or contents will be used automatically. However, if that size or hash of the archive is different to what it should be, then the user will be informed, and a new version will be downloaded.

  In the future, you may want to update one or more of your archives. When you do so, `fastdownload` will ensure your users have the latest version, by checking their downloaded archives against your updated file size and hash information.

  For instance, `fastai` uses `fastdownload` to provide access to datasets for deep learning. `fastai` users can download and extract them with a single command, using the return value to access the files. The files are automatically placed in appropriate subdirectories of a `.fastai` folder in the user's homedir. If a dataset is updated, users are informed the next time they use the dataset, and the latest version is automatically downloaded and extracted for them.



  When your users download an archive, `fastdownload` will automatically save it to a directory, check if the size and hash matches, and extract the contents. Minimal usage for downloading and extracting is:

  ```python
  from fastdownload import FastDownload
  d = FastDownload()
  path = d.get('https://...')
  ```

  After this, `path` will contain the path where the extracted files are located. By default, archives are saved to `{base}/archive`, and extracted to `{base}/data`. `{base}` defaults to `~/.fastdownload`. If there is more than one file or folder in the root of the downloaded archive, then a new folder is created in `data` for the contents.

  Instead of `get`, use `download` to download the URL without extracting it, or `extract` to extract the URL without downloading it (assuming it's already been downloaded to the `archive` directory). All of these methods accept a `force` parameter which will download/extract the archive even if it's already present.

  You can change any or all of the `base`, `archive`, and `data` paths by passing them to `FastDownload`:

  ```python
  d = FastDownload(base='~/.mypath', archive='downloaded', data='extracted')
  ```

  You can remove the cached archive file and/or the extracted contents with `rm`:

  ```python
  d.rm('https://...')
  ```




  `fastdownload` will add a file `download_checks.py` to your Python module which contains file sizes and hashes for your archives. The file is located in the same directory as a module you choose, e.g.:

  ```python
  d = FastDownload(module=fastai.some_module)
  ```

  Then use `update` to create or update the size and hash for a URL:

  ```python
  d.update('https://...')
  ```

  You will now find there is a file called `download_checks.py` in the same directory where `fastai.some_module` is located, which contains a Python dict with the URL, size, and hash for this file. If you've downloaded this file before to your `archive` path then it will be used, instead of downloading a new copy. Use `get(force=True)` first to download a new copy if even you have it in your archive.



  If there is a file called `config.ini` in your `base` directory, then keys `archive` and `data` will be used as the default values for `FastDownload`. The file should be in [configparser](https://docs.python.org/3/library/configparser.html) format. Here's a sample `config.ini`:

  ```
  [DEFAULT]
  archive = downloaded
  data = extracted
  ```

  If there is no ini file present, one will be automatically created for for you using the details you pass to `FastDownload`.

  You can add any additional key/value pairs to the config file that you want. When you call `FastDownload.get` pass `extract_key` to use a key other than `data` for choosing a location to extract to.


pkgId: 117622467dc195095dd36273426160c69702bda79c17e641c3ba9451be9bb4b5
name: python-fastly
arch: src
version: 1.3.0
epoch: 0
release: 1
summary: A Python Fastly API client library
url: https://github.com/fastly/fastly-py
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-881eba0f-44ad-4e48-823a-83009c7b064a
location_href: 00013513-python-fastly/python-fastly-1.3.0-1.src.rpm
checksum_type: sha256
description:
  *AclApi* | [**create_acl**](docs/AclApi.md#create_acl) | **POST** /service/{service_id}/version/{version_id}/acl | Create a new ACL
  *AclApi* | [**delete_acl**](docs/AclApi.md#delete_acl) | **DELETE** /service/{service_id}/version/{version_id}/acl/{acl_name} | Delete an ACL
  *AclApi* | [**get_acl**](docs/AclApi.md#get_acl) | **GET** /service/{service_id}/version/{version_id}/acl/{acl_name} | Describe an ACL
  *AclApi* | [**list_acls**](docs/AclApi.md#list_acls) | **GET** /service/{service_id}/version/{version_id}/acl | List ACLs
  *AclApi* | [**update_acl**](docs/AclApi.md#update_acl) | **PUT** /service/{service_id}/version/{version_id}/acl/{acl_name} | Update an ACL
  *AclEntryApi* | [**bulk_update_acl_entries**](docs/AclEntryApi.md#bulk_update_acl_entries) | **PATCH** /service/{service_id}/acl/{acl_id}/entries | Update multiple ACL entries
  *AclEntryApi* | [**create_acl_entry**](docs/AclEntryApi.md#create_acl_entry) | **POST** /service/{service_id}/acl/{acl_id}/entry | Create an ACL entry
  *AclEntryApi* | [**delete_acl_entry**](docs/AclEntryApi.md#delete_acl_entry) | **DELETE** /service/{service_id}/acl/{acl_id}/entry/{acl_entry_id} | Delete an ACL entry
  *AclEntryApi* | [**get_acl_entry**](docs/AclEntryApi.md#get_acl_entry) | **GET** /service/{service_id}/acl/{acl_id}/entry/{acl_entry_id} | Describe an ACL entry
  *AclEntryApi* | [**list_acl_entries**](docs/AclEntryApi.md#list_acl_entries) | **GET** /service/{service_id}/acl/{acl_id}/entries | List ACL entries
  *AclEntryApi* | [**update_acl_entry**](docs/AclEntryApi.md#update_acl_entry) | **PATCH** /service/{service_id}/acl/{acl_id}/entry/{acl_entry_id} | Update an ACL entry
  *ApexRedirectApi* | [**delete_apex_redirect**](docs/ApexRedirectApi.md#delete_apex_redirect) | **DELETE** /apex-redirects/{apex_redirect_id} | Delete an apex redirect
  *ApexRedirectApi* | [**get_apex_redirect**](docs/ApexRedirectApi.md#get_apex_redirect) | **GET** /apex-redirects/{apex_redirect_id} | Get an apex redirect
  *ApexRedirectApi* | [**list_apex_redirects**](docs/ApexRedirectApi.md#list_apex_redirects) | **GET** /service/{service_id}/version/{version_id}/apex-redirects | List apex redirects
  *ApexRedirectApi* | [**update_apex_redirect**](docs/ApexRedirectApi.md#update_apex_redirect) | **PUT** /apex-redirects/{apex_redirect_id} | Update an apex redirect
  *BackendApi* | [**create_backend**](docs/BackendApi.md#create_backend) | **POST** /service/{service_id}/version/{version_id}/backend | Create a backend
  *BackendApi* | [**delete_backend**](docs/BackendApi.md#delete_backend) | **DELETE** /service/{service_id}/version/{version_id}/backend/{backend_name} | Delete a backend
  *BackendApi* | [**get_backend**](docs/BackendApi.md#get_backend) | **GET** /service/{service_id}/version/{version_id}/backend/{backend_name} | Describe a backend
  *BackendApi* | [**list_backends**](docs/BackendApi.md#list_backends) | **GET** /service/{service_id}/version/{version_id}/backend | List backends
  *BackendApi* | [**update_backend**](docs/BackendApi.md#update_backend) | **PUT** /service/{service_id}/version/{version_id}/backend/{backend_name} | Update a backend
  *BillingApi* | [**get_invoice**](docs/BillingApi.md#get_invoice) | **GET** /billing/v2/year/{year}/month/{month} | Get an invoice
  *BillingApi* | [**get_invoice_by_id**](docs/BillingApi.md#get_invoice_by_id) | **GET** /billing/v2/account_customers/{customer_id}/invoices/{invoice_id} | Get an invoice
  *BillingApi* | [**get_invoice_mtd**](docs/BillingApi.md#get_invoice_mtd) | **GET** /billing/v2/account_customers/{customer_id}/mtd_invoice | Get month-to-date billing estimate
  *BillingAddressApi* | [**add_billing_addr**](docs/BillingAddressApi.md#add_billing_addr) | **POST** /customer/{customer_id}/billing_address | Add a billing address to a customer
  *BillingAddressApi* | [**delete_billing_addr**](docs/BillingAddressApi.md#delete_billing_addr) | **DELETE** /customer/{customer_id}/billing_address | Delete a billing address
  *BillingAddressApi* | [**get_billing_addr**](docs/BillingAddressApi.md#get_billing_addr) | **GET** /customer/{customer_id}/billing_address | Get a billing address
  *BillingAddressApi* | [**update_billing_addr**](docs/BillingAddressApi.md#update_billing_addr) | **PATCH** /customer/{customer_id}/billing_address | Update a billing address
  *CacheSettingsApi* | [**create_cache_settings**](docs/CacheSettingsApi.md#create_cache_settings) | **POST** /service/{service_id}/version/{version_id}/cache_settings | Create a cache settings object
  *CacheSettingsApi* | [**delete_cache_settings**](docs/CacheSettingsApi.md#delete_cache_settings) | **DELETE** /service/{service_id}/version/{version_id}/cache_settings/{cache_settings_name} | Delete a cache settings object
  *CacheSettingsApi* | [**get_cache_settings**](docs/CacheSettingsApi.md#get_cache_settings) | **GET** /service/{service_id}/version/{version_id}/cache_settings/{cache_settings_name} | Get a cache settings object
  *CacheSettingsApi* | [**list_cache_settings**](docs/CacheSettingsApi.md#list_cache_settings) | **GET** /service/{service_id}/version/{version_id}/cache_settings | List cache settings objects
  *CacheSettingsApi* | [**update_cache_settings**](docs/CacheSettingsApi.md#update_cache_settings) | **PUT** /service/{service_id}/version/{version_id}/cache_settings/{cache_settings_name} | Update a cache settings object
  *ConditionApi* | [**create_condition**](docs/ConditionApi.md#create_condition) | **POST** /service/{service_id}/version/{version_id}/condition | Create a condition
  *ConditionApi* | [**delete_condition**](docs/ConditionApi.md#delete_condition) | **DELETE** /service/{service_id}/version/{version_id}/condition/{condition_name} | Delete a condition
  *ConditionApi* | [**get_condition**](docs/ConditionApi.md#get_condition) | **GET** /service/{service_id}/version/{version_id}/condition/{condition_name} | Describe a condition
  *ConditionApi* | [**list_conditions**](docs/ConditionApi.md#list_conditions) | **GET** /service/{service_id}/version/{version_id}/condition | List conditions
  *ConditionApi* | [**update_condition**](docs/ConditionApi.md#update_condition) | **PUT** /service/{service_id}/version/{version_id}/condition/{condition_name} | Update a condition
  *ContactApi* | [**delete_contact**](docs/ContactApi.md#delete_contact) | **DELETE** /customer/{customer_id}/contact/{contact_id} | Delete a contact
  *ContactApi* | [**list_contacts**](docs/ContactApi.md#list_contacts) | **GET** /customer/{customer_id}/contacts | List contacts
  *ContentApi* | [**content_check**](docs/ContentApi.md#content_check) | **GET** /content/edge_check | Check status of content in each POP&#39;s cache
  *CustomerApi* | [**delete_customer**](docs/CustomerApi.md#delete_customer) | **DELETE** /customer/{customer_id} | Delete a customer
  *CustomerApi* | [**get_customer**](docs/CustomerApi.md#get_customer) | **GET** /customer/{customer_id} | Get a customer
  *CustomerApi* | [**get_logged_in_customer**](docs/CustomerApi.md#get_logged_in_customer) | **GET** /current_customer | Get the logged in customer
  *CustomerApi* | [**list_users**](docs/CustomerApi.md#list_users) | **GET** /customer/{customer_id}/users | List users
  *CustomerApi* | [**update_customer**](docs/CustomerApi.md#update_customer) | **PUT** /customer/{customer_id} | Update a customer
  *DictionaryApi* | [**create_dictionary**](docs/DictionaryApi.md#create_dictionary) | **POST** /service/{service_id}/version/{version_id}/dictionary | Create an edge dictionary
  *DictionaryApi* | [**delete_dictionary**](docs/DictionaryApi.md#delete_dictionary) | **DELETE** /service/{service_id}/version/{version_id}/dictionary/{dictionary_name} | Delete an edge dictionary
  *DictionaryApi* | [**get_dictionary**](docs/DictionaryApi.md#get_dictionary) | **GET** /service/{service_id}/version/{version_id}/dictionary/{dictionary_name} | Get an edge dictionary
  *DictionaryApi* | [**list_dictionaries**](docs/DictionaryApi.md#list_dictionaries) | **GET** /service/{service_id}/version/{version_id}/dictionary | List edge dictionaries
  *DictionaryApi* | [**update_dictionary**](docs/DictionaryApi.md#update_dictionary) | **PUT** /service/{service_id}/version/{version_id}/dictionary/{dictionary_name} | Update an edge dictionary
  *DictionaryInfoApi* | [**get_dictionary_info**](docs/DictionaryInfoApi.md#get_dictionary_info) | **GET** /service/{service_id}/version/{version_id}/dictionary/{dictionary_id}/info | Get edge dictionary metadata
  *DictionaryItemApi* | [**create_dictionary_item**](docs/DictionaryItemApi.md#create_dictionary_item) | **POST** /service/{service_id}/dictionary/{dictionary_id}/item | Create an entry in an edge dictionary
  *DictionaryItemApi* | [**delete_dictionary_item**](docs/DictionaryItemApi.md#delete_dictionary_item) | **DELETE** /service/{service_id}/dictionary/{dictionary_id}/item/{dictionary_item_key} | Delete an item from an edge dictionary
  *DictionaryItemApi* | [**get_dictionary_item**](docs/DictionaryItemApi.md#get_dictionary_item) | **GET** /service/{service_id}/dictionary/{dictionary_id}/item/{dictionary_item_key} | Get an item from an edge dictionary
  *DictionaryItemApi* | [**list_dictionary_items**](docs/DictionaryItemApi.md#list_dictionary_items) | **GET** /service/{service_id}/dictionary/{dictionary_id}/items | List items in an edge dictionary
  *DictionaryItemApi* | [**update_dictionary_item**](docs/DictionaryItemApi.md#update_dictionary_item) | **PATCH** /service/{service_id}/dictionary/{dictionary_id}/item/{dictionary_item_key} | Update an entry in an edge dictionary
  *DictionaryItemApi* | [**upsert_dictionary_item**](docs/DictionaryItemApi.md#upsert_dictionary_item) | **PUT** /service/{service_id}/dictionary/{dictionary_id}/item/{dictionary_item_key} | Insert or update an entry in an edge dictionary
  *DiffApi* | [**diff_service_versions**](docs/DiffApi.md#diff_service_versions) | **GET** /service/{service_id}/diff/from/{from_version_id}/to/{to_version_id} | Diff two service versions
  *DirectorApi* | [**create_director**](docs/DirectorApi.md#create_director) | **POST** /service/{service_id}/version/{version_id}/director | Create a director
  *DirectorApi* | [**delete_director**](docs/DirectorApi.md#delete_director) | **DELETE** /service/{service_id}/version/{version_id}/director/{director_name} | Delete a director
  *DirectorApi* | [**get_director**](docs/DirectorApi.md#get_director) | **GET** /service/{service_id}/version/{version_id}/director/{director_name} | Get a director
  *DirectorApi* | [**list_directors**](docs/DirectorApi.md#list_directors) | **GET** /service/{service_id}/version/{version_id}/director | List directors
  *DirectorBackendApi* | [**create_director_backend**](docs/DirectorBackendApi.md#create_director_backend) | **POST** /service/{service_id}/version/{version_id}/director/{director_name}/backend/{backend_name} | Create a director-backend relationship
  *DirectorBackendApi* | [**delete_director_backend**](docs/DirectorBackendApi.md#delete_director_backend) | **DELETE** /service/{service_id}/version/{version_id}/director/{director_name}/backend/{backend_name} | Delete a director-backend relationship
  *DirectorBackendApi* | [**get_director_backend**](docs/DirectorBackendApi.md#get_director_backend) | **GET** /service/{service_id}/version/{version_id}/director/{director_name}/backend/{backend_name} | Get a director-backend relationship
  *DomainApi* | [**check_domain**](docs/DomainApi.md#check_domain) | **GET** /service/{service_id}/version/{version_id}/domain/{domain_name}/check | Validate DNS configuration for a single domain on a service
  *DomainApi* | [**check_domains**](docs/DomainApi.md#check_domains) | **GET** /service/{service_id}/version/{version_id}/domain/check_all | Validate DNS configuration for all domains on a service
  *DomainApi* | [**create_domain**](docs/DomainApi.md#create_domain) | **POST** /service/{service_id}/version/{version_id}/domain | Add a domain name to a service
  *DomainApi* | [**delete_domain**](docs/DomainApi.md#delete_domain) | **DELETE** /service/{service_id}/version/{version_id}/domain/{domain_name} | Remove a domain from a service
  *DomainApi* | [**get_domain**](docs/DomainApi.md#get_domain) | **GET** /service/{service_id}/version/{version_id}/domain/{domain_name} | Describe a domain
  *DomainApi* | [**list_domains**](docs/DomainApi.md#list_domains) | **GET** /service/{service_id}/version/{version_id}/domain | List domains
  *DomainApi* | [**update_domain**](docs/DomainApi.md#update_domain) | **PUT** /service/{service_id}/version/{version_id}/domain/{domain_name} | Update a domain
  *DomainOwnershipsApi* | [**list_domain_ownerships**](docs/DomainOwnershipsApi.md#list_domain_ownerships) | **GET** /domain-ownerships | List domain-ownerships
  *EnabledProductsApi* | [**disable_product**](docs/EnabledProductsApi.md#disable_product) | **DELETE** /enabled-products/{product_id}/services/{service_id} | Disable a product
  *EnabledProductsApi* | [**enable_product**](docs/EnabledProductsApi.md#enable_product) | **PUT** /enabled-products/{product_id}/services/{service_id} | Enable a product
  *EnabledProductsApi* | [**get_enabled_product**](docs/EnabledProductsApi.md#get_enabled_product) | **GET** /enabled-products/{product_id}/services/{service_id} | Get enabled product
  *EventsApi* | [**get_event**](docs/EventsApi.md#get_event) | **GET** /events/{event_id} | Get an event
  *EventsApi* | [**list_events**](docs/EventsApi.md#list_events) | **GET** /events | List events
  *GzipApi* | [**create_gzip_config**](docs/GzipApi.md#create_gzip_config) | **POST** /service/{service_id}/version/{version_id}/gzip | Create a gzip configuration
  *GzipApi* | [**delete_gzip_config**](docs/GzipApi.md#delete_gzip_config) | **DELETE** /service/{service_id}/version/{version_id}/gzip/{gzip_name} | Delete a gzip configuration
  *GzipApi* | [**get_gzip_configs**](docs/GzipApi.md#get_gzip_configs) | **GET** /service/{service_id}/version/{version_id}/gzip/{gzip_name} | Get a gzip configuration
  *GzipApi* | [**list_gzip_configs**](docs/GzipApi.md#list_gzip_configs) | **GET** /service/{service_id}/version/{version_id}/gzip | List gzip configurations
  *GzipApi* | [**update_gzip_config**](docs/GzipApi.md#update_gzip_config) | **PUT** /service/{service_id}/version/{version_id}/gzip/{gzip_name} | Update a gzip configuration
  *HeaderApi* | [**create_header_object**](docs/HeaderApi.md#create_header_object) | **POST** /service/{service_id}/version/{version_id}/header | Create a Header object
  *HeaderApi* | [**delete_header_object**](docs/HeaderApi.md#delete_header_object) | **DELETE** /service/{service_id}/version/{version_id}/header/{header_name} | Delete a Header object
  *HeaderApi* | [**get_header_object**](docs/HeaderApi.md#get_header_object) | **GET** /service/{service_id}/version/{version_id}/header/{header_name} | Get a Header object
  *HeaderApi* | [**list_header_objects**](docs/HeaderApi.md#list_header_objects) | **GET** /service/{service_id}/version/{version_id}/header | List Header objects
  *HeaderApi* | [**update_header_object**](docs/HeaderApi.md#update_header_object) | **PUT** /service/{service_id}/version/{version_id}/header/{header_name} | Update a Header object
  *HealthcheckApi* | [**create_healthcheck**](docs/HealthcheckApi.md#create_healthcheck) | **POST** /service/{service_id}/version/{version_id}/healthcheck | Create a health check
  *HealthcheckApi* | [**delete_healthcheck**](docs/HealthcheckApi.md#delete_healthcheck) | **DELETE** /service/{service_id}/version/{version_id}/healthcheck/{healthcheck_name} | Delete a health check
  *HealthcheckApi* | [**get_healthcheck**](docs/HealthcheckApi.md#get_healthcheck) | **GET** /service/{service_id}/version/{version_id}/healthcheck/{healthcheck_name} | Get a health check
  *HealthcheckApi* | [**list_healthchecks**](docs/HealthcheckApi.md#list_healthchecks) | **GET** /service/{service_id}/version/{version_id}/healthcheck | List health checks
  *HealthcheckApi* | [**update_healthcheck**](docs/HealthcheckApi.md#update_healthcheck) | **PUT** /service/{service_id}/version/{version_id}/healthcheck/{healthcheck_name} | Update a health check
  *HistoricalApi* | [**get_hist_stats**](docs/HistoricalApi.md#get_hist_stats) | **GET** /stats | Get historical stats
  *HistoricalApi* | [**get_hist_stats_aggregated**](docs/HistoricalApi.md#get_hist_stats_aggregated) | **GET** /stats/aggregate | Get aggregated historical stats
  *HistoricalApi* | [**get_hist_stats_field**](docs/HistoricalApi.md#get_hist_stats_field) | **GET** /stats/field/{field} | Get historical stats for a single field
  *HistoricalApi* | [**get_hist_stats_service**](docs/HistoricalApi.md#get_hist_stats_service) | **GET** /stats/service/{service_id} | Get historical stats for a single service
  *HistoricalApi* | [**get_hist_stats_service_field**](docs/HistoricalApi.md#get_hist_stats_service_field) | **GET** /stats/service/{service_id}/field/{field} | Get historical stats for a single service/field combination
  *HistoricalApi* | [**get_regions**](docs/HistoricalApi.md#get_regions) | **GET** /stats/regions | Get region codes
  *HistoricalApi* | [**get_usage**](docs/HistoricalApi.md#get_usage) | **GET** /stats/usage | Get usage statistics
  *HistoricalApi* | [**get_usage_month**](docs/HistoricalApi.md#get_usage_month) | **GET** /stats/usage_by_month | Get month-to-date usage statistics
  *HistoricalApi* | [**get_usage_service**](docs/HistoricalApi.md#get_usage_service) | **GET** /stats/usage_by_service | Get usage statistics per service
  *Http3Api* | [**create_http3**](docs/Http3Api.md#create_http3) | **POST** /service/{service_id}/version/{version_id}/http3 | Enable support for HTTP/3
  *Http3Api* | [**delete_http3**](docs/Http3Api.md#delete_http3) | **DELETE** /service/{service_id}/version/{version_id}/http3 | Disable support for HTTP/3
  *Http3Api* | [**get_http3**](docs/Http3Api.md#get_http3) | **GET** /service/{service_id}/version/{version_id}/http3 | Get HTTP/3 status
  *IamPermissionsApi* | [**list_permissions**](docs/IamPermissionsApi.md#list_permissions) | **GET** /permissions | List permissions
  *IamRolesApi* | [**delete_a_role**](docs/IamRolesApi.md#delete_a_role) | **DELETE** /roles/{role_id} | Delete a role
  *IamRolesApi* | [**get_a_role**](docs/IamRolesApi.md#get_a_role) | **GET** /roles/{role_id} | Get a role
  *IamRolesApi* | [**list_role_permissions**](docs/IamRolesApi.md#list_role_permissions) | **GET** /roles/{role_id}/permissions | List permissions in a role
  *IamRolesApi* | [**list_roles**](docs/IamRolesApi.md#list_roles) | **GET** /roles | List roles
  *IamServiceGroupsApi* | [**delete_a_service_group**](docs/IamServiceGroupsApi.md#delete_a_service_group) | **DELETE** /service-groups/{service_group_id} | Delete a service group
  *IamServiceGroupsApi* | [**get_a_service_group**](docs/IamServiceGroupsApi.md#get_a_service_group) | **GET** /service-groups/{service_group_id} | Get a service group
  *IamServiceGroupsApi* | [**list_service_group_services**](docs/IamServiceGroupsApi.md#list_service_group_services) | **GET** /service-groups/{service_group_id}/services | List services to a service group
  *IamServiceGroupsApi* | [**list_service_groups**](docs/IamServiceGroupsApi.md#list_service_groups) | **GET** /service-groups | List service groups
  *IamUserGroupsApi* | [**delete_a_user_group**](docs/IamUserGroupsApi.md#delete_a_user_group) | **DELETE** /user-groups/{user_group_id} | Delete a user group
  *IamUserGroupsApi* | [**get_a_user_group**](docs/IamUserGroupsApi.md#get_a_user_group) | **GET** /user-groups/{user_group_id} | Get a user group
  *IamUserGroupsApi* | [**list_user_group_members**](docs/IamUserGroupsApi.md#list_user_group_members) | **GET** /user-groups/{user_group_id}/members | List members of a user group
  *IamUserGroupsApi* | [**list_user_group_roles**](docs/IamUserGroupsApi.md#list_user_group_roles) | **GET** /user-groups/{user_group_id}/roles | List roles in a user group
  *IamUserGroupsApi* | [**list_user_group_service_groups**](docs/IamUserGroupsApi.md#list_user_group_service_groups) | **GET** /user-groups/{user_group_id}/service-groups | List service groups in a user group
  *IamUserGroupsApi* | [**list_user_groups**](docs/IamUserGroupsApi.md#list_user_groups) | **GET** /user-groups | List user groups
  *InvitationsApi* | [**create_invitation**](docs/InvitationsApi.md#create_invitation) | **POST** /invitations | Create an invitation
  *InvitationsApi* | [**delete_invitation**](docs/InvitationsApi.md#delete_invitation) | **DELETE** /invitations/{invitation_id} | Delete an invitation
  *InvitationsApi* | [**list_invitations**](docs/InvitationsApi.md#list_invitations) | **GET** /invitations | List invitations
  *LoggingAzureblobApi* | [**create_log_azure**](docs/LoggingAzureblobApi.md#create_log_azure) | **POST** /service/{service_id}/version/{version_id}/logging/azureblob | Create an Azure Blob Storage log endpoint
  *LoggingAzureblobApi* | [**delete_log_azure**](docs/LoggingAzureblobApi.md#delete_log_azure) | **DELETE** /service/{service_id}/version/{version_id}/logging/azureblob/{logging_azureblob_name} | Delete the Azure Blob Storage log endpoint
  *LoggingAzureblobApi* | [**get_log_azure**](docs/LoggingAzureblobApi.md#get_log_azure) | **GET** /service/{service_id}/version/{version_id}/logging/azureblob/{logging_azureblob_name} | Get an Azure Blob Storage log endpoint
  *LoggingAzureblobApi* | [**list_log_azure**](docs/LoggingAzureblobApi.md#list_log_azure) | **GET** /service/{service_id}/version/{version_id}/logging/azureblob | List Azure Blob Storage log endpoints
  *LoggingAzureblobApi* | [**update_log_azure**](docs/LoggingAzureblobApi.md#update_log_azure) | **PUT** /service/{service_id}/version/{version_id}/logging/azureblob/{logging_azureblob_name} | Update an Azure Blob Storage log endpoint
  *LoggingBigqueryApi* | [**create_log_bigquery**](docs/LoggingBigqueryApi.md#create_log_bigquery) | **POST** /service/{service_id}/version/{version_id}/logging/bigquery | Create a BigQuery log endpoint
  *LoggingBigqueryApi* | [**delete_log_bigquery**](docs/LoggingBigqueryApi.md#delete_log_bigquery) | **DELETE** /service/{service_id}/version/{version_id}/logging/bigquery/{logging_bigquery_name} | Delete a BigQuery log endpoint
  *LoggingBigqueryApi* | [**get_log_bigquery**](docs/LoggingBigqueryApi.md#get_log_bigquery) | **GET** /service/{service_id}/version/{version_id}/logging/bigquery/{logging_bigquery_name} | Get a BigQuery log endpoint
  *LoggingBigqueryApi* | [**list_log_bigquery**](docs/LoggingBigqueryApi.md#list_log_bigquery) | **GET** /service/{service_id}/version/{version_id}/logging/bigquery | List BigQuery log endpoints
  *LoggingBigqueryApi* | [**update_log_bigquery**](docs/LoggingBigqueryApi.md#update_log_bigquery) | **PUT** /service/{service_id}/version/{version_id}/logging/bigquery/{logging_bigquery_name} | Update a BigQuery log endpoint
  *LoggingCloudfilesApi* | [**create_log_cloudfiles**](docs/LoggingCloudfilesApi.md#create_log_cloudfiles) | **POST** /service/{service_id}/version/{version_id}/logging/cloudfiles | Create a Cloud Files log endpoint
  *LoggingCloudfilesApi* | [**delete_log_cloudfiles**](docs/LoggingCloudfilesApi.md#delete_log_cloudfiles) | **DELETE** /service/{service_id}/version/{version_id}/logging/cloudfiles/{logging_cloudfiles_name} | Delete the Cloud Files log endpoint
  *LoggingCloudfilesApi* | [**get_log_cloudfiles**](docs/LoggingCloudfilesApi.md#get_log_cloudfiles) | **GET** /service/{service_id}/version/{version_id}/logging/cloudfiles/{logging_cloudfiles_name} | Get a Cloud Files log endpoint
  *LoggingCloudfilesApi* | [**list_log_cloudfiles**](docs/LoggingCloudfilesApi.md#list_log_cloudfiles) | **GET** /service/{service_id}/version/{version_id}/logging/cloudfiles | List Cloud Files log endpoints
  *LoggingCloudfilesApi* | [**update_log_cloudfiles**](docs/LoggingCloudfilesApi.md#update_log_cloudfiles) | **PUT** /service/{service_id}/version/{version_id}/logging/cloudfiles/{logging_cloudfiles_name} | Update the Cloud Files log endpoint
  *LoggingDatadogApi* | [**create_log_datadog**](docs/LoggingDatadogApi.md#create_log_datadog) | **POST** /service/{service_id}/version/{version_id}/logging/datadog | Create a Datadog log endpoint
  *LoggingDatadogApi* | [**delete_log_datadog**](docs/LoggingDatadogApi.md#delete_log_datadog) | **DELETE** /service/{service_id}/version/{version_id}/logging/datadog/{logging_datadog_name} | Delete a Datadog log endpoint
  *LoggingDatadogApi* | [**get_log_datadog**](docs/LoggingDatadogApi.md#get_log_datadog) | **GET** /service/{service_id}/version/{version_id}/logging/datadog/{logging_datadog_name} | Get a Datadog log endpoint
  *LoggingDatadogApi* | [**list_log_datadog**](docs/LoggingDatadogApi.md#list_log_datadog) | **GET** /service/{service_id}/version/{version_id}/logging/datadog | List Datadog log endpoints
  *LoggingDatadogApi* | [**update_log_datadog**](docs/LoggingDatadogApi.md#update_log_datadog) | **PUT** /service/{service_id}/version/{version_id}/logging/datadog/{logging_datadog_name} | Update a Datadog log endpoint
  *LoggingDigitaloceanApi* | [**create_log_digocean**](docs/LoggingDigitaloceanApi.md#create_log_digocean) | **POST** /service/{service_id}/version/{version_id}/logging/digitalocean | Create a DigitalOcean Spaces log endpoint
  *LoggingDigitaloceanApi* | [**delete_log_digocean**](docs/LoggingDigitaloceanApi.md#delete_log_digocean) | **DELETE** /service/{service_id}/version/{version_id}/logging/digitalocean/{logging_digitalocean_name} | Delete a DigitalOcean Spaces log endpoint
  *LoggingDigitaloceanApi* | [**get_log_digocean**](docs/LoggingDigitaloceanApi.md#get_log_digocean) | **GET** /service/{service_id}/version/{version_id}/logging/digitalocean/{logging_digitalocean_name} | Get a DigitalOcean Spaces log endpoint
  *LoggingDigitaloceanApi* | [**list_log_digocean**](docs/LoggingDigitaloceanApi.md#list_log_digocean) | **GET** /service/{service_id}/version/{version_id}/logging/digitalocean | List DigitalOcean Spaces log endpoints
  *LoggingDigitaloceanApi* | [**update_log_digocean**](docs/LoggingDigitaloceanApi.md#update_log_digocean) | **PUT** /service/{service_id}/version/{version_id}/logging/digitalocean/{logging_digitalocean_name} | Update a DigitalOcean Spaces log endpoint
  *LoggingElasticsearchApi* | [**create_log_elasticsearch**](docs/LoggingElasticsearchApi.md#create_log_elasticsearch) | **POST** /service/{service_id}/version/{version_id}/logging/elasticsearch | Create an Elasticsearch log endpoint
  *LoggingElasticsearchApi* | [**delete_log_elasticsearch**](docs/LoggingElasticsearchApi.md#delete_log_elasticsearch) | **DELETE** /service/{service_id}/version/{version_id}/logging/elasticsearch/{logging_elasticsearch_name} | Delete an Elasticsearch log endpoint
  *LoggingElasticsearchApi* | [**get_log_elasticsearch**](docs/LoggingElasticsearchApi.md#get_log_elasticsearch) | **GET** /service/{service_id}/version/{version_id}/logging/elasticsearch/{logging_elasticsearch_name} | Get an Elasticsearch log endpoint
  *LoggingElasticsearchApi* | [**list_log_elasticsearch**](docs/LoggingElasticsearchApi.md#list_log_elasticsearch) | **GET** /service/{service_id}/version/{version_id}/logging/elasticsearch | List Elasticsearch log endpoints
  *LoggingElasticsearchApi* | [**update_log_elasticsearch**](docs/LoggingElasticsearchApi.md#update_log_elasticsearch) | **PUT** /service/{service_id}/version/{version_id}/logging/elasticsearch/{logging_elasticsearch_name} | Update an Elasticsearch log endpoint
  *LoggingFtpApi* | [**create_log_ftp**](docs/LoggingFtpApi.md#create_log_ftp) | **POST** /service/{service_id}/version/{version_id}/logging/ftp | Create an FTP log endpoint
  *LoggingFtpApi* | [**delete_log_ftp**](docs/LoggingFtpApi.md#delete_log_ftp) | **DELETE** /service/{service_id}/version/{version_id}/logging/ftp/{logging_ftp_name} | Delete an FTP log endpoint
  *LoggingFtpApi* | [**get_log_ftp**](docs/LoggingFtpApi.md#get_log_ftp) | **GET** /service/{service_id}/version/{version_id}/logging/ftp/{logging_ftp_name} | Get an FTP log endpoint
  *LoggingFtpApi* | [**list_log_ftp**](docs/LoggingFtpApi.md#list_log_ftp) | **GET** /service/{service_id}/version/{version_id}/logging/ftp | List FTP log endpoints
  *LoggingFtpApi* | [**update_log_ftp**](docs/LoggingFtpApi.md#update_log_ftp) | **PUT** /service/{service_id}/version/{version_id}/logging/ftp/{logging_ftp_name} | Update an FTP log endpoint
  *LoggingGcsApi* | [**create_log_gcs**](docs/LoggingGcsApi.md#create_log_gcs) | **POST** /service/{service_id}/version/{version_id}/logging/gcs | Create a GCS log endpoint
  *LoggingGcsApi* | [**delete_log_gcs**](docs/LoggingGcsApi.md#delete_log_gcs) | **DELETE** /service/{service_id}/version/{version_id}/logging/gcs/{logging_gcs_name} | Delete a GCS log endpoint
  *LoggingGcsApi* | [**get_log_gcs**](docs/LoggingGcsApi.md#get_log_gcs) | **GET** /service/{service_id}/version/{version_id}/logging/gcs/{logging_gcs_name} | Get a GCS log endpoint
  *LoggingGcsApi* | [**list_log_gcs**](docs/LoggingGcsApi.md#list_log_gcs) | **GET** /service/{service_id}/version/{version_id}/logging/gcs | List GCS log endpoints
  *LoggingGcsApi* | [**update_log_gcs**](docs/LoggingGcsApi.md#update_log_gcs) | **PUT** /service/{service_id}/version/{version_id}/logging/gcs/{logging_gcs_name} | Update a GCS log endpoint
  *LoggingHerokuApi* | [**create_log_heroku**](docs/LoggingHerokuApi.md#create_log_heroku) | **POST** /service/{service_id}/version/{version_id}/logging/heroku | Create a Heroku log endpoint
  *LoggingHerokuApi* | [**delete_log_heroku**](docs/LoggingHerokuApi.md#delete_log_heroku) | **DELETE** /service/{service_id}/version/{version_id}/logging/heroku/{logging_heroku_name} | Delete the Heroku log endpoint
  *LoggingHerokuApi* | [**get_log_heroku**](docs/LoggingHerokuApi.md#get_log_heroku) | **GET** /service/{service_id}/version/{version_id}/logging/heroku/{logging_heroku_name} | Get a Heroku log endpoint
  *LoggingHerokuApi* | [**list_log_heroku**](docs/LoggingHerokuApi.md#list_log_heroku) | **GET** /service/{service_id}/version/{version_id}/logging/heroku | List Heroku log endpoints
  *LoggingHerokuApi* | [**update_log_heroku**](docs/LoggingHerokuApi.md#update_log_heroku) | **PUT** /service/{service_id}/version/{version_id}/logging/heroku/{logging_heroku_name} | Update the Heroku log endpoint
  *LoggingHoneycombApi* | [**create_log_honeycomb**](docs/LoggingHoneycombApi.md#create_log_honeycomb) | **POST** /service/{service_id}/version/{version_id}/logging/honeycomb | Create a Honeycomb log endpoint
  *LoggingHoneycombApi* | [**delete_log_honeycomb**](docs/LoggingHoneycombApi.md#delete_log_honeycomb) | **DELETE** /service/{service_id}/version/{version_id}/logging/honeycomb/{logging_honeycomb_name} | Delete the Honeycomb log endpoint
  *LoggingHoneycombApi* | [**get_log_honeycomb**](docs/LoggingHoneycombApi.md#get_log_honeycomb) | **GET** /service/{service_id}/version/{version_id}/logging/honeycomb/{logging_honeycomb_name} | Get a Honeycomb log endpoint
  *LoggingHoneycombApi* | [**list_log_honeycomb**](docs/LoggingHoneycombApi.md#list_log_honeycomb) | **GET** /service/{service_id}/version/{version_id}/logging/honeycomb | List Honeycomb log endpoints
  *LoggingHoneycombApi* | [**update_log_honeycomb**](docs/LoggingHoneycombApi.md#update_log_honeycomb) | **PUT** /service/{service_id}/version/{version_id}/logging/honeycomb/{logging_honeycomb_name} | Update a Honeycomb log endpoint
  *LoggingHttpsApi* | [**create_log_https**](docs/LoggingHttpsApi.md#create_log_https) | **POST** /service/{service_id}/version/{version_id}/logging/https | Create an HTTPS log endpoint
  *LoggingHttpsApi* | [**delete_log_https**](docs/LoggingHttpsApi.md#delete_log_https) | **DELETE** /service/{service_id}/version/{version_id}/logging/https/{logging_https_name} | Delete an HTTPS log endpoint
  *LoggingHttpsApi* | [**get_log_https**](docs/LoggingHttpsApi.md#get_log_https) | **GET** /service/{service_id}/version/{version_id}/logging/https/{logging_https_name} | Get an HTTPS log endpoint
  *LoggingHttpsApi* | [**list_log_https**](docs/LoggingHttpsApi.md#list_log_https) | **GET** /service/{service_id}/version/{version_id}/logging/https | List HTTPS log endpoints
  *LoggingHttpsApi* | [**update_log_https**](docs/LoggingHttpsApi.md#update_log_https) | **PUT** /service/{service_id}/version/{version_id}/logging/https/{logging_https_name} | Update an HTTPS log endpoint
  *LoggingKafkaApi* | [**create_log_kafka**](docs/LoggingKafkaApi.md#create_log_kafka) | **POST** /service/{service_id}/version/{version_id}/logging/kafka | Create a Kafka log endpoint
  *LoggingKafkaApi* | [**delete_log_kafka**](docs/LoggingKafkaApi.md#delete_log_kafka) | **DELETE** /service/{service_id}/version/{version_id}/logging/kafka/{logging_kafka_name} | Delete the Kafka log endpoint
  *LoggingKafkaApi* | [**get_log_kafka**](docs/LoggingKafkaApi.md#get_log_kafka) | **GET** /service/{service_id}/version/{version_id}/logging/kafka/{logging_kafka_name} | Get a Kafka log endpoint
  *LoggingKafkaApi* | [**list_log_kafka**](docs/LoggingKafkaApi.md#list_log_kafka) | **GET** /service/{service_id}/version/{version_id}/logging/kafka | List Kafka log endpoints
  *LoggingKinesisApi* | [**create_log_kinesis**](docs/LoggingKinesisApi.md#create_log_kinesis) | **POST** /service/{service_id}/version/{version_id}/logging/kinesis | Create  an Amazon Kinesis log endpoint
  *LoggingKinesisApi* | [**delete_log_kinesis**](docs/LoggingKinesisApi.md#delete_log_kinesis) | **DELETE** /service/{service_id}/version/{version_id}/logging/kinesis/{logging_kinesis_name} | Delete the Amazon Kinesis log endpoint
  *LoggingKinesisApi* | [**get_log_kinesis**](docs/LoggingKinesisApi.md#get_log_kinesis) | **GET** /service/{service_id}/version/{version_id}/logging/kinesis/{logging_kinesis_name} | Get an Amazon Kinesis log endpoint
  *LoggingKinesisApi* | [**list_log_kinesis**](docs/LoggingKinesisApi.md#list_log_kinesis) | **GET** /service/{service_id}/version/{version_id}/logging/kinesis | List Amazon Kinesis log endpoints
  *LoggingLogentriesApi* | [**create_log_logentries**](docs/LoggingLogentriesApi.md#create_log_logentries) | **POST** /service/{service_id}/version/{version_id}/logging/logentries | Create a Logentries log endpoint
  *LoggingLogentriesApi* | [**delete_log_logentries**](docs/LoggingLogentriesApi.md#delete_log_logentries) | **DELETE** /service/{service_id}/version/{version_id}/logging/logentries/{logging_logentries_name} | Delete a Logentries log endpoint
  *LoggingLogentriesApi* | [**get_log_logentries**](docs/LoggingLogentriesApi.md#get_log_logentries) | **GET** /service/{service_id}/version/{version_id}/logging/logentries/{logging_logentries_name} | Get a Logentries log endpoint
  *LoggingLogentriesApi* | [**list_log_logentries**](docs/LoggingLogentriesApi.md#list_log_logentries) | **GET** /service/{service_id}/version/{version_id}/logging/logentries | List Logentries log endpoints
  *LoggingLogentriesApi* | [**update_log_logentries**](docs/LoggingLogentriesApi.md#update_log_logentries) | **PUT** /service/{service_id}/version/{version_id}/logging/logentries/{logging_logentries_name} | Update a Logentries log endpoint
  *LoggingLogglyApi* | [**create_log_loggly**](docs/LoggingLogglyApi.md#create_log_loggly) | **POST** /service/{service_id}/version/{version_id}/logging/loggly | Create a Loggly log endpoint
  *LoggingLogglyApi* | [**delete_log_loggly**](docs/LoggingLogglyApi.md#delete_log_loggly) | **DELETE** /service/{service_id}/version/{version_id}/logging/loggly/{logging_loggly_name} | Delete a Loggly log endpoint
  *LoggingLogglyApi* | [**get_log_loggly**](docs/LoggingLogglyApi.md#get_log_loggly) | **GET** /service/{service_id}/version/{version_id}/logging/loggly/{logging_loggly_name} | Get a Loggly log endpoint
  *LoggingLogglyApi* | [**list_log_loggly**](docs/LoggingLogglyApi.md#list_log_loggly) | **GET** /service/{service_id}/version/{version_id}/logging/loggly | List Loggly log endpoints
  *LoggingLogglyApi* | [**update_log_loggly**](docs/LoggingLogglyApi.md#update_log_loggly) | **PUT** /service/{service_id}/version/{version_id}/logging/loggly/{logging_loggly_name} | Update a Loggly log endpoint
  *LoggingLogshuttleApi* | [**create_log_logshuttle**](docs/LoggingLogshuttleApi.md#create_log_logshuttle) | **POST** /service/{service_id}/version/{version_id}/logging/logshuttle | Create a Log Shuttle log endpoint
  *LoggingLogshuttleApi* | [**delete_log_logshuttle**](docs/LoggingLogshuttleApi.md#delete_log_logshuttle) | **DELETE** /service/{service_id}/version/{version_id}/logging/logshuttle/{logging_logshuttle_name} | Delete a Log Shuttle log endpoint
  *LoggingLogshuttleApi* | [**get_log_logshuttle**](docs/LoggingLogshuttleApi.md#get_log_logshuttle) | **GET** /service/{service_id}/version/{version_id}/logging/logshuttle/{logging_logshuttle_name} | Get a Log Shuttle log endpoint
  *LoggingLogshuttleApi* | [**list_log_logshuttle**](docs/LoggingLogshuttleApi.md#list_log_logshuttle) | **GET** /service/{service_id}/version/{version_id}/logging/logshuttle | List Log Shuttle log endpoints
  *LoggingLogshuttleApi* | [**update_log_logshuttle**](docs/LoggingLogshuttleApi.md#update_log_logshuttle) | **PUT** /service/{service_id}/version/{version_id}/logging/logshuttle/{logging_logshuttle_name} | Update a Log Shuttle log endpoint
  *LoggingNewrelicApi* | [**create_log_newrelic**](docs/LoggingNewrelicApi.md#create_log_newrelic) | **POST** /service/{service_id}/version/{version_id}/logging/newrelic | Create a New Relic log endpoint
  *LoggingNewrelicApi* | [**delete_log_newrelic**](docs/LoggingNewrelicApi.md#delete_log_newrelic) | **DELETE** /service/{service_id}/version/{version_id}/logging/newrelic/{logging_newrelic_name} | Delete a New Relic log endpoint
  *LoggingNewrelicApi* | [**get_log_newrelic**](docs/LoggingNewrelicApi.md#get_log_newrelic) | **GET** /service/{service_id}/version/{version_id}/logging/newrelic/{logging_newrelic_name} | Get a New Relic log endpoint
  *LoggingNewrelicApi* | [**list_log_newrelic**](docs/LoggingNewrelicApi.md#list_log_newrelic) | **GET** /service/{service_id}/version/{version_id}/logging/newrelic | List New Relic log endpoints
  *LoggingNewrelicApi* | [**update_log_newrelic**](docs/LoggingNewrelicApi.md#update_log_newrelic) | **PUT** /service/{service_id}/version/{version_id}/logging/newrelic/{logging_newrelic_name} | Update a New Relic log endpoint
  *LoggingOpenstackApi* | [**create_log_openstack**](docs/LoggingOpenstackApi.md#create_log_openstack) | **POST** /service/{service_id}/version/{version_id}/logging/openstack | Create an OpenStack log endpoint
  *LoggingOpenstackApi* | [**delete_log_openstack**](docs/LoggingOpenstackApi.md#delete_log_openstack) | **DELETE** /service/{service_id}/version/{version_id}/logging/openstack/{logging_openstack_name} | Delete an OpenStack log endpoint
  *LoggingOpenstackApi* | [**get_log_openstack**](docs/LoggingOpenstackApi.md#get_log_openstack) | **GET** /service/{service_id}/version/{version_id}/logging/openstack/{logging_openstack_name} | Get an OpenStack log endpoint
  *LoggingOpenstackApi* | [**list_log_openstack**](docs/LoggingOpenstackApi.md#list_log_openstack) | **GET** /service/{service_id}/version/{version_id}/logging/openstack | List OpenStack log endpoints
  *LoggingOpenstackApi* | [**update_log_openstack**](docs/LoggingOpenstackApi.md#update_log_openstack) | **PUT** /service/{service_id}/version/{version_id}/logging/openstack/{logging_openstack_name} | Update an OpenStack log endpoint
  *LoggingPapertrailApi* | [**create_log_papertrail**](docs/LoggingPapertrailApi.md#create_log_papertrail) | **POST** /service/{service_id}/version/{version_id}/logging/papertrail | Create a Papertrail log endpoint
  *LoggingPapertrailApi* | [**delete_log_papertrail**](docs/LoggingPapertrailApi.md#delete_log_papertrail) | **DELETE** /service/{service_id}/version/{version_id}/logging/papertrail/{logging_papertrail_name} | Delete a Papertrail log endpoint
  *LoggingPapertrailApi* | [**get_log_papertrail**](docs/LoggingPapertrailApi.md#get_log_papertrail) | **GET** /service/{service_id}/version/{version_id}/logging/papertrail/{logging_papertrail_name} | Get a Papertrail log endpoint
  *LoggingPapertrailApi* | [**list_log_papertrail**](docs/LoggingPapertrailApi.md#list_log_papertrail) | **GET** /service/{service_id}/version/{version_id}/logging/papertrail | List Papertrail log endpoints
  *LoggingPapertrailApi* | [**update_log_papertrail**](docs/LoggingPapertrailApi.md#update_log_papertrail) | **PUT** /service/{service_id}/version/{version_id}/logging/papertrail/{logging_papertrail_name} | Update a Papertrail log endpoint
  *LoggingPubsubApi* | [**create_log_gcp_pubsub**](docs/LoggingPubsubApi.md#create_log_gcp_pubsub) | **POST** /service/{service_id}/version/{version_id}/logging/pubsub | Create a GCP Cloud Pub/Sub log endpoint
  *LoggingPubsubApi* | [**delete_log_gcp_pubsub**](docs/LoggingPubsubApi.md#delete_log_gcp_pubsub) | **DELETE** /service/{service_id}/version/{version_id}/logging/pubsub/{logging_google_pubsub_name} | Delete a GCP Cloud Pub/Sub log endpoint
  *LoggingPubsubApi* | [**get_log_gcp_pubsub**](docs/LoggingPubsubApi.md#get_log_gcp_pubsub) | **GET** /service/{service_id}/version/{version_id}/logging/pubsub/{logging_google_pubsub_name} | Get a GCP Cloud Pub/Sub log endpoint
  *LoggingPubsubApi* | [**list_log_gcp_pubsub**](docs/LoggingPubsubApi.md#list_log_gcp_pubsub) | **GET** /service/{service_id}/version/{version_id}/logging/pubsub | List GCP Cloud Pub/Sub log endpoints
  *LoggingPubsubApi* | [**update_log_gcp_pubsub**](docs/LoggingPubsubApi.md#update_log_gcp_pubsub) | **PUT** /service/{service_id}/version/{version_id}/logging/pubsub/{logging_google_pubsub_name} | Update a GCP Cloud Pub/Sub log endpoint
  *LoggingS3Api* | [**create_log_aws_s3**](docs/LoggingS3Api.md#create_log_aws_s3) | **POST** /service/{service_id}/version/{version_id}/logging/s3 | Create an AWS S3 log endpoint
  *LoggingS3Api* | [**delete_log_aws_s3**](docs/LoggingS3Api.md#delete_log_aws_s3) | **DELETE** /service/{service_id}/version/{version_id}/logging/s3/{logging_s3_name} | Delete an AWS S3 log endpoint
  *LoggingS3Api* | [**get_log_aws_s3**](docs/LoggingS3Api.md#get_log_aws_s3) | **GET** /service/{service_id}/version/{version_id}/logging/s3/{logging_s3_name} | Get an AWS S3 log endpoint
  *LoggingS3Api* | [**list_log_aws_s3**](docs/LoggingS3Api.md#list_log_aws_s3) | **GET** /service/{service_id}/version/{version_id}/logging/s3 | List AWS S3 log endpoints
  *LoggingS3Api* | [**update_log_aws_s3**](docs/LoggingS3Api.md#update_log_aws_s3) | **PUT** /service/{service_id}/version/{version_id}/logging/s3/{logging_s3_name} | Update an AWS S3 log endpoint
  *LoggingScalyrApi* | [**create_log_scalyr**](docs/LoggingScalyrApi.md#create_log_scalyr) | **POST** /service/{service_id}/version/{version_id}/logging/scalyr | Create a Scalyr log endpoint
  *LoggingScalyrApi* | [**delete_log_scalyr**](docs/LoggingScalyrApi.md#delete_log_scalyr) | **DELETE** /service/{service_id}/version/{version_id}/logging/scalyr/{logging_scalyr_name} | Delete the Scalyr log endpoint
  *LoggingScalyrApi* | [**get_log_scalyr**](docs/LoggingScalyrApi.md#get_log_scalyr) | **GET** /service/{service_id}/version/{version_id}/logging/scalyr/{logging_scalyr_name} | Get a Scalyr log endpoint
  *LoggingScalyrApi* | [**list_log_scalyr**](docs/LoggingScalyrApi.md#list_log_scalyr) | **GET** /service/{service_id}/version/{version_id}/logging/scalyr | List Scalyr log endpoints
  *LoggingScalyrApi* | [**update_log_scalyr**](docs/LoggingScalyrApi.md#update_log_scalyr) | **PUT** /service/{service_id}/version/{version_id}/logging/scalyr/{logging_scalyr_name} | Update the Scalyr log endpoint
  *LoggingSftpApi* | [**create_log_sftp**](docs/LoggingSftpApi.md#create_log_sftp) | **POST** /service/{service_id}/version/{version_id}/logging/sftp | Create an SFTP log endpoint
  *LoggingSftpApi* | [**delete_log_sftp**](docs/LoggingSftpApi.md#delete_log_sftp) | **DELETE** /service/{service_id}/version/{version_id}/logging/sftp/{logging_sftp_name} | Delete an SFTP log endpoint
  *LoggingSftpApi* | [**get_log_sftp**](docs/LoggingSftpApi.md#get_log_sftp) | **GET** /service/{service_id}/version/{version_id}/logging/sftp/{logging_sftp_name} | Get an SFTP log endpoint
  *LoggingSftpApi* | [**list_log_sftp**](docs/LoggingSftpApi.md#list_log_sftp) | **GET** /service/{service_id}/version/{version_id}/logging/sftp | List SFTP log endpoints
  *LoggingSftpApi* | [**update_log_sftp**](docs/LoggingSftpApi.md#update_log_sftp) | **PUT** /service/{service_id}/version/{version_id}/logging/sftp/{logging_sftp_name} | Update an SFTP log endpoint
  *LoggingSplunkApi* | [**create_log_splunk**](docs/LoggingSplunkApi.md#create_log_splunk) | **POST** /service/{service_id}/version/{version_id}/logging/splunk | Create a Splunk log endpoint
  *LoggingSplunkApi* | [**delete_log_splunk**](docs/LoggingSplunkApi.md#delete_log_splunk) | **DELETE** /service/{service_id}/version/{version_id}/logging/splunk/{logging_splunk_name} | Delete a Splunk log endpoint
  *LoggingSplunkApi* | [**get_log_splunk**](docs/LoggingSplunkApi.md#get_log_splunk) | **GET** /service/{service_id}/version/{version_id}/logging/splunk/{logging_splunk_name} | Get a Splunk log endpoint
  *LoggingSplunkApi* | [**list_log_splunk**](docs/LoggingSplunkApi.md#list_log_splunk) | **GET** /service/{service_id}/version/{version_id}/logging/splunk | List Splunk log endpoints
  *LoggingSplunkApi* | [**update_log_splunk**](docs/LoggingSplunkApi.md#update_log_splunk) | **PUT** /service/{service_id}/version/{version_id}/logging/splunk/{logging_splunk_name} | Update a Splunk log endpoint
  *LoggingSumologicApi* | [**create_log_sumologic**](docs/LoggingSumologicApi.md#create_log_sumologic) | **POST** /service/{service_id}/version/{version_id}/logging/sumologic | Create a Sumologic log endpoint
  *LoggingSumologicApi* | [**delete_log_sumologic**](docs/LoggingSumologicApi.md#delete_log_sumologic) | **DELETE** /service/{service_id}/version/{version_id}/logging/sumologic/{logging_sumologic_name} | Delete a Sumologic log endpoint
  *LoggingSumologicApi* | [**get_log_sumologic**](docs/LoggingSumologicApi.md#get_log_sumologic) | **GET** /service/{service_id}/version/{version_id}/logging/sumologic/{logging_sumologic_name} | Get a Sumologic log endpoint
  *LoggingSumologicApi* | [**list_log_sumologic**](docs/LoggingSumologicApi.md#list_log_sumologic) | **GET** /service/{service_id}/version/{version_id}/logging/sumologic | List Sumologic log endpoints
  *LoggingSumologicApi* | [**update_log_sumologic**](docs/LoggingSumologicApi.md#update_log_sumologic) | **PUT** /service/{service_id}/version/{version_id}/logging/sumologic/{logging_sumologic_name} | Update a Sumologic log endpoint
  *LoggingSyslogApi* | [**create_log_syslog**](docs/LoggingSyslogApi.md#create_log_syslog) | **POST** /service/{service_id}/version/{version_id}/logging/syslog | Create a syslog log endpoint
  *LoggingSyslogApi* | [**delete_log_syslog**](docs/LoggingSyslogApi.md#delete_log_syslog) | **DELETE** /service/{service_id}/version/{version_id}/logging/syslog/{logging_syslog_name} | Delete a syslog log endpoint
  *LoggingSyslogApi* | [**get_log_syslog**](docs/LoggingSyslogApi.md#get_log_syslog) | **GET** /service/{service_id}/version/{version_id}/logging/syslog/{logging_syslog_name} | Get a syslog log endpoint
  *LoggingSyslogApi* | [**list_log_syslog**](docs/LoggingSyslogApi.md#list_log_syslog) | **GET** /service/{service_id}/version/{version_id}/logging/syslog | List Syslog log endpoints
  *LoggingSyslogApi* | [**update_log_syslog**](docs/LoggingSyslogApi.md#update_log_syslog) | **PUT** /service/{service_id}/version/{version_id}/logging/syslog/{logging_syslog_name} | Update a syslog log endpoint
  *MutualAuthenticationApi* | [**create_mutual_tls_authentication**](docs/MutualAuthenticationApi.md#create_mutual_tls_authentication) | **POST** /tls/mutual_authentications | Create a Mutual Authentication
  *MutualAuthenticationApi* | [**delete_mutual_tls**](docs/MutualAuthenticationApi.md#delete_mutual_tls) | **DELETE** /tls/mutual_authentications/{mutual_authentication_id} | Delete a Mutual TLS
  *MutualAuthenticationApi* | [**get_mutual_authentication**](docs/MutualAuthenticationApi.md#get_mutual_authentication) | **GET** /tls/mutual_authentications/{mutual_authentication_id} | Get a Mutual Authentication
  *MutualAuthenticationApi* | [**list_mutual_authentications**](docs/MutualAuthenticationApi.md#list_mutual_authentications) | **GET** /tls/mutual_authentications | List Mutual Authentications
  *MutualAuthenticationApi* | [**patch_mutual_authentication**](docs/MutualAuthenticationApi.md#patch_mutual_authentication) | **PATCH** /tls/mutual_authentications/{mutual_authentication_id} | Update a Mutual Authentication
  *ObjectStoreApi* | [**create_store**](docs/ObjectStoreApi.md#create_store) | **POST** /resources/stores/object | Create an object store.
  *ObjectStoreApi* | [**delete_store**](docs/ObjectStoreApi.md#delete_store) | **DELETE** /resources/stores/object/{store_id} | Delete an object store.
  *ObjectStoreApi* | [**get_store**](docs/ObjectStoreApi.md#get_store) | **GET** /resources/stores/object/{store_id} | Describe an object store.
  *ObjectStoreApi* | [**get_stores**](docs/ObjectStoreApi.md#get_stores) | **GET** /resources/stores/object | List object stores.
  *ObjectStoreItemApi* | [**delete_key_from_store**](docs/ObjectStoreItemApi.md#delete_key_from_store) | **DELETE** /resources/stores/object/{store_id}/keys/{key_name} | Delete object store item.
  *ObjectStoreItemApi* | [**get_keys**](docs/ObjectStoreItemApi.md#get_keys) | **GET** /resources/stores/object/{store_id}/keys | List object store keys.
  *ObjectStoreItemApi* | [**get_value_for_key**](docs/ObjectStoreItemApi.md#get_value_for_key) | **GET** /resources/stores/object/{store_id}/keys/{key_name} | Get the value of an object store item
  *ObjectStoreItemApi* | [**set_value_for_key**](docs/ObjectStoreItemApi.md#set_value_for_key) | **PUT** /resources/stores/object/{store_id}/keys/{key_name} | Insert an item into an object store
  *PackageApi* | [**get_package**](docs/PackageApi.md#get_package) | **GET** /service/{service_id}/version/{version_id}/package | Get details of the service&#39;s Compute@Edge package.
  *PackageApi* | [**put_package**](docs/PackageApi.md#put_package) | **PUT** /service/{service_id}/version/{version_id}/package | Upload a Compute@Edge package.
  *PoolApi* | [**create_server_pool**](docs/PoolApi.md#create_server_pool) | **POST** /service/{service_id}/version/{version_id}/pool | Create a server pool
  *PoolApi* | [**delete_server_pool**](docs/PoolApi.md#delete_server_pool) | **DELETE** /service/{service_id}/version/{version_id}/pool/{pool_name} | Delete a server pool
  *PoolApi* | [**get_server_pool**](docs/PoolApi.md#get_server_pool) | **GET** /service/{service_id}/version/{version_id}/pool/{pool_name} | Get a server pool
  *PoolApi* | [**list_server_pools**](docs/PoolApi.md#list_server_pools) | **GET** /service/{service_id}/version/{version_id}/pool | List server pools
  *PoolApi* | [**update_server_pool**](docs/PoolApi.md#update_server_pool) | **PUT** /service/{service_id}/version/{version_id}/pool/{pool_name} | Update a server pool
  *PopApi* | [**list_pops**](docs/PopApi.md#list_pops) | **GET** /datacenters | List Fastly POPs
  *PublicIpListApi* | [**list_fastly_ips**](docs/PublicIpListApi.md#list_fastly_ips) | **GET** /public-ip-list | List Fastly&#39;s public IPs
  *PublishApi* | [**publish**](docs/PublishApi.md#publish) | **POST** /service/{service_id}/publish/ | Send messages to Fanout subscribers
  *PurgeApi* | [**purge_all**](docs/PurgeApi.md#purge_all) | **POST** /service/{service_id}/purge_all | Purge everything from a service
  *PurgeApi* | [**purge_single_url**](docs/PurgeApi.md#purge_single_url) | **POST** /purge/{cached_url} | Purge a URL
  *PurgeApi* | [**purge_tag**](docs/PurgeApi.md#purge_tag) | **POST** /service/{service_id}/purge/{surrogate_key} | Purge by surrogate key tag
  *RateLimiterApi* | [**delete_rate_limiter**](docs/RateLimiterApi.md#delete_rate_limiter) | **DELETE** /rate-limiters/{rate_limiter_id} | Delete a rate limiter
  *RateLimiterApi* | [**get_rate_limiter**](docs/RateLimiterApi.md#get_rate_limiter) | **GET** /rate-limiters/{rate_limiter_id} | Get a rate limiter
  *RateLimiterApi* | [**list_rate_limiters**](docs/RateLimiterApi.md#list_rate_limiters) | **GET** /service/{service_id}/version/{version_id}/rate-limiters | List rate limiters
  *RealtimeApi* | [**get_stats_last120_seconds**](docs/RealtimeApi.md#get_stats_last120_seconds) | **GET** /v1/channel/{service_id}/ts/h | Get real-time data for the last 120 seconds
  *RealtimeApi* | [**get_stats_last120_seconds_limit_entries**](docs/RealtimeApi.md#get_stats_last120_seconds_limit_entries) | **GET** /v1/channel/{service_id}/ts/h/limit/{max_entries} | Get a limited number of real-time data entries
  *RealtimeApi* | [**get_stats_last_second**](docs/RealtimeApi.md#get_stats_last_second) | **GET** /v1/channel/{service_id}/ts/{timestamp_in_seconds} | Get real-time data from specified time
  *RequestSettingsApi* | [**delete_request_settings**](docs/RequestSettingsApi.md#delete_request_settings) | **DELETE** /service/{service_id}/version/{version_id}/request_settings/{request_settings_name} | Delete a Request Settings object
  *RequestSettingsApi* | [**get_request_settings**](docs/RequestSettingsApi.md#get_request_settings) | **GET** /service/{service_id}/version/{version_id}/request_settings/{request_settings_name} | Get a Request Settings object
  *RequestSettingsApi* | [**list_request_settings**](docs/RequestSettingsApi.md#list_request_settings) | **GET** /service/{service_id}/version/{version_id}/request_settings | List Request Settings objects
  *RequestSettingsApi* | [**update_request_settings**](docs/RequestSettingsApi.md#update_request_settings) | **PUT** /service/{service_id}/version/{version_id}/request_settings/{request_settings_name} | Update a Request Settings object
  *ResourceApi* | [**create_resource**](docs/ResourceApi.md#create_resource) | **POST** /service/{service_id}/version/{version_id}/resource | Create a resource link
  *ResourceApi* | [**delete_resource**](docs/ResourceApi.md#delete_resource) | **DELETE** /service/{service_id}/version/{version_id}/resource/{id} | Delete a resource link
  *ResourceApi* | [**get_resource**](docs/ResourceApi.md#get_resource) | **GET** /service/{service_id}/version/{version_id}/resource/{id} | Display a resource link
  *ResourceApi* | [**list_resources**](docs/ResourceApi.md#list_resources) | **GET** /service/{service_id}/version/{version_id}/resource | List resource links
  *ResourceApi* | [**update_resource**](docs/ResourceApi.md#update_resource) | **PUT** /service/{service_id}/version/{version_id}/resource/{id} | Update a resource link
  *ResponseObjectApi* | [**delete_response_object**](docs/ResponseObjectApi.md#delete_response_object) | **DELETE** /service/{service_id}/version/{version_id}/response_object/{response_object_name} | Delete a Response Object
  *ResponseObjectApi* | [**get_response_object**](docs/ResponseObjectApi.md#get_response_object) | **GET** /service/{service_id}/version/{version_id}/response_object/{response_object_name} | Get a Response object
  *ResponseObjectApi* | [**list_response_objects**](docs/ResponseObjectApi.md#list_response_objects) | **GET** /service/{service_id}/version/{version_id}/response_object | List Response objects
  *ServerApi* | [**create_pool_server**](docs/ServerApi.md#create_pool_server) | **POST** /service/{service_id}/pool/{pool_id}/server | Add a server to a pool
  *ServerApi* | [**delete_pool_server**](docs/ServerApi.md#delete_pool_server) | **DELETE** /service/{service_id}/pool/{pool_id}/server/{server_id} | Delete a server from a pool
  *ServerApi* | [**get_pool_server**](docs/ServerApi.md#get_pool_server) | **GET** /service/{service_id}/pool/{pool_id}/server/{server_id} | Get a pool server
  *ServerApi* | [**list_pool_servers**](docs/ServerApi.md#list_pool_servers) | **GET** /service/{service_id}/pool/{pool_id}/servers | List servers in a pool
  *ServerApi* | [**update_pool_server**](docs/ServerApi.md#update_pool_server) | **PUT** /service/{service_id}/pool/{pool_id}/server/{server_id} | Update a server
  *ServiceApi* | [**create_service**](docs/ServiceApi.md#create_service) | **POST** /service | Create a service
  *ServiceApi* | [**delete_service**](docs/ServiceApi.md#delete_service) | **DELETE** /service/{service_id} | Delete a service
  *ServiceApi* | [**get_service**](docs/ServiceApi.md#get_service) | **GET** /service/{service_id} | Get a service
  *ServiceApi* | [**get_service_detail**](docs/ServiceApi.md#get_service_detail) | **GET** /service/{service_id}/details | Get service details
  *ServiceApi* | [**list_service_domains**](docs/ServiceApi.md#list_service_domains) | **GET** /service/{service_id}/domain | List the domains within a service
  *ServiceApi* | [**list_services**](docs/ServiceApi.md#list_services) | **GET** /service | List services
  *ServiceApi* | [**search_service**](docs/ServiceApi.md#search_service) | **GET** /service/search | Search for a service by name
  *ServiceApi* | [**update_service**](docs/ServiceApi.md#update_service) | **PUT** /service/{service_id} | Update a service
  *ServiceAuthorizationsApi* | [**create_service_authorization**](docs/ServiceAuthorizationsApi.md#create_service_authorization) | **POST** /service-authorizations | Create service authorization
  *ServiceAuthorizationsApi* | [**delete_service_authorization**](docs/ServiceAuthorizationsApi.md#delete_service_authorization) | **DELETE** /service-authorizations/{service_authorization_id} | Delete service authorization
  *ServiceAuthorizationsApi* | [**list_service_authorization**](docs/ServiceAuthorizationsApi.md#list_service_authorization) | **GET** /service-authorizations | List service authorizations
  *ServiceAuthorizationsApi* | [**show_service_authorization**](docs/ServiceAuthorizationsApi.md#show_service_authorization) | **GET** /service-authorizations/{service_authorization_id} | Show service authorization
  *ServiceAuthorizationsApi* | [**update_service_authorization**](docs/ServiceAuthorizationsApi.md#update_service_authorization) | **PATCH** /service-authorizations/{service_authorization_id} | Update service authorization
  *SettingsApi* | [**get_service_settings**](docs/SettingsApi.md#get_service_settings) | **GET** /service/{service_id}/version/{version_id}/settings | Get service settings
  *SettingsApi* | [**update_service_settings**](docs/SettingsApi.md#update_service_settings) | **PUT** /service/{service_id}/version/{version_id}/settings | Update service settings
  *SnippetApi* | [**create_snippet**](docs/SnippetApi.md#create_snippet) | **POST** /service/{service_id}/version/{version_id}/snippet | Create a snippet
  *SnippetApi* | [**delete_snippet**](docs/SnippetApi.md#delete_snippet) | **DELETE** /service/{service_id}/version/{version_id}/snippet/{snippet_name} | Delete a snippet
  *SnippetApi* | [**get_snippet**](docs/SnippetApi.md#get_snippet) | **GET** /service/{service_id}/version/{version_id}/snippet/{snippet_name} | Get a versioned snippet
  *SnippetApi* | [**get_snippet_dynamic**](docs/SnippetApi.md#get_snippet_dynamic) | **GET** /service/{service_id}/snippet/{snippet_id} | Get a dynamic snippet
  *SnippetApi* | [**list_snippets**](docs/SnippetApi.md#list_snippets) | **GET** /service/{service_id}/version/{version_id}/snippet | List snippets
  *SnippetApi* | [**update_snippet_dynamic**](docs/SnippetApi.md#update_snippet_dynamic) | **PUT** /service/{service_id}/snippet/{snippet_id} | Update a dynamic snippet
  *StarApi* | [**create_service_star**](docs/StarApi.md#create_service_star) | **POST** /stars | Create a star
  *StarApi* | [**delete_service_star**](docs/StarApi.md#delete_service_star) | **DELETE** /stars/{star_id} | Delete a star
  *StarApi* | [**get_service_star**](docs/StarApi.md#get_service_star) | **GET** /stars/{star_id} | Get a star
  *StarApi* | [**list_service_stars**](docs/StarApi.md#list_service_stars) | **GET** /stars | List stars
  *StatsApi* | [**get_service_stats**](docs/StatsApi.md#get_service_stats) | **GET** /service/{service_id}/stats/summary | Get stats for a service
  *TlsActivationsApi* | [**create_tls_activation**](docs/TlsActivationsApi.md#create_tls_activation) | **POST** /tls/activations | Enable TLS for a domain using a custom certificate
  *TlsActivationsApi* | [**delete_tls_activation**](docs/TlsActivationsApi.md#delete_tls_activation) | **DELETE** /tls/activations/{tls_activation_id} | Disable TLS on a domain
  *TlsActivationsApi* | [**get_tls_activation**](docs/TlsActivationsApi.md#get_tls_activation) | **GET** /tls/activations/{tls_activation_id} | Get a TLS activation
  *TlsActivationsApi* | [**list_tls_activations**](docs/TlsActivationsApi.md#list_tls_activations) | **GET** /tls/activations | List TLS activations
  *TlsActivationsApi* | [**update_tls_activation**](docs/TlsActivationsApi.md#update_tls_activation) | **PATCH** /tls/activations/{tls_activation_id} | Update a certificate
  *TlsBulkCertificatesApi* | [**delete_bulk_tls_cert**](docs/TlsBulkCertificatesApi.md#delete_bulk_tls_cert) | **DELETE** /tls/bulk/certificates/{certificate_id} | Delete a certificate
  *TlsBulkCertificatesApi* | [**get_tls_bulk_cert**](docs/TlsBulkCertificatesApi.md#get_tls_bulk_cert) | **GET** /tls/bulk/certificates/{certificate_id} | Get a certificate
  *TlsBulkCertificatesApi* | [**list_tls_bulk_certs**](docs/TlsBulkCertificatesApi.md#list_tls_bulk_certs) | **GET** /tls/bulk/certificates | List certificates
  *TlsBulkCertificatesApi* | [**update_bulk_tls_cert**](docs/TlsBulkCertificatesApi.md#update_bulk_tls_cert) | **PATCH** /tls/bulk/certificates/{certificate_id} | Update a certificate
  *TlsBulkCertificatesApi* | [**upload_tls_bulk_cert**](docs/TlsBulkCertificatesApi.md#upload_tls_bulk_cert) | **POST** /tls/bulk/certificates | Upload a certificate
  *TlsCertificatesApi* | [**create_tls_cert**](docs/TlsCertificatesApi.md#create_tls_cert) | **POST** /tls/certificates | Create a TLS certificate
  *TlsCertificatesApi* | [**delete_tls_cert**](docs/TlsCertificatesApi.md#delete_tls_cert) | **DELETE** /tls/certificates/{tls_certificate_id} | Delete a TLS certificate
  *TlsCertificatesApi* | [**get_tls_cert**](docs/TlsCertificatesApi.md#get_tls_cert) | **GET** /tls/certificates/{tls_certificate_id} | Get a TLS certificate
  *TlsCertificatesApi* | [**list_tls_certs**](docs/TlsCertificatesApi.md#list_tls_certs) | **GET** /tls/certificates | List TLS certificates
  *TlsCertificatesApi* | [**update_tls_cert**](docs/TlsCertificatesApi.md#update_tls_cert) | **PATCH** /tls/certificates/{tls_certificate_id} | Update a TLS certificate
  *TlsConfigurationsApi* | [**get_tls_config**](docs/TlsConfigurationsApi.md#get_tls_config) | **GET** /tls/configurations/{tls_configuration_id} | Get a TLS configuration
  *TlsConfigurationsApi* | [**list_tls_configs**](docs/TlsConfigurationsApi.md#list_tls_configs) | **GET** /tls/configurations | List TLS configurations
  *TlsConfigurationsApi* | [**update_tls_config**](docs/TlsConfigurationsApi.md#update_tls_config) | **PATCH** /tls/configurations/{tls_configuration_id} | Update a TLS configuration
  *TlsCsrsApi* | [**create_csr**](docs/TlsCsrsApi.md#create_csr) | **POST** /tls/certificate_signing_requests | Create CSR
  *TlsDomainsApi* | [**list_tls_domains**](docs/TlsDomainsApi.md#list_tls_domains) | **GET** /tls/domains | List TLS domains
  *TlsPrivateKeysApi* | [**create_tls_key**](docs/TlsPrivateKeysApi.md#create_tls_key) | **POST** /tls/private_keys | Create a TLS private key
  *TlsPrivateKeysApi* | [**delete_tls_key**](docs/TlsPrivateKeysApi.md#delete_tls_key) | **DELETE** /tls/private_keys/{tls_private_key_id} | Delete a TLS private key
  *TlsPrivateKeysApi* | [**get_tls_key**](docs/TlsPrivateKeysApi.md#get_tls_key) | **GET** /tls/private_keys/{tls_private_key_id} | Get a TLS private key
  *TlsPrivateKeysApi* | [**list_tls_keys**](docs/TlsPrivateKeysApi.md#list_tls_keys) | **GET** /tls/private_keys | List TLS private keys
  *TlsSubscriptionsApi* | [**create_globalsign_email_challenge**](docs/TlsSubscriptionsApi.md#create_globalsign_email_challenge) | **POST** /tls/subscriptions/{tls_subscription_id}/authorizations/{tls_authorization_id}/globalsign_email_challenges | Creates a GlobalSign email challenge.
  *TlsSubscriptionsApi* | [**create_tls_sub**](docs/TlsSubscriptionsApi.md#create_tls_sub) | **POST** /tls/subscriptions | Create a TLS subscription
  *TlsSubscriptionsApi* | [**delete_globalsign_email_challenge**](docs/TlsSubscriptionsApi.md#delete_globalsign_email_challenge) | **DELETE** /tls/subscriptions/{tls_subscription_id}/authorizations/{tls_authorization_id}/globalsign_email_challenges/{globalsign_email_challenge_id} | Delete a GlobalSign email challenge
  *TlsSubscriptionsApi* | [**delete_tls_sub**](docs/TlsSubscriptionsApi.md#delete_tls_sub) | **DELETE** /tls/subscriptions/{tls_subscription_id} | Delete a TLS subscription
  *TlsSubscriptionsApi* | [**get_tls_sub**](docs/TlsSubscriptionsApi.md#get_tls_sub) | **GET** /tls/subscriptions/{tls_subscription_id} | Get a TLS subscription
  *TlsSubscriptionsApi* | [**list_tls_subs**](docs/TlsSubscriptionsApi.md#list_tls_subs) | **GET** /tls/subscriptions | List TLS subscriptions
  *TlsSubscriptionsApi* | [**patch_tls_sub**](docs/TlsSubscriptionsApi.md#patch_tls_sub) | **PATCH** /tls/subscriptions/{tls_subscription_id} | Update a TLS subscription
  *TokensApi* | [**get_token_current**](docs/TokensApi.md#get_token_current) | **GET** /tokens/self | Get the current token
  *TokensApi* | [**list_tokens_customer**](docs/TokensApi.md#list_tokens_customer) | **GET** /customer/{customer_id}/tokens | List tokens for a customer
  *TokensApi* | [**list_tokens_user**](docs/TokensApi.md#list_tokens_user) | **GET** /tokens | List tokens for the authenticated user
  *TokensApi* | [**revoke_token**](docs/TokensApi.md#revoke_token) | **DELETE** /tokens/{token_id} | Revoke a token
  *TokensApi* | [**revoke_token_current**](docs/TokensApi.md#revoke_token_current) | **DELETE** /tokens/self | Revoke the current token
  *UserApi* | [**create_user**](docs/UserApi.md#create_user) | **POST** /user | Create a user
  *UserApi* | [**delete_user**](docs/UserApi.md#delete_user) | **DELETE** /user/{user_id} | Delete a user
  *UserApi* | [**get_current_user**](docs/UserApi.md#get_current_user) | **GET** /current_user | Get the current user
  *UserApi* | [**get_user**](docs/UserApi.md#get_user) | **GET** /user/{user_id} | Get a user
  *UserApi* | [**request_password_reset**](docs/UserApi.md#request_password_reset) | **POST** /user/{user_login}/password/request_reset | Request a password reset
  *UserApi* | [**update_user**](docs/UserApi.md#update_user) | **PUT** /user/{user_id} | Update a user
  *UserApi* | [**update_user_password**](docs/UserApi.md#update_user_password) | **POST** /current_user/password | Update the user&#39;s password
  *VclApi* | [**create_custom_vcl**](docs/VclApi.md#create_custom_vcl) | **POST** /service/{service_id}/version/{version_id}/vcl | Create a custom VCL file
  *VclApi* | [**delete_custom_vcl**](docs/VclApi.md#delete_custom_vcl) | **DELETE** /service/{service_id}/version/{version_id}/vcl/{vcl_name} | Delete a custom VCL file
  *VclApi* | [**get_custom_vcl**](docs/VclApi.md#get_custom_vcl) | **GET** /service/{service_id}/version/{version_id}/vcl/{vcl_name} | Get a custom VCL file
  *VclApi* | [**get_custom_vcl_boilerplate**](docs/VclApi.md#get_custom_vcl_boilerplate) | **GET** /service/{service_id}/version/{version_id}/boilerplate | Get boilerplate VCL
  *VclApi* | [**get_custom_vcl_generated**](docs/VclApi.md#get_custom_vcl_generated) | **GET** /service/{service_id}/version/{version_id}/generated_vcl | Get the generated VCL for a service
  *VclApi* | [**get_custom_vcl_raw**](docs/VclApi.md#get_custom_vcl_raw) | **GET** /service/{service_id}/version/{version_id}/vcl/{vcl_name}/download | Download a custom VCL file
  *VclApi* | [**lint_vcl_default**](docs/VclApi.md#lint_vcl_default) | **POST** /vcl_lint | Lint (validate) VCL using a default set of flags.
  *VclApi* | [**lint_vcl_for_service**](docs/VclApi.md#lint_vcl_for_service) | **POST** /service/{service_id}/lint | Lint (validate) VCL using flags set for the service.
  *VclApi* | [**list_custom_vcl**](docs/VclApi.md#list_custom_vcl) | **GET** /service/{service_id}/version/{version_id}/vcl | List custom VCL files
  *VclApi* | [**set_custom_vcl_main**](docs/VclApi.md#set_custom_vcl_main) | **PUT** /service/{service_id}/version/{version_id}/vcl/{vcl_name}/main | Set a custom VCL file as main
  *VclApi* | [**update_custom_vcl**](docs/VclApi.md#update_custom_vcl) | **PUT** /service/{service_id}/version/{version_id}/vcl/{vcl_name} | Update a custom VCL file
  *VclDiffApi* | [**vcl_diff_service_versions**](docs/VclDiffApi.md#vcl_diff_service_versions) | **GET** /service/{service_id}/vcl/diff/from/{from_version_id}/to/{to_version_id} | Get a comparison of the VCL changes between two service versions
  *VersionApi* | [**activate_service_version**](docs/VersionApi.md#activate_service_version) | **PUT** /service/{service_id}/version/{version_id}/activate | Activate a service version
  *VersionApi* | [**clone_service_version**](docs/VersionApi.md#clone_service_version) | **PUT** /service/{service_id}/version/{version_id}/clone | Clone a service version
  *VersionApi* | [**create_service_version**](docs/VersionApi.md#create_service_version) | **POST** /service/{service_id}/version | Create a service version
  *VersionApi* | [**deactivate_service_version**](docs/VersionApi.md#deactivate_service_version) | **PUT** /service/{service_id}/version/{version_id}/deactivate | Deactivate a service version
  *VersionApi* | [**get_service_version**](docs/VersionApi.md#get_service_version) | **GET** /service/{service_id}/version/{version_id} | Get a version of a service
  *VersionApi* | [**list_service_versions**](docs/VersionApi.md#list_service_versions) | **GET** /service/{service_id}/version | List versions of a service
  *VersionApi* | [**lock_service_version**](docs/VersionApi.md#lock_service_version) | **PUT** /service/{service_id}/version/{version_id}/lock | Lock a service version
  *VersionApi* | [**update_service_version**](docs/VersionApi.md#update_service_version) | **PUT** /service/{service_id}/version/{version_id} | Update a service version
  *VersionApi* | [**validate_service_version**](docs/VersionApi.md#validate_service_version) | **GET** /service/{service_id}/version/{version_id}/validate | Validate a service version
  *WafActiveRulesApi* | [**bulk_update_waf_active_rules**](docs/WafActiveRulesApi.md#bulk_update_waf_active_rules) | **PATCH** /waf/firewalls/{firewall_id}/versions/{version_id}/active-rules/bulk | Update multiple active rules
  *WafActiveRulesApi* | [**create_waf_active_rule**](docs/WafActiveRulesApi.md#create_waf_active_rule) | **POST** /waf/firewalls/{firewall_id}/versions/{version_id}/active-rules | Add a rule to a WAF as an active rule
  *WafActiveRulesApi* | [**create_waf_active_rules_tag**](docs/WafActiveRulesApi.md#create_waf_active_rules_tag) | **POST** /waf/firewalls/{firewall_id}/versions/{version_id}/tags/{waf_tag_name}/active-rules | Create active rules by tag
  *WafActiveRulesApi* | [**delete_waf_active_rule**](docs/WafActiveRulesApi.md#delete_waf_active_rule) | **DELETE** /waf/firewalls/{firewall_id}/versions/{version_id}/active-rules/{waf_rule_id} | Delete an active rule
  *WafActiveRulesApi* | [**get_waf_active_rule**](docs/WafActiveRulesApi.md#get_waf_active_rule) | **GET** /waf/firewalls/{firewall_id}/versions/{version_id}/active-rules/{waf_rule_id} | Get an active WAF rule object
  *WafActiveRulesApi* | [**list_waf_active_rules**](docs/WafActiveRulesApi.md#list_waf_active_rules) | **GET** /waf/firewalls/{firewall_id}/versions/{version_id}/active-rules | List active rules on a WAF
  *WafActiveRulesApi* | [**update_waf_active_rule**](docs/WafActiveRulesApi.md#update_waf_active_rule) | **PATCH** /waf/firewalls/{firewall_id}/versions/{version_id}/active-rules/{waf_rule_id} | Update an active rule
  *WafExclusionsApi* | [**create_waf_rule_exclusion**](docs/WafExclusionsApi.md#create_waf_rule_exclusion) | **POST** /waf/firewalls/{firewall_id}/versions/{firewall_version_number}/exclusions | Create a WAF rule exclusion
  *WafExclusionsApi* | [**delete_waf_rule_exclusion**](docs/WafExclusionsApi.md#delete_waf_rule_exclusion) | **DELETE** /waf/firewalls/{firewall_id}/versions/{firewall_version_number}/exclusions/{exclusion_number} | Delete a WAF rule exclusion
  *WafExclusionsApi* | [**get_waf_rule_exclusion**](docs/WafExclusionsApi.md#get_waf_rule_exclusion) | **GET** /waf/firewalls/{firewall_id}/versions/{firewall_version_number}/exclusions/{exclusion_number} | Get a WAF rule exclusion
  *WafExclusionsApi* | [**list_waf_rule_exclusions**](docs/WafExclusionsApi.md#list_waf_rule_exclusions) | **GET** /waf/firewalls/{firewall_id}/versions/{firewall_version_number}/exclusions | List WAF rule exclusions
  *WafExclusionsApi* | [**update_waf_rule_exclusion**](docs/WafExclusionsApi.md#update_waf_rule_exclusion) | **PATCH** /waf/firewalls/{firewall_id}/versions/{firewall_version_number}/exclusions/{exclusion_number} | Update a WAF rule exclusion
  *WafFirewallVersionsApi* | [**clone_waf_firewall_version**](docs/WafFirewallVersionsApi.md#clone_waf_firewall_version) | **PUT** /waf/firewalls/{firewall_id}/versions/{firewall_version_number}/clone | Clone a firewall version
  *WafFirewallVersionsApi* | [**create_waf_firewall_version**](docs/WafFirewallVersionsApi.md#create_waf_firewall_version) | **POST** /waf/firewalls/{firewall_id}/versions | Create a firewall version
  *WafFirewallVersionsApi* | [**deploy_activate_waf_firewall_version**](docs/WafFirewallVersionsApi.md#deploy_activate_waf_firewall_version) | **PUT** /waf/firewalls/{firewall_id}/versions/{firewall_version_number}/activate | Deploy or activate a firewall version
  *WafFirewallVersionsApi* | [**get_waf_firewall_version**](docs/WafFirewallVersionsApi.md#get_waf_firewall_version) | **GET** /waf/firewalls/{firewall_id}/versions/{firewall_version_number} | Get a firewall version
  *WafFirewallVersionsApi* | [**list_waf_firewall_versions**](docs/WafFirewallVersionsApi.md#list_waf_firewall_versions) | **GET** /waf/firewalls/{firewall_id}/versions | List firewall versions
  *WafFirewallVersionsApi* | [**update_waf_firewall_version**](docs/WafFirewallVersionsApi.md#update_waf_firewall_version) | **PATCH** /waf/firewalls/{firewall_id}/versions/{firewall_version_number} | Update a firewall version
  *WafFirewallsApi* | [**create_waf_firewall**](docs/WafFirewallsApi.md#create_waf_firewall) | **POST** /waf/firewalls | Create a firewall
  *WafFirewallsApi* | [**delete_waf_firewall**](docs/WafFirewallsApi.md#delete_waf_firewall) | **DELETE** /waf/firewalls/{firewall_id} | Delete a firewall
  *WafFirewallsApi* | [**get_waf_firewall**](docs/WafFirewallsApi.md#get_waf_firewall) | **GET** /waf/firewalls/{firewall_id} | Get a firewall
  *WafFirewallsApi* | [**list_waf_firewalls**](docs/WafFirewallsApi.md#list_waf_firewalls) | **GET** /waf/firewalls | List firewalls
  *WafFirewallsApi* | [**update_waf_firewall**](docs/WafFirewallsApi.md#update_waf_firewall) | **PATCH** /waf/firewalls/{firewall_id} | Update a firewall
  *WafRuleRevisionsApi* | [**get_waf_rule_revision**](docs/WafRuleRevisionsApi.md#get_waf_rule_revision) | **GET** /waf/rules/{waf_rule_id}/revisions/{waf_rule_revision_number} | Get a revision of a rule
  *WafRuleRevisionsApi* | [**list_waf_rule_revisions**](docs/WafRuleRevisionsApi.md#list_waf_rule_revisions) | **GET** /waf/rules/{waf_rule_id}/revisions | List revisions for a rule
  *WafRulesApi* | [**get_waf_rule**](docs/WafRulesApi.md#get_waf_rule) | **GET** /waf/rules/{waf_rule_id} | Get a rule
  *WafRulesApi* | [**list_waf_rules**](docs/WafRulesApi.md#list_waf_rules) | **GET** /waf/rules | List available WAF rules
  *WafTagsApi* | [**list_waf_tags**](docs/WafTagsApi.md#list_waf_tags) | **GET** /waf/tags | List tags

  The fastly-py API client currently does not support the following endpoints:
  - [`/automation-tokens/{id}/services`](https://developer.fastly.com/reference/api/auth-tokens/automation) (GET)
  - [`/automation-tokens/{id}`](https://developer.fastly.com/reference/api/auth-tokens/automation) (DELETE, GET)
  - [`/automation-tokens`](https://developer.fastly.com/reference/api/auth-tokens/automation) (GET, POST)
  - [`/customer/{customer_id}/contacts`](https://developer.fastly.com/reference/api/account/contact) (POST)
  - [`/docs/section/{section}`](https://developer.fastly.com/reference/api/utils/docs) (GET)
  - [`/docs/subject/{subject}`](https://developer.fastly.com/reference/api/utils/docs) (GET)
  - [`/metrics/domains/services/{service_id}`](https://developer.fastly.com/reference/api/metrics-stats/domain-inspector/historical) (GET)
  - [`/metrics/origins/services/{service_id}`](https://developer.fastly.com/reference/api/metrics-stats/origin-inspector/historical) (GET)
  - [`/rate-limiters/{rate_limiter_id}`](https://developer.fastly.com/reference/api/vcl-services/rate-limiter) (PUT)
  - [`/resources/stores/config/{config_store_id}/info`](https://developer.fastly.com/reference/api/services/resources/config-store) (GET)
  - [`/resources/stores/config/{config_store_id}/item/{config_store_item_key}`](https://developer.fastly.com/reference/api/services/resources/config-store-item) (DELETE, GET, PATCH, PUT)
  - [`/resources/stores/config/{config_store_id}/item`](https://developer.fastly.com/reference/api/services/resources/config-store-item) (POST)
  - [`/resources/stores/config/{config_store_id}/items`](https://developer.fastly.com/reference/api/services/resources/config-store-item) (GET, PATCH)
  - [`/resources/stores/config/{config_store_id}/services`](https://developer.fastly.com/reference/api/services/resources/config-store) (GET)
  - [`/resources/stores/config/{config_store_id}`](https://developer.fastly.com/reference/api/services/resources/config-store) (DELETE, GET, PUT)
  - [`/resources/stores/config`](https://developer.fastly.com/reference/api/services/resources/config-store) (GET, POST)
  - [`/resources/stores/secret/client-key`](https://developer.fastly.com/reference/api/services/resources/secret-store) (POST)
  - [`/resources/stores/secret/signing-key`](https://developer.fastly.com/reference/api/services/resources/secret-store) (GET)
  - [`/resources/stores/secret/{store_id}/secrets/{secret_name}`](https://developer.fastly.com/reference/api/services/resources/secret) (DELETE, GET)
  - [`/resources/stores/secret/{store_id}/secrets`](https://developer.fastly.com/reference/api/services/resources/secret) (GET, POST)
  - [`/resources/stores/secret/{store_id}`](https://developer.fastly.com/reference/api/services/resources/secret-store) (DELETE, GET)
  - [`/resources/stores/secret`](https://developer.fastly.com/reference/api/services/resources/secret-store) (GET, POST)
  - [`/roles/{role_id}/permissions`](https://developer.fastly.com/reference/api/account/roles) (DELETE, POST)
  - [`/roles/{role_id}`](https://developer.fastly.com/reference/api/account/roles) (PATCH)
  - [`/roles`](https://developer.fastly.com/reference/api/account/roles) (POST)
  - [`/service-authorizations`](https://developer.fastly.com/reference/api/account/service-authorization) (DELETE, PATCH)
  - [`/service-groups/{service_group_id}/services`](https://developer.fastly.com/reference/api/account/service-groups) (DELETE, POST)
  - [`/service-groups/{service_group_id}`](https://developer.fastly.com/reference/api/account/service-groups) (PATCH)
  - [`/service-groups`](https://developer.fastly.com/reference/api/account/service-groups) (POST)
  - [`/service/{service_id}/dictionary/{dictionary_id}/items`](https://developer.fastly.com/reference/api/dictionaries/dictionary-item) (PATCH)
  - [`/service/{service_id}/purge`](https://developer.fastly.com/reference/api/purging) (POST)
  - [`/service/{service_id}/version/{version_id}/apex-redirects`](https://developer.fastly.com/reference/api/vcl-services/apex-redirect) (POST)
  - [`/service/{service_id}/version/{version_id}/director/{director_name}`](https://developer.fastly.com/reference/api/load-balancing/directors/director) (PUT)
  - [`/service/{service_id}/version/{version_id}/generated_vcl/content`](https://developer.fastly.com/reference/api/vcl-services/vcl) (GET)
  - [`/service/{service_id}/version/{version_id}/logging/kafka/{logging_kafka_name}`](https://developer.fastly.com/reference/api/logging/kafka) (PUT)
  - [`/service/{service_id}/version/{version_id}/logging/kinesis/{logging_kinesis_name}`](https://developer.fastly.com/reference/api/logging/kinesis) (PUT)
  - [`/service/{service_id}/version/{version_id}/rate-limiters`](https://developer.fastly.com/reference/api/vcl-services/rate-limiter) (POST)
  - [`/service/{service_id}/version/{version_id}/request_settings`](https://developer.fastly.com/reference/api/vcl-services/request-settings) (POST)
  - [`/service/{service_id}/version/{version_id}/response_object/{response_object_name}`](https://developer.fastly.com/reference/api/vcl-services/response-object) (PUT)
  - [`/service/{service_id}/version/{version_id}/response_object`](https://developer.fastly.com/reference/api/vcl-services/response-object) (POST)
  - [`/service/{service_id}/version/{version_id}/snippet/{snippet_name}`](https://developer.fastly.com/reference/api/vcl-services/snippet) (PUT)
  - [`/service/{service_id}/version/{version_id}/vcl/{vcl_name}/content`](https://developer.fastly.com/reference/api/vcl-services/vcl) (GET)
  - [`/service/{service_id}/version/{version_id}/wafs/{firewall_id}`](https://developer.fastly.com/reference/api/legacy-waf/firewall) (GET, PATCH)
  - [`/service/{service_id}/version/{version_id}/wafs`](https://developer.fastly.com/reference/api/legacy-waf/firewall) (GET, POST)
  - [`/service/{service_id}/wafs/{firewall_id}/owasp`](https://developer.fastly.com/reference/api/legacy-waf/owasp) (GET, PATCH, POST)
  - [`/service/{service_id}/wafs/{firewall_id}/rule_statuses`](https://developer.fastly.com/reference/api/legacy-waf/rule-status) (GET, POST)
  - [`/service/{service_id}/wafs/{firewall_id}/rules/{waf_rule_id}/rule_status`](https://developer.fastly.com/reference/api/legacy-waf/rule-status) (GET, PATCH)
  - [`/service/{service_id}/wafs/{firewall_id}/ruleset/preview`](https://developer.fastly.com/reference/api/legacy-waf/ruleset) (GET)
  - [`/service/{service_id}/wafs/{firewall_id}/ruleset`](https://developer.fastly.com/reference/api/legacy-waf/ruleset) (GET, PATCH)
  - [`/service/{service_id}/wafs/{firewall_id}/update_statuses/{update_status_id}`](https://developer.fastly.com/reference/api/legacy-waf/update-status) (GET)
  - [`/service/{service_id}/wafs/{firewall_id}/update_statuses`](https://developer.fastly.com/reference/api/legacy-waf/update-status) (GET)
  - [`/sudo`](https://developer.fastly.com/reference/api/utils/sudo) (POST)
  - [`/tls/activations/{tls_activation_id}`](https://developer.fastly.com/reference/api/tls/mutual-tls/activations) (GET, PATCH)
  - [`/tls/activations`](https://developer.fastly.com/reference/api/tls/mutual-tls/activations) (GET)
  - [`/tokens`](https://developer.fastly.com/reference/api/auth-tokens/user) (DELETE, POST)
  - [`/user-groups/{user_group_id}/members`](https://developer.fastly.com/reference/api/account/user-groups) (DELETE, POST)
  - [`/user-groups/{user_group_id}/roles`](https://developer.fastly.com/reference/api/account/user-groups) (DELETE, POST)
  - [`/user-groups/{user_group_id}/service-groups`](https://developer.fastly.com/reference/api/account/user-groups) (DELETE, POST)
  - [`/user-groups/{user_group_id}`](https://developer.fastly.com/reference/api/account/user-groups) (PATCH)
  - [`/user-groups`](https://developer.fastly.com/reference/api/account/user-groups) (POST)
  - [`/v1/channel/{service_id}/ts/h/limit/{max_entries}`](https://developer.fastly.com/reference/api/metrics-stats/origin-insights) (GET)
  - [`/v1/channel/{service_id}/ts/h`](https://developer.fastly.com/reference/api/metrics-stats/origin-insights) (GET)
  - [`/v1/channel/{service_id}/ts/{start_timestamp}`](https://developer.fastly.com/reference/api/metrics-stats/origin-insights) (GET)
  - [`/v1/domains/{service_id}/ts/h/limit/{max_entries}`](https://developer.fastly.com/reference/api/metrics-stats/domain-inspector/real-time) (GET)
  - [`/v1/domains/{service_id}/ts/h`](https://developer.fastly.com/reference/api/metrics-stats/domain-inspector/real-time) (GET)
  - [`/v1/domains/{service_id}/ts/{start_timestamp}`](https://developer.fastly.com/reference/api/metrics-stats/domain-inspector/real-time) (GET)
  - [`/v1/origins/{service_id}/ts/h/limit/{max_entries}`](https://developer.fastly.com/reference/api/metrics-stats/origin-inspector/real-time) (GET)
  - [`/v1/origins/{service_id}/ts/h`](https://developer.fastly.com/reference/api/metrics-stats/origin-inspector/real-time) (GET)
  - [`/v1/origins/{service_id}/ts/{start_timestamp}`](https://developer.fastly.com/reference/api/metrics-stats/origin-inspector/real-time) (GET)
  - [`/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules`](https://developer.fastly.com/reference/api/waf/rules/active) (DELETE)
  - [`/wafs/configuration_sets/{configuration_set_id}/relationships/wafs`](https://developer.fastly.com/reference/api/legacy-waf/configuration-set) (GET, PATCH)
  - [`/wafs/configuration_sets`](https://developer.fastly.com/reference/api/legacy-waf/configuration-set) (GET)
  - [`/wafs/rules/{waf_rule_id}/vcl`](https://developer.fastly.com/reference/api/legacy-waf/rule) (GET)
  - [`/wafs/rules/{waf_rule_id}`](https://developer.fastly.com/reference/api/legacy-waf/rule) (GET)
  - [`/wafs/rules`](https://developer.fastly.com/reference/api/legacy-waf/rule) (GET)
  - [`/wafs/tags`](https://developer.fastly.com/reference/api/legacy-waf/tag) (GET)
  - [`/wafs/{firewall_id}/disable`](https://developer.fastly.com/reference/api/legacy-waf/firewall) (PATCH)
  - [`/wafs/{firewall_id}/enable`](https://developer.fastly.com/reference/api/legacy-waf/firewall) (PATCH)
  - [`/wafs/{firewall_id}/rules/{waf_rule_id}/vcl`](https://developer.fastly.com/reference/api/legacy-waf/rule) (GET)
  - [`/wafs/{firewall_id}`](https://developer.fastly.com/reference/api/legacy-waf/firewall) (GET)
  - [`/wafs`](https://developer.fastly.com/reference/api/legacy-waf/firewall) (GET)
  If you encounter any non-security-related bug or unexpected behavior, please [file an issue][bug]
  using the bug report template.
  [bug]: https://github.com/fastly/fastly-py/issues/new?labels=bug

  Please see our [SECURITY.md](./SECURITY.md) for guidance on reporting security-related issues.

  [MIT](./LICENSE).


pkgId: 608a4d35b1bd40b77d077b2bcdbce231c74226f9968188e16e41786e7ccf120b
name: python-fastnumbers
arch: src
version: 5.0.1
epoch: 0
release: 1
summary: Super-fast and clean conversions to numbers.
url: https://github.com/SethMMorton/fastnumbers
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-720a7f4e-d400-45ef-b6ea-91357a409694
location_href: 00013011-python-fastnumbers/python-fastnumbers-5.0.1-1.src.rpm
checksum_type: sha256
description:
  Super-fast and clean conversions to numbers.
      - Source Code: https://github.com/SethMMorton/fastnumbers
      - Downloads: https://pypi.org/project/fastnumbers/
      - Documentation: https://fastnumbers.readthedocs.io/
      - `Quick Start`_
      - `Timing`_
      - `High-level Algorithm`_
      - `How To Run Tests`_
      - `History`_
  ``fastnumbers`` is a module with the following three objectives (in order
  of decreasing importance as to why the module was created):
      
         ``int`` and ``float`` and provides easy, concise, powerful, fast
         and flexible error handling.
      
         an input *could* be converted to *int* or *float*.
      
         ``float`` that are on par or faster with the Python equivalents
         (see the `Timing`_ section for details). These functions
         should behave *identically* to the Python built-ins except for a few
         specific corner-cases as mentioned in the
         `API documentation for those functions <https://fastnumbers.readthedocs.io/en/stable/api.html#the-built-in-replacement-functions>`_.
         - **PLEASE** read the quick start for these functions to fully
           understand the caveats before using them.
  **What kind of speedups can you expect?** Here are some highlights, but please
  see the `Timing`_ section for the raw data if you want details.
      - Up to 2x faster conversion of strings to integers than the built-in
        ``int()`` function
      - Up to 5x faster conversion of strings to floats than the built-in
        ``float()`` function (possibly greater for very long strings)
      - Up to 10x faster handling of errors during conversion than using
        user-side error handling
      - On top of the above, operations to convert a list of strings
        (with the ``map`` option or ``try_array`` function) is 2x faster
        than the equivalent list comprehension.
  **NOTICE**: As of ``fastnumbers`` version 4.0.0, only Python >= 3.7 is
  supported.
  **NOTICE**: As of ``fastnumbers`` version 4.0.0, the functions ``fast_real``,
  ``fast_float``, ``fast_int``, ``fast_forceint``, ``isreal``, ``isfloat``,
  ``isint``, and ``isintlike`` have been deprecated and are replaced with
  ``try_real``, ``try_float``, ``try_int``, ``try_forceint``, ``check_real``,
  ``check_float``, ``check_int``, and ``check_intlike``, respectively. These
  new functions have more flexible APIs and have names that better reflect
  the intent of the functions. The old functions can still be used (they will
  *never* be removed from ``fastnumbers``), but the new ones should be
  preferred for new development.
  **NOTICE**: As of ``fastnumbers`` version 4.0.0, ``query_type`` now sets
  ``allow_underscores`` to ``False`` by default instead of ``True``.


pkgId: a915f6535a0b572df63585e06f3541f39d532d60a9ff7f967c8085ee991a1c2b
name: python-fastnumbers-debuginfo
arch: x86_64
version: 5.0.1
epoch: 0
release: 1
summary: Debug information for package python-fastnumbers
url: https://github.com/SethMMorton/fastnumbers
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-720a7f4e-d400-45ef-b6ea-91357a409694
rpm_sourcerpm: python-fastnumbers-5.0.1-1.src.rpm
location_href: 00013011-python-fastnumbers/python-fastnumbers-debuginfo-5.0.1-1.x86_64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-fastnumbers.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: 02b75f01b4dadaa7784af5f05f15c93d64895a641450164ff68795992236065d
name: python-fastnumbers-debugsource
arch: x86_64
version: 5.0.1
epoch: 0
release: 1
summary: Debug sources for package python-fastnumbers
url: https://github.com/SethMMorton/fastnumbers
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-720a7f4e-d400-45ef-b6ea-91357a409694
rpm_sourcerpm: python-fastnumbers-5.0.1-1.src.rpm
location_href: 00013011-python-fastnumbers/python-fastnumbers-debugsource-5.0.1-1.x86_64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-fastnumbers.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: 2889bebdabf8a8140969927f3d481b649d21d9111be9da7aae8563b09466be1d
name: python-fastprogress
arch: src
version: 1.0.3
epoch: 0
release: 1
summary: A nested progress with plotting options for fastai
url: https://github.com/fastai/fastprogress
rpm_license: Apache Software License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ef0e6101-a1b1-449a-81e4-c334c29f4ea7
location_href: 00003608-python-fastprogress/python-fastprogress-1.0.3-1.src.rpm
checksum_type: sha256
description:
  Copyright 2017 onwards, fast.ai. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. A copy of the License is provided in the LICENSE file in this repository.


pkgId: 44332f0dba58706dbcd4bf76cb48d1fc2257d5dde280168eb72aaf8c0b271654
name: python-feather-format
arch: src
version: 0.4.1
epoch: 0
release: 1
summary: Simple wrapper library to the Apache Arrow-based Feather File Format
url: http://github.com/wesm/feather
rpm_license: Apache License, Version 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-441899ff-b473-4a0a-89ea-24e188440819
location_href: 00012084-python-feather-format/python-feather-format-0.4.1-1.src.rpm
checksum_type: sha256
description:
  Feather efficiently stores pandas DataFrame objects on disk. It depends on the
  Apache Arrow for Python



  ```shell
  pip install feather-format
  ```

  pip users note: ``feather-format`` depends on ``pyarrow`` and may not be
  available on your platform via pip. If that does not work try conda-forge.

  From [conda-forge][1]:

  ```shell
  conda install feather-format -c conda-forge
  ```



  Some features of pandas are not supported in Feather:

  * Non-string column names
  * Row indexes
  * Object-type columns with non-homogeneous data

  [1]: https://conda-forge.github.io


pkgId: 8e96c439b2a1cf591fb3b62e7b9b1e44e61c0b07265566c8f66194a4d32108f3
name: python-fedfind
arch: src
version: 5.0.1
epoch: 0
release: 1
summary: Fedora Finder finds Fedora - images, more to come?
url: https://pagure.io/fedora-qa/fedfind
rpm_license: GPLv3+
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c9affd3f-81a2-4795-b127-685168e0d997
location_href: 00003617-python-fedfind/python-fedfind-5.0.1-1.src.rpm
checksum_type: sha256
description:
  Fedora Finder finds Fedoras. It provides a CLI and Python module that find and providing identifying information about Fedora images and release trees. Try it out:

      fedfind images --release 35
      fedfind images --release 36 --milestone Beta
      fedfind images --release 36 --milestone Beta --compose 1 --respin 1
      fedfind images --dist Fedora-Container --release 33 --compose 20211123 --respin 0
      fedfind images --compose 20211210
      fedfind images --composeid Fedora-Rawhide-20211210.n.0
      fedfind images --release 34 --label Beta-1.1
      fedfind images --release 5 --arch x86_64,ppc
      fedfind images --release 15 --search desk

  Fedora has stable releases, archive releases, really old archive releases, 'milestone' releases (Alpha / Beta), release validation 'candidate' composes, unstable nightly composes, and post-release nightly composes, all in different places, with several different layouts. There is no canonical database of the locations and contents of all the various composes/releases. We in Fedora QA found we had several tools that needed to know where to find various images from various different types of releases, and little bits of knowledge about the locations and layouts of various releases/composes had been added to different tools. fedfind was written to consolidate all this esoteric knowledge in a single codebase with a consistent interface.

  fedfind lets you specify a release/compose using five values: 'dist', 'release', 'milestone', 'compose', and 'respin'. It can then find the location for that compose, tell you whether it exists, and give you the locations of all the images that are part of the release and what each image actually contains. As an alternative to this versioning concept, you can also find releases by their Pungi 4 / productmd 'compose ID' or 'compose label' (see examples above).

  fedfind runs on Python versions 2.7 and later (including 3.x).



  fedfind is packaged in the official Fedora and EPEL repositories: to install on Fedora run `dnf install fedfind`, on RHEL / CentOS with EPEL enabled, run `yum install fedfind`. You may need to enable the *updates-testing* repository to get the latest version.

  You can visit [the fedfind project page on Pagure][1], and clone with `git clone https://pagure.io/fedora-qa/fedfind.git`. Tarballs are released through [PyPI][2].

  You can use the fedfind CLI from the tarball without installing it, as `./fedfindlocal.py` from the root of the tarball (you will need `productmd` and `six`, and `cached_property` for Python < 3.8). You can of course copy the Python module anywhere you like and use it in place. To install both CLI and module systemwide, run `python setup.py install`.



  You can file issues and pull requests on [Pagure][1]. Pull requests must be signed off (use the `-s` git argument). By signing off your pull request you are agreeing to the [Developer's Certificate of Origin][3]:

      Developer's Certificate of Origin 1.1

      By making a contribution to this project, I certify that:

      (a) The contribution was created in whole or in part by me and I
          have the right to submit it under the open source license
          indicated in the file; or

      (b) The contribution is based upon previous work that, to the best
          of my knowledge, is covered under an appropriate open source
          license and I have the right under that license to submit that
          work with modifications, whether created in whole or in part
          by me, under the same open source license (unless I am
          permitted to submit under a different license), as indicated
          in the file; or

      (c) The contribution was provided directly to me by some other
          person who certified (a), (b) or (c) and I have not modified
          it.

      (d) I understand and agree that this project and the contribution
          are public and that a record of the contribution (including all
          personal information I submit with it, including my sign-off) is
          maintained indefinitely and may be redistributed consistent with
          this project or the open source license(s) involved.



  Some usage of fedfind relies on understanding the 'dist', 'release', 'milestone', 'compose', 'respin' versioning concept, so here is a quick primer. Note that if you intend to use fedfind solely with compose IDs or URLs for modern Pungi 4-generated composes, this section will be of less interest to you and you can probably skip it.

  In this section we will write release, milestone, compose, dist quints as (release, milestone, compose, respin, dist) with '' indicating an omitted value, e.g. (22, Beta, TC3, '', 'Fedora') or (22, '', '', '', 'Fedora'). Note 'dist' is usually 'Fedora', and this is its default value, used when it is not explicitly specified. Conceptually, 'dist' should come at the front, but in fact fedfind functions which accept these values tend to place it after the others, for historical reasons (it did not exist when fedfind's versioning scheme was created).

  * **Dist** is the term fedfind uses for what pungi and productmd refer to as the *shortname*; when fedfind was created this didn't really exist, but now the Fedora project produces many more composes than it used to, some with different *dists* / *shortnames*. In the compose with compose ID 'Fedora-Rawhide-20160301.n.0', the *dist* / *shortname* is *Fedora*; in a compose with compose ID 'Fedora-Container-33-20211123.0', the dist / shortname is *Fedora-Container*. *Fedora* is the **dist** for all mainline composes, and this is the default value. *Fedora-Container* is the **dist** for the nightly container image composes, produced once a day for each of the current stable releases, which at present are found only in their initial location as output by release engineering, and not in their mirrored locations. Similarly, *Fedora-Cloud* and *Fedora-IoT* are the **dists** for the nightly Cloud and IoT composes for the current stable releases. So e.g. (35, '', 20211210, 0, 'Fedora-Cloud') will find the (first) 2021-12-10 nightly Cloud compose for Fedora 35. *FedoraRespin* is the **dist** for the current post-release live respin compose in the `live-respins` directory; there is only ever one of these at a time (and note that these are only semi-official builds, provided by volunteers as a courtesy, they do not have the status of official composes). Any **release** or **compose** passed with the **dist** *FedoraRespin* is used as a *check*: if the existing contents of the `live-respins` directory don't match the expected release (number) or compose (date), fedfind will raise an exception instead of returning the `RespinRelease` instance.

  * **Release** is usually a Fedora release number, e.g. 27, 15 or 1. The only non-integer value that is accepted is 'Rawhide', for Rawhide nightly composes. These do not, properly speaking, have a definite release number associated with them: Rawhide is a perpetually rolling tree. The canonical versioning for Rawhide nightly composes is (Rawhide, '', YYYYMMDD, N) (where N is the respin number). Note that [python-wikitcms][4] uses almost the same versioning concept as fedfind, but Wikitcms 'validation events' for Rawhide nightly composes **do** have a release number: this is a property of the *validation event*, not of the *compose*. Thus there may be a Wikitcms *validation event* (24, Rawhide, 20151012, 1, 'Fedora') for the fedfind *compose* (Rawhide, '', 20151012, 1). fedfind and python-wikitcms both recognize this case and will attempt to convert each other's values for convenience.

  * **Milestone** indicates the milestone or the type of nightly compose. Valid milestones for current releases are *Beta*, *RC* (or *Final*, which means the same), *Branched*, and *Production*. The *Alpha* milestone existed until Fedora 25, but Fedora 26 and later releases have no Alpha; no Alpha releases can be found any more, as the Fedora 25 and earlier Alphas are now removed. fedfind will accept *Rawhide* as a milestone and convert it to the release - so ('', Rawhide, YYYYMMDD, N, 'Fedora') is not exactly *valid* but will be handled by the CLI and the `get_release` function and converted to (Rawhide, '', YYYYMMDD, N, 'Fedora'). Stable releases do not have a milestone; (23, RC, '', '', 'Fedora') will be accepted by `get_release` and the CLI but is treated internally as (23, '', '', '', 'Fedora'). The *Production* milestone indicates a so-called 'production' compose, which will usually also be an Alpha, Beta or Final 'candidate' compose - you may be able to find the same compose in two different places, for instance, with the *Production* milestone and a date-based **compose** and **respin**, or with the *Alpha*, *Beta* or *Final* milestone and a numeric **compose** and **respin**. It is approximately the same as the difference between searching for a production compose by compose ID and searching for it by compose label. See more on this in the *fedfind / Wikitcms vs. Pungi / productmd versioning* section below. Currently, the milestone value has no meaning for **dists** other than *Fedora*.

  The values *Cloud* and *Respin* are accepted for backwards compatibility purposes; they will be translated into a **dist** value of *Fedora-Cloud* or *FedoraRespin* respectively, and a blank **milestone** value. Versions of fedfind before 4.0 overloaded the **milestone** concept to handle these **dist** values, rather than properly handling them as **dists**. This functionality may be removed in a future major release.

  * **Compose** is the precise compose identifier (in cases where one is needed). For candidate composes it is always 1. For nightly composes it is a date in YYYYMMDD format. Stable releases and milestone releases do not have a compose.

  * **Respin** is an integer that's bumped any time a compose which would otherwise have the same version is repeated. The concept is taken from Pungi. If we attempt to build two Rawhide nightly composes on 2016-03-01, for instance, in fedfind's versioning they are (Rawhide, '', 20160301, 0) and (Rawhide, '', 20160301, 1). The corresponding Pungi / productmd 'compose ID'-style versioning is Fedora-Rawhide-20160301.n.0 and Fedora-Rawhide-20160301.n.1.

  Note that, as a convenience, fedfind will attempt to detect when a 'compose' value is in fact a combined compose and respin, and split it up - so you can specify the compose as `1.7` (for compose `1`, respin `7`) or `20160330.0` or `20160330.n.0` (both of which will be treated as compose `20160330`, respin `0`).

  Some examples:

  * Stable release: (23, '', '', '', 'Fedora')
  * Beta release: (24, Beta, '', '', 'Fedora')
  * Candidate: (24, Beta, 1, 7, 'Fedora')
  * Branched nightly: (24, Branched, 20160330, 0, 'Fedora')
  * Rawhide nightly: (Rawhide, '', 20160330, 1, 'Fedora')

  The test suite contains a bunch of tests for `get_release()` which incidentally may function as further examples of accepted usage. The fedfind CLI and `get_release()` are designed to guess omitted values in many cases, primarily to aid unattended usage, so e.g. a script can simply specify ('', Branched, '', '', 'Fedora') to run on the date's latest branched compose, without having to know what the current Branched release number is. More detailed information on various cases can be found in the `get_release()` function's docstring.



  The fedfind / Wikitcms versioning system was developed prior to the use of Pungi 4 for Fedora composes. The 'respin' concept from Pungi / productmd was then stuffed into the fedfind / Wikitcms versioning concept quite hastily to keep stuff working, and the productmd 'short' concept was also added to fedfind (usually under the name 'dist', which more closely describes its function in Fedora's context).

  For now, fedfind attempts to remain compatible with its legacy versioning approach as well as possible, while also supporting release identification using productmd versioning concepts. For instance, non-Pungi 4 composes have a sloppily-faked up *cid* attribute that at least will produce the correct release number when parsed like a 'compose ID', and `get_release()` can parse *most* (we aim for 'all', but we're also realists!) compose IDs, compose URLs and compose labels and return appropriate Release instances.

  Pungi has several version-ish concepts. The two most important to fedfind are the 'compose ID' and 'label'. All Pungi composes have a 'compose ID'. Not all have a label - only 'production' composes do (not 'nightly' or 'test' composes).

  A compose ID looks like `Fedora-24-20160301.n.0` (nightly), or `Fedora-Rawhide-20160302.t.1` (test), or `Fedora-24-20160303.0` (production). The release number, date and type of compose are always indicated somehow. For Fedora purposes the respin value should always be present. There is no kind of 'milestone' indicator.

  A label looks like `Alpha-1.2`, or `Beta-13.16`. There's a list of supported milestones (including Fedora's Alpha and Beta, but not Final - productmd uses RC instead). The first number is a public release number (RHEL has numbered milestone releases, unlike Fedora); the second is the respin value, which is considered more of a private/internal property. The system around which the scheme was designed appears to be that multiple "Alpha 1" respins are produced and tested and the final one is released as the public "Alpha 1" - thus the 'respin' concept covers approximately the same ground as Fedora's "TC" and "RC" composes used to.

  Mainline Fedora nightly composes are built just as you'd expect: the short name is 'Fedora', the release number is 'Rawhide' or the actual release number, the type is nightly, and the respin value is incremented if multiple composes are run on the same date (usually only if the first fails and we want to fix it before the next day). So Fedora nightly compose IDs look like `Fedora-Rawhide-20180119.n.0`, for instance.

  For milestone releases, Fedora builds 'production' composes with the label `release` number always set as 1, and the `respin` number incremented each time a compose is run. Thus for Fedora 24 Alpha validation testing we built `Alpha-1.1`, `Alpha-1.2`, `Alpha-1.3` and so on, until `Alpha-1.7` was ultimately released as the public Alpha release. Each of these composes also had a compose ID in `Fedora-24-20160323.0` format.

  The post-release nightly composes for Cloud, Container and IoT images are built almost as you'd expect, but with their type as 'production', not 'nightly'. So their compose IDs look like `Fedora-Cloud-27-20180119.0` or `Fedora-IoT-26-20171215.1`. Their labels are always `RC-(date).(respin)`, e.g. `RC-20180119.0`.

  Current fedfind should be capable in almost all cases of finding any findable Fedora compose by its compose ID or its label. The Fedora 'production' composes initially land in one location (on *kojipkgs*, alongside the nightly Branched and Rawhide composes, in directory names based on the compose ID) and are then mirrored to another location (on *alt*, in directory names based on the compose label). When you search for a given production / candidate compose whether you find its *kojipkgs* location or its *alt* location depends to some extent on how you search for it. Searching by compose label, or with something like *milestone* Alpha, *compose* 1, *respin* 7, will usually find its *alt* location (as a `Compose` class instance). Searching by compose ID, or with something like *milestone* Production, *compose* 20160323, *respin* 0, will usually find its *kojipkgs* location (as a `Production` class instance). However, you can set the `get_fedora_release` argument `promote` to `True` when searching by compose ID-ish values, and fedfind will attempt to find the `Compose` class (*alt* location) if it can. All fedfind release instances for Pungi 4 composes that actually exist should have the compose's compose ID as their `cid` attribute. If the compose has a label, it should be available as the `label` attribute.



  The `fedfind` CLI command gives you URLs for a release's images. For instance, `fedfind images -r 25` will print the URLs to all Fedora 25 images. You can filter the results in various ways. For more information, use `fedfind -h` and `fedfind images -h`.



  The Python module provides access to all fedfind's capabilities.



      import fedfind.release

      comp = fedfind.release.get_release(release=27)
      print comp.location
      for img in comp.all_images:
          print(img['url'])



  The main part of fedfind is the `Release` class, in `fedfind.release`. The primary entry point is `fedfind.release.get_release()` - in almost all cases you would start by getting a release using that function, which takes the `release`, `milestone`, `compose`, `respin`, and `dist` values that identify a release as its arguments and returns an instance of a `Release` subclass. You may also pass `url` (which is expected to be the `/compose` directory of a Pungi 4 compose, or as a special case, `https://dl.fedoraproject.org/pub/alt/live-respins/` for the semi-official post-release live respins which live there), `cid` (a Pungi 4 compose ID), or `label` (a Pungi 4 compose label) as an alternative to release/milestone/compose/respin. If you pass a `url` or `cid`, fedfind will run a cross-check to ensure the URL or CID of the discovered compose actually matches what you requested, and raise an exception if it does not.

  Anyone who used fedfind 1.x may remember the `Image` class for describing images and the `Query` class for doing searches. Both of those were removed from fedfind 2.x in favour of productmd-style metadata. All `Release` instances have a `metadata` dict which, if the release exists, will contain an `images` item which is itself a dict containing image metadata in the format of the productmd `images.json` file. For Pungi 4 releases this is read straight in from `images.json`; for pre-Pungi 4 releases fedfind synthesizes metadata in approximately the same format.

  You can also use the `all_images` convenience property; this is basically a flattened form of the images metadata. It's a list of image dicts, with each image dict in the same basic form as a productmd image dict, but with a `variant` entry added to indicate its variant (in the original productmd layout, the image dicts are grouped by variant and then by arch, which is kind of a pain to parse for many use cases). Note that since fedfind 3.1.0, from Fedora 9 onwards, `boot.iso` files are not included in `all_images`(or the lower-level `all_paths`).

  Since fedfind 3.3.0, image dicts also have `url` and `direct_url` entries added which provide full HTTPS URLs for the image files (so fedfind consumers no longer have to worry about constructing URLs by combining the release `location` or `alt_location` and the image `path`). `url` may go through the https://download.fedoraproject.org mirror redirector, which tries to spread load between mirrors. `direct_url` will always be a direct link. If the image is in the public mirror system, it will use the https://dl.fedoraproject.org mirror. Please use `url` unless you have a strong reason to use `direct_url`, to avoid excessive load on the server.

  You're expected to roll your own queries as appropriate for your use case. The reason fedfind 1.x had a dedicated query interface was primarily to try and speed things up for nightly composes by avoiding Koji queries where possible and tailoring them where not; since fedfind no longer ever has to perform slow Koji queries to find images, the need for the `Query` class is no longer there, you can always just operate on the data in `metadata['images']` or `all_images`. Note the image `subvariant` property is extremely useful for identifying images; you may also want to use the `identify_image` function from `productmd` for this purpose.

  All methods and functions in fedfind are documented directly: please do refer to the docstrings for information on their purposes. Attributes are documented with comments wherever their purpose is not immediately obvious.

  All methods, functions, attributes and properties not prefixed with a `_` are considered 'public'. Public method and function signatures and all public data types will only change in major releases. fedfind has no control over the form or content of the productmd metadata, so when and how that changes is out of our hands; I will make a best effort to keep the synthesized metadata for old composes broadly in line with whatever current Pungi produces, though it is not perfect now and likely never will be (it's kinda tailored to the information I actually need from it).



  fedfind can do some useful stuff that isn't just querying images for releases:

  * `Release.check_expected()` sees if all 'expected' images for the release are present.
  * `Release.previous_release()` takes a cut at figuring out what the 'previous' release was, though this is difficult and may not always work or return what you expect.
  * `helpers.get_current_release()` tells you what the current Fedora release is.



  fedfind has a bunch of knowledge about where Fedora keeps various composes wired in. For Pungi 4 compose types, finding the compose is about all fedfind has to do; it reads all the information about what images are in the compose out from the metadata and exposes it.

  For non-Pungi 4 composes (old stable releases) and Pungi 4 composes that are modified and have their metadata stripped (current stable and milestone releases), fedfind uses the `imagelist` files present on dl.fedoraproject.org, which contain lists of every image file in the entire tree. It finds the images for the specific compose being queried, then produces a path relative to the top of the mirror tree from the result. It can then combine that with a known prefix to produce an HTTPS URL.

  For metadata, fedfind first tries to see if the compose was originally produced with Pungi 4 and its metadata is available from PDC. It tries to guess the compose label from the image file names, and then a compose ID from the compose label, and then query PDC for metadata for that compose. If it is successful, it tries to match each image discovered from the `imagelist` file with an image dict from the original metadata, and combine the two so that the path information is correct but all other information for the image is taken from the original metadata, rather than synthesized by fedfind.

  For any discovered image no matching original image dict is found for, and for composes where no original metadata is available at all, fedfind synthesizes productmd-style metadata by analyzing the file path, guessing the properties that can be guessed and omitting others.

  In all cases, the result is that metadata and derived properties like `all_images` are as similar as possible for the different types of compose, so fedfind consumers can interact with non-Pungi 4 composes in the same way as Pungi 4 ones (to the extent of the metadata discovery and synthesis implementations, some stuff just isn't covered by the synthesis).





  With the use of small metadata files (for metadata composes) and still-quite-small image list files that are cached locally (for non-metadata composes), fedfind is much faster than it used to be. It can still take a few seconds to do all its parsing and analysis, though.

  When used as a module it caches properties and image lists for the lifetime of the release instance. The image list files are cached (in `~/.cache/fedfind`) based on the 'last modified time' provided by the server they come from: for each new release instance, fedfind will hit the server to retrieve the last modified time header, but if the cached copy matches that time, it will not re-download the file. These files are also quite small so will not take long to download in any case. If the download fails for some reason, but we do have a cached copy of the necessary lists, fedfind will work but log a warning that it's using cached data which may be outdated.

  Certain PDC queries, whose results are never expected to change, are also cached (again in `~/.cache/fedfind`), to speed up repeated searches and reduce load on PDC.

  If `~/.cache/fedfind` is not writeable for the user running fedfind, we fall back to using a temporary cache location that is only valid for the life of the process (and deleted on exit). This at least ensures fedfind will work in this case, but results in it being slower and doing more round trips.

  It shouldn't use too much bandwidth (though I haven't really measured), but obviously the server admins won't be happy with me if the servers get inundated with fedfind requests, so don't go *completely* crazy with it - if you want to do something script-y, please at least use the module and re-use release instances so the queries get cached.



  All releases other than stable releases disappear. fedfind can find stable releases all the way back to Fedora Core 1, but it is not going to find Fedora 14 Alpha, Fedora 19 Beta TC3, or nightlies from more than 2-3 weeks ago. This isn't a bug in fedfind - those images literally are not publicly available any more. Nightlies only stick around for a few weeks, candidate composes for a given milestone usually disappear once we've moved on another couple of milestones, and pre-releases (Alphas and Betas) usually disappear some time after the release in question goes stable. fedfind will only find what's actually there.

  Also note that fedfind is not designed to find even *notional* locations for old non-stable releases. Due to their ephemeral nature, the patterns it uses for nightly builds and candidate composes only reflect current practice, and will simply be updated any time that practice changes. It doesn't have a big store of knowledge of what exact naming conventions we used for old composes. If you do `comp = fedfind.release.Compose(12, 'Final', 'TC4')` and read out `comp.location` or something what you get is almost certainly *not* the location where Fedora 12 Final TC4 actually lived when it was around.



  fedfind does not, for the present, handle secondary arches at all. It *will* find PPC images for releases where PPC was a primary arch and i686 images for releases where i686 was a primary arch, though.



  This is pretty much all my fault. Note that aside from its external deps, older versions of fedfind (up to 1.1.2) included a copy of the `cached_property` implementation maintained [here][5] by Daniel Greenfield. The bundled copy was dropped with version 1.1.3.



  Fedora Finder is available under the GPL, version 3 or any later version. A copy is included as COPYING.

  [1]: https://pagure.io/fedora-qa/fedfind
  [2]: https://pypi.python.org/pypi/fedfind
  [3]: https://developercertificate.org/
  [4]: https://pagure.io/fedora-qa/python-wikitcms
  [5]: https://github.com/pydanny


pkgId: 7ddda4c08eac00367a231790afbb2d74ced41bb79dfb0b62f2b8fd316707e978
name: python-fedmsg
arch: src
version: 1.1.3
epoch: 0
release: 1
summary: Fedora Messaging Client API
url: https://github.com/fedora-infra/fedmsg/
rpm_license: LGPLv2+
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-34946973-4534-4c7d-9575-5124ed6ffcb8
location_href: 00003618-python-fedmsg/python-fedmsg-1.1.3-1.src.rpm
checksum_type: sha256
description:
  .. image:: https://img.shields.io/pypi/v/fedmsg.svg
      :target: https://pypi.python.org/pypi/fedmsg

  .. image:: https://img.shields.io/pypi/pyversions/fedmsg.svg
      :target: https://pypi.python.org/pypi/fedmsg

  .. image:: https://img.shields.io/pypi/l/fedmsg.svg
      :target: https://pypi.python.org/pypi/fedmsg

  .. image:: https://readthedocs.org/projects/docs/badge/?version=latest
      :alt: Documentation Status
      :target: https://fedmsg.readthedocs.io/en/latest/?badge=latest

  .. image:: https://secure.travis-ci.org/fedora-infra/fedmsg.png?branch=develop
     :alt: Build Status - develop branch
     :target: https://travis-ci.org/#!/fedora-infra/fedmsg

  .. image:: https://codecov.io/github/fedora-infra/fedmsg/coverage.svg?branch=develop
      :target: https://codecov.io/github/fedora-infra/fedmsg
      :alt: codecov.io


  fedmsg (Federated Message Bus) is a library built on ZeroMQ using the PyZMQ Python bindings.
  fedmsg aims to make it easy to connect services together using ZeroMQ publishers and
  subscribers.

  Note that this library is deprecated in favor of https://github.com/fedora-infra/fedora-messaging

  Check out the `documentation <https://fedmsg.readthedocs.io/en/stable/>`_ for installation and
  configuration instructions.


pkgId: 9a8f5acc3d8fcd1838f69a69eb5d117873772c4dbcc8cc718f4aac40a72fb2d4
name: python-fedmsg-meta-fedora-infrastructure
arch: src
version: 0.31.0
epoch: 0
release: 1
summary: fedmsg metadata providers for Fedora Infrastructure's deployment
url: https://github.com/fedora-infra/fedmsg_meta_fedora_infrastructure/
rpm_license: LGPLv2+
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-52d47aa7-bae0-4114-b5e4-e613385b8491
checksum_type: sha256
description:
  `fedmsg <http://fedmsg.com>`_ is a set of tools for knitting together services
  and webapps into a realtime messaging net.  This package contains metadata
  provider plugins for the primary deployment of that system:  `Fedora
  Infrastructure <https://fedoraproject.org/wiki/Infrastructure>`_.
  If you were to deploy fedmsg at another site, you would like want to write your
  own module like this one that could provide textual representations of *your*
  messages.
  Pop into ``#fedora-apps`` on freenode if you have questions or comments.

location_href:
  00003619-python-fedmsg-meta-fedora-infrastructure/python-fedmsg-meta-fedora-infrastructure-0.31.0-1.src.rpm


pkgId: 4997d8ae05fbcd400e4134633a7ffc5cf3da4ad4aa5834c47e5796ebe06cd927
name: python-fedora-messaging
arch: src
version: 3.2.0
epoch: 0
release: 1
summary: A set of tools for using Fedora's messaging infrastructure
url: https://github.com/fedora-infra/fedora-messaging
rpm_license: GPLv2+
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-72dc6924-1a8f-4b92-a3b8-5d79c176ffef
location_href: 00003622-python-fedora-messaging/python-fedora-messaging-3.2.0-1.src.rpm
checksum_type: sha256
description:
  This package provides tools and APIs to make using Fedora's messaging
  infrastructure easier. These include a framework for declaring message schemas,
  a set of synchronous APIs to publish messages to AMQP brokers, a set of
  asynchronous APIs to consume messages, and services to easily run consumers.
  This library is designed to be a replacement for the `PyZMQ`_-backed `fedmsg`_
  library in Fedora Infrastructure.
  To get started, check out our `user guide`_.
  Looking to contribute? We appreciate it! Check out the `contributor guide`_.


pkgId: e602baff4d1b7e2687577b6e8a3dc722db63d0001675ffc0448625b85e6b9956
name: python-feedfinder2
arch: src
version: 0.0.4
epoch: 0
release: 1
summary: Find the feed URLs for a website.
url: https://github.com/dfm/feedfinder2
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-727ca608-8884-4995-8853-c701e433e0ab
location_href: 00010978-python-feedfinder2/python-feedfinder2-0.0.4-1.src.rpm
checksum_type: sha256
description:
  This is a Python library for finding links feeds on a website. It is based on
  `feedfinder <http://www.aaronsw.com/2002/feedfinder/>`_ - originally
  written by `Mark
  Pilgrim <http://en.wikipedia.org/wiki/Mark_Pilgrim_(software_developer)>`_ and
  subsequently maintained by `Aaron
  Swartz <http://en.wikipedia.org/wiki/Aaron_Swartz>`_ until his untimely death.


pkgId: 5d787e68c5caacef50490d2f493126a75bbd587b335d7ed2b8b494eb79950068
name: python-feedgen
arch: src
version: 0.9.0
epoch: 0
release: 1
summary: Feed Generator (ATOM, RSS, Podcasts)
url: https://lkiesow.github.io/python-feedgen
rpm_license: FreeBSD and LGPLv3+
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-5726269b-b424-4b5c-bb90-cc769a076e64
location_href: 00003623-python-feedgen/python-feedgen-0.9.0-1.src.rpm
checksum_type: sha256
description:
  This module can be used to generate web feeds in both ATOM and RSS format. It
  has support for extensions. Included is for example an extension to produce
  Podcasts.
  It is licensed under the terms of both, the FreeBSD license and the LGPLv3+.
  Choose the one which is more convenient for you. For more details have a look
  at license.bsd and license.lgpl.


pkgId: 076e12f744452ba557aad17177e4ebc96f5519fb90b40599d93006206caf4f38
name: python-feedgenerator
arch: src
version: 2.0.0
epoch: 0
release: 1
summary: Standalone version of django.utils.feedgenerator
url: https://github.com/getpelican/feedgenerator
rpm_license: BSD License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-330c02a5-3125-4750-875a-c28756a3a3e1
location_href: 00003624-python-feedgenerator/python-feedgenerator-2.0.0-1.src.rpm
checksum_type: sha256
description:
  |githubci| |pypi|
  FeedGenerator is a standalone version of Django’s feedgenerator_ module.
  It has evolved over time and includes numerous enhancements.


pkgId: 4ffe5b70d54caa10ff69bf0fc195006d9d01f78f57ad84cd1085a0acffa75c7e
name: python-ffmpeg-normalize
arch: src
version: 1.26.6
epoch: 0
release: 1
summary: Normalize audio via ffmpeg
url: https://github.com/slhck/ffmpeg-normalize
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-12ff39ab-60b9-48fd-be17-0f942ebde04f
location_href: 00013862-python-ffmpeg-normalize/python-ffmpeg-normalize-1.26.6-1.src.rpm
checksum_type: sha256
description:
  You need Python 3.8 or higher.

  - ffmpeg 5.x is required
  - Download a [static build](https://ffmpeg.org/download.html) for your system
  - Place the `ffmpeg` executable in your `$PATH`, or specify the path to the binary with the `FFMPEG_PATH` environment variable in `ffmpeg-normalize`
  For instance, under Linux:
  ```bash
  wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
  mkdir -p ffmpeg
  tar -xf ffmpeg-release-amd64-static.tar.xz -C ffmpeg --strip-components=1
  sudo cp ffmpeg/ffmpeg /usr/local/bin
  sudo cp ffmpeg/ffprobe /usr/local/bin
  sudo chmod +x /usr/local/bin/ffmpeg /usr/local/bin/ffprobe
  ```
  For Windows, follow [this guide](https://www.wikihow.com/Install-FFmpeg-on-Windows).
  For macOS and Linux, you can also use [Homebrew](https://brew.sh):
  ```bash
  brew install ffmpeg
  ```
  Note that using distribution packages (e.g., `apt install ffmpeg`) is not recommended, as these are often outdated.

  For Python 3 and pip:
  ```bash
  pip3 install ffmpeg-normalize
  ```
  Or download this repository, then run `pip3 install .`.

  ```
  ffmpeg-normalize [-h]
      [-o OUTPUT [OUTPUT ...]] [-of OUTPUT_FOLDER]
      [-f] [-d] [-v] [-q] [-n] [-pr]
      [--version]
      [-nt {ebu,rms,peak}]
      [-t TARGET_LEVEL] [-p] [-lrt LOUDNESS_RANGE_TARGET] [-tp TRUE_PEAK] [--offset OFFSET] [--dual-mono] [--dynamic]
      [-c:a AUDIO_CODEC] [-b:a AUDIO_BITRATE] [-ar SAMPLE_RATE] [-koa]
      [-prf PRE_FILTER] [-pof POST_FILTER]
      [-vn] [-c:v VIDEO_CODEC]
      [-sn] [-mn] [-cn]
      [-ei EXTRA_INPUT_OPTIONS] [-e EXTRA_OUTPUT_OPTIONS]
      [-ofmt OUTPUT_FORMAT] [-ext EXTENSION]
      input [input ...]
  ```
  For more information, run `ffmpeg-normalize -h`, or read on.

  Please read this section for a high level introduction.
  **What does the program do?**
  The program takes one or more input files and, by default, writes them to a folder called `normalized`, using an `.mkv` container. All audio streams will be normalized so that they have the same (perceived) volume.
  **How do I specify the input?**
  Just give the program one or more input files as arguments. It works with most media files.
  **How do I specify the output?**
  You can specify one output file name for each input file with the `-o` option. In this case, the container format (e.g. `.wav`) will be inferred from the file name extension that you've given.
  Example:
  ```
  ffmpeg-normalize 1.wav 2.wav -o 1n.wav 2n.wav
  ```
  If you don't specify the output file name for an input file, the container format will be MKV, and the output will be written to `normalized/<input>.mkv`.
  Using the `-ext` option, you can supply a different output extension common to all output files, e.g. `-ext m4a`.
  **What will get normalized?**
  By default, all streams from the input file will be written to the output file. For example, if your input is a video with two language tracks and a subtitle track, both audio tracks will be normalized independently. The video and subtitle tracks will be copied over to the output file.
  **How will the normalization be done?**
  The normalization will be performed with the [`loudnorm` filter](http://ffmpeg.org/ffmpeg-filters.html#loudnorm) from FFmpeg, which was [originally written by Kyle Swanson](https://k.ylo.ph/2016/04/04/loudnorm.html). It will bring the audio to a specified target level. This ensures that multiple files normalized with this filter will have the same perceived loudness.
  **What codec is chosen?**
  The default audio encoding method is uncompressed PCM (`pcm_s16le`) to avoid introducing compression artifacts. This will result in a much higher bitrate than you might want, for example if your input files are MP3s.
  Some containers (like MP4) also cannot handle PCM audio. If you want to use such containers and/or keep the file size down, use `-c:a` and specify an audio codec (e.g., `-c:a aac` for ffmpeg's built-in AAC encoder).

  [Read the examples on the the wiki.](https://github.com/slhck/ffmpeg-normalize/wiki/examples)


  - `input`: Input media file(s)
  - `-o OUTPUT [OUTPUT ...], --output OUTPUT [OUTPUT ...]`: Output file names.
      Will be applied per input file.
      If no output file name is specified for an input file, the output files
      will be written to the default output folder with the name `<input>.<ext>`, where `<ext>` is the output extension (see `-ext` option).
      Example: `ffmpeg-normalize 1.wav 2.wav -o 1n.wav 2n.wav`
  - `-of OUTPUT_FOLDER, --output-folder OUTPUT_FOLDER`: Output folder (default: `normalized`)
      This folder will be used for input files that have no explicit output name specified.

  - `-f, --force`: Force overwrite existing files
  - `-d, --debug`: Print debugging output
  - `-v, --verbose`: Print verbose output
  - `-q, --quiet`: Only print errors
  - `-n, --dry-run`: Do not run normalization, only print what would be done
  - `-pr`, `--progress`: Show progress bar for files and streams
  - `--version`: Print version and exit

  - `-nt {ebu,rms,peak}, --normalization-type {ebu,rms,peak}`: Normalization type (default: `ebu`).
      EBU normalization performs two passes and normalizes according to EBU R128.
      RMS-based normalization brings the input file to the specified RMS level.
      Peak normalization brings the signal to the specified peak level.
  - `-t TARGET_LEVEL, --target-level TARGET_LEVEL`: Normalization target level in dB/LUFS (default: -23).
      For EBU normalization, it corresponds to Integrated Loudness Target in LUFS. The range is -70.0 - -5.0.
      Otherwise, the range is -99 to 0.
  - `-p, --print-stats`: Print first pass loudness statistics formatted as JSON to stdout.

  - `-lrt LOUDNESS_RANGE_TARGET, --loudness-range-target LOUDNESS_RANGE_TARGET`: EBU Loudness Range Target in LUFS (default: 7.0).
      Range is 1.0 - 50.0.
  - `--keep-loudness-range-target`: Keep the input loudness range target to allow for linear normalization.
  - `-tp TRUE_PEAK, --true-peak TRUE_PEAK`: EBU Maximum True Peak in dBTP (default: -2.0).
      Range is -9.0 - +0.0.
  - `--offset OFFSET`: EBU Offset Gain (default: 0.0).
      The gain is applied before the true-peak limiter in the first pass only. The offset for the second pass will be automatically determined based on the first pass statistics.
      Range is -99.0 - +99.0.
  - `--dual-mono`: Treat mono input files as "dual-mono".
      If a mono file is intended for playback on a stereo system, its EBU R128 measurement will be perceptually incorrect. If set, this option will compensate for this effect. Multi-channel input files are not affected by this option.
  - `--dynamic`: Force dynamic normalization mode.
      Instead of applying linear EBU R128 normalization, choose a dynamic normalization. This is not usually recommended.
      Dynamic mode will automatically change the sample rate to 192 kHz. Use -ar/--sample-rate to specify a different output sample rate.

  - `-c:a AUDIO_CODEC, --audio-codec AUDIO_CODEC`: Audio codec to use for output files.
      See `ffmpeg -encoders` for a list.
      Will use PCM audio with input stream bit depth by default.
  - `-b:a AUDIO_BITRATE, --audio-bitrate AUDIO_BITRATE`: Audio bitrate in bits/s, or with K suffix.
      If not specified, will use codec default.
  - `-ar SAMPLE_RATE, --sample-rate SAMPLE_RATE`: Audio sample rate to use for output files in Hz.
      Will use input sample rate by default, except for EBU normalization, which will change the input sample rate to 192 kHz.
  - `-koa, --keep-original-audio`: Copy original, non-normalized audio streams to output file
  - `-prf PRE_FILTER, --pre-filter PRE_FILTER`: Add an audio filter chain before applying normalization.
      Multiple filters can be specified by comma-separating them.
  - `-pof POST_FILTER, --post-filter POST_FILTER`: Add an audio filter chain after applying normalization.
      Multiple filters can be specified by comma-separating them.
      For EBU, the filter will be applied during the second pass.

  - `-vn, --video-disable`: Do not write video streams to output
  - `-c:v VIDEO_CODEC, --video-codec VIDEO_CODEC`: Video codec to use for output files (default: 'copy').
      See `ffmpeg -encoders` for a list.
      Will attempt to copy video codec by default.
  - `-sn, --subtitle-disable`: Do not write subtitle streams to output
  - `-mn, --metadata-disable`: Do not write metadata to output
  - `-cn, --chapters-disable`: Do not write chapters to output

  - `-ei EXTRA_INPUT_OPTIONS, --extra-input-options EXTRA_INPUT_OPTIONS`: Extra input options list.
      A list of extra ffmpeg command line arguments valid for the input, applied before ffmpeg's `-i`.
      You can either use a JSON-formatted list (i.e., a list of comma-separated, quoted elements within square brackets), or a simple string of space-separated arguments.
      If JSON is used, you need to wrap the whole argument in quotes to prevent shell expansion and to preserve literal quotes inside the string. If a simple string is used, you need to specify the argument with `-e=`.
      Examples: `-ei '[ "-f", "mpegts", "-r", "24" ]'` or `-ei="-f mpegts -r 24"`
  - `-e EXTRA_OUTPUT_OPTIONS, --extra-output-options EXTRA_OUTPUT_OPTIONS`: Extra output options list.
      A list of extra ffmpeg command line arguments valid for the output.
      You can either use a JSON-formatted list (i.e., a list of comma-separated, quoted elements within square brackets), or a simple string of space-separated arguments.
      If JSON is used, you need to wrap the whole argument in quotes to prevent shell expansion and to preserve literal quotes inside the string. If a simple string is used, you need to specify the argument with `-e=`.
      Examples: `-e '[ "-vbr", "3", "-preset:v", "ultrafast" ]'` or `-e="-vbr 3 -preset:v ultrafast"`
  - `-ofmt OUTPUT_FORMAT, --output-format OUTPUT_FORMAT`: Media format to use for output file(s).
      See `ffmpeg -formats` for a list.
      If not specified, the format will be inferred by ffmpeg from the output file name. If the output file name is not explicitly specified, the extension will govern the format (see '--extension' option).
  - `-ext EXTENSION, --extension EXTENSION`: Output file extension to use for output files that were not explicitly specified. (Default: `mkv`)

  The program additionally respects environment variables:
  - `TMP` / `TEMP` / `TMPDIR`
      Sets the path to the temporary directory in which files are
      stored before being moved to the final output directory.
      Note: You need to use full paths.
  - `FFMPEG_PATH`
      Sets the full path to an `ffmpeg` executable other than
      the system default or you can provide a file name available on $PATH

  This program has a simple API that can be used to integrate it into other Python programs.
  For more information see the [API documentation](https://htmlpreview.github.io/?https://github.com/slhck/ffmpeg-normalize/blob/master/docs/ffmpeg_normalize.html).


  Make sure you run ffmpeg v3.1 or higher and that `loudnorm` is part of the output when you run `ffmpeg -filters`. Many distributions package outdated ffmpeg 2.x versions, or (even worse), Libav's `ffmpeg` disguising as a real `ffmpeg` from the FFmpeg project.
  Some ffmpeg builds also do not have the `loudnorm` filter enabled.
  You can always download a static build from [their website](http://ffmpeg.org/download.html) and use that.
  If you have to use an outdated ffmpeg version, you can only use `rms` or `peak` as normalization types, but I can't promise that the program will work correctly.

  When you run `ffmpeg-normalize` and re-encode files with MP3 or AAC, you will inevitably introduce [generation loss](https://en.wikipedia.org/wiki/Generation_loss). Therefore, I do not recommend running this on your precious music collection, unless you have a backup of the originals or accept potential quality reduction. If you just want to normalize the subjective volume of the files without changing the actual content, consider using [MP3Gain](http://mp3gain.sourceforge.net/) and [aacgain](http://aacgain.altosdesign.com/).

  I chose MKV as a default output container since it handles almost every possible combination of audio, video, and subtitle codecs. If you know which audio/video codec you want, and which container is supported, use the output options to specify the encoder and output file name manually.

  See the [next section](#the-conversion-does-not-work-and-i-get-a-cryptic-ffmpeg-error).

  Maybe ffmpeg says something like:
  > Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
  Or the program says:
  > … Please choose a suitable audio codec with the `-c:a` option.
  One possible reason is that the input file contains some streams that cannot be mapped to the output file, or that you are using a codec that does not work for the output file. Examples:
  - You are trying to normalize a movie file, writing to a `.wav` or `.mp3` file. WAV/MP3 files only support audio, not video. Disable video and subtitles with `-vn` and `-sn`, or choose a container that supports video (e.g. `.mkv`).
  - You are trying to normalize a file, writing to an `.mp4` container. This program defaults to PCM audio, but MP4 does not support PCM audio. Make sure that your audio codec is set to something MP4 containers support (e.g. `-c:a aac`).
  The default output container is `.mkv` as it will support most input stream types. If you want a different output container, [make sure that it supports](https://en.wikipedia.org/wiki/Comparison_of_container_file_formats) your input file's video, audio, and subtitle streams (if any).
  Also, if there is some other broken metadata, you can try to disable copying over of metadata with `-mn`.
  Finally, make sure you use a recent version of ffmpeg. The [static builds](https://ffmpeg.org/download.html) are usually the best option.

  - **EBU R128** is an EBU standard that is commonly used in the broadcasting world. The normalization is performed using a psychoacoustic model that targets a subjective loudness level measured in LUFS (Loudness Unit Full Scale). R128 is subjectively more accurate than any peak or RMS-based normalization. More info on R128 can be found in the [official document](https://tech.ebu.ch/docs/r/r128.pdf) and [the `loudnorm` filter description](http://k.ylo.ph/2016/04/04/loudnorm.html) by its original author.
  - **Peak Normalization** analyzes the peak signal level in dBFS and increases the volume of the input signal such that the maximum in the output is 0 dB (or any other chosen threshold). Since spikes in the signal can cause high volume peaks, peak normalization might still result in files that are subjectively quieter than other, non-peak-normalized files.
  - **RMS-based Normalization** analyzes the [RMS power](https://en.wikipedia.org/wiki/Root_mean_square#Average_power) of the signal and changes the volume such that a new RMS target is reached. Otherwise it works similar to peak normalization.

  You absolutely can. However, you can get better accuracy and linear normalization with two passes of the filter. Since ffmpeg does not allow you to automatically run these two passes, you have to do it yourself and parse the output values from the first run.
  If ffmpeg-normalize is too over-engineered for you, you could also use an approach such as featured [in this Ruby script](https://gist.github.com/kylophone/84ba07f6205895e65c9634a956bf6d54) that performs the two `loudnorm` passes.
  If you want dynamic normalization (the loudnorm default), simply use ffmpeg with one pass, e.g.:
  ```bash
  ffmpeg -i input.mp3 -af loudnorm -c:a aac -b:a 192k output.m4a
  ```

  You should check out the `speechnorm` filter that is part of ffmpeg. It is a designed to be used in one pass, so you don't need this script at all.
  See [the documentation](https://ffmpeg.org/ffmpeg-all.html#speechnorm) for more information.

  You are probably using a 0.x version of this program. There are significant changes to the command line arguments and inner workings of this program, so please  adapt your scripts to the new one. Those changes were necessary to address a few issues that kept piling up; leaving the program as-is would have made it hard to extend it. You can continue using the old version (find it under *Releases* on GitHub or request the specific version from PyPi), but it will not be supported anymore.

  If you found this program useful and feel like giving back, feel free to send a donation [via PayPal](https://paypal.me/WernerRobitza).

  - [Create an AppleScript application to drop or open a folder of files in ffmpeg-normalize](https://prehensileblog.wordpress.com/2022/04/15/create-an-applescript-application-to-drop-or-open-a-folder-of-files-in-ffmpeg-normalize/)
  *(Have a link? Please propose an edit to this section via a pull request!)*

  <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
  <!-- prettier-ignore-start -->
  <!-- markdownlint-disable -->
  <table>
    <tbody>
      <tr>
        <td align="center" valign="top" width="14.28%"><a href="https://overtag.dk/"><img src="https://avatars.githubusercontent.com/u/374612?v=4?s=100" width="100px;" alt="Benjamin Balder Bach"/><br /><sub><b>Benjamin Balder Bach</b></sub></a><br /><a href="https://github.com/slhck/ffmpeg-normalize/commits?author=benjaoming" title="Code">💻</a></td>
        <td align="center" valign="top" width="14.28%"><a href="https://chaos.social/@eleni"><img src="https://avatars.githubusercontent.com/u/511547?v=4?s=100" width="100px;" alt="Eleni Lixourioti"/><br /><sub><b>Eleni Lixourioti</b></sub></a><br /><a href="https://github.com/slhck/ffmpeg-normalize/commits?author=Geekfish" title="Code">💻</a></td>
        <td align="center" valign="top" width="14.28%"><a href="https://github.com/thenewguy"><img src="https://avatars.githubusercontent.com/u/77731?v=4?s=100" width="100px;" alt="thenewguy"/><br /><sub><b>thenewguy</b></sub></a><br /><a href="https://github.com/slhck/ffmpeg-normalize/commits?author=thenewguy" title="Code">💻</a></td>
        <td align="center" valign="top" width="14.28%"><a href="https://github.com/aviolo"><img src="https://avatars.githubusercontent.com/u/560229?v=4?s=100" width="100px;" alt="Anthony Violo"/><br /><sub><b>Anthony Violo</b></sub></a><br /><a href="https://github.com/slhck/ffmpeg-normalize/commits?author=aviolo" title="Code">💻</a></td>
        <td align="center" valign="top" width="14.28%"><a href="https://jacobs.af/"><img src="https://avatars.githubusercontent.com/u/952830?v=4?s=100" width="100px;" alt="Eric Jacobs"/><br /><sub><b>Eric Jacobs</b></sub></a><br /><a href="https://github.com/slhck/ffmpeg-normalize/commits?author=jetpks" title="Code">💻</a></td>
        <td align="center" valign="top" width="14.28%"><a href="https://github.com/kostalski"><img src="https://avatars.githubusercontent.com/u/34033008?v=4?s=100" width="100px;" alt="kostalski"/><br /><sub><b>kostalski</b></sub></a><br /><a href="https://github.com/slhck/ffmpeg-normalize/commits?author=kostalski" title="Code">💻</a></td>
        <td align="center" valign="top" width="14.28%"><a href="http://justinppearson.com/"><img src="https://avatars.githubusercontent.com/u/8844823?v=4?s=100" width="100px;" alt="Justin Pearson"/><br /><sub><b>Justin Pearson</b></sub></a><br /><a href="https://github.com/slhck/ffmpeg-normalize/commits?author=justinpearson" title="Code">💻</a></td>
      </tr>
      <tr>
        <td align="center" valign="top" width="14.28%"><a href="https://github.com/Nottt"><img src="https://avatars.githubusercontent.com/u/13532436?v=4?s=100" width="100px;" alt="ad90xa0-aa"/><br /><sub><b>ad90xa0-aa</b></sub></a><br /><a href="https://github.com/slhck/ffmpeg-normalize/commits?author=Nottt" title="Code">💻</a></td>
        <td align="center" valign="top" width="14.28%"><a href="https://github.com/Mathijsz"><img src="https://avatars.githubusercontent.com/u/1891187?v=4?s=100" width="100px;" alt="Mathijs"/><br /><sub><b>Mathijs</b></sub></a><br /><a href="https://github.com/slhck/ffmpeg-normalize/commits?author=Mathijsz" title="Code">💻</a></td>
        <td align="center" valign="top" width="14.28%"><a href="https://github.com/mpuels"><img src="https://avatars.githubusercontent.com/u/2924816?v=4?s=100" width="100px;" alt="Marc Püls"/><br /><sub><b>Marc Püls</b></sub></a><br /><a href="https://github.com/slhck/ffmpeg-normalize/commits?author=mpuels" title="Code">💻</a></td>
        <td align="center" valign="top" width="14.28%"><a href="http://www.mvbattista.com/"><img src="https://avatars.githubusercontent.com/u/158287?v=4?s=100" width="100px;" alt="Michael V. Battista"/><br /><sub><b>Michael V. Battista</b></sub></a><br /><a href="https://github.com/slhck/ffmpeg-normalize/commits?author=mvbattista" title="Code">💻</a></td>
        <td align="center" valign="top" width="14.28%"><a href="http://auto-editor.com"><img src="https://avatars.githubusercontent.com/u/57511737?v=4?s=100" width="100px;" alt="WyattBlue"/><br /><sub><b>WyattBlue</b></sub></a><br /><a href="https://github.com/slhck/ffmpeg-normalize/commits?author=WyattBlue" title="Code">💻</a></td>
        <td align="center" valign="top" width="14.28%"><a href="https://github.com/g3n35i5"><img src="https://avatars.githubusercontent.com/u/17593457?v=4?s=100" width="100px;" alt="Jan-Frederik Schmidt"/><br /><sub><b>Jan-Frederik Schmidt</b></sub></a><br /><a href="https://github.com/slhck/ffmpeg-normalize/commits?author=g3n35i5" title="Code">💻</a></td>
      </tr>
    </tbody>
    <tfoot>
      <tr>
        <td align="center" size="13px" colspan="7">
          <img src="https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg">
            <a href="https://all-contributors.js.org/docs/en/bot/usage">Add your contributions</a>
          </img>
        </td>
      </tr>
    </tfoot>
  </table>
  <!-- markdownlint-restore -->
  <!-- prettier-ignore-end -->
  <!-- ALL-CONTRIBUTORS-LIST:END -->

  The MIT License (MIT)
  Copyright (c) 2015-2022 Werner Robitza
  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.


  * Production status stable.
  * Make install_requires more abstract.

  * Add "-hide_banner" remove "-nostdin" (#222)
    The `-nostdin` option is unnessary because of the `-y` option.
    Adding `-hide_banner` makes DEBUG statements shorter.
  * Homebrew works on linux too.
  * Explain ffmpeg installation steps.

  * Re-add requirements.txt to (maybe) fix conda-forge builds.

  * Fix requirements (#218)
  * Improve types.
  * Docs: add @g3n35i5 as a contributor.

  * Add ignore-revs file.
  * Formatting and import sorting.
  * Refactor: Improved logging behavior (#216)
  * Add "apt update" (#215)
  * Remove stalebot.
  * Update README.
  * Move to_ms and make CommandRunner more ergonomic (#212)
  * Upgrade workflow, get ffmpeg from apt (#213)
  * Turn FFmpegNormalizeError into a normal Exception (#211)
  * Remove manifest.in (#210)
  * Simplify logging (#209)
  * Use pep585 type hints (#207)
  * Don't use tempfile's private module function (#206)
  * Fix smaller type errors.
  * Reduce mypy errors 12 -> 4 (#204)
  * Make input validation more efficient.
    Make input validation more efficient
    Re-separate formats and exts

  * Bump requirements.
  * Add py.typed support.
  * General refactoring + type hints (#202)
  * Re-write to f-strings when possible (#201)
  * Remove unnecessary utf-8 declarations (#200)
    "-*- coding: utf-8 -*-" is a Python 2 construct and can be safely
    removed. Other utf-8 declarations are also unnecessary.

  * Add .editorconfig.
  * Link to API docs.
  * Add docs.
  * Add type hints, document everything, refactor some code.
  * Add more audio formats (#199)
  * Add python 3.11 to CI.
  * Docs: add WyattBlue as a contributor for code (#198)
    * docs: update README.md
    * docs: update .all-contributorsrc
  * Upgrade to Python 3.8 syntax (#197)
  * Fix python version in github tests.
  * Bump requirements to latest versions.
  * Add python 3.11 to list of languages.
  * Bump required python version to 3.8.
  * Various minor code cleanups and type hints.
  * Harmonize logger code.
  * Update python version in tests.
  * Docs: add @mvbattista as a contributor.
  * Docs: add @mpuels as a contributor.
  * Docs: add @Mathijsz as a contributor.
  * Docs: add @Nottt as a contributor.
  * Docs: add @justinpearson as a contributor.
  * Docs: add @kostalski as a contributor.
  * Docs: add @jetpks as a contributor.
  * Docs: add @aviolo as a contributor.
  * Docs: add @thenewguy as a contributor.
  * Docs: add @Geekfish as a contributor.
  * Docs: add @benjaoming as a contributor.
  * Reference speechnorm.

  * Update README.
  * Update list of pcm-incompatible extensions.

  * Constrain parsed ranges to avoid out of bounds, fixes #189.
  * Fix readme for extra-input-options.
  * Warn about dynamic mode only if not already set, fixes #187.

  * Add warning in case user specifies both --lrt and --keep-loudness-range-target.

  * Add option to keep loudness range target, fixes #181.
  * Only show warning about disabling video if not yet disabled, addresses #184.

  * Code formatting.
  * Extend warning for audio-only format to opus, fixes #184.

  * Update python requirements.
  * Prevent race condition in output dir creation.

  * Increase possible loudness range target to 50.

  * Add way to force dynamic mode, clarify usage, fixes #176.

  * Add warning for cover art, addresses #174 and #175.
  * Update README.

  * Improve issue templates.
  * Do not print ffmpeg progress in debug logs.
  * Remove unused import.
  * Replace which() function with shlex version.
  * Add python 3.10 in setup.py.
  * Clarify minimum ffmpeg version.

  * Properly detect -inf dB input.

  * Debug command output for ffmpeg commands.
  * Remove unneeded warning message.

  * Use astats instead of volumedetect filter, fixes #163.
    Allows floating point calculation.

  * Print warning for bit depths > 16, addresses #163.

  * Re-raise error on ffmpeg command failure.
    This prevents incorrectly telling the user that a normalized file was written when it wasn't.

  * Set tqdm lock for logging only when multiprocessing is available.
    Multiprocessing is not available in all environments, for example
    on AWS lambda python run time lacks /dev/shm, so trying to acquire
    a multiprocessing Lock throws an OSError. The module could also be
    missing in some cases (ex. Jython, although this library doesn't support
    Jython anyway).
    The solution to this is to only try to set the lock when multiprocessing
    is available. The tqdm library solves this in the same manner.
    For more details: https://github.com/slhck/ffmpeg-normalize/issues/156
  * Add instructions on how to run tests.

  * Bump requirements, should fix #155.
  * Move all examples to Wiki.
  * Update badge link.

  * Add python_requires to setup.py.

  * Improve README.
  * Add GitHub actions badge.
  * Add GitHub actions tests.
  * Properly convert EBU JSON values to float.
  * Switch to f strings, remove Python 3.5 support.
  * Format code with black.
  * Fix flake8 errors.
  * Factor out method.
  * WIP: new tests.
  * Log to stderr by default to enable JSON parsing.
  * Remove release script.

  * Format setup.py.
  * Switch progress to external lib.
  * Remove support for older versions.

  * Adjusted handling of FFMPEG_PATH for binaries available via $PATH (#149)
    * adjusted handling of FFMPEG_PATH for binaries available via $PATH
    fixes #147
    * adjusted use of %s to {} to match style
    * documented the feature
    * condensed error message as other lines are longer

  * Fix JSON output for multiple files.
  * Update badge URL.
  * Update README.md (#142)
    * Update README.md
    Added example of verifying levels
    Fixes #141
    * shorten example, add link to wiki page
  * Error if no ffmpeg exec exists.
  * Add stalebot.

  * Fixing stdin corruption caused by new subprocess (#138)
  * Update issue template.
  * Create FUNDING.yml.
  * Fix usage, addresses #132.

  * Manually specify usage string, fixes #132.
  * Fix local import for tests.

  * Add extra input options.

  * Add colorama to requirements, fixes #131.
  * Fix warning that is printed with default options.

  * Fix issue with output folder, fixes #126.
  * Fix typo in README's table of contents link to "File Input/Output". (#124)
  * Clarify readme, fixes #122.

  * Add warning for automatic sample rate conversion, addresses #122.
  * Ignore vscode folder.
  * Fix printing of errors in conversion.

  * Fix unit tests.
  * Improve handling of output file folder and errors.
  * Clarify usage of output options, add warning.
  * Improve documentation, fixes #120.
  * Do not include bump messages in changelog.

  * Use measured offset in second pass, fixes #119.
  * Update release instructions.
  * Remove author names from changelog.

  * Update release script and changelog template.
  * Apply pre-filters in all first passes, fixes #118.
    This allows properly reading the level for any kind of normalization, even if
    filters affect the loudness in the first pass.

  * Add all commits to changelog.
  * Remove python 2 support.
  * Add quiet option, fixes #116.
    - Add a new quiet option
    - Promote some warnings to actual errors that need to be shown
    - Add a very basic test case

  * Improve release script.
  * Python 3.8.

  * Only print length warning for non-EBU type normalization.

  * Remove build and dist folder on release.
  * Do not exit on error in batch processing.
    Simply process the next file if one has errors, addresses #110.

  * Use minimal dependency for tqdm.
  * Remove specific python version requirement.

  * Freeze tqdm version.
  * Update python to 3.7.
  * Improve release documentation.

  * Do not print stream warning when there is only one stream.
  * Remove previous dist versions before release.

  * Warn when duration cannot be read, fixes #105.
  * Update README.
    minor improvements in the description

  * Add output to unit test failures.
  * Fix input label for audio stream.

  * Add pre-and post-filter hooks, fixes #67.
    This allows users to specify filters to be run before or after the actual
    normalization call, using regular ffmpeg syntax.
    Only applies to audio.
  * Document audiostream class.
  * Warn when file is too short, fixes #87.
  * Update release method to twine.

  * Handle progress output from ffmpeg, fixes #10.
  * Merge pull request #99 from Nottt/patch-1.
    fix -cn description
  * Fix -cn description.
  * Add nicer headers for options in README.

  * Add version file in release script before committing.
  * Add option to keep original audio, fixes #83.
  * Add pypi badge.
  * Allow release script to add changelog for future version; upload to pypi.

  * Add release script.
  * Add small developer guide on releasing.
  * Move HISTORY.md to CHANGELOG.md.
  * Fix ffmpeg static build download location.

  * Bump version.
  * Cap measured input loudness, fixes #92.

  * Bump version.
  * Fix handling of errors with tqdm.
  * Improve readme.
  * Delete issue template.
  * Bump version.
  * Clarify extra argument options, move to main entry point.
  * Update issue templates.

  * Bump version.
  * Clarify extra argument options, move to main entry point.

  * Bump version.
  * Copy metadata from individual streams, fixes #86.
  * Add python version for pyenv.

  * Bump version.
  * Update README, fixes #79 and addresses #80.

  * Bump version.
  * Minor README updates.
  * Fix documentation of TMPDIR parameter.

  * Bump version.
  * New way to specify extra options.

  * Update README.
  * Decode strings in extra options.

  * Bump version.
  * Merge pull request #69 from UbiCastTeam/master.
    Stderror decoding ignoring utf8 encoding errors
  * Stderror decoding ignoring utf8 encoding errors.

  * Bump version.
  * Do not require main module in setup.py, fixes #68.

  * Bump version.
  * Remove dead code.
  * Fix for python2 division.
  * Update documentation.
  * Progress bar.
  * Remove imports from test file.
  * Fix travis file.
  * WIP: progress bar.
  * Minor typo in option group.
  * Add simple unit test for disabling chapters.

  * Fix unit test.
  * Bump version.
  * Add option to disable chapters, fixes #65, also fix issue with metadata.

  * Bump version.
  * Set default loudness target to -23, fixes #48.

  * Bump version.
  * Merge pull request #64 from UbiCastTeam/encoding-issue.
    Stdout and stderror decoding ignoring utf8 encoding errors
  * Stdout and stderror decoding ignoring utf8 encoding errors.

  * Bump version.
  * Add errors for impossible format combinations, fixes #60.
  * Fix ordering of output maps, fixes #63.
  * Improve documentation.

  * Add option to print first pass statistics.

  * Bump version.
  * Restrict parsing to valid JSON part only, fixes #61.
  * Add an example for MP3 encoding.
  * Update paypal link.

  * Bump version.
  * Add normalized folder to gitignore.
  * Do not print escape sequences on Windows.
  * Do not check for file existence, fixes #57.
  * Add github issue template.

  * Bump version.
  * Do not check for ffmpeg upon module import.

  * Bump version.
  * Rename function test.
  * Fix issue with wrong adjustment parameters, fixes #54.

  * Allow setting FFMPEG_PATH and document TMP.

  * Handle edge case for short input clips.

  * Bump version.
  * Do not try to remove nonexisting file in case of error in command.

  * Bump version.
  * Always streamcopy when detecting streams to avoid initializing encoder.
  * Fix handling of temporary file.
  * Add build status.
  * Travis tests.

  * Fix bug with target level for peak/RMS.
  * Update documentation formatting.
  * Update history.

  * Bump version.
  * Set default target to -23.

  * Add version info and test case for dry run.
  * New feature detection, add documentation, contributors guide etc.
  * WIP: v1.0 rewrite.

  * Use shutil.move instead of os.rename.

  * Allow setting threshold to 0.

  * Bump version.
  * Update HISTORY.md.
  * Merge pull request #37 from Mathijsz/fix-which-path-expansion.
    expand tilde and environment variables, fixes #36
  * Expand tilde and environment variables, fixes #36.
  * Update HISTORY.md.
  * Update README w.r.t. loudnorm filter.
  * Update README and indentation.

  * Bump version.
  * Fix handling of extra options with spaces.
  * Include test script.
  * Logging and other improvements.
  * Add test files.
  * Autopep8 that thing.
  * Logger improvements.
  * Add example for overwriting.

  * Allow overwriting input file, fixes #22.
  * Version bump.
  * Better handle cmd arguments.
  * Update README.md.
    add another example

  * Fix for problem introduced in 304e8df.

  * Fix pypi topics.
  * Bump version and README.
  * Fix issue where output was wrong format.
  * Add EBU R128 filter.
  * Use Markdown instead of RST for README/HISTORY.
  * Define file encode for python3, fixes #24.
  * Fix history.
  * Fix option -np.
  * Clarify merge option.
  * Minor documentation improvements.
    - change README from CRLF to LF
    - add "attenuated" in description
    - extend LICENSE year
    - add license to main README

  * Update for release.
  * Merge pull request #21 from mpuels/patch-1.
    Fix for #13
  * Fix for #13.
  * Mention Python 3.
    mention that Python 3 may work, just didn't have time to test
  * Fix README's code blocks.

  * Code cleanup, add option to set format and audio codec.

  * Add option for no prefix, fixes #20.
  * Handle multiple spaces in path; fixes issue #18.
  * Handle spaces in path, fixes #12.
  * Update README.rst.
  * Change default level back  to -26.
  * Typo in README example.
  * Update documentation.
  * Bump to v0.2.0.
    * Support for multiple files and output directories.
    * Support merging of audio with input file
    * Set audio codec and additional options
    * User-definable threshold
    * Better error handling and logging
    * Deprecates avconv
  * Change default level back to -28.
  * Merge pull request #15 from auricgoldfinger/master.
    Add extended normalisation options
  * Add extended normalisation options.
    - add program option to write output in a separate directory in stead of
       prefixing it
    - add program option to merge the normalized audio in the original
       (video) file rather than creating a separate WAV file
    - change the maximum setting: will now normalize so that max
       volume is set to 0, adjusted with the given level.
       e.g. : -m -l -5 will increase the audio level to max = -5.0dB
    - improve verbose logging: number of files are written to the
       info log
    - improve performance: check first whether the output file
       exists before calculating the volume levels + not modifying
       the file if the adjustment < 0.5dB (level is never exactly 0)
  * Update README, fixes #11.

  * Check for Windows .exe, fixes #10.
  * Check path and fix #9.
  * Merge pull request #8 from benjaoming/master.
    Add MANIFEST.in
  * Bump version.
  * Add manifest to include missing files in sdist.
  * Merge pull request #6 from jetpks/master.
    Fixed ffmpeg v2.6.3 compatibility and docopt config
  * Updated to work with ffmpeg v2.6.3, and fixed broken docopt config.
    ffmpeg update:
    ffmpeg v2.6.3 puts mean_volume on stderr instead of stdout, causing
    `output` in `ffmpeg_get_mean` to be completely empty, and no match for
    mean_volume or max_volume to be found.
    Fixed by adding `stderr=subprocess.PIPE` in both Popen calls in
    `run_command`, and combining stdout and stderr on return. We already
    exit with non-zero return, so combining stderr/stdout shouldn't cause
    any poor side-effects.
    docopt config:
    - args['--level'] was not recognizing its default because there was
      an errant comma between -l and --level, and it needed <level> after
      the arguments.
    - Fixed spacing for --max
    - Removed quotes around 'normalized' so single quote characters don't
      end up in the output file names.
  * Removed Windows carraige returns from __main__.py.
  * Merge pull request #5 from mvbattista/master.
    Installation update to ffmpeg
  * Installation update to ffmpeg.
  * Update to ffmpeg.
  * Update HISTORY.rst.
  * Update to ffmpeg.
  * Merge pull request #4 from benjaoming/rename.
    Rename project
  * Make at least one file mandatory.
  * Rename project and remove pyc file.
  * Merge pull request #2 from benjaoming/docopt-setuptools-avconv.
    Docopt, Setuptools, avconv compatibility
  * Use docopt.
  * Use normalize-audio when using avconv because it doesn't have a way to measure volume.
  * Functional setup.py, communicate with avconv/ffmpeg about overwriting.
  * Also detect avconv.
  * Use a main function instead.
  * Add a history for the project.
  * Move to more unique module name.
  * Update README.rst.
  * Change the README to rst (PyPi)
  * Delete .gitignore.
  * Update README.md.
  * Various improvements, fixes #1.
  * License.
  * Livense.
  * Update README.md.
  * Merge branch 'master' of https://github.com/slhck/audio-normalize.
  * Initial commit.
  * Initial commit.


pkgId: 61598718649b6a56975580019e7f28bfd22d866f2b44cf98710782779d9e6f99
name: python-ffmpy
arch: src
version: 0.3.0
epoch: 0
release: 1
summary: A simple Python wrapper for ffmpeg
url: https://github.com/Ch00k/ffmpy
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-fac6afb5-1dad-4306-967c-b11694203d27
location_href: 00011230-python-ffmpy/python-ffmpy-0.3.0-1.src.rpm
checksum_type: sha256
description:
  ffmpy is a simplistic `FFmpeg <http://ffmpeg.org/>`_ command line wrapper. It implements a Pythonic interface for FFmpeg command line compilation and uses Python `subprocess <https://docs.python.org/2/library/subprocess.html>`_ module to execute compiled command line.


pkgId: 4f1dc8107c2c1f070503e6858bae9674fea3c420ebba9c043717d9da8fcc09e8
name: python-fiddler-client
arch: src
version: 1.7.0
epoch: 0
release: 1
summary: Python client for Fiddler Service
url: https://fiddler.ai
rpm_license: Apache Software License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-5c79053f-a4ff-4265-b3cf-3c3e69a00e16
location_href: 00010324-python-fiddler-client/python-fiddler-client-1.7.0-1.src.rpm
checksum_type: sha256
description:
  Python client for interacting with Fiddler. Provides a user-friendly interface to our REST API and enables event
  publishing for use with our monitoring features.


pkgId: 1d1d3b50785d00226fd306fdb6cf9ae1e635059ef572f0fa04c8707075b04334
name: python-file-magic
arch: src
version: 0.4.1
epoch: 0
release: 1
summary: Python front end for libmagic(3)
url: https://https://darwinsys.com/file/
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-7562579e-773d-481c-b243-5cc5cc947554
location_href: 00003630-python-file-magic/python-file-magic-0.4.1-1.src.rpm
checksum_type: sha256
description:
  This library is a Python ctypes interface to `libmagic`.




  You can install `file-magic` either with:

      python setup.py install
      
      easy_install .
      
      pip install file-magic




      import magic

      detected = magic.detect_from_filename('magic.py')
      print 'Detected MIME type: {}'.format(detected.mime_type)
      print 'Detected encoding: {}'.format(detected.encoding)
      print 'Detected file type name: {}'.format(detected.name)




  To run the tests:

      python setup.py test

rpm_license:
  Copyright (c) Ian F. Darwin 1986-1995. Software written by Ian F. Darwin and others; maintained 1995-present by Christos Zoulas and others. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice immediately at the beginning of the file, without modification, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


pkgId: 830264d8d7fad1cd2ca83d1751eebd0ea4ae099a4e945ed5db2b5fd670c6a3b8
name: python-filemagic
arch: src
version: 1.6
epoch: 0
release: 1
summary: A Python API for libmagic, the library behind the Unix file command
url: http://filemagic.readthedocs.org
rpm_license: ASL
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-12e3b17c-42a7-4b5d-accc-0bb31234109e
location_href: 00014229-python-filemagic/python-filemagic-1.6-1.src.rpm
checksum_type: sha256
description:
  `libmagic <http://www.darwinsys.com/file/>`_ is the library that commonly
  supports the *file* command on Unix system, other than Max OSX which has its
  own implementation. The library handles the loading of *database* files that
  describe the magic numbers used to identify various file types, as well as the
  associated mime types. The library also handles character set detections.


pkgId: d436ded17fc4a3add05d62e82e4cc44e608f5a69ad7ef4fa3a784ec33331da38
name: python-filesplit
arch: src
version: 4.0.1
epoch: 0
release: 1
summary: Python module that is capable of splitting files and merging it back.
url: https://github.com/ram-jayapalan/filesplit
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-46b649ff-f834-41c8-b43b-80cfb809331c
location_href: 00013104-python-filesplit/python-filesplit-4.0.1-1.src.rpm
checksum_type: sha256
description:
  File splitting and merging made easy for python programmers!
  This module
      * Can split files of any size into multiple chunks and also merge them back.
      * Can handle both structured and unstructured files.


pkgId: bbf97ced713591a284ccbd1c5b9cb7065729f6e405a43afc0d6254f87e281aec
name: python-filetype
arch: src
version: 1.2.0
epoch: 0
release: 1
summary: Infer file type and MIME type of any file/buffer. No external dependencies.
url: https://github.com/h2non/filetype.py
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-e5ab25c6-ecd0-4c34-a537-ec8c79fbfa63
location_href: 00003631-python-filetype/python-filetype-1.2.0-1.src.rpm
checksum_type: sha256
description:
  Small and dependency free `Python`_ package to infer file type and MIME
  type checking the `magic numbers`_ signature of a file or buffer.
  This is a Python port from `filetype`_ Go package.


pkgId: 193f47023ba5e7f643049fc6e02a3e0c032f06562bcdd8aebb9ca0aa2bcadb5b
name: python-filterpy
arch: src
version: 1.4.5
epoch: 0
release: 1
summary: Kalman filtering and optimal estimation library
url: https://github.com/rlabbe/filterpy
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-bf0a3367-86de-4cec-a02b-3e2e3b46c1a7
location_href: 00009794-python-filterpy/python-filterpy-1.4.5-1.src.rpm
checksum_type: sha256
description:
  **NOTE**: Imminent drop of support of Python 2.7, 3.4. See section below for details.
  This library provides Kalman filtering and various related optimal and
  non-optimal filtering software written in Python. It contains Kalman
  filters, Extended Kalman filters, Unscented Kalman filters, Kalman
  smoothers, Least Squares filters, fading memory filters, g-h filters,
  discrete Bayes, and more.
  This is code I am developing in conjunction with my book Kalman and
  Bayesian Filter in Python, which you can read/download at
  https://github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python/
  My aim is largely pedalogical - I opt for clear code that matches the
  equations in the relevant texts on a 1-to-1 basis, even when that has a
  performance cost. There are places where this tradeoff is unclear - for
  example, I find it somewhat clearer to write a small set of equations
  using linear algebra, but numpy's overhead on small matrices makes it
  run slower than writing each equation out by hand. Furthermore, books
  such Zarchan present the written out form, not the linear algebra form.
  It is hard for me to choose which presentation is 'clearer' - it depends
  on the audience. In that case I usually opt for the faster implementation.
  I use NumPy and SciPy for all of the computations. I have experimented
  with Numba and it yields impressive speed ups with minimal costs, but I
  am not convinced that I want to add that requirement to my project. It
  is still on my list of things to figure out, however.
  Sphinx generated documentation lives at http://filterpy.readthedocs.org/.
  Generation is triggered by git when I do a check in, so this will always
  be bleeding edge development version - it will often be ahead of the
  released version.


pkgId: 25edc3b33d9981d9d538e29b1e0618fde91c99a8167c23de26f18d9368af8772
name: python-fire
arch: src
version: 0.5.0
epoch: 0
release: 1
summary: A library for automatically generating command line interfaces.
url: https://github.com/google/python-fire
rpm_license: Apache Software License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-67171905-2674-4c3d-bd80-0ca143efc899
location_href: 00009463-python-fire/python-fire-0.5.0-1.src.rpm
checksum_type: sha256
description:
  Python Fire is a library for automatically generating command line interfaces
  (CLIs) with a single line of code.

  It will turn any Python module, class, object, function, etc. (any Python
  component will work!) into a CLI. It's called Fire because when you call Fire(),
  it fires off your command.


pkgId: 632baed0f23996aa6415f66ddd0d43678dd0be7f2a7c3b2651af8121608f6dfd
name: python-firehose
arch: src
version: 0.5
epoch: 0
release: 1
summary: Library for working with output from static code analyzers
url: https://github.com/fedora-static-analysis/firehose
rpm_license: LGPL2.1 or later
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-fb5c7124-cfb8-4006-b7eb-139caaa26a89
location_href: 00003633-python-firehose/python-firehose-0.5-1.src.rpm
checksum_type: sha256
description:
  "firehose" is a Python package intended for managing the results from
  code analysis tools (e.g. compiler warnings, static analysis, linters,
  etc).

  It currently provides parsers for the output of gcc, clang-analyzer, cppcheck,
  and findbugs.  These parsers convert the results into a common data model of
  Python objects, with methods for lossless roundtrips through a provided
  XML format.  There is also a JSON equivalent.

  It is available on pypi here:
    https://pypi.python.org/pypi/firehose

  and via git from:
    https://github.com/fedora-static-analysis/firehose

  The mailing list is:
    https://admin.fedoraproject.org/mailman/listinfo/firehose-devel

  Documentation can be read here:
    http://firehose.readthedocs.io/en/latest/

  Firehose is Free Software, licensed under the LGPLv2.1 or (at your
  option) any later version.

  It requires Python 2.7 or 3.2 onwards, and has been successfully tested
  with PyPy.

  It is currently of alpha quality.

  The API and serialization formats are not yet set in stone (and we're
  keen on hearing feedback before we lock things down more).

  Motivation: http://lists.fedoraproject.org/pipermail/devel/2012-December/175232.html

  I want to slurp the results from static code analysis into a database,
  which means coercing all of the results into some common interchange format,
  codenamed "firehose" (which could also be the name of the database).

  The idea is a common XML format that all tools can emit that:
    * describes a warning
    * gives source-code location of the warning: filename, function,
      line number.
    * optionally with a `CWE <http://cwe.mitre.org/about/index.html>`_
      identifier
    * potentially with other IDs and URLs, e.g. the ID "SIG30-C" with URL
      https://www.securecoding.cert.org/confluence/display/seccode/SIG30-C.+Call+only+asynchronous-safe+functions+within+signal+handlers
    * optionally describes code path to get there (potentially
      interprocedural across source files), potentially with "state"
      annotations (e.g. in the case of a reference-counting bug, it's useful
      to be able to annotate the changes to the refcount).

  together with a simple Python API for working with the format as a
  collection of Python objects (creating, write to XML, read from XML,
  modification, etc)

  I initially considered using JSON, but went with XML because if multiple
  tools are going to emit this, it's good to be able to validate things
  against a schema (see
  `firehose.rng <https://github.com/fedora-static-analysis/firehose/blob/master/firehose.rng>`_,
  a RELAX-NG schema).

  References to source files in the format can include a hash of the source
  file itself (e.g. SHA-1) so that you can uniquely identify which source file
  you were talking about.

  This format would be slurped into the DB for the web UI, and can have other
  things done to it without needing a server:
  e.g.:

    * convert it to the textual form of a gcc compilation error, so that
      Emacs etc can parse it and take you to the source
    * be turned into a simple HTML report locally on your workstation

  Projects using Firehose:

    * `mock-with-analysis <https://github.com/fedora-static-analysis/mock-with-analysis>`_
      can rebuild a source RPM, capturing the results of 4 different code
      analysis tools in Firehose format (along with all source files that
      were mentioned in any report).
    * The `"firehose" branch
      <http://git.fedorahosted.org/cgit/gcc-python-plugin.git/log/?h=firehose>`_
      of
      `cpychecker <https://gcc-python-plugin.readthedocs.org/en/latest/cpychecker.html>`_
      can natively emit Firehose XML reports
    * https://github.com/paultag/storz/blob/master/wrappers/storz-lintian


pkgId: 8e996c1e7c1a8569caf2b261e3c7a1add4c7b74320ecf9bbec7ec08fad3eae88
name: python-first
arch: src
version: 2.0.2
epoch: 0
release: 1
summary: Return the first true value of an iterable.
url: http://github.com/hynek/first/
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-b2eb6a37-4eb1-4abe-bf29-f6226c9586d6
location_href: 00003635-python-first/python-first-2.0.2-1.src.rpm
checksum_type: sha256
description:
  ``first`` is an MIT-licensed Python package with a simple function that returns the first true value from an iterable, or ``None`` if there is none.
  If you need more power, you can also supply a ``key`` function that is used to judge the truth value of the element or a ``default`` value if ``None`` doesn’t fit your use case.
  N.B. I’m using the term “true” consistently with Python docs for ``any()`` and ``all()`` — it means that the value evaluates to true like: ``True``, ``1``, ``"foo"``, or ``[None]``.
  But **not**: ``None``, ``False``, ``[]``, or ``0``.
  In JavaScript, they call this “truthy”.


pkgId: 1c6b787b982861bd8cf12157e4ed6a3acee2c3e4365e1f465c5cb52c665edd58
name: python-fissix
arch: src
version: 21.11.13
epoch: 0
release: 1
summary: Monkeypatches to override default behavior of lib2to3.
url: https://github.com/jreese/fissix
rpm_license: Python Software Foundation License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-fec2b421-89b2-4131-ba97-20b181f26b12
location_href: 00003636-python-fissix/python-fissix-21.11.13-1.src.rpm
checksum_type: sha256
description:
  Backport of latest lib2to3, with enhancements.
  [![build status](https://travis-ci.org/jreese/fissix.svg?branch=master)](https://travis-ci.org/jreese/fissix)
  [![version](https://img.shields.io/pypi/v/fissix.svg)](https://pypi.org/project/fissix)
  [![license](https://img.shields.io/pypi/l/fissix.svg)](https://github.com/jreese/fissix/blob/master/LICENSE)
  [![code style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)


pkgId: 51e9bbc2f4b9bd8d36a2161d5a816d1f9a0a0780aff34d3306bdbebce9e51403
name: python-fitsio
arch: src
version: 1.1.8
epoch: 0
release: 1
summary: A full featured python library to read from and write to FITS files.
url: https://github.com/esheldon/fitsio
rpm_license: GPL
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-3f9830c9-13b4-4233-ae2b-edb60ad92182
location_href: 00003638-python-fitsio/python-fitsio-1.1.8-1.src.rpm
checksum_type: sha256
description:
  A python library to read from and write to FITS files.

  [![Build Status (master)](https://travis-ci.com/esheldon/fitsio.svg?branch=master)](https://travis-ci.com/esheldon/fitsio)
  [![tests](https://github.com/esheldon/fitsio/workflows/tests/badge.svg)](https://github.com/esheldon/fitsio/actions?query=workflow%3Atests)



  This is a python extension written in c and python.  Data are read into
  numerical python arrays.

  A version of cfitsio is bundled with this package, there is no need to install
  your own, nor will this conflict with a version you have installed.




  - Read from and write to image, binary, and ascii table extensions.
  - Read arbitrary subsets of table columns and rows without loading all the data
    to memory.
  - Read image subsets without reading the whole image.  Write subsets to existing images.
  - Write and read variable length table columns.
  - Read images and tables using slice notation similar to numpy arrays.  This is like a more
    powerful memmap, since it is column-aware for tables.
  - Append rows to an existing table.  Delete row sets and row ranges. Resize tables,
      or insert rows.
  - Query the columns and rows in a table.
  - Read and write header keywords.
  - Read and write images in tile-compressed format (RICE,GZIP,PLIO,HCOMPRESS).
  - Read/write gzip files directly.  Read unix compress (.Z,.zip) and bzip2 (.bz2) files.
  - TDIM information is used to return array columns in the correct shape.
  - Write and read string table columns, including array columns of arbitrary
    shape.
  - Read and write complex, bool (logical), unsigned integer, signed bytes types.
  - Write checksums into the header and verify them.
  - Insert new columns into tables in-place.
  - Iterate over rows in a table.  Data are buffered for efficiency.
  - python 3 support, including python 3 strings




  ```python
  import fitsio
  from fitsio import FITS,FITSHDR






  filename='data.fits'
  data = fitsio.read(filename)


  data = fitsio.read(filename, rows=[35,1001], columns=['x','y'], ext=2)


  h = fitsio.read_header(filename)

  data,h = fitsio.read(filename, header=True)




  data = np.zeros(10, dtype=[('id','i8'),('ra','f8'),('dec','f8')])
  fitsio.write(filename, data)





  fitsio.write(filename, image)












  fits=fitsio.FITS('data.fits')


  print(fits)

  file: data.fits
  mode: READONLY
  extnum hdutype         hduname
  0      IMAGE_HDU
  1      BINARY_TBL      mytable



  >>> fits
  file: data.fits
  ... etc



  >>> fits[0]

  file: data.fits
  extension: 0
  type: IMAGE_HDU
  image info:
    data type: f8
    dims: [4096,2048]


  >>> fits['mytable']

  file: data.fits
  extension: 1
  type: BINARY_TBL
  extname: mytable
  rows: 4328342
  column info:
    i1scalar            u1
    f                   f4
    fvec                f4  array[2]
    darr                f8  array[3,2]
    dvarr               f8  varray[10]
    s                   S5
    svec                S6  array[3]
    svar                S0  vstring[8]
    sarr                S2  array[4,3]




  >>> fits[-1]
  ...







  img = fits[0].read()
  img = fits[0][:,:]


  img = fits[0][25:35, 45:55]



  data = fits[1].read()
  data = fits['mytable'].read()
  data = fits[1][:]




  data = fits[1].read(rows=[1,5], columns=['index','x','y'])



  data = fits[1][10:20]
  data = fits[1][10:20:2]
  data = fits[1][[1,5,18]]


  data = fits['SCI',2][10:20]


  data = fits[1][40:25]
  data = fits[1][40:25:-5]


  data = fits[1]['x'][:]



  data = fits[1]['x','y'][:]



  columns=['index','x','y']
  rows=[1,5]
  data = fits[1][columns][rows]



  fits=fitsio.FITS(filename,iter_row_buffer=1000)
  for row in fits[1]:
      print(row)


  for hdu in fits:
      data=hdu.read()










  fits = fitsio.FITS(filename,vstorage='object')

  data = fits[1].read(vstorage='object')
  print(data['dvarr'].dtype)
      dtype('object')



  hdu1 = fits[1]
  data = hdu1['x','y'][35:50]




  w=fits[1].where("x > 0.25 && y < 35.0")
  data = fits[1][w]


  h = fits[0].read_header()
  print(h['BITPIX'])
      -64

  fits.close()



  fits = FITS('test.fits','rw')




  nrows=35
  data = np.zeros(nrows, dtype=[('index','i4'),('vstr','O'),('x','f8'),
                                ('arr','f4',(3,4))])
  data['index'] = np.arange(nrows,dtype='i4')
  data['x'] = np.random.random(nrows)
  data['vstr'] = [str(i) for i in xrange(nrows)]
  data['arr'] = np.arange(nrows*3*4,dtype='f4').reshape(nrows,3,4)


  fits.write(data)


  array_list=[xarray,yarray,namearray]
  names=['x','y','name']
  fits.write(array_list, names=names)


  fits.write(dict_of_arrays)
  fits.write(dict_of_arrays, names=names) # control name order



  fits[-1].append(data2)


  fits[-1].insert_column('newcol', data)


  fits[-1].insert_column('newcol', data, colnum=2)


  fits[-1].write(data)


  fits[-1].write(data, firstrow=350)



  img=np.arange(2*3,dtype='i4').reshape(2,3)


  fits.write(img)


  fits.write(img, compress='rice')


  fimg=np.random.normal(size=2*3).reshape(2, 3)
  fits.write(img, compress='rice', qlevel=16, qmethod='SUBTRACTIVE_DITHER_2')


  fits.write(img, compress='gzip', qlevel=None)
  fits.write(fimg, compress='gzip', qlevel=None)


  fits[ext].write(img2)



  fits[ext].write(img3, start=[300,400])


  fits[ext].reshape([250,100])


  fits[-1].write_checksum()


  fits[-1].verify_checksum()






  hdict = {'somekey': 35, 'location': 'kitt peak'}
  fits.write(data, header=hdict)
  hlist = [{'name':'observer', 'value':'ES', 'comment':'who'},
           {'name':'location','value':'CTIO'},
           {'name':'photometric','value':True}]
  fits.write(data, header=hlist)
  hdr=FITSHDR(hlist)
  fits.write(data, header=hdr)


  fits[1].write_key(name, value, comment="my comment")



  fits[1].write_keys(records)


  fits[1].write_comment("observer JS")
  fits[1].write_comment("we had good weather")


  fits[1].write_history("processed with software X")
  fits[1].write_history("re-processed with software Y")

  fits.close()


  with FITS('path/to/file') as fits:
      data = fits[ext].read()

      
      if 'blah' in fits:
          data=fits['blah'].read()
      if 2 in f:
          data=fits[2].read()


  f[1].get_info()             # lots of info about the extension
  f[1].has_data()             # returns True if data is present in extension
  f[1].get_extname()
  f[1].get_extver()
  f[1].get_extnum()           # return zero-offset extension number
  f[1].get_exttype()          # 'BINARY_TBL' or 'ASCII_TBL' or 'IMAGE_HDU'
  f[1].get_offsets()          # byte offsets (header_start, data_start, data_end)
  f[1].is_compressed()        # for images. True if tile-compressed
  f[1].get_colnames()         # for tables
  f[1].get_colname(colnum)    # for tables find the name from column number
  f[1].get_nrows()            # for tables
  f[1].get_rec_dtype()        # for tables
  f[1].get_rec_column_descr() # for tables
  f[1].get_vstorage()         # for tables, storage mechanism for variable
                              


  f[1].lower           # If True, lower case colnames on output
  f[1].upper           # If True, upper case colnames on output
  f[1].case_sensitive  # if True, names are matched case sensitive
  ```




  The easiest way is using pip or conda. To get the latest release

      pip install fitsio

      
      pip install fitsio --upgrade

      
      pip install fitsio --upgrade --ignore-installed

      
      pip install fitsio --no-deps --upgrade --ignore-installed

      
      conda install -c conda-forge fitsio

  You can also get the latest source tarball release from

      https://pypi.python.org/pypi/fitsio

  or the bleeding edge source from github or use git. To check out
  the code for the first time

      git clone https://github.com/esheldon/fitsio.git

  Or at a later time to update to the latest

      cd fitsio
      git update

  Use tar xvfz to untar the file, enter the fitsio directory and type

      python setup.py install

  optionally with a prefix

      python setup.py install --prefix=/some/path



  - python 2 or python 3
  - a C compiler and build tools like `make`, `patch`, etc.
  - numpy (See the note below. Generally, numpy 1.11 or later is better.)




  There is a serious performance regression in numpy 1.10 that results
  in fitsio running tens to hundreds of times slower.  A fix may be
  forthcoming in a later release.  Please comment here if this
  has already impacted your work https://github.com/numpy/numpy/issues/6467




  The unit tests should all pass for full support.

  ```bash
  python -c "import fitsio; fitsio.test.test()"
  ```

  Some tests may fail if certain libraries are not available, such
  as bzip2.  This failure only implies that bzipped files cannot
  be read, without affecting other functionality.





  We bundle cfitsio partly because many deployed versions of cfitsio in the
  wild do not have support for interesting features like tiled image compression.
  Bundling a version that meets our needs is a safe alternative.



  Since numpy uses C order, FITS uses fortran order, we have to write the TDIM
  and image dimensions in reverse order, but write the data as is.  Then we need
  to also reverse the dims as read from the header when creating the numpy dtype,
  but read as is.



  As of version `1.0.0`, `fitsio` has been transitioned to `setuptools` for packaging
  and installation. There are many reasons to do this (and to not do this). However,
  at a practical level, what this means for you is that you may have trouble uninstalling
  older versions with `pip` via `pip uninstall fitsio`. If you do, the best thing to do is
  to manually remove the files manually. See this [stackoverflow question](https://stackoverflow.com/questions/402359/how-do-you-uninstall-a-python-package-that-was-installed-using-distutils)
  for example.



  As of version `1.0.0`, fitsio now supports Python 3 strings natively. This support
  means that for Python 3, native strings are read from and written correctly to
  FITS files. All byte string columns are treated as ASCII-encoded unicode strings
  as well. For FITS files written with a previous version of fitsio, the data
  in Python 3 will now come back as a string and not a byte string. Note that this
  support is not the same as full unicode support. Internally, fitsio only supports
  the ASCII character set.



  - HDU groups: does anyone use these? If so open an issue!


pkgId: 7b03b964e467168b2c3649ff4dd510114a35d9398c3d784391cfcfcea76361bc
name: python-fixture
arch: src
version: 1.5.11
epoch: 0
release: 1
summary: fixture is a package for loading and referencing test data
url: http://farmdev.com/projects/fixture/
rpm_license: GNU Lesser General Public License (LGPL)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ec5e6882-623a-4141-a632-85a27d6d5042
location_href: 00013971-python-fixture/python-fixture-1.5.11-1.src.rpm
checksum_type: sha256
description:
  It provides several utilities for achieving a *fixed state* when testing
  Python programs.  Specifically, these utilities setup / teardown databases and
  work with temporary file systems.

  You may want to start by reading the `End User Documentation`_.

  .. _End User Documentation: http://farmdev.com/projects/fixture/docs/


pkgId: c113da9e42514939c73a849738e988b8569c63edb227f7e76e49acb850b2f40c
name: python-flake8-blind-except
arch: src
version: 0.2.1
epoch: 0
release: 1
summary: A flake8 extension that checks for blind except: statements
url: https://github.com/elijahandrews/flake8-blind-except
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4b1ec6b4-04db-4047-aacd-01da29eed20c
location_href: 00011097-python-flake8-blind-except/python-flake8-blind-except-0.2.1-1.src.rpm
checksum_type: sha256
description:
  A flake8 extension that checks for blind, catch-all ``except:`` and ``except Exception:`` statements.
  As of `pycodestyle 2.1.0 <https://github.com/PyCQA/pycodestyle/commit/543f12b06592c53e2e60edc4846ee02ab9550e8b/>`_, "E722 do not use bare except, specify exception instead" is built-in. However, bare ``Exception`` and ``BaseException`` are still allowed. This extension flags them as `B902`.
  Using ``except`` without explicitly specifying which exceptions to catch is generally considered bad practice, since it catches system signals like ``SIGINT``. You probably want to handle system interrupts differently than exceptions occurring in your code.
  It's also usually better style to have many small ``try``-``except`` blocks catching specific exceptions instead of a giant ``try:`` block with a catch-all ``except:`` at the bottom. It's also nicer to your fellow programmers to be a bit more specific about what exceptions they can expect in specific parts of the code, and what the proper course of action is when they occur.
  An example of code that will fail this check is:
      try:
          something_scary()
      except:
          everybody_panic()
  However, the following code is valid:
      try:
          something_terrifying()
      except TerrifyingException:
          dont_panic()


pkgId: a045e6d538f050a154472f6e14f0ec5046ac44939614a9e125cfd5a52d80bc72
name: python-flake8-bugbear
arch: src
version: 23.3.23
epoch: 0
release: 1
url: https://github.com/PyCQA/flake8-bugbear
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-72cd68ca-170b-4d12-b367-c6d7e0032021
location_href: 00009563-python-flake8-bugbear/python-flake8-bugbear-23.3.23-1.src.rpm
checksum_type: sha256
summary:
  A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle.


pkgId: 7a0c3e5ee76ab04a1a0f7959b9420b988a370d218b863903d8c684260ffd6690
name: python-flake8-builtins
arch: src
version: 2.1.0
epoch: 0
release: 1
summary: Check for python builtins being used as variables or parameters.
url: https://github.com/gforcada/flake8-builtins
rpm_license: GPL version 2
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-477764e4-45ea-4d95-a2eb-7844880b111a
location_href: 00010149-python-flake8-builtins/python-flake8-builtins-2.1.0-1.src.rpm
checksum_type: sha256
description:
  Check for python builtins being used as variables or parameters.
  Imagine some code like this:
      def max_values(list, list2):
          max = list[0]
          for x in list:
              if x > 0:
                  max = x
          all_values = list()
          all_values.append(max)
          max = list2[0]
          for x in list2:
              if x > 0:
                  max = x
          all_values.append(max)
          return all_values
      max_values([3, 4, 5, ], [5, 6, 7])
  The last statement is not returning ``[5, 7]`` as one would expect,
  instead is raising this exception::
      Traceback (most recent call last):
        File "test.py", line 17, in <module>
          max_values([3,4,5], [4,5,6])
        File "bla.py", line 6, in max_values
          all_values = list()
      TypeError: 'list' object is not callable
  **Why?** Because ``max_value`` function's first argument is ``list`` a Python builtin.
  Python allows to override them, but although could be useful in some really specific use cases,
  the general approach is to **not** do that as code then can suddenly break without a clear trace.


pkgId: 23a3a9d1cebe1678d1d8ddd40a4ea39452ac4f409c4d00daa0c43902a83f316a
name: python-flake8-colors
arch: src
version: 0.1.9
epoch: 0
release: 1
summary: Error highlight plugin for Flake8.
url: https://github.com/and3rson/flake8-colors
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-591df75a-fa7d-470f-ba1a-a9372595f5c7
location_href: 00011792-python-flake8-colors/python-flake8-colors-0.1.9-1.src.rpm
checksum_type: sha256
description:
  ANSI colors highlight for Flake8



  1. Install plugin:

      ```
      pip install flake8-colors
      ```

  2. Use the following example format in your `.flake8` file:

      ```
      format = ${cyan}s${reset}:${yellow_bold}d${reset}:${green_bold}d${reset}: ${red_bold}s${reset} s
      ```

  3. Enjoy!

    ![Example image](https://habrastorage.org/files/0a7/cf5/47c/0a7cf547cd03457385c23691a4f29869.png)



  There are three forms of tags:

    - ${COLOR}
    - ${COLOR_MODIFIER}
    - ${TAG}

  Colors:

    - black
    - red
    - green
    - yellow
    - blue
    - purple
    - cyan
    - white

  Modifiers:

    - fg
    - bold
    - underline
    - bg

  Tags:

    - bold
    - underline
    - reset



  Inspired by [flake8-format-ansi](https://github.com/jayvdb/flake8-format-ansi/)



  Just do whatever you want to do.


pkgId: f261447434eeb7c8692729e4582a559d3b7cb1993ea0a57574f5e13938bc110f
name: python-flake8-commas
arch: src
version: 2.1.0
epoch: 0
release: 1
summary: Flake8 lint for trailing commas.
url: https://github.com/PyCQA/flake8-commas/
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a7df8822-c1da-445c-82ea-111e5524d05d
location_href: 00010592-python-flake8-commas/python-flake8-commas-2.1.0-1.src.rpm
checksum_type: sha256
description:
  **Note:** `Black <https://pypi.org/project/black/>`_, the uncompromising Python code
  formatter, or  `add-trailing-comma <https://github.com/asottile/add-trailing-comma>`_
  can do all this comma insertion automatically. We recommend you use one of those tools
  instead.


pkgId: c4cdb93eed8d05bf03da8a3fdee3ec9cc11e19c36c331b7ec099fc76bc86c69a
name: python-flake8-deprecated
arch: src
version: 2.0.1
epoch: 0
release: 1
summary: Warns about deprecated method calls.
url: https://github.com/gforcada/flake8-deprecated
rpm_license: GPL version 2
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ea2958c3-810f-4b6d-b505-37bb9017f391
location_href: 00011079-python-flake8-deprecated/python-flake8-deprecated-2.0.1-1.src.rpm
checksum_type: sha256
description:
  No language, library or framework ever get everything right from the very beginning.
  The project evolves, new features are added/changed/removed.
  This means that projects relying on them must keep an eye on what's currently best practices.
  This flake8 plugin helps you keeping up with method deprecations and giving hints about what
  they should be replaced with.
  This plugin is based on a python checker that was in `plone.recipe.codeanalysis`_.


pkgId: a117e72d93753a877e94b6481f6dd9b878b538a3c03a98266ba6529cfc718975
name: python-flake8-django
arch: src
version: 1.1.5
epoch: 0
release: 1
summary: Plugin to catch bad style specific to Django Projects.
url: https://github.com/rocioar/flake8-django
rpm_license: GPL-3.0-or-later
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8cb7c03d-55d6-4ef5-a376-0426fdf99f63
location_href: 00012815-python-flake8-django/python-flake8-django-1.1.5-1.src.rpm
checksum_type: sha256
description:
  [![pypi](https://img.shields.io/pypi/v/flake8-django.svg)](https://pypi.python.org/pypi/flake8-django/)
  ![CI](https://github.com/rocioar/flake8-django/workflows/CI/badge.svg)[![Codecov](https://codecov.io/gh/rocioar/flake8-django/branch/master/graph/badge.svg)](https://codecov.io/gh/rocioar/flake8-django)
  [![Downloads](https://pepy.tech/badge/flake8-django)](https://pepy.tech/project/flake8-django)

  A flake8 plugin to detect bad practices on Django projects.



  Install from pip with:

  ```
  $ pip install flake8-django
  ```



  flake8-django uses pytest for tests. To run them use:

  ```
  $ pytest
  ````

  Run coverage report using:

  ```
  $ pytest --cov=.
  ```



  | Rule | Description |
  | ---- | ----------- |
  | [`DJ01`](https://github.com/rocioar/flake8-django/wiki/%5BDJ01%5D-Avoid-using-null=True-on-string-based-fields-such-as-CharField-and-TextField) | Avoid using null=True on string-based fields such as CharField and TextField |
  | [`DJ03`](https://github.com/rocioar/flake8-django/wiki/%5BDJ03%5D-Avoid-passing-locals()-as-context-to-a-render-function) | Avoid passing locals() as context to a render function |
  | [`DJ06`](https://github.com/rocioar/flake8-django/wiki/%5BDJ06%5D-Do-not-use-exclude-with-ModelForm,-use-fields-instead) | Do not use exclude with ModelForm, use fields instead |
  | [`DJ07`](https://github.com/rocioar/flake8-django/wiki/%5BDJ07%5D-Do-not-set-fields-to-'__all__'-on-ModelForm,-use-fields-instead) | Do not use `__all__` with ModelForm, use fields instead |
  | [`DJ08`](https://github.com/rocioar/flake8-django/wiki/%5BDJ08%5D-Model-does-not-define-__str__-method) | Model does not define `__str__` method |
  | [`DJ12`](https://github.com/rocioar/flake8-django/wiki/%5BDJ12%5D-Order-of-Model's-inner-classes,-methods,-and-fields-does-not-follow-the-Django-Style-Guide) | Order of Model's inner classes, methods, and fields does not follow the [Django Style Guide](https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/coding-style/#model-style) |
  | [`DJ13`](https://github.com/rocioar/flake8-django/wiki/DJ13---@receiver-decorator-must-be-on-top-of-all-the-other-decorators) | @receiver decorator must be on top of all the other decorators |

  More details about each of the Rules can be found on the [wiki page](https://github.com/rocioar/flake8-django/wiki).



  | Rule | Description |
  | ---- | ----------- |
  | [`DJ10`](https://github.com/rocioar/flake8-django/wiki/%5BDJ10%5D-Model-should-define-verbose_name-on-its-Meta-inner-class) | Model should define verbose_name on its Meta inner class |
  | [`DJ11`](https://github.com/rocioar/flake8-django/wiki/%5BDJ11%5D-Model-should-define-verbose_name_plural-on-its-Meta-inner-class) | Model should define verbose_name_plural on its Meta inner class |

  To enable optional rules you can use the `--select` parameter. It's default values are: E,F,W,C90.

  For example, if you wanted to enable `DJ10`, you could call `flake8` in the following way:
  ```
  flake8 --select=E,F,W,C90,DJ,DJ10
  ```

  You could also add it to your configuration file:
  ```
  [flake8]
  max-line-length = 120
  ...
  select = C,E,F,W,DJ,DJ10
  ```



  GPL



  [@stummjr](https://github.com/stummjr) for teaching me AST, and what I could do with it. His [blog](https://stummjr.org/post/building-a-custom-flake8-plugin/) is cool.


pkgId: ca39476b0bd964a838896c1798d3ab9f9876f974e901e92b018b10974ba3835f
name: python-flake8-docstrings
arch: src
version: 1.7.0
epoch: 0
release: 1
summary: Extension for flake8 which uses pydocstyle to check docstrings
url: https://github.com/pycqa/flake8-docstrings
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8c0fcce5-7f0b-4469-89f4-d4f20470cff0
location_href: 00003639-python-flake8-docstrings/python-flake8-docstrings-1.7.0-1.src.rpm
checksum_type: sha256
description:
  A simple module that adds an extension for the fantastic pydocstyle_ tool to
  flake8_.
  Simply install this extension::
      pip install flake8-docstrings
  and run flake8.
  You can set the pydocstyle convention_ at the command line using::
      $ flake8 --docstring-convention numpy ...
  Or, adding ``docstring-convention=numpy`` to your flake8 configuration file.
  The available set of conventions depends on the version of pydocstyle installed.
  The default is ``pep257``, pydocstyle v2.0.0 added ``numpy`` (for the numpydoc
  standard), while pydocstyle v4.0.0 added ``google``.
  In order to choose a custom list of error codes, use the special value
  ``docstring-convention=all``, then choose the codes you want checked using
  flake8_'s built-in ``--ignore``/``--select`` functionality.
  Report any issues on our `bug tracker`_.


pkgId: 03f814623d7ffb945741d0907b8d0c966f0a2d25ca166c959ae459a145f15460
name: python-flake8-import-order
arch: src
version: 0.18.2
epoch: 0
release: 1
summary: Flake8 and pylama plugin that checks the ordering of import statements.
url: https://github.com/PyCQA/flake8-import-order
rpm_license: LGPLv3
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-aae5fac4-c50e-4891-a61c-24309e92e634
location_href: 00003640-python-flake8-import-order/python-flake8-import-order-0.18.2-1.src.rpm
checksum_type: sha256
description:
  |Build Status|
  A `flake8 <http://flake8.readthedocs.org/en/latest/>`__ and `Pylama
  <https://github.com/klen/pylama>`__ plugin that checks the ordering of
  your imports. It does not check anything else about the
  imports. Merely that they are grouped and ordered correctly.
  In general stdlib comes first, then 3rd party, then local packages,
  and that each group is individually alphabetized, however this depends
  on the style used. Flake8-Import-Order supports a number of `styles
  <#styles>`_ and is extensible allowing for `custom styles
  <#extending-styles>`_.
  This plugin was originally developed to match the style preferences of
  the `cryptography <https://github.com/pyca/cryptography>`__ project,
  with this style remaining the default.


pkgId: 540e2e4db843aa4d762830c85a0df6de51586bb1b2baa4e1238a6f29ec343de9
name: python-flake8-import-restrictions
arch: src
version: 1.1.1
epoch: 0
release: 1
summary: A flake8 plugin used to disallow certain forms of imports.
url: https://github.com/atollk/flake8-import-restrictions
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-1309390d-6548-43d2-9548-c4780fe22a2d
location_href: 00011736-python-flake8-import-restrictions/python-flake8-import-restrictions-1.1.1-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://github.com/atollk/flake8-import-restrictions/workflows/tox/badge.svg)](https://github.com/atollk/flake8-import-restrictions/actions)
  [![Build Status](https://github.com/atollk/flake8-import-restrictions/workflows/pylint/badge.svg)](https://github.com/atollk/flake8-import-restrictions/actions)
  [![Build Status](https://github.com/atollk/flake8-import-restrictions/workflows/black/badge.svg)](https://github.com/atollk/flake8-import-restrictions/actions)
  [![Build Status](https://github.com/atollk/flake8-import-restrictions/workflows/flake8/badge.svg)](https://github.com/atollk/flake8-import-restrictions/actions)

  A flake8 plugin used to disallow certain forms of imports.

  This plugin talks about the `import` syntax (`import X.Y.Z [as foo]`)
  and the `from` syntax (`from X.Y import Z [as foo]`). It talks about
  `import` segments (`import X`), `from` segments (`from Y`), and `as`
  segments (`as Z`).


  For every error `I20xx` listed below, there are options `--i20xx_include` and `--i20xx_exclude`
  which are passed a comma separated list of UNIX wildcard patterns each. The error
  will then only be reported on imports of modules that match a include pattern but no exclude
  pattern.

  By default, I2000, I2001, I2002, I2021, I2023, I2041, and I2043 include all (`*`) modules. Only I2041 excludes the
  `typing` module from checks, the other errors have no excludes by default.




  Imports should only happen on module level, not locally.

  ```python

  def f():
      import os.path
      return os.path.join("a", "b")


  import os.path
  def f():
      return os.path.join("a", "b")
  ```


  Alias identifiers defined from `as` segments should be at
  least two characters long.

  ```python

  import os.path as p


  import os.path as path
  ```


  Alias identifiers should not have the same name as the imported object.

  ```python

  import sys as sys


  import sys
  ```




  When using the `import` syntax, if the imported module is a submodule,
  i.e. not a top level module, an `as` segment should be present.

  ```python

  import os.path


  import sys
  import os.path as path
  ```


  When using the `import` syntax, each import statement should
  only import one module.

  ```python

  import sys, os


  import sys
  import os
  ```


  The `import` syntax should not be used.



  When using the `import` syntax, do not duplicate module names in the `as`
  segment.

  ```python

  import os.path as path


  from os import path
  import os.path as ospath
  ```





  When using the `from` syntax, the `import` segment only contains one
  import.

  ```python

  from os import path, environ


  from os import path
  from os import environ
  ```


  When using the `from` syntax, only submodules are imported, not
  module elements.

  ```python

  from os.path import join


  from os import path
  ```


  When using the `from` syntax, only module elements are imported,
  not submodules.

  ```python

  from os import path


  from os.path import join
  ```


  When using the `from` syntax, `import *` should not be used.

  ```python

  from os.path import *


  from os.path import join
  ```


  Relative imports should not be used.

  ```python

  from . import foo


  from flake8_import_restrictions import foo
  ```


  The `from` syntax should not be used.


pkgId: 79d209fb27d4d77e00987bca7c680f75b275ac57b03565d21acd8ffc2ef3636e
name: python-flake8-import-restrictions-help
arch: noarch
version: 1.1.1
epoch: 0
release: 1
summary: Development documents and examples for flake8-import-restrictions
url: https://github.com/atollk/flake8-import-restrictions
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-1309390d-6548-43d2-9548-c4780fe22a2d
rpm_sourcerpm: python-flake8-import-restrictions-1.1.1-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://github.com/atollk/flake8-import-restrictions/workflows/tox/badge.svg)](https://github.com/atollk/flake8-import-restrictions/actions)
  [![Build Status](https://github.com/atollk/flake8-import-restrictions/workflows/pylint/badge.svg)](https://github.com/atollk/flake8-import-restrictions/actions)
  [![Build Status](https://github.com/atollk/flake8-import-restrictions/workflows/black/badge.svg)](https://github.com/atollk/flake8-import-restrictions/actions)
  [![Build Status](https://github.com/atollk/flake8-import-restrictions/workflows/flake8/badge.svg)](https://github.com/atollk/flake8-import-restrictions/actions)

  A flake8 plugin used to disallow certain forms of imports.

  This plugin talks about the `import` syntax (`import X.Y.Z [as foo]`)
  and the `from` syntax (`from X.Y import Z [as foo]`). It talks about
  `import` segments (`import X`), `from` segments (`from Y`), and `as`
  segments (`as Z`).


  For every error `I20xx` listed below, there are options `--i20xx_include` and `--i20xx_exclude`
  which are passed a comma separated list of UNIX wildcard patterns each. The error
  will then only be reported on imports of modules that match a include pattern but no exclude
  pattern.

  By default, I2000, I2001, I2002, I2021, I2023, I2041, and I2043 include all (`*`) modules. Only I2041 excludes the
  `typing` module from checks, the other errors have no excludes by default.




  Imports should only happen on module level, not locally.

  ```python

  def f():
      import os.path
      return os.path.join("a", "b")


  import os.path
  def f():
      return os.path.join("a", "b")
  ```


  Alias identifiers defined from `as` segments should be at
  least two characters long.

  ```python

  import os.path as p


  import os.path as path
  ```


  Alias identifiers should not have the same name as the imported object.

  ```python

  import sys as sys


  import sys
  ```




  When using the `import` syntax, if the imported module is a submodule,
  i.e. not a top level module, an `as` segment should be present.

  ```python

  import os.path


  import sys
  import os.path as path
  ```


  When using the `import` syntax, each import statement should
  only import one module.

  ```python

  import sys, os


  import sys
  import os
  ```


  The `import` syntax should not be used.



  When using the `import` syntax, do not duplicate module names in the `as`
  segment.

  ```python

  import os.path as path


  from os import path
  import os.path as ospath
  ```





  When using the `from` syntax, the `import` segment only contains one
  import.

  ```python

  from os import path, environ


  from os import path
  from os import environ
  ```


  When using the `from` syntax, only submodules are imported, not
  module elements.

  ```python

  from os.path import join


  from os import path
  ```


  When using the `from` syntax, only module elements are imported,
  not submodules.

  ```python

  from os import path


  from os.path import join
  ```


  When using the `from` syntax, `import *` should not be used.

  ```python

  from os.path import *


  from os.path import join
  ```


  Relative imports should not be used.

  ```python

  from . import foo


  from flake8_import_restrictions import foo
  ```


  The `from` syntax should not be used.

location_href:
  00011736-python-flake8-import-restrictions/python-flake8-import-restrictions-help-1.1.1-1.noarch.rpm


pkgId: bcc5defe5c98eb6db9d6daefb270cb757f008098e9d1e1cf98e37717f0aeb4fd
name: python-flake8-isort
arch: src
version: 6.0.0
epoch: 0
release: 1
summary: flake8 plugin that integrates isort .
url: https://github.com/gforcada/flake8-isort
rpm_license: GPL version 2
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-69601091-e458-468d-a88e-40f605744f30
location_href: 00009948-python-flake8-isort/python-flake8-isort-6.0.0-1.src.rpm
checksum_type: sha256
description:
  Use `isort`_ to check if the imports on your python files are sorted the way you expect.
  Add an ``.isort.cfg`` to define how you want your imports sorted and run flake8 as you usually do.
  See `isort documentation`_ for ``.isort.cfg`` available options.


pkgId: 48baee6af86297ff46d3443043651367d67850e2b4b173fe3b22480173984246
name: python-flake8-junit-report
arch: src
version: 2.1.0
epoch: 0
release: 1
summary: Simple tool that converts a flake8 file to junit format
url: https://github.com/initios/flake8-junit-report
rpm_license: BSD 3-Clause License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-d421b4f4-d44c-43d0-8f10-e403b4ea9a03
location_href: 00012625-python-flake8-junit-report/python-flake8-junit-report-2.1.0-1.src.rpm
checksum_type: sha256
description:
  Simple tool that converts a flake8 file to junit format.
  Use it on your CI server to see the flake8 failures with ease.
      * - Master
        - .. image:: https://travis-ci.org/initios/flake8-junit-report.svg?branch=master
        - .. image:: https://coveralls.io/repos/initios/flake8-junit-report/badge.svg?branch=master
      * - Develop
        - .. image:: https://travis-ci.org/initios/flake8-junit-report.svg?branch=develop
        - .. image:: https://coveralls.io/repos/initios/flake8-junit-report/badge.svg?branch=develop


pkgId: e65be1f31926478e0b0f343fec7469f973e172391d9e406287dfe2940abe55a6
name: python-flake8-logging-format
arch: src
version: 0.9.0
epoch: 0
release: 1
summary: please add a summary manually as the author left a blank one
url: https://github.com/globality-corp/flake8-logging-format
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4c8958d9-4e06-40c5-8564-93131add84b5
location_href: 00010785-python-flake8-logging-format/python-flake8-logging-format-0.9.0-1.src.rpm
checksum_type: sha256
description:
  Flake8 extension to validate (lack of) logging format strings




  Python [logging](https://docs.python.org/3/library/logging.html#logging.Logger.debug) supports a special `extra` keyword
  for passing a dictionary of user-defined attributes to include in a logging event. One way to ensure consistency and
  rigor in logging is to **always** use `extra` to pass non-constant data and, therefore, to **never** use format strings,
  concatenation, or other similar techniques to construct a log string.

  In other words, do this:

  ```python
  logger.info(
      "Hello {world}",
      extra=dict(
          world="Earth"
      )
  )
  ```

  Instead of:

  ```python
  logger.info(
      "Hello {world}".format(world=Earth)
  )
  ```



  As a further level of rigor, we can enforce that `extra` dictionaries only use keys from a well-known whitelist.

  Usage:

  ```bash
  flake8 --enable-extra-whitelist
  ```

  The built-in `Whitelist` supports plugins using `entry_points` with a key of `"logging.extra.whitelist"`. Each
  registered entry point must be a callable that returns an iterable of string.

  In some cases you may want to log sensitive data only in debugging scenarios.  This is supported in 2 ways:
  1. We do not check the logging.extra.whitelist for lines logged at the `debug` level
  2. You may also prefix a keyword with 'debug\_' and log it at another level.  You can safely assume these will be
     filtered out of shipped logs.



   -  `G001` Logging statements should not use `string.format()` for their first argument
   -  `G002` Logging statements should not use `%` formatting for their first argument
   -  `G003` Logging statements should not use `+` concatenation for their first argument
   -  `G004` Logging statements should not use `f"..."` for their first argument (only in Python 3.6+)
   -  `G010` Logging statements should not use `warn` (use `warning` instead)
   -  `G100` Logging statements should not use `extra` arguments unless whitelisted
   -  `G101` Logging statement should not use `extra` arguments that clash with LogRecord fields
   -  `G200` Logging statements should not include the exception in logged string (use `exception` or `exc_info=True`)
   -  `G201` Logging statements should not use `error(..., exc_info=True)` (use `exception(...)` instead)
   -  `G202` Logging statements should not use redundant `exc_info=True` in `exception`

  These violations are disabled by default. To enable them for your project, specify the code(s) in your `setup.cfg`:

  ```ini
  [flake8]
  enable-extensions=G
  ```



  Our motivation has to do with balancing the needs of our team and those of our customers.
  On the one hand, developers and front-line support should be able to look at application logs. On the other hand, our customers don't want their data shared with anyone, including internal employees.

  The implementation approaches this in two ways:

  1. By trying to prevent the use of string concatenation in logs (vs explicit variable passing in the standard logging `extra` dictionary)

  2. By providing an (optional) mechanism for whitelisting which field names may appear in the `extra` dictionary

  Naturally, this _does not_ prevent developers from doing something like:

  ```python
  extra=dict(
      user_id=user.name,
  )
  ```

  but then avoiding a case like this falls back to other processes around pull-requests, code review and internal policy.


pkgId: fdad6c51ed55e981b6b904969ba67e98588d573db40ce488ecffdc8dcd54fa1b
name: python-flake8-mutable
arch: src
version: 1.2.0
epoch: 0
release: 1
summary: mutable defaults flake8 extension
url: https://github.com/ebeweber/flake8-mutable
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-09de9519-b19c-4dc2-a933-121cae217012
location_href: 00011295-python-flake8-mutable/python-flake8-mutable-1.2.0-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://img.shields.io/pypi/v/flake8-mutable.svg)](https://pypi.python.org/pypi/flake8-mutable)

  Python's default arguments are evaluated at definition as opposed to when the function is invoked. This leads to unexpected behavior, as mutations persist between calls. For a more detailed explanation, see [The Hitchhiker's Guide to Python](http://docs.python-guide.org/en/latest/writing/gotchas/#mutable-default-arguments).

  ```
  def fnc(a, b={}):
      pass
  foo.py:2:14: M511 - mutable default arg of type Dict
  ```

  ```
  pip install flake8-mutable
  ```


  - Callables

  - added MANIFEST.in

  [MIT](https://opensource.org/licenses/MIT)


pkgId: a62af8ba25af59fbe0f291f8c4bf8002c76c0c4e2fc2ce5f4056f500e2c60980
name: python-flake8-mypy
arch: src
version: 17.8.0
epoch: 0
release: 1
summary: A plugin for flake8 integrating mypy.
url: https://github.com/ambv/flake8-mypy
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-498eae71-e57a-489e-ad2d-ccb81301c1fb
location_href: 00013946-python-flake8-mypy/python-flake8-mypy-17.8.0-1.src.rpm
checksum_type: sha256
description:
  |Build Status|
  A plugin for `Flake8 <http://flake8.pycqa.org/>`__ integrating
  `mypy <http://mypy-lang.org/>`__. The idea is to enable limited type
  checking as a linter inside editors and other tools that already support
  *Flake8* warning syntax and config.
  NOTE: This plugin requires *mypy* >=0.500, as of Mar 1st no released
  version satisfies this yet. You can use master in the mean time.


pkgId: 2c99041d80ad35ea84ef8d70952230862d2edb9f11dba0a0b26014f2b75482d6
name: python-flake8-pep3101
arch: src
version: 2.0.0
epoch: 0
release: 1
summary: Checks for old string formatting.
url: https://github.com/gforcada/flake8-pep3101
rpm_license: GPL version 2
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8e17224e-de97-4d6b-b883-66468e7ed946
location_href: 00012876-python-flake8-pep3101/python-flake8-pep3101-2.0.0-1.src.rpm
checksum_type: sha256
description:
  Python has three string formatting options:
  - the old percent operator
  - the ``.format()`` string method
  - `f-strings`_ (only since python 3.6+)
  Although f-strings are more ergonomic, there a certain scenarios where the
  ``.format()`` method is still the only viable option.
  See `pyformat website`_ for examples of the percent operator vs the ``format()`` method.
  For a more format definition see the `PEP 3101`_.
  This plugin is based on a python checker that was in `plone.recipe.codeanalysis`_.


pkgId: b8c8b4fb3c83439cf7d9d3a00a47a523176a8a6e172f6b5816278bf7d0735873
name: python-flake8-pie
arch: src
version: 0.16.0
epoch: 0
release: 1
summary: A flake8 extension that implements misc. lints
url: https://github.com/sbdchd/flake8-pie
rpm_license: BSD-2-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-04b6519d-a1e5-4e35-8afa-11d158786e67
location_href: 00012136-python-flake8-pie/python-flake8-pie-0.16.0-1.src.rpm
checksum_type: sha256
description:
  > A flake8 extension that implements misc. lints





  Based on Clippy's
  [`let_and_return`](https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return)
  and Microsoft's TSLint rule
  [`no-unnecessary-local-variable`](https://github.com/Microsoft/tslint-microsoft-contrib).

  For more info on the structure of this lint, see the [accompanying blog
  post](https://steve.dignam.xyz/2018/12/16/creating-a-flake8-lint/).



  ```python

  def foo():
     x = bar()
     return x


  def foo():
     x, _ = bar()
     return x
  ```



  Warn about [Celery](https://pypi.org/project/celery/) task definitions that don't have explicit names.

  Note: this lint is kind of naive considering any decorator with a `.task()`
  method or any decorator called `shared_task()` a Celery decorator.



  ```python

  @app.task()
  def foo():
      pass


  @app.task(name="app_name.tasks.foo")
  def foo():
      pass
  ```



  The `crontab` class provided by Celery has some default args that are
  suprising to new users. Specifically, `crontab(hour="0,12")` won't run a task
  at midnight and noon, it will run the task at every minute during those two
  hours. This lint makes that call an error, forcing you to write
  `crontab(hour="0, 12", minute="*")`.

  Additionally, the lint is a bit more complex in that it requires you specify
  every smaller increment than the largest time increment you provide. So if you
  provide `days_of_week`, then you need to provide `hour`s and `minute`s
  explicitly.

  Note: if you like the default behavior of `crontab()` then you can either
  disable this lint or pass `"*"` for the `kwarg` value, e.g., `minutes="*"`.

  Also, since this lint is essentially a naive search for calls to a
  `crontab()` function, if you have a function named the same then this will
  cause false positives.



  Celery tasks can bunch up if they don't have expirations.

  This enforces specifying expirations in both the celery beat config dict and
  in `.apply_async()` calls.

  The same caveat applies about how this lint is naive.



  Be precise in what exceptions you catch. Bare `except:` handlers, catching `BaseException`, or catching `Exception` can lead to unexpected bugs.



  ```python

  try:
      save_file(name="export.csv")
  except:
      pass


  try:
      save_file(name="export.csv")
  except BaseException:
      pass


  try:
      save_file(name="export.csv")
  except Exception:
      pass


  try:
      save_file(name="export.csv")
  except (ValueError, Exception):
      pass



  try:
      save_file(name="export.csv")
  except OSError:
      pass
  ```



  Empty collections are fasley in Python so calling `len()` is unnecessary when
  checking for emptiness in an if statement/expression.

  Comparing to explicit scalars is allowed.

  ```python

  if len(foo): ...
  if not len(foo): ...


  if foo: ...
  if not foo: ...
  if len(foo) > 0: ...
  if len(foo) == 0: ...
  ```



  If statements/expressions evalute the truthiness of the their test argument,
  so calling `bool()` is unnecessary.

  Comparing to `True`/`False` is allowed.

  ```python

  if bool(foo): ...
  if not bool(foo): ...


  if foo: ...
  if not foo: ...
  if bool(foo) is True: ...
  if bool(foo) is False: ...
  ```



  Using `type()` doesn't take into account subclassess and type checkers won't
  refine the type, use `isinstance` instead.

  ```python

  if type(foo) == str: ...
  if type(foo) is str: ...
  if type(foo) in [int, str]: ...


  if isinstance(foo, str): ...
  if isinstance(foo, (int, str)): ...
  ```



  `pass` is unnecessary when definining a `class` or function with an empty
  body.

  ```python

  class BadError(Exception):
      """
      some doc comment
      """
      pass

  def foo() -> None:
      """
      some function
      """
      pass


  class BadError(Exception):
      """
      some doc comment
      """

  def foo() -> None:
      """
      some function
      """
  ```



  Comparisions without an assignment or assertion are probably a typo.

  ```python

  "foobar" in data
  res.json() == []
  user.is_authenticated() is True


  assert "foobar" in data
  foo = res.json() == []
  use.is_authenticated()
  ```



  Inheriting from `object` isn't necessary in Python 3.

  ```python

  class Foo(object):
      ...


  class Foo:
      ...
  ```



  Attempts to find cases where the `@dataclass` decorator is unintentionally
  missing.

  ```python

  class Foo:
      z: dict[int, int]
      def __init__(self) -> None: ...

  class Bar:
      x: list[str]


  class Bar(Foo):
      z: dict[int, int]

  @dataclass
  class Bar:
      x: list[str]
  ```



  Finds duplicate definitions for the same field, which can occur in large ORM
  model definitions.

  ```python

  class User(BaseModel):
      email = fields.EmailField()
      
      email = fields.EmailField()


  class User(BaseModel):
      email = fields.EmailField()
      
  ```



  Instead of defining various constant properties on a class, use the stdlib
  enum which typecheckers support for type refinement.

  ```python

  class Foo:
      A = "A"
      B = "B"
      C = "C"


  import enum
  class Foo(enum.Enum):
      A = "A"
      B = "B"
      C = "C"
  ```



  By default the stdlib enum allows multiple field names to map to the same
  value, this lint requires each enum value be unique.

  ```python

  class Foo(enum.Enum):
      A = "A"
      B = "B"
      C = "C"
      D = "C"


  class Foo(enum.Enum):
      A = "A"
      B = "B"
      C = "C"
      D = "D"
  ```



  Call `bool()` directly rather than reimplementing its functionality.

  ```python

  foo(is_valid=True if buzz() else False)


  foo(is_valid=bool(buzz()))
  ```



  Instead of using class to namespace functions, use a module.

  ```python

  class UserManager:
      class User(NamedTuple):
          name: str

      @classmethod
      def update_user(cls, user: User) -> None:
          ...

      @staticmethod
      def sync_users() -> None:
          ...


  class User(NamedTuple):
      name: str

  def update_user(user: User) -> None:
      ...

  def sync_users() -> None:
      ...
  ```



  Check that values are passed in when collections are created rather than
  creating an empty collection and then inserting.

  ```python

  bars = []
  bar = bar()
  bars.append(bar)


  bar = bar()
  bars = [bar]


  s = deque()
  s.append(foo)


  s = deque([foo])
  ```



  Check for unnecessary dict unpacking.

  ```python

  {**foo, **{"bar": 10}}


  {**foo, "bar": 10}
  ```



  Return boolean expressions directly instead of returning `True` and `False`.

  ```python

  def main():
      if foo > 5:
          return True
      return False


  def main():
      if foo > 5:
          return True
      else:
          return False


  def main():
      return foo > 5
  ```



  Remove unnecessary comprehensions for `any` and `all`

  ```python

  any([x.id for x in bar])
  all([x.id for x in bar])


  all(x.id for x in bar)
  any(x.id for x in bar)
  any({x.id for x in bar})
  ```



  Don't format strings before logging. Let `logging` interpolate arguments.

  This allows Sentry to aggregate logs, prevents raising exceptions if interpolation fails, and improves performance if the log level is disabled. See ["PyCQA/pylint#1788"](https://github.com/PyCQA/pylint/issues/1788#issuecomment-461279687).

  ```python

  logger.info("Login error for %s" % user)
  logger.info("Login error for %s, %s" % (user_id, name))


  logger.info("Login error for {}".format(user))
  logger.info("Login error for {}, {}".format(user_id, name))


  logger.info(f"Login error for {user}")
  logger.info(f"Login error for {user_id}, {name}")


  logger.info("Login error for %s", user)
  logger.info("Login error for %s, %s", user_id, name)
  ```



  As long as the keys of the dict are valid Python identifier names, we can safely
  remove the surrounding dict.

  ```python

  foo(**{"bar": True})


  foo(bar=True)
  foo(**buzz)
  foo(**{"bar foo": True})
  ```



  ```shell

  poetry install

  s/lint
  s/test
  ```



  Currently only checks for byte string literals.

  ```python

  "foo".encode()


  b"foo"
  "😀".encode()
  ```



  Instead of `assert`ing and catching the exception, use an if statement.

  ```python

  try:
      assert "@" in bar
  except AssertionError:
      ...


  if "@" in bar:
      ...
  ```



  `lambda: []` is equivalent to the builtin `list`

  ```python

  @dataclass
  class Foo:
      foo: List[str] = field(default_factory=lambda: [])


  @dataclass
  class Foo:
      foo: List[str] = field(default_factory=list)
  ```



  We can leave out the first argument to `range` in some cases since the default
  start position is 0.

  ```python

  range(0, 10)


  range(10)
  range(x, 10)
  range(0, 10, x)
  ```



  Bulk create multiple objects instead of executing O(N) queries.

  ```python

  [Item.objects.create(item) for item in items]


  [Item.objects.create(item) for item in [bar for bar in buzz]]


  (Item.objects.create(item) for item in items)


  Item.objects.insert(items)
  Item.objects.create(item)
  ```




  You can use `astpretty` to dump the AST of a piece of code.

  ```shell
  ./.venv/bin/astpretty <(pbpaste)
  ```



  ```shell




  rm -rf dist && poetry publish --build
  ```


pkgId: f21b4309a076578ecaeb33906bfbf27fb4eb0362feb42f4c8113ff69aadd2a25
name: python-flake8-print
arch: src
version: 5.0.0
epoch: 0
release: 1
summary: print statement checker plugin for flake8
url: https://github.com/jbkahn/flake8-print
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-2c74c16e-2b87-4511-813d-1c62deeb9759
location_href: 00009933-python-flake8-print/python-flake8-print-5.0.0-1.src.rpm
checksum_type: sha256
description:
  Check for Print statements in python files.
  This module provides a plugin for ``flake8``, the Python code checker.


pkgId: 0b59780accbc9c8927d2448b9be9879aea847148db8aa04919a4042dd56d9572
name: python-flake8-pytest
arch: src
version: 1.4
epoch: 0
release: 1
summary: pytest assert checker plugin for flake8
url: https://github.com/vikingco/flake8-pytest
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-37fdb706-e3d6-4c07-9fa4-11d3d3eda942
location_href: 00013826-python-flake8-pytest/python-flake8-pytest-1.4-1.src.rpm
checksum_type: sha256
description:
  Check for uses of Django-style assert-statements in tests. So no more ``self.assertEqual(a, b)``,
  but instead ``assert a == b``.
  This module provides a plugin for ``flake8``, the Python code checker.


pkgId: 81343fea32a5ff6385d690fd857db7a099e842c3dbbe6ed179c4f32d99c87ea6
name: python-flann
arch: src
version: 1.6.13
epoch: 0
release: 1
summary: flann is the python 3.6 bindings for FLANN - Fast Library for Approximate Nearest Neighbors.
url: https://github.com/pypa/flann
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-95b3cca0-2919-400c-9332-1966cd3cf112
location_href: 00003643-python-flann/python-flann-1.6.13-1.src.rpm
checksum_type: sha256
description:
  1. Introduction
  ~~~~~~~~~~~~~~~
  pyflann is the python bindings for `FLANN - Fast Library for Approximate
  Nearest Neighbors <http://www.cs.ubc.ca/research/flann/>`__.
  2. Install
  ~~~~~~~~~~
  For python2
  ^^^^^^^^^^^
  This package uses distutils, which is the default way of installing
  python modules. To install in your home directory, securely run the
  following:
      git clone https://github.com/primetang/pyflann.git
      cd pyflann
      [sudo] python setup.py install
  Or directly through ``pip`` to install it:
      [sudo] pip install pyflann
  For python3
  ^^^^^^^^^^^
  Please refer to `this
  issuse <https://github.com/primetang/pyflann/issues/1>`__ to modify the
  code.
  3. Usage
  ~~~~~~~~
  Use it just like the following code:
      from pyflann import *
      import numpy as np
      dataset = np.array(
          [[1., 1, 1, 2, 3],
           [10, 10, 10, 3, 2],
           [100, 100, 2, 30, 1]
           ])
      testset = np.array(
          [[1., 1, 1, 1, 1],
           [90, 90, 10, 10, 1]
           ])
      flann = FLANN()
      result, dists = flann.nn(
          dataset, testset, 2, algorithm="kmeans", branching=32, iterations=7, checks=16)
      print result
      print dists
      dataset = np.random.rand(10000, 128)
      testset = np.random.rand(1000, 128)
      flann = FLANN()
      result, dists = flann.nn(
          dataset, testset, 5, algorithm="kmeans", branching=32, iterations=7, checks=16)
      print result
      print dists


pkgId: a349be3a68d5a40508cd20ad3c038ca64257b92f2b28cdad7168452b454bdcc4
name: python-flask-babel
arch: src
version: 3.0.1
epoch: 0
release: 1
summary: Adds i18n/l10n support fo Flask applications.
url: https://pypi.org/project/flask-babel/
rpm_license: BSD-3-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-134bc8c5-03ad-43a8-a695-e98962459db7
location_href: 00003647-python-flask-babel/python-flask-babel-3.0.1-1.src.rpm
checksum_type: sha256
description:
  ![Tests](https://github.com/python-babel/flask-babel/workflows/Tests/badge.svg?branch=master)
  [![PyPI](https://img.shields.io/pypi/v/flask-babel.svg?maxAge=2592000)](https://pypi.python.org/pypi/Flask-Babel)

  Implements i18n and l10n support for Flask. This is based on the Python
  [babel][] and [pytz][] modules.



  The latest documentation is available [here][docs].

  [babel]: https://github.com/python-babel/babel
  [pytz]: https://pypi.python.org/pypi/pytz/
  [docs]: https://python-babel.github.io/flask-babel/
  [semver]: https://semver.org/


pkgId: 7da5b35336a49b694b7d8970c70ea014f955d734d2bc8147fa654232c21c6480
name: python-flask-healthz
arch: src
version: 0.0.3
epoch: 0
release: 1
summary: A simple module to allow you to easily add health endpoints to your Flask application
url: https://github.com/fedora-infra/flask-healthz
rpm_license: BSD-3-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-2a9f0e81-5f6f-45e8-bbf5-865129a25e5c
location_href: 00003654-python-flask-healthz/python-flask-healthz-0.0.3-1.src.rpm
checksum_type: sha256
description:
  Define endpoints in your Flask application that Kubernetes can use as
  [liveness and readiness probes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/).






  Register the blueprint on your Flask application:

  ```python
  from flask import Flask
  from flask_healthz import healthz

  app = Flask(__name__)
  app.register_blueprint(healthz, url_prefix="/healthz")
  ```

  Define the functions you want to use to check health. To signal an error, raise `flask_healthz.HealthError`.

  ```python
  from flask_healthz import HealthError

  def liveness():
      pass

  def readiness():
      try:
          connect_database()
      except Exception:
          raise HealthError("Can't connect to the database")
  ```

  Now point to those functions in the Flask configuration:

  ```python
  HEALTHZ = {
      "live": "yourapp.checks.liveness",
      "ready": "yourapp.checks.readiness",
  }
  ```

  It is possible to directly set callables in the configuration, so you could write something like:

  ```python
  HEALTHZ = {
      "live": lambda: None,
  }
  ```

  Check that the endpoints actually work:

  ```
  $ curl http://localhost/yourapp/healthz/live
  {"status": 200, "title": "OK"}
  $ curl http://localhost/yourapp/healthz/ready
  {"status": 200, "title": "OK"}
  ```

  Now your can configure Kubernetes or OpenShift to check for those endpoints.



  You can also use the provided Flask extension to register the `healthz` blueprint:

  ```python
  from flask import Flask
  from flask_healthz import Healthz

  app = Flask(__name__)
  Healthz(app)
  ```

  The rest of the configuration is identical.

  The extension has an additional option, `no_log`, that can disable logging of the HTTP requests
  handled by your healthz endpoints, to avoid cluttering your web log files with automated requests.
  At the moment, only the [gunicorn](https://gunicorn.org/) web server is supported.

  ```python
  Healthz(app, no_log=True)
  ```



  Here's an example of how you could use flask-healthz in OpenShift's `deploymentconfig`:

  ```yaml
  kind: DeploymentConfig
  spec:
    [...]
    template:
      [...]
      spec:
        containers:
        - name: yourapp
          [...]
          livenessProbe:
            httpGet:
              path: /healthz/live
              port: 8080
            initialDelaySeconds: 5
            timeoutSeconds: 1
          readinessProbe:
            httpGet:
              path: /healthz/ready
              port: 8080
            initialDelaySeconds: 5
            timeoutSeconds: 1
  ```

  Some projects that have setup flask-healthz:

  - Noggin: https://github.com/fedora-infra/noggin/pull/287
  - FASJSON: https://github.com/fedora-infra/fasjson/pull/81




  Copyright 2020-2021 Red Hat

  Flask-Healthz is licensed under the same license as Flask itself: BSD 3-clause.


  [![codecov](https://codecov.io/gh/fedora-infra/flask-healthz/branch/dev/graph/badge.svg?token=lwlZLiSImq)](https://codecov.io/gh/fedora-infra/flask-healthz)


pkgId: 2d3f580f74eb05e67e77d1db5b4901c197a50f35b862642b3c992430a72c50ea
name: python-flask-marshmallow
arch: src
version: 0.15.0
epoch: 0
release: 1
summary: Flask + marshmallow for beautiful APIs
url: https://github.com/marshmallow-code/flask-marshmallow
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-bd5867f5-8f42-470c-9a1e-266bfa85800c
location_href: 00010104-python-flask-marshmallow/python-flask-marshmallow-0.15.0-1.src.rpm
checksum_type: sha256
description:
  Flask-Marshmallow is a thin integration layer for `Flask`_ (a Python web framework) and `marshmallow`_ (an object serialization/deserialization library) that adds additional features to marshmallow, including URL and Hyperlinks fields for HATEOAS-ready APIs. It also (optionally) integrates with `Flask-SQLAlchemy <http://flask-sqlalchemy.pocoo.org/>`_.


pkgId: 77848e167ed6956f06194291f27ff16933c1033d605caed883f014abda23669a
name: python-flask-ngrok
arch: src
version: 0.0.25
epoch: 0
release: 1
summary: A simple way to demo Flask apps from your machine.
url: https://github.com/gstaff/flask-ngrok
rpm_license: Apache Software License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-db7802c3-32a1-432a-9f9d-02791c578866
location_href: 00012711-python-flask-ngrok/python-flask-ngrok-0.0.25-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/flask-ngrok.svg)](https://badge.fury.io/py/flask-ngrok)

  A simple way to demo Flask apps from your machine.
  Makes your [Flask](http://flask.pocoo.org/) apps running on localhost available
   over the internet via the excellent [ngrok](https://ngrok.com/) tool.


  Python 3.6+ is required.



  ```bash
  pip install flask-ngrok
  ```

  Notebooks have [an issue](https://stackoverflow.com/questions/51180917/python-flask-unsupportedoperation-not-writable) with newer versions of Flask, so force an older version if working in these environments.
  ```bash
  !pip install flask==0.12.2
  ```


  1. Import with ```from flask_ngrok import run_with_ngrok```
  2. Add `run_with_ngrok(app)` to make your Flask app available upon running
  ```python

  from flask import Flask
  from flask_ngrok import run_with_ngrok

  app = Flask(__name__)
  run_with_ngrok(app)  # Start ngrok when app is run

  @app.route("/")
  def hello():
      return "Hello World!"

  if __name__ == '__main__':
      app.run()
  ```
  Running the example:
  ```bash
  python flask_ngrok_example.py
   * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
   * Running on http://<random-address>.ngrok.io
   * Traffic stats available on http://127.0.0.1:4040
  ```


pkgId: a4d810c0ffa6497076006d84f6f120a410853b2bf6e45648311155037a3ab95e
name: python-flask-oidc
arch: src
version: 1.4.0
epoch: 0
release: 1
summary: OpenID Connect extension for Flask
url: https://github.com/puiterwijk/flask-oidc
rpm_license: BSD License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-22ca7d3e-f2f7-4635-a379-bc429186f4b8
location_href: 00003663-python-flask-oidc/python-flask-oidc-1.4.0-1.src.rpm
checksum_type: sha256
description:
  `OpenID Connect <https://openid.net/connect/>`_ support for `Flask <http://flask.pocoo.org/>`_.
  This library should work with any standards compliant OpenID Connect provider.
  It has been tested with:
  * `Google+ Login <https://developers.google.com/accounts/docs/OAuth2Login>`_
  * `Ipsilon <https://ipsilon-project.org/>`_


pkgId: 745c3aa0cc16203900cdf7efad9a3be99e2094c9da52c5b8da6bc84a4f87eee9
name: python-flask-paginate
arch: src
version: 2022.1.8
epoch: 0
release: 1
summary: Simple paginate support for flask
url: https://github.com/lixxu/flask-paginate
rpm_license: BSD-3-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c130510c-8454-4375-b79d-1e5557c9e4ef
location_href: 00013819-python-flask-paginate/python-flask-paginate-2022.1.8-1.src.rpm
checksum_type: sha256
description:
  Simple paginate for flask (study from will_paginate).
  Use bootstrap css framework, supports bootstrap2&3 and foundation


pkgId: fc0f824c6ce369e9204dc4879c32fad4793935f309d62381cab78d13909d698d
name: python-flask-swagger
arch: src
version: 0.2.14
epoch: 0
release: 1
summary: Extract swagger specs from your flask project
url: https://github.com/gangverk/flask-swagger
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-cec43447-026e-4572-be9d-f3c79d232718
location_href: 00009474-python-flask-swagger/python-flask-swagger-0.2.14-1.src.rpm
checksum_type: sha256
description:
  A Swagger 2.0 spec extractor for Flask
  Install:
      pip install flask-swagger
  Flask-swagger provides a method (swagger) that inspects the Flask app
  for endpoints that contain YAML docstrings with Swagger 2.0
  `Operation <https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#operation-object>`__
  objects.
      class UserAPI(MethodView):
          def post(self):
              """


pkgId: 3c7782cc7d7c44ea44b24a6c6eea46046e6c43675763c73669cc217071c68bbf
name: python-flask-swagger-ui
arch: src
version: 4.11.1
epoch: 0
release: 1
summary: Swagger UI blueprint for Flask
url: https://github.com/sveint/flask-swagger-ui
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ddf33c92-a678-457c-84cd-4815f90ffb3c
location_href: 00011623-python-flask-swagger-ui/python-flask-swagger-ui-4.11.1-1.src.rpm
checksum_type: sha256
description:
  Simple Flask blueprint for adding [Swagger UI](https://github.com/swagger-api/swagger-ui) to your flask application.

  Included Swagger UI version: 4.11.1.



  `pip install flask-swagger-ui`



  Example application:

  ```python
  from flask import Flask
  from flask_swagger_ui import get_swaggerui_blueprint

  app = Flask(__name__)


  SWAGGER_URL = '/api/docs'  # URL for exposing Swagger UI (without trailing '/')
  API_URL = 'http://petstore.swagger.io/v2/swagger.json'  # Our API url (can of course be a local resource)


  swaggerui_blueprint = get_swaggerui_blueprint(
      SWAGGER_URL,  # Swagger UI static files will be mapped to '{SWAGGER_URL}/dist/'
      API_URL,
      config={  # Swagger UI config overrides
          'app_name': "Test application"
      },
      
      
      
      
      
      
      
      
  )

  app.register_blueprint(swaggerui_blueprint)

  app.run()



  ```



  The blueprint supports overloading all Swagger UI configuration options that can be JSON serialized.
  See https://github.com/swagger-api/swagger-ui#parameters for options.

  Plugins and function parameters are not supported at this time.

  OAuth2 parameters can be found at https://github.com/swagger-api/swagger-ui#oauth2-configuration .


pkgId: 302d133e2dcee2e7702db58a3d126d9359ebf801e8b3492ac0fb1b4d0282449a
name: python-flask-talisman
arch: src
version: 1.0.0
epoch: 0
release: 1
summary: HTTP security headers for Flask.
url: https://github.com/wntrblm/flask-talisman
rpm_license: Apache Software License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8b791037-57a8-4f6c-b9ca-0863f559027d
location_href: 00010247-python-flask-talisman/python-flask-talisman-1.0.0-1.src.rpm
checksum_type: sha256
description:
  |PyPI Version|
  Talisman is a small Flask extension that handles setting HTTP headers
  that can help protect against a few common web application security
  issues.
  The default configuration:
  -  Forces all connects to ``https``, unless running with debug enabled.
  -  Enables `HTTP Strict Transport
     Security <https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security>`_.
  -  Sets Flask's session cookie to ``secure``, so it will never be set if
     your application is somehow accessed via a non-secure connection.
  -  Sets Flask's session cookie to ``httponly``, preventing JavaScript
     from being able to access its content. CSRF via Ajax uses a separate
     cookie and should be unaffected.
  -  Sets Flask's session cookie to ``Lax``, preventing the cookie to be leaked
     in CSRF-prone request methods.
  -  Sets
     `X-Frame-Options <https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options>`_
     to ``SAMEORIGIN`` to avoid
     `clickjacking <https://en.wikipedia.org/wiki/Clickjacking>`_.
  -  Sets `X-XSS-Protection
     <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection>`_
     to enable a cross site scripting filter for IE and Safari (note Chrome has
     removed this and Firefox never supported it).
  -  Sets `X-Content-Type-Options
     <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options>`_
     to prevent content type sniffing.
  -  Sets a strict `Content Security
     Policy <https://developer.mozilla.org/en-US/docs/Web/Security/CSP/Introducing_Content_Security_Policy>`__
     of ``default-src: 'self', 'object-src': 'none'``. This is intended to almost completely
     prevent Cross Site Scripting (XSS) attacks. This is probably the only
     setting that you should reasonably change. See the
     `Content Security Policy`_ section.
  -  Sets a strict `Referrer-Policy <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy>`_
     of ``strict-origin-when-cross-origin`` that governs which referrer information should be included with
     requests made.
  In addition to Talisman, you **should always use a cross-site request
  forgery (CSRF) library**. It's highly recommended to use
  `Flask-SeaSurf <https://flask-seasurf.readthedocs.org/en/latest/>`_,
  which is based on Django's excellent library.


pkgId: a33038b5bcd48e71117bea53ed6cb9f6332076642a080cf5cbb4005d15d54bea
name: python-flask-whooshee
arch: src
version: 0.8.2
epoch: 0
release: 1
summary: Flask-SQLAlchemy - Whoosh Integration
url: https://github.com/bkabrda/flask-whooshee
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-6a637947-2415-4fc6-9afb-e5fda1e327b7
location_href: 00003676-python-flask-whooshee/python-flask-whooshee-0.8.2-1.src.rpm
checksum_type: sha256
description:
  Adds Whoosh integration to Flask-SQLAlchemy.
  Setup
  `````
  Flask-Whooshee supports two different methods of setting up the extension.
  You can either initialize it directly, thus binding it to a specific
  application instance:
      app = Flask(__name__)
      whooshee = Whooshee(app)
  and the second is to use the factory pattern which will allow you to
  configure whooshee at a later point:
      whooshee = Whooshee()
      def create_app():
          app = Flask(__name__)
          whooshee.init_app(app)
          return app
  Now you can create a basic whoosheer:
      @whooshee.register_model('title', 'content')
      class Entry(db.Model):
          id = db.Column(db.Integer, primary_key=True)
          title = db.Column(db.String)
          content = db.Column(db.Text)
  and finally you can search the model:
      Entry.query.whooshee_search('chuck norris').order_by(Entry.id.desc()).all()
  Links
  `````
  * `Documentation <https://flask-whooshee.readthedocs.io>`_
  * `Source Code <https://github.com/bkabrda/flask-whooshee>`_
  * `Issues <https://github.com/bkabrda/flask-whooshee/issues>`_


pkgId: be335295bb9711d5f820207c2e27663f3418da0779ce4bbeb38f3df15bf5c318
name: python-flatbuffers
arch: src
version: 23.3.3
epoch: 0
release: 1
summary: The FlatBuffers serialization format for Python
url: https://google.github.io/flatbuffers/
rpm_license: Apache 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-f2ad179f-c633-4755-ac58-edf8240f39e7
location_href: 00009082-python-flatbuffers/python-flatbuffers-23.3.3-1.src.rpm
checksum_type: sha256
description:
  Python runtime library for use with the `Flatbuffers <https://google.github.io/flatbuffers/>`_ serialization format.


pkgId: d8d6cbbcfbf6104e506d5105b53c551631d186e06f1283fa2e755587881aff81
name: python-flatdict
arch: src
version: 4.0.1
epoch: 0
release: 1
summary: Python module for interacting with nested dicts as a single level dict with delimited keys.
url: https://github.com/gmr/flatdict
rpm_license: BSD 3-Clause License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-fc7c1825-f9d2-4730-8b7d-c9c48f52a1bf
location_href: 00010797-python-flatdict/python-flatdict-4.0.1-1.src.rpm
checksum_type: sha256
description:
  |Version| |Status| |Coverage| |License|
  ``FlatDict`` and ``FlatterDict`` are a dict classes that allows for single level,
  delimited key/value pair mapping of nested dictionaries. You can interact with
  ``FlatDict`` and ``FlatterDict`` like a normal dictionary and access child
  dictionaries as you normally would or with the composite key.
  *For example:*
      value = flatdict.FlatDict({'foo': {'bar': 'baz', 'qux': 'corge'}})
  *would be the same as:*
      value == {'foo:bar': 'baz', 'foo:qux': 'corge'}
  *values can be accessed as:*
      print(foo['foo:bar'])
      
      print(foo['foo']['bar'])
  Additionally, lists and tuples are also converted into dicts using ``enumerate()``,
  using the ``FlatterDict`` class.
  *For example:*
      value = flatdict.FlatterDict({'list': ['a', 'b', 'c']})
  *will be the same as:*
      value == {'list:0': 'a', 'list:1': 'b', 'list:2': 'c'}


pkgId: 37073e4524c163e5ef62a3db25fb2a487d003afb5986dc21645aa1eb54cd1ff3
name: python-flax
arch: src
version: 0.6.8
epoch: 0
release: 1
summary: Flax: A neural network library for JAX designed for flexibility
url: https://github.com/google/flax
rpm_license: Apache Software License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-dd06b0cc-9c68-4548-aa22-3263a055e716
location_href: 00009150-python-flax/python-flax-0.6.8-1.src.rpm
checksum_type: sha256
description:
  <div align="center">
  <img src="https://raw.githubusercontent.com/google/flax/main/images/flax_logo_250px.png" alt="logo"></img>
  </div>



  ![Build](https://github.com/google/flax/workflows/Build/badge.svg?branch=main) [![coverage](https://badgen.net/codecov/c/github/google/flax)](https://codecov.io/github/google/flax)


  [**Overview**](#overview)
  | [**Quick install**](#quick-install)
  | [**What does Flax look like?**](#what-does-flax-look-like)
  | [**Documentation**](https://flax.readthedocs.io/)

  This README is a very short intro. **To learn everything you need to know about Flax, refer to our [full documentation](https://flax.readthedocs.io/).**

  Flax was originally started by engineers and researchers within the Brain Team in Google Research (in close collaboration with the JAX team), and is now developed jointly with the open source community.

  Flax is being used by a growing
  community of hundreds of folks in various Alphabet research departments
  for their daily work, as well as a [growing community
  of open source
  projects](https://github.com/google/flax/network/dependents?dependent_type=REPOSITORY).

  The Flax team's mission is to serve the growing JAX neural network
  research ecosystem -- both within Alphabet and with the broader community,
  and to explore the use-cases where JAX shines. We use GitHub for almost
  all of our coordination and planning, as well as where we discuss
  upcoming design changes. We welcome feedback on any of our discussion,
  issue and pull request threads. We are in the process of moving some
  remaining internal design docs and conversation threads to GitHub
  discussions, issues and pull requests. We hope to increasingly engage
  with the needs and clarifications of the broader ecosystem. Please let
  us know how we can help!

  Please report any feature requests,
  issues, questions or concerns in our [discussion
  forum](https://github.com/google/flax/discussions), or just let us
  know what you're working on!

  We expect to improve Flax, but we don't anticipate significant
  breaking changes to the core API. We use [Changelog](https://github.com/google/flax/tree/main/CHANGELOG.md)
  entries and deprecation warnings when possible.

  In case you want to reach us directly, we're at flax-dev@google.com.



  Flax is a high-performance neural network library and ecosystem for
  JAX that is **designed for flexibility**:
  Try new forms of training by forking an example and by modifying the training
  loop, not by adding features to a framework.

  Flax is being developed in close collaboration with the JAX team and
  comes with everything you need to start your research, including:

  * **Neural network API** (`flax.linen`): Dense, Conv, {Batch|Layer|Group} Norm, Attention, Pooling, {LSTM|GRU} Cell, Dropout

  * **Utilities and patterns**: replicated training, serialization and checkpointing, metrics, prefetching on device

  * **Educational examples** that work out of the box: MNIST, LSTM seq2seq, Graph Neural Networks, Sequence Tagging

  * **Fast, tuned large-scale end-to-end examples**: CIFAR10, ResNet on ImageNet, Transformer LM1b



  You will need Python 3.6 or later, and a working [JAX](https://github.com/google/jax/blob/main/README.md)
  installation (with or without GPU support - refer to [the instructions](https://github.com/google/jax/blob/main/README.md)).
  For a CPU-only version of JAX:

  ```
  pip install --upgrade pip # To support manylinux2010 wheels.
  pip install --upgrade jax jaxlib # CPU-only
  ```

  Then, install Flax from PyPi:

  ```
  pip install flax
  ```

  To upgrade to the latest version of Flax, you can use:

  ```
  pip install --upgrade git+https://github.com/google/flax.git
  ```
  To install some additional dependencies (like `matplotlib`) that are required but not included
  by some dependencies, you can use:

  ```bash
  pip install flax[all]
  ```



  We provide three examples using the Flax API: a simple multi-layer perceptron, a CNN and an auto-encoder.

  To learn more about the `Module` abstraction, check out our [docs](https://flax.readthedocs.io/), our [broad intro to the Module abstraction](https://github.com/google/flax/blob/main/docs/notebooks/linen_intro.ipynb). For additional concrete demonstrations of best practices, refer to our
  [guides](https://flax.readthedocs.io/en/latest/guides/index.html) and
  [developer notes](https://flax.readthedocs.io/en/latest/developer_notes/index.html).

  ```py
  from typing import Sequence

  import numpy as np
  import jax
  import jax.numpy as jnp
  import flax.linen as nn

  class MLP(nn.Module):
    features: Sequence[int]

    @nn.compact
    def __call__(self, x):
      for feat in self.features[:-1]:
        x = nn.relu(nn.Dense(feat)(x))
      x = nn.Dense(self.features[-1])(x)
      return x

  model = MLP([12, 8, 4])
  batch = jnp.ones((32, 10))
  variables = model.init(jax.random.PRNGKey(0), batch)
  output = model.apply(variables, batch)
  ```

  ```py
  class CNN(nn.Module):
    @nn.compact
    def __call__(self, x):
      x = nn.Conv(features=32, kernel_size=(3, 3))(x)
      x = nn.relu(x)
      x = nn.avg_pool(x, window_shape=(2, 2), strides=(2, 2))
      x = nn.Conv(features=64, kernel_size=(3, 3))(x)
      x = nn.relu(x)
      x = nn.avg_pool(x, window_shape=(2, 2), strides=(2, 2))
      x = x.reshape((x.shape[0], -1))  # flatten
      x = nn.Dense(features=256)(x)
      x = nn.relu(x)
      x = nn.Dense(features=10)(x)
      x = nn.log_softmax(x)
      return x

  model = CNN()
  batch = jnp.ones((32, 64, 64, 10))  # (N, H, W, C) format
  variables = model.init(jax.random.PRNGKey(0), batch)
  output = model.apply(variables, batch)
  ```

  ```py
  class AutoEncoder(nn.Module):
    encoder_widths: Sequence[int]
    decoder_widths: Sequence[int]
    input_shape: Sequence[int]

    def setup(self):
      input_dim = np.prod(self.input_shape)
      self.encoder = MLP(self.encoder_widths)
      self.decoder = MLP(self.decoder_widths + (input_dim,))

    def __call__(self, x):
      return self.decode(self.encode(x))

    def encode(self, x):
      assert x.shape[1:] == self.input_shape
      return self.encoder(jnp.reshape(x, (x.shape[0], -1)))

    def decode(self, z):
      z = self.decoder(z)
      x = nn.sigmoid(z)
      x = jnp.reshape(x, (x.shape[0],) + self.input_shape)
      return x

  model = AutoEncoder(encoder_widths=[20, 10, 5],
                      decoder_widths=[5, 10, 20],
                      input_shape=(12,))
  batch = jnp.ones((16, 12))
  variables = model.init(jax.random.PRNGKey(0), batch)
  encoded = model.apply(variables, batch, method=model.encode)
  decoded = model.apply(variables, encoded, method=model.decode)
  ```



  In-detail examples to train and evaluate a variety of Flax models for
  Natural Language Processing, Computer Vision, and Speech Recognition are
  actively maintained in the [🤗 Transformers repository](https://github.com/huggingface/transformers/tree/master/examples/flax).

  As of October 2021, the [19 most-used Transformer architectures](https://huggingface.co/transformers/#supported-frameworks) are supported in Flax
  and over 5000 pretrained checkpoints in Flax have been uploaded to the [🤗 Hub](https://huggingface.co/models?library=jax&sort=downloads).



  To cite this repository:

  ```
  @software{flax2020github,
    author = {Jonathan Heek and Anselm Levskaya and Avital Oliver and Marvin Ritter and Bertrand Rondepierre and Andreas Steiner and Marc van {Z}ee},
    title = {{F}lax: A neural network library and ecosystem for {JAX}},
    url = {http://github.com/google/flax},
    version = {0.6.8},
    year = {2023},
  }
  ```

  In the above bibtex entry, names are in alphabetical order, the version number
  is intended to be that from [flax/version.py](https://github.com/google/flax/blob/main/flax/version.py), and the year corresponds to the project's open-source release.



  Flax is an open source project maintained by a dedicated team in Google Research, but is not an official Google product.


pkgId: 353992e2f83b312b872851fa24634dd4f784d361bcf8898b90e6a5fd39e63940
name: python-flex
arch: src
version: 6.14.1
epoch: 0
release: 1
summary: Swagger Schema validation.
url: https://github.com/pipermerriam/flex
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c66b710a-b5d9-4dbe-a94f-ffefa983a9c0
location_href: 00011318-python-flex/python-flex-6.14.1-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://badgen.net/travis/pipermerriam/flex)](https://travis-ci.org/pipermerriam/flex)
  [![Documentation Status](https://readthedocs.org/projects/flex-swagger/badge/?version=latest)](https://readthedocs.org/projects/flex-swagger/?badge=latest)
  [![PyPi version](https://badgen.net/pypi/v/flex)](https://pypi.org/project/flex/)
  [![PyPi downloads](https://img.shields.io/pypi/dm/flex.svg)](https://pypi.python.org/pypi/flex)


  Validation tooling for [Swagger 2.0](https://github.com/wordnik/swagger-spec/blob/master/versions/2.0.md) specifications.


  [Documentation on ReadTheDocs](http://flex-swagger.readthedocs.org/en/latest/)



  * Validate swagger schemas.
  * JSON Schema Validation
  * Validation of request/response objects against schema.
  * Command Line interface.




  Starting in version 5.0.0 the CLI interface has been changed to `swagger-flex`
  due to a collision with the Apache Flex project.


pkgId: 89c0cdb2a254607fd96c07a16810c40d6e33c78bae6b9561ad7028adee0afd78
name: python-flexmock
arch: src
version: 0.11.3
epoch: 0
release: 1
summary: flexmock is a testing library for Python that makes it easy to create mocks, stubs and fakes.
url: https://github.com/flexmock/flexmock
rpm_license: BSD-2-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-9af18771-485f-4d69-b04f-e3e0d173ba5c
location_href: 00003681-python-flexmock/python-flexmock-0.11.3-1.src.rpm
checksum_type: sha256
description:
  Flexmock is a testing library for Python that makes it easy to create mocks, stubs, and fakes.

  - **Mock**: Easily create mock objects and make assertions about which methods or attributes were used and arguments they were called with.
  - **Spy**: Proxy calls to object's original methods or attributes and make assertions based on return values or call count.
  - **Fake**: Generate a fake objects to be used in your tests with ease.
  - **Stub**: Create stub objects which replace parts of existing objects and classes with just one call.
  - **No external dependencies**: Flexmock is lightweight and only uses Python standard library. There are no external dependencies.
  - **Simple and intuitive**: Declarations are structured to read more like English sentences than API calls, so they are easy to learn and use.
  - **Fully type annotated**: External API is fully type annotated so it works great with static analysis tools and editor auto-completion.
  - **Integrations with test runners**: Integrates seamlessly with all major test runners like unittest, doctest, and pytest.
  - **Python 3.6+ and PyPy3**: Extensively tested to work with latest Python versions.

  Install with pip:
  ```
  pip install flexmock
  ```

  Flexmock features smooth integration with pretty much every popular test runner, so no special setup is necessary. Simply importing flexmock into your test module is sufficient to get started with any of the following examples:
  ```python
  from flexmock import flexmock
  ```

  Assertions take many flavors and flexmock has many different facilities to generate them:
  ```python

  flexmock(Train).should_receive("get_tickets").once()

  flexmock(Train).should_receive("get_destination").and_return("Paris").once()

  flexmock(Train).should_receive("set_destination").with_args("Seoul").at_least().twice()
  ```

  Instead of mocking, there are also times when you want to execute the actual method and simply find out how many times it was called. Flexmock uses `should_call` to generate this sort of assertions instead of `should_receive`:
  ```python

  flexmock(Train).should_call("get_tickets").at_most().times(3)

  flexmock(Train).should_call("set_destination").with_args("Helsinki").never()

  flexmock(Train).should_call("crash").with_args(str, int).and_raise(AttributeError).once()
  ```
  See more examples in the documentation.

  User guide, examples, and a full API reference is available at: https://flexmock.readthedocs.io

  Contributions are absolutely welcome and encouraged! See [CONTRIBUTING.md](https://github.com/flexmock/flexmock/blob/master/CONTRIBUTING.md) to get started.


pkgId: 7d9ba35b66a0a589732224be04136b2dbed6b79488dcfacf4c4470fd52bbfaa7
name: python-flock
arch: src
version: 0.1
epoch: 0
release: 1
url: https://github.com/misli/python-flock
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-749c5cc3-f1de-4127-b979-62df6dc67c0b
location_href: 00003683-python-flock/python-flock-0.1-1.src.rpm
checksum_type: sha256
summary:
  Flock object uses fcntl.flock to lock (resp. unlock) file descriptor (fd) with operation (op) when entering (resp. leaving) runtime context related to it.


pkgId: 9eca36be422fb321d9400f8d96c5cb188b908874589c69a98df942379b08c96a
name: python-fluent-logger
arch: src
version: 0.10.0
epoch: 0
release: 1
summary: A Python logging handler for Fluentd event collector
url: https://github.com/fluent/fluent-logger-python
rpm_license: Apache License, Version 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c6779098-ef8d-4a62-bafa-981f4411d029
location_href: 00010299-python-fluent-logger/python-fluent-logger-0.10.0-1.src.rpm
checksum_type: sha256
description:
  Many web/mobile applications generate huge amount of event logs (c,f.
  login, logout, purchase, follow, etc). To analyze these event logs could
  be really valuable for improving the service. However, the challenge is
  collecting these logs easily and reliably.
  `Fluentd <https://github.com/fluent/fluentd>`__ solves that problem by
  having: easy installation, small footprint, plugins, reliable buffering,
  log forwarding, etc.
  **fluent-logger-python** is a Python library, to record the events from
  Python application.


