# packages

pkgId: 996d9b5b868720bf3a479352a07f7798632221842a58ff3e092bb3a37b5400b9
name: python-alabaster
arch: src
version: 0.7.13
epoch: 0
release: 1
summary: A configurable sidebar-enabled Sphinx theme
url: https://alabaster.readthedocs.io
rpm_license: BSD License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ef61b0e9-986f-4139-a189-b0e4b26c4e5f
location_href: 00009213-python-alabaster/python-alabaster-0.7.13-1.src.rpm
checksum_type: sha256
description:
  Alabaster is a visually (c)lean, responsive, configurable theme for the `Sphinx
  <http://sphinx-doc.org>`_ documentation system. It is Python 3.6+ compatible.
  It began as a third-party theme, and is still maintained separately, but as of
  Sphinx 1.3, Alabaster is an install-time dependency of Sphinx and is selected
  as the default theme.
  Live examples of this theme can be seen on `this project's own website
  <http://alabaster.readthedocs.io>`_, `paramiko.org <http://paramiko.org>`_,
  `fabfile.org <http://fabfile.org>`_ and `pyinvoke.org <http://pyinvoke.org>`_.
  For more documentation, please see http://alabaster.readthedocs.io. For a
  roadmap, see the maintainer's `roadmap page
  <http://bitprophet.org/projects#roadmap>`_.
      You can install the development version via ``pip install -e
      git+https://github.com/bitprophet/alabaster/#egg=alabaster``.


pkgId: 11b54e355a3ff004aa293e7a7e93b7c6b17a16207fd33e69a053b1f2c3bc0c26
name: python-alarmdecoder
arch: src
version: 1.13.11
epoch: 0
release: 1
url: http://github.com/nutechsoftware/alarmdecoder
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-62997a23-0c1d-4891-985c-a0a2374e40d7
location_href: 00003010-python-alarmdecoder/python-alarmdecoder-1.13.11-1.src.rpm
checksum_type: sha256
summary:
  Python interface for the AlarmDecoder (AD2) family of alarm devices which includes the AD2USB, AD2SERIAL and AD2PI.


pkgId: 27d6e4e4e34761da0d8552831068d6ff2423542895d96da3566be7f8234e5bed
name: python-albumentations
arch: src
version: 1.3.0
epoch: 0
release: 1
summary: Fast image augmentation library and easy to use wrapper around other libraries
url: https://github.com/albumentations-team/albumentations
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-22e85a3d-6418-4d14-bb68-735f9b30c9c2
location_href: 00010763-python-albumentations/python-albumentations-1.3.0-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/albumentations.svg)](https://badge.fury.io/py/albumentations)
  ![CI](https://github.com/albumentations-team/albumentations/workflows/CI/badge.svg)

  Albumentations is a Python library for image augmentation. Image augmentation is used in deep learning and computer vision tasks to increase the quality of trained models. The purpose of image augmentation is to create new training samples from the existing data.

  Here is an example of how you can apply some [pixel-level](#pixel-level-transforms) augmentations from Albumentations to create new images from the original one:
  ![parrot](https://habrastorage.org/webt/bd/ne/rv/bdnerv5ctkudmsaznhw4crsdfiw.jpeg)


  - Albumentations **[supports all common computer vision tasks](#i-want-to-use-albumentations-for-the-specific-task-such-as-classification-or-segmentation)** such as classification, semantic segmentation, instance segmentation, object detection, and pose estimation.
  - The library provides **[a simple unified API](#a-simple-example)** to work with all data types: images (RBG-images, grayscale images, multispectral images), segmentation masks, bounding boxes, and keypoints.
  - The library contains **[more than 70 different augmentations](#list-of-augmentations)** to generate new training samples from the existing data.
  - Albumentations is [**fast**](#benchmarking-results). We benchmark each new release to ensure that augmentations provide maximum speed.
  - It **[works with popular deep learning frameworks](#i-want-to-know-how-to-use-albumentations-with-deep-learning-frameworks)** such as PyTorch and TensorFlow. By the way, Albumentations is a part of the [PyTorch ecosystem](https://pytorch.org/ecosystem/).
  - [**Written by experts**](#authors). The authors have experience both working on production computer vision systems and participating in competitive machine learning. Many core team members are Kaggle Masters and Grandmasters.
  - The library is [**widely used**](#who-is-using-albumentations) in industry, deep learning research, machine learning competitions, and open source projects.


  - [Authors](#authors)
  - [Installation](#installation)
  - [Documentation](#documentation)
  - [A simple example](#a-simple-example)
  - [Getting started](#getting-started)
    - [I am new to image augmentation](#i-am-new-to-image-augmentation)
    - [I want to use Albumentations for the specific task such as classification or segmentation](#i-want-to-use-albumentations-for-the-specific-task-such-as-classification-or-segmentation)
    - [I want to know how to use Albumentations with deep learning frameworks](#i-want-to-know-how-to-use-albumentations-with-deep-learning-frameworks)
    - [I want to explore augmentations and see Albumentations in action](#i-want-to-explore-augmentations-and-see-albumentations-in-action)
  - [Who is using Albumentations](#who-is-using-albumentations)
  - [List of augmentations](#list-of-augmentations)
    - [Pixel-level transforms](#pixel-level-transforms)
    - [Spatial-level transforms](#spatial-level-transforms)
  - [A few more examples of augmentations](#a-few-more-examples-of-augmentations)
  - [Benchmarking results](#benchmarking-results)
  - [Contributing](#contributing)
  - [Comments](#comments)
  - [Citing](#citing)


  [**Alexander Buslaev** — Computer Vision Engineer at Mapbox](https://www.linkedin.com/in/al-buslaev/) | [Kaggle Master](https://www.kaggle.com/albuslaev)

  [**Alex Parinov**](https://www.linkedin.com/in/alex-parinov/) | [Kaggle Master](https://www.kaggle.com/creafz)

  [**Vladimir I. Iglovikov** — Staff Engineer at Lyft Level5](https://www.linkedin.com/in/iglovikov/) | [Kaggle Grandmaster](https://www.kaggle.com/iglovikov)

  [**Evegene Khvedchenya** — Computer Vision Research Engineer at Piñata Farms](https://www.linkedin.com/in/cvtalks/) | [Kaggle Grandmaster](https://www.kaggle.com/bloodaxe)

  [**Mikhail Druzhinin**](https://www.linkedin.com/in/mikhail-druzhinin-548229100/) | [Kaggle Expert](https://www.kaggle.com/dipetm)



  Albumentations requires Python 3.6 or higher. To install the latest version from PyPI:

  ```
  pip install -U albumentations
  ```

  Other installation options are described in the [documentation](https://albumentations.ai/docs/getting_started/installation/).


  The full documentation is available at **[https://albumentations.ai/docs/](https://albumentations.ai/docs/)**.


  ```python
  import albumentations as A
  import cv2


  transform = A.Compose([
      A.RandomCrop(width=256, height=256),
      A.HorizontalFlip(p=0.5),
      A.RandomBrightnessContrast(p=0.2),
  ])


  image = cv2.imread("image.jpg")
  image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)


  transformed = transform(image=image)
  transformed_image = transformed["image"]
  ```




  Please start with the [introduction articles](https://albumentations.ai/docs/#introduction-to-image-augmentation) about why image augmentation is important and how it helps to build better models.


  If you want to use Albumentations for a specific task such as classification, segmentation, or object detection, refer to the [set of articles](https://albumentations.ai/docs/#getting-started-with-albumentations) that has an in-depth description of this task. We also have a [list of examples](https://albumentations.ai/docs/examples/) on applying Albumentations for different use cases.


  We have [examples of using Albumentations](https://albumentations.ai/docs/#examples-of-how-to-use-albumentations-with-different-deep-learning-frameworks) along with PyTorch and TensorFlow.


  Check the [online demo of the library](https://albumentations-demo.herokuapp.com/). With it, you can apply augmentations to different images and see the result. Also, we have a [list of all available augmentations and their targets](#list-of-augmentations).


  <a href="https://www.lyft.com/" target="_blank"><img src="https://habrastorage.org/webt/ce/bs/sa/cebssajf_5asst5yshmyykqjhcg.png" width="100"/></a>
  <a href="https://imedhub.org/" target="_blank"><img src="https://habrastorage.org/webt/eq/8x/m-/eq8xm-fjfx_uqkka4_ekxsdwtiq.png" width="100"/></a>
  <a href="https://recursionpharma.com" target="_blank"><img src="https://pbs.twimg.com/profile_images/925897897165639683/jI8YvBfC_400x400.jpg" width="100"/></a>
  <a href="https://www.everypixel.com/" target="_blank"><img src="https://www.everypixel.com/i/logo_sq.png" width="100"/></a>
  <a href="https://neuromation.io/" target="_blank"><img src="https://habrastorage.org/webt/yd/_4/xa/yd_4xauvggn1tuz5xgrtkif6lya.png" width="100"/></a>
  <a href="https://ultralytics.com/" target="_blank"><img src="https://albumentations.ai/assets/img/industry/ultralytics.png" width="100"/></a>
  <a href="https://www.cft.ru/" target="_blank"><img src="https://habrastorage.org/webt/dv/fa/uq/dvfauqyl5cor5yzrfrpthjzm0mi.jpeg" width="100"/></a>
  <a href="https://www.pinatafarm.com/" target="_blank"><img src="https://www.pinatafarm.com/pfLogo.png" width="100"/></a>
  <a href="https://incode.com/" target="_blank"><img src="https://habrastorage.org/webt/sh/eg/bs/shegbsyzy-0lebwqxkgl_rkkx3m.png" width="100"/></a>
  <a href="https://sharpershape.com/" target="_blank"><img src="https://lh3.googleusercontent.com/pw/AM-JKLWe2-aRXcZMqZOnL67Gw8v46LTwJw5a6RyufgAiLCKncxSI4U7wzHopt5Lacbc4wpDF7uJYMrWcVXPK-3Z3cxopV9jmtriuWSdzNpAO6gDC963nPd3BrWlE6eFwstLCb4il6lYXT49BbamdUipZrLk=w1870-h1574-no?authuser=0" width="100"/></a>
  <a href="https://vitechlab.com/" target="_blank"><img src="https://res2.weblium.site/res/5f842a47d2077f0022e59f1d/5f842ba81ff15b00214a447f_optimized_389.webp" width="100"/></a>
  <a href="https://borzodelivery.com/" target="_blank"><img src="https://borzodelivery.com/img/global/big-logo.svg" width="100"/></a>
  <a href="https://anadea.info/" target="_blank"><img src="https://habrastorage.org/webt/oc/lt/8u/oclt8uwyyc-vgmwwcgcsk5cw7wy.png" width="100"/></a>
  <a href="https://www.idrnd.ai/" target="_blank"><img src="https://www.idrnd.ai/wp-content/uploads/2019/09/Logo-IDRND.png.webp" width="100"/></a>
  <a href="https://openface.me/" target="_blank"><img src="https://drive.google.com/uc?export=view&id=1mC8B55CPFlpUC69Wnli2vitp6pImIfz7" width="100"/></a>


  - [A list of papers that cite Albumentations](https://albumentations.ai/whos_using#research).
  - [A list of teams that were using Albumentations and took high places in machine learning competitions](https://albumentations.ai/whos_using#competitions).
  - [Open source projects that use Albumentations](https://albumentations.ai/whos_using#open-source).




  Pixel-level transforms will change just an input image and will leave any additional targets such as masks, bounding boxes, and keypoints unchanged. The list of pixel-level transforms:

  - [AdvancedBlur](https://albumentations.ai/docs/api_reference/augmentations/blur/transforms/#albumentations.augmentations.blur.transforms.AdvancedBlur)
  - [Blur](https://albumentations.ai/docs/api_reference/augmentations/blur/transforms/#albumentations.augmentations.blur.transforms.Blur)
  - [CLAHE](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.CLAHE)
  - [ChannelDropout](https://albumentations.ai/docs/api_reference/augmentations/dropout/channel_dropout/#albumentations.augmentations.dropout.channel_dropout.ChannelDropout)
  - [ChannelShuffle](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.ChannelShuffle)
  - [ColorJitter](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.ColorJitter)
  - [Defocus](https://albumentations.ai/docs/api_reference/augmentations/blur/transforms/#albumentations.augmentations.blur.transforms.Defocus)
  - [Downscale](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.Downscale)
  - [Emboss](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.Emboss)
  - [Equalize](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.Equalize)
  - [FDA](https://albumentations.ai/docs/api_reference/augmentations/domain_adaptation/#albumentations.augmentations.domain_adaptation.FDA)
  - [FancyPCA](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.FancyPCA)
  - [FromFloat](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.FromFloat)
  - [GaussNoise](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.GaussNoise)
  - [GaussianBlur](https://albumentations.ai/docs/api_reference/augmentations/blur/transforms/#albumentations.augmentations.blur.transforms.GaussianBlur)
  - [GlassBlur](https://albumentations.ai/docs/api_reference/augmentations/blur/transforms/#albumentations.augmentations.blur.transforms.GlassBlur)
  - [HistogramMatching](https://albumentations.ai/docs/api_reference/augmentations/domain_adaptation/#albumentations.augmentations.domain_adaptation.HistogramMatching)
  - [HueSaturationValue](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.HueSaturationValue)
  - [ISONoise](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.ISONoise)
  - [ImageCompression](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.ImageCompression)
  - [InvertImg](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.InvertImg)
  - [MedianBlur](https://albumentations.ai/docs/api_reference/augmentations/blur/transforms/#albumentations.augmentations.blur.transforms.MedianBlur)
  - [MotionBlur](https://albumentations.ai/docs/api_reference/augmentations/blur/transforms/#albumentations.augmentations.blur.transforms.MotionBlur)
  - [MultiplicativeNoise](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.MultiplicativeNoise)
  - [Normalize](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.Normalize)
  - [PixelDistributionAdaptation](https://albumentations.ai/docs/api_reference/augmentations/domain_adaptation/#albumentations.augmentations.domain_adaptation.PixelDistributionAdaptation)
  - [Posterize](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.Posterize)
  - [RGBShift](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.RGBShift)
  - [RandomBrightnessContrast](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.RandomBrightnessContrast)
  - [RandomFog](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.RandomFog)
  - [RandomGamma](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.RandomGamma)
  - [RandomRain](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.RandomRain)
  - [RandomShadow](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.RandomShadow)
  - [RandomSnow](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.RandomSnow)
  - [RandomSunFlare](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.RandomSunFlare)
  - [RandomToneCurve](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.RandomToneCurve)
  - [RingingOvershoot](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.RingingOvershoot)
  - [Sharpen](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.Sharpen)
  - [Solarize](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.Solarize)
  - [Spatter](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.Spatter)
  - [Superpixels](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.Superpixels)
  - [TemplateTransform](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.TemplateTransform)
  - [ToFloat](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.ToFloat)
  - [ToGray](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.ToGray)
  - [ToSepia](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.ToSepia)
  - [UnsharpMask](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.UnsharpMask)
  - [ZoomBlur](https://albumentations.ai/docs/api_reference/augmentations/blur/transforms/#albumentations.augmentations.blur.transforms.ZoomBlur)


  Spatial-level transforms will simultaneously change both an input image as well as additional targets such as masks, bounding boxes, and keypoints. The following table shows which additional targets are supported by each transform.

  | Transform                                                                                                                                                                       | Image | Masks | BBoxes | Keypoints |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---: | :---: | :----: | :-------: |
  | [Affine](https://albumentations.ai/docs/api_reference/augmentations/geometric/transforms/#albumentations.augmentations.geometric.transforms.Affine)                             | ✓     | ✓     | ✓      | ✓         |
  | [BBoxSafeRandomCrop](https://albumentations.ai/docs/api_reference/augmentations/crops/transforms/#albumentations.augmentations.crops.transforms.BBoxSafeRandomCrop)             | ✓     | ✓     | ✓      |           |
  | [CenterCrop](https://albumentations.ai/docs/api_reference/augmentations/crops/transforms/#albumentations.augmentations.crops.transforms.CenterCrop)                             | ✓     | ✓     | ✓      | ✓         |
  | [CoarseDropout](https://albumentations.ai/docs/api_reference/augmentations/dropout/coarse_dropout/#albumentations.augmentations.dropout.coarse_dropout.CoarseDropout)           | ✓     | ✓     |        | ✓         |
  | [Crop](https://albumentations.ai/docs/api_reference/augmentations/crops/transforms/#albumentations.augmentations.crops.transforms.Crop)                                         | ✓     | ✓     | ✓      | ✓         |
  | [CropAndPad](https://albumentations.ai/docs/api_reference/augmentations/crops/transforms/#albumentations.augmentations.crops.transforms.CropAndPad)                             | ✓     | ✓     | ✓      | ✓         |
  | [CropNonEmptyMaskIfExists](https://albumentations.ai/docs/api_reference/augmentations/crops/transforms/#albumentations.augmentations.crops.transforms.CropNonEmptyMaskIfExists) | ✓     | ✓     | ✓      | ✓         |
  | [ElasticTransform](https://albumentations.ai/docs/api_reference/augmentations/geometric/transforms/#albumentations.augmentations.geometric.transforms.ElasticTransform)         | ✓     | ✓     | ✓      |           |
  | [Flip](https://albumentations.ai/docs/api_reference/augmentations/geometric/transforms/#albumentations.augmentations.geometric.transforms.Flip)                                 | ✓     | ✓     | ✓      | ✓         |
  | [GridDistortion](https://albumentations.ai/docs/api_reference/augmentations/geometric/transforms/#albumentations.augmentations.geometric.transforms.GridDistortion)             | ✓     | ✓     | ✓      |           |
  | [GridDropout](https://albumentations.ai/docs/api_reference/augmentations/dropout/grid_dropout/#albumentations.augmentations.dropout.grid_dropout.GridDropout)                   | ✓     | ✓     |        |           |
  | [HorizontalFlip](https://albumentations.ai/docs/api_reference/augmentations/geometric/transforms/#albumentations.augmentations.geometric.transforms.HorizontalFlip)             | ✓     | ✓     | ✓      | ✓         |
  | [Lambda](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.Lambda)                                                 | ✓     | ✓     | ✓      | ✓         |
  | [LongestMaxSize](https://albumentations.ai/docs/api_reference/augmentations/geometric/resize/#albumentations.augmentations.geometric.resize.LongestMaxSize)                     | ✓     | ✓     | ✓      | ✓         |
  | [MaskDropout](https://albumentations.ai/docs/api_reference/augmentations/dropout/mask_dropout/#albumentations.augmentations.dropout.mask_dropout.MaskDropout)                   | ✓     | ✓     |        |           |
  | [NoOp](https://albumentations.ai/docs/api_reference/core/transforms_interface/#albumentations.core.transforms_interface.NoOp)                                                   | ✓     | ✓     | ✓      | ✓         |
  | [OpticalDistortion](https://albumentations.ai/docs/api_reference/augmentations/geometric/transforms/#albumentations.augmentations.geometric.transforms.OpticalDistortion)       | ✓     | ✓     | ✓      |           |
  | [PadIfNeeded](https://albumentations.ai/docs/api_reference/augmentations/geometric/transforms/#albumentations.augmentations.geometric.transforms.PadIfNeeded)                   | ✓     | ✓     | ✓      | ✓         |
  | [Perspective](https://albumentations.ai/docs/api_reference/augmentations/geometric/transforms/#albumentations.augmentations.geometric.transforms.Perspective)                   | ✓     | ✓     | ✓      | ✓         |
  | [PiecewiseAffine](https://albumentations.ai/docs/api_reference/augmentations/geometric/transforms/#albumentations.augmentations.geometric.transforms.PiecewiseAffine)           | ✓     | ✓     | ✓      | ✓         |
  | [PixelDropout](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.PixelDropout)                                     | ✓     | ✓     | ✓      | ✓         |
  | [RandomCrop](https://albumentations.ai/docs/api_reference/augmentations/crops/transforms/#albumentations.augmentations.crops.transforms.RandomCrop)                             | ✓     | ✓     | ✓      | ✓         |
  | [RandomCropFromBorders](https://albumentations.ai/docs/api_reference/augmentations/crops/transforms/#albumentations.augmentations.crops.transforms.RandomCropFromBorders)       | ✓     | ✓     | ✓      | ✓         |
  | [RandomCropNearBBox](https://albumentations.ai/docs/api_reference/augmentations/crops/transforms/#albumentations.augmentations.crops.transforms.RandomCropNearBBox)             | ✓     | ✓     | ✓      | ✓         |
  | [RandomGridShuffle](https://albumentations.ai/docs/api_reference/augmentations/transforms/#albumentations.augmentations.transforms.RandomGridShuffle)                           | ✓     | ✓     |        | ✓         |
  | [RandomResizedCrop](https://albumentations.ai/docs/api_reference/augmentations/crops/transforms/#albumentations.augmentations.crops.transforms.RandomResizedCrop)               | ✓     | ✓     | ✓      | ✓         |
  | [RandomRotate90](https://albumentations.ai/docs/api_reference/augmentations/geometric/rotate/#albumentations.augmentations.geometric.rotate.RandomRotate90)                     | ✓     | ✓     | ✓      | ✓         |
  | [RandomScale](https://albumentations.ai/docs/api_reference/augmentations/geometric/resize/#albumentations.augmentations.geometric.resize.RandomScale)                           | ✓     | ✓     | ✓      | ✓         |
  | [RandomSizedBBoxSafeCrop](https://albumentations.ai/docs/api_reference/augmentations/crops/transforms/#albumentations.augmentations.crops.transforms.RandomSizedBBoxSafeCrop)   | ✓     | ✓     | ✓      |           |
  | [RandomSizedCrop](https://albumentations.ai/docs/api_reference/augmentations/crops/transforms/#albumentations.augmentations.crops.transforms.RandomSizedCrop)                   | ✓     | ✓     | ✓      | ✓         |
  | [Resize](https://albumentations.ai/docs/api_reference/augmentations/geometric/resize/#albumentations.augmentations.geometric.resize.Resize)                                     | ✓     | ✓     | ✓      | ✓         |
  | [Rotate](https://albumentations.ai/docs/api_reference/augmentations/geometric/rotate/#albumentations.augmentations.geometric.rotate.Rotate)                                     | ✓     | ✓     | ✓      | ✓         |
  | [SafeRotate](https://albumentations.ai/docs/api_reference/augmentations/geometric/rotate/#albumentations.augmentations.geometric.rotate.SafeRotate)                             | ✓     | ✓     | ✓      | ✓         |
  | [ShiftScaleRotate](https://albumentations.ai/docs/api_reference/augmentations/geometric/transforms/#albumentations.augmentations.geometric.transforms.ShiftScaleRotate)         | ✓     | ✓     | ✓      | ✓         |
  | [SmallestMaxSize](https://albumentations.ai/docs/api_reference/augmentations/geometric/resize/#albumentations.augmentations.geometric.resize.SmallestMaxSize)                   | ✓     | ✓     | ✓      | ✓         |
  | [Transpose](https://albumentations.ai/docs/api_reference/augmentations/geometric/transforms/#albumentations.augmentations.geometric.transforms.Transpose)                       | ✓     | ✓     | ✓      | ✓         |
  | [VerticalFlip](https://albumentations.ai/docs/api_reference/augmentations/geometric/transforms/#albumentations.augmentations.geometric.transforms.VerticalFlip)                 | ✓     | ✓     | ✓      | ✓         |




  ![inria](https://habrastorage.org/webt/su/wa/np/suwanpeo6ww7wpwtobtrzd_cg20.jpeg)


  ![medical](https://habrastorage.org/webt/1i/fi/wz/1ifiwzy0lxetc4nwjvss-71nkw0.jpeg)


  ![vistas](https://habrastorage.org/webt/rz/-h/3j/rz-h3jalbxic8o_fhucxysts4tc.jpeg)


  <img src="https://habrastorage.org/webt/e-/6k/z-/e-6kz-fugp2heak3jzns3bc-r8o.jpeg" width=100%>



  To run the benchmark yourself, follow the instructions in [benchmark/README.md](https://github.com/albumentations-team/albumentations/blob/master/benchmark/README.md)

  Results for running the benchmark on the first 2000 images from the ImageNet validation set using an Intel(R) Xeon(R) Gold 6140 CPU.
  All outputs are converted to a contiguous NumPy array with the np.uint8 data type.
  The table shows how many images per second can be processed on a single core; higher is better.


  |                      |albumentations<br><small>1.1.0</small>|imgaug<br><small>0.4.0</small>|torchvision (Pillow-SIMD backend)<br><small>0.10.1</small>|keras<br><small>2.6.0</small>|augmentor<br><small>0.2.8</small>|solt<br><small>0.1.9</small>|
  |----------------------|:------------------------------------:|:----------------------------:|:--------------------------------------------------------:|:---------------------------:|:-------------------------------:|:--------------------------:|
  |HorizontalFlip        |              **10220**               |             2702             |                           2517                           |             876             |              2528               |            6798            |
  |VerticalFlip          |               **4438**               |             2141             |                           2151                           |            4381             |              2155               |            3659            |
  |Rotate                |               **389**                |             283              |                           165                            |             28              |               60                |            367             |
  |ShiftScaleRotate      |               **669**                |             425              |                           146                            |             29              |                -                |             -              |
  |Brightness            |               **2765**               |             1124             |                           411                            |             229             |               408               |            2335            |
  |Contrast              |               **2767**               |             1137             |                           349                            |              -              |               346               |            2341            |
  |BrightnessContrast    |               **2746**               |             629              |                           190                            |              -              |               189               |            1196            |
  |ShiftRGB              |               **2758**               |             1093             |                            -                             |             360             |                -                |             -              |
  |ShiftHSV              |               **598**                |             259              |                            59                            |              -              |                -                |            144             |
  |Gamma                 |               **2849**               |              -               |                           388                            |              -              |                -                |            933             |
  |Grayscale             |               **5219**               |             393              |                           723                            |              -              |              1082               |            1309            |
  |RandomCrop64          |              **163550**              |             2562             |                          50159                           |              -              |              42842              |           22260            |
  |PadToSize512          |               **3609**               |              -               |                           602                            |              -              |                -                |            3097            |
  |Resize512             |                 1049                 |             611              |                         **1066**                         |              -              |              1041               |            1017            |
  |RandomSizedCrop_64_512|               **3224**               |             858              |                           1660                           |              -              |              1598               |            2675            |
  |Posterize             |               **2789**               |              -               |                            -                             |              -              |                -                |             -              |
  |Solarize              |               **2761**               |              -               |                            -                             |              -              |                -                |             -              |
  |Equalize              |                 647                  |             385              |                            -                             |              -              |             **765**             |             -              |
  |Multiply              |               **2659**               |             1129             |                            -                             |              -              |                -                |             -              |
  |MultiplyElementwise   |                 111                  |           **200**            |                            -                             |              -              |                -                |             -              |
  |ColorJitter           |               **351**                |              78              |                            57                            |              -              |                -                |             -              |

  Python and library versions: Python 3.9.5 (default, Jun 23 2021, 15:01:51) [GCC 8.3.0], numpy 1.19.5, pillow-simd 7.0.0.post3, opencv-python 4.5.3.56, scikit-image 0.18.3, scipy 1.7.1.



  To create a pull request to the repository, follow the documentation at [https://albumentations.ai/docs/contributing/](https://albumentations.ai/docs/contributing/)



  In some systems, in the multiple GPU regime, PyTorch may deadlock the DataLoader if OpenCV was compiled with OpenCL optimizations. Adding the following two lines before the library import may help. For more details [https://github.com/pytorch/pytorch/issues/1355](https://github.com/pytorch/pytorch/issues/1355)

  ```python
  cv2.setNumThreads(0)
  cv2.ocl.setUseOpenCL(False)
  ```



  If you find this library useful for your research, please consider citing [Albumentations: Fast and Flexible Image Augmentations](https://www.mdpi.com/2078-2489/11/2/125):

  ```bibtex
  @Article{info11020125,
      AUTHOR = {Buslaev, Alexander and Iglovikov, Vladimir I. and Khvedchenya, Eugene and Parinov, Alex and Druzhinin, Mikhail and Kalinin, Alexandr A.},
      TITLE = {Albumentations: Fast and Flexible Image Augmentations},
      JOURNAL = {Information},
      VOLUME = {11},
      YEAR = {2020},
      NUMBER = {2},
      ARTICLE-NUMBER = {125},
      URL = {https://www.mdpi.com/2078-2489/11/2/125},
      ISSN = {2078-2489},
      DOI = {10.3390/info11020125}
  }
  ```


pkgId: 791594220c838b8cf9c9acad03c013e8b0636722d3317cc02aff1836d8125784
name: python-alembic
arch: src
version: 1.10.3
epoch: 0
release: 1
summary: A database migration tool for SQLAlchemy.
url: https://alembic.sqlalchemy.org
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-fe5e3938-9461-4efb-b28a-45991da5a3bd
location_href: 00008985-python-alembic/python-alembic-1.10.3-1.src.rpm
checksum_type: sha256
description:
  Alembic is part of the `SQLAlchemy Project <https://www.sqlalchemy.org>`_ and
  adheres to the same standards and conventions as the core project.
  Development / Bug reporting / Pull requests
  ___________________________________________
  Please refer to the
  `SQLAlchemy Community Guide <https://www.sqlalchemy.org/develop.html>`_ for
  guidelines on coding and participating in this project.
  Code of Conduct
  _______________
  Above all, SQLAlchemy places great emphasis on polite, thoughtful, and
  constructive communication between users and developers.
  Please see our current Code of Conduct at
  `Code of Conduct <https://www.sqlalchemy.org/codeofconduct.html>`_.


pkgId: f523eae3f4a99cdd9e087113c9e2066465685d20537942e95015b22d42462cb1
name: python-algoliasearch
arch: src
version: 3.0.0
epoch: 0
release: 1
summary: Algolia Search API Client for Python.
url: https://github.com/algolia/algoliasearch-client-python
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-15a16a7b-a589-4e62-bfda-16b2e031b547
location_href: 00011221-python-algoliasearch/python-algoliasearch-3.0.0-1.src.rpm
checksum_type: sha256
description:
  <p align="center">
    <a href="https://www.algolia.com">
      <img alt="Algolia for Python" src="https://raw.githubusercontent.com/algolia/algoliasearch-client-common/master/banners/python.png" >
    </a>

    <h4 align="center">The perfect starting point to integrate <a href="https://algolia.com" target="_blank">Algolia</a> within your Python project</h4>

    <p align="center">
      <a href="https://pypi.org/project/algoliasearch"><img src="https://img.shields.io/pypi/v/algoliasearch.svg" alt="PyPI"></img></a>
      <a href="https://pypi.org/project/algoliasearch"><img src="https://img.shields.io/pypi/pyversions/ansicolortags.svg" alt="Python versions"></img></a>
      <a href="https://pypi.org/project/algoliasearch"><img src="https://img.shields.io/pypi/l/ansicolortags.svg" alt="License"></a>
    </p>
  </p>

  <p align="center">
    <a href="https://www.algolia.com/doc/api-client/getting-started/install/python/" target="_blank">Documentation</a>  •
    <a href="https://github.com/algolia/algoliasearch-django" target="_blank">Django</a>  •
    <a href="https://discourse.algolia.com" target="_blank">Community Forum</a>  •
    <a href="http://stackoverflow.com/questions/tagged/algolia" target="_blank">Stack Overflow</a>  •
    <a href="https://github.com/algolia/algoliasearch-client-python/issues" target="_blank">Report a bug</a>  •
    <a href="https://www.algolia.com/doc/api-client/troubleshooting/faq/python/" target="_blank">FAQ</a>  •
    <a href="https://www.algolia.com/support" target="_blank">Support</a>
  </p>



  - Thin & minimal low-level HTTP client to interact with Algolia's API
  - Supports Python from `3.4` to `3.11`
  - Contains blazing-fast asynchronous methods built on top of the [Asyncio](https://docs.python.org/3/library/asyncio.html)



  First, install Algolia Python API Client via the [pip](https://pip.pypa.io/en/stable/installing) package manager:

  ```bash
  pip install --upgrade 'algoliasearch>=3.0,<4.0'
  ```

  Then, create objects on your index:

  ```py
  from algoliasearch.search_client import SearchClient

  client = SearchClient.create('YourApplicationID', 'YourAPIKey')
  index = client.init_index('your_index_name')

  index.save_objects([{'objectID': 1, 'name': 'Foo'}])
  ```

  Finally, you may begin searching a object using the `search` method:

  ```py
  objects = index.search('Fo')
  ```

  For full documentation, visit the **[Algolia Python API Client](https://www.algolia.com/doc/api-client/getting-started/install/python/)**.



  Encountering an issue? Before reaching out to support, we recommend heading to our [FAQ](https://www.algolia.com/doc/api-client/troubleshooting/faq/python/) where you will find answers for the most common issues and gotchas with the client.



  If you want to contribute to this project without installing all its dependencies, you can use our Docker image. Please check our [dedicated guide](DOCKER_README.MD) to learn more.



  Algolia Python API Client is an open-sourced software licensed under the [MIT license](LICENSE.md).


pkgId: 106b29c0cf25aa7ec2ff204f9c1558dea2bb3a50fb47a75a18b2c11bf89c5f57
name: python-aliyun-python-sdk-core-v3-help
arch: noarch
version: 2.13.33
epoch: 0
release: 1
summary: Development documents and examples for aliyun-python-sdk-core-v3
url: https://github.com/aliyun/aliyun-openapi-python-sdk
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-83828370-8df3-4f1e-809d-a153afceb0c7
rpm_sourcerpm: python-aliyun-python-sdk-core-v3-2.13.33-1.src.rpm
checksum_type: sha256
location_href:
  00013571-python-aliyun-python-sdk-core-v3/python-aliyun-python-sdk-core-v3-help-2.13.33-1.noarch.rpm


pkgId: 5cfea0adbe036e485590947f0822d4daf6e791ca63e0daa85bd9771b8a566fe9
name: python-allure-behave
arch: src
version: 2.13.1
epoch: 0
release: 1
summary: Allure behave integration
url: https://github.com/allure-framework/allure-python
rpm_license: Apache-2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-9fcfd604-cd16-4ad2-aa0e-4549b15812b6
location_href: 00011928-python-allure-behave/python-allure-behave-2.13.1-1.src.rpm
checksum_type: sha256
description:
  - `Source <https://github.com/allure-framework/allure-python>`_
  - `Documentation <https://docs.qameta.io/allure-report>`_
  - `Gitter <https://gitter.im/allure-framework/allure-core>`_


pkgId: 64c7c26f5bc26d4e7221bcf55fc5c6e450e458ec83b54e45a0ce60fbfc1c098f
name: python-allure-pytest
arch: src
version: 2.13.1
epoch: 0
release: 1
summary: Allure pytest integration
url: https://github.com/allure-framework/allure-python
rpm_license: Apache-2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-285b73b8-0dde-48b4-aff6-f0e07ed63d36
location_href: 00009993-python-allure-pytest/python-allure-pytest-2.13.1-1.src.rpm
checksum_type: sha256
description:
  - `Source <https://github.com/allure-framework/allure-python>`_
  - `Documentation <https://docs.qameta.io/allure-report/>`_
  - `Gitter <https://gitter.im/allure-framework/allure-core>`_


pkgId: 554558dbb9fcb1fa42ac9e15957167cdc536539fcf0be52579dcdea14ff08409
name: python-altair
arch: src
version: 4.2.2
epoch: 0
release: 1
summary: Altair: A declarative statistical visualization library for Python.
url: http://altair-viz.github.io
rpm_license: BSD 3-clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-993a485c-460d-4f07-9a23-86bad70e46c7
location_href: 00009222-python-altair/python-altair-4.2.2-1.src.rpm
checksum_type: sha256
description:
  [![build status](https://img.shields.io/travis/altair-viz/altair/master.svg?style=flat)](https://travis-ci.org/altair-viz/altair)
  [![github actions](https://github.com/altair-viz/altair/workflows/build/badge.svg)](https://github.com/altair-viz/altair/actions?query=workflow%3Abuild)
  [![code style black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
  [![JOSS Paper](https://joss.theoj.org/papers/10.21105/joss.01057/status.svg)](https://joss.theoj.org/papers/10.21105/joss.01057)
  [![PyPI - Downloads](https://img.shields.io/pypi/dm/altair)](https://pypi.org/project/altair)
  [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/altair-viz/altair_notebooks/master?urlpath=lab/tree/notebooks/Index.ipynb)
  [![Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/altair-viz/altair_notebooks/blob/master/notebooks/Index.ipynb)

  [https://altair-viz.github.io](https://altair-viz.github.io)

  **Altair** is a declarative statistical visualization library for Python. With Altair, you can spend more time understanding your data and its meaning. Altair's
  API is simple, friendly and consistent and built on top of the powerful
  [Vega-Lite](https://github.com/vega/vega-lite) JSON specification. This elegant
  simplicity produces beautiful and effective visualizations with a minimal amount of code. *Altair is developed by [Jake Vanderplas](https://github.com/jakevdp) and [Brian
  Granger](https://github.com/ellisonbg) in close collaboration with the [UW
  Interactive Data Lab](https://idl.cs.washington.edu/).*



  See [Altair's Documentation Site](https://altair-viz.github.io),
  as well as Altair's [Tutorial Notebooks](https://github.com/altair-viz/altair_notebooks).



  Here is an example using Altair to quickly visualize and display a dataset with the native Vega-Lite renderer in the JupyterLab:

  ```python
  import altair as alt


  from vega_datasets import data
  cars = data.cars()

  alt.Chart(cars).mark_point().encode(
      x='Horsepower',
      y='Miles_per_Gallon',
      color='Origin',
  )
  ```

  ![Altair Visualization](https://raw.githubusercontent.com/altair-viz/altair/master/images/cars.png)

  One of the unique features of Altair, inherited from Vega-Lite, is a declarative grammar of not just visualization, but _interaction_.
  With a few modifications to the example above we can create a linked histogram that is filtered based on a selection of the scatter plot.

  ```python
  import altair as alt
  from vega_datasets import data

  source = data.cars()

  brush = alt.selection(type='interval')

  points = alt.Chart(source).mark_point().encode(
      x='Horsepower',
      y='Miles_per_Gallon',
      color=alt.condition(brush, 'Origin', alt.value('lightgray'))
  ).add_selection(
      brush
  )

  bars = alt.Chart(source).mark_bar().encode(
      y='Origin',
      color='Origin',
      x='count(Origin)'
  ).transform_filter(
      brush
  )

  points & bars
  ```

  ![Altair Visualization Gif](https://raw.githubusercontent.com/altair-viz/altair/master/images/cars_scatter_bar.gif)




  If you have a question that is not addressed in the documentation, there are several ways to ask:

  - open a [Github Issue](https://github.com/altair-viz/altair/issues)
  - post a [StackOverflow Question](https://stackoverflow.com/questions/tagged/altair) (be sure to use the `altair` tag)
  - ask on the [Altair Google Group](https://groups.google.com/forum/#!forum/altair-viz)

  We'll do our best to get your question answered



  Altair provides a Python API for building statistical visualizations in a declarative
  manner. By statistical visualization we mean:

  * The **data source** is a `DataFrame` that consists of columns of different data types (quantitative, ordinal, nominal and date/time).
  * The `DataFrame` is in a [tidy format](https://vita.had.co.nz/papers/tidy-data.pdf)
    where the rows correspond to samples and the columns correspond to the observed variables.
  * The data is mapped to the **visual properties** (position, color, size, shape,
    faceting, etc.) using the group-by data transformation.

  The Altair API contains no actual visualization rendering code but instead
  emits JSON data structures following the
  [Vega-Lite](https://github.com/vega/vega-lite) specification. The resulting
  Vega-Lite JSON data can be rendered in the following user-interfaces:

  * [Jupyter Notebook](https://github.com/jupyter/notebook) (by installing [ipyvega](https://github.com/vega/ipyvega)).
  * [JupyterLab](https://github.com/jupyterlab/jupyterlab) (no additional dependencies needed).
  * [nteract](https://github.com/nteract/nteract) (no additional dependencies needed).



  * Carefully-designed, declarative Python API based on
    [traitlets](https://github.com/ipython/traitlets).
  * Auto-generated internal Python API that guarantees visualizations are type-checked and
    in full conformance with the [Vega-Lite](https://github.com/vega/vega-lite)
    specification.
  * Auto-generate Altair Python code from a Vega-Lite JSON spec.
  * Display visualizations in the live Jupyter Notebook, JupyterLab, nteract, on GitHub and
    [nbviewer](https://nbviewer.jupyter.org/).
  * Export visualizations to PNG/SVG images, stand-alone HTML pages and the
  [Online Vega-Lite Editor](https://vega.github.io/editor/#/).
  * Serialize visualizations as JSON files.
  * Explore Altair with dozens of examples in the [Example Gallery](https://altair-viz.github.io/gallery/index.html)



  To use Altair for visualization, you need to install two sets of tools

  1. The core Altair Package and its dependencies

  2. The renderer for the frontend you wish to use (i.e. `Jupyter Notebook`,
     `JupyterLab`, or `nteract`)

  Altair can be installed with either ``pip`` or with ``conda``.
  For full installation instructions, please see
  https://altair-viz.github.io/getting_started/installation.html



  We maintain a separate Github repository of Jupyter Notebooks that contain an
  interactive tutorial and examples:

  https://github.com/altair-viz/altair_notebooks

  To launch a live notebook server with those notebook using [binder](https://mybinder.org/) or
  [Colab](https://colab.research.google.com), click on one of the following badges:

  [![Binder](https://beta.mybinder.org/badge.svg)](https://beta.mybinder.org/v2/gh/altair-viz/altair_notebooks/master)
  [![Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/altair-viz/altair_notebooks/blob/master/notebooks/Index.ipynb)



  Many excellent plotting libraries exist in Python, including the main ones:

  * [Matplotlib](https://matplotlib.org/)
  * [Bokeh](https://bokeh.pydata.org/en/latest/)
  * [Seaborn](https://seaborn.pydata.org/)
  * [Lightning](https://github.com/lightning-viz/lightning)
  * [Plotly](https://plot.ly/)
  * [Pandas built-in plotting](https://pandas.pydata.org/pandas-docs/stable/visualization.html)
  * [HoloViews](https://holoviews.org)
  * [VisPy](https://vispy.org/)
  * [pygg](https://www.github.com/sirrice/pygg)

  Each library does a particular set of things well.



  However, such a proliferation of options creates great difficulty for users
  as they have to wade through all of these APIs to find which of them is the
  best for the task at hand. None of these libraries are optimized for
  high-level statistical visualization, so users have to assemble their own
  using a mishmash of APIs. For individuals just learning data science, this
  forces them to focus on learning APIs rather than exploring their data.

  Another challenge is current plotting APIs require the user to write code,
  even for incidental details of a visualization. This results in an unfortunate
  and unnecessary cognitive burden as the visualization type (histogram,
  scatterplot, etc.) can often be inferred using basic information such as the
  columns of interest and the data types of those columns.

  For example, if you are interested in the visualization of two numerical
  columns, a scatterplot is almost certainly a good starting point. If you add
  a categorical column to that, you probably want to encode that column using
  colors or facets. If inferring the visualization proves difficult at times, a
  simple user interface can construct a visualization without any coding.
  [Tableau](https://www.tableau.com/) and the [Interactive Data
  Lab's](https://idl.cs.washington.edu/)
  [Polestar](https://github.com/vega/polestar) and
  [Voyager](https://github.com/vega/voyager) are excellent examples of such UIs.



  We believe that these challenges can be addressed without the creation of yet
  another visualization library that has a programmatic API and built-in
  rendering. Altair's approach to building visualizations uses a layered design
  that leverages the full capabilities of existing visualization libraries:

  1. Create a constrained, simple Python API (Altair) that is purely declarative
  2. Use the API (Altair) to emit JSON output that follows the Vega-Lite spec
  3. Render that spec using existing visualization libraries

  This approach enables users to perform exploratory visualizations with a much
  simpler API initially, pick an appropriate renderer for their usage case, and
  then leverage the full capabilities of that renderer for more advanced plot
  customization.

  We realize that a declarative API will necessarily be limited compared to the
  full programmatic APIs of Matplotlib, Bokeh, etc. That is a deliberate design
  choice we feel is needed to simplify the user experience of exploratory
  visualization.



  Altair requires the following dependencies:

  * [pandas](https://pandas.pydata.org/)
  * [traitlets](https://github.com/ipython/traitlets)
  * [IPython](https://github.com/ipython/ipython)

  If you have cloned the repository, run the following command from the root of the repository:

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

  If you do not wish to clone the repository, you can install using:

  ```
  pip install git+https://github.com/altair-viz/altair
  ```



  To run the test suite you must have [py.test](https://pytest.org/latest/) installed.
  To run the tests, use

  ```
  py.test --pyargs altair
  ```
  (you can omit the `--pyargs` flag if you are running the tests from a source checkout).



  See [`CONTRIBUTING.md`](https://github.com/altair-viz/altair/blob/master/CONTRIBUTING.md)



  [![JOSS Paper](https://joss.theoj.org/papers/10.21105/joss.01057/status.svg)](https://joss.theoj.org/papers/10.21105/joss.01057)

  If you use Altair in academic work, please consider citing https://joss.theoj.org/papers/10.21105/joss.01057 as

  ```bib
  @article{VanderPlas2018,
      doi = {10.21105/joss.01057},
      url = {https://doi.org/10.21105/joss.01057},
      year = {2018},
      publisher = {The Open Journal},
      volume = {3},
      number = {32},
      pages = {1057},
      author = {Jacob VanderPlas and Brian Granger and Jeffrey Heer and Dominik Moritz and Kanit Wongsuphasawat and Arvind Satyanarayan and Eitan Lees and Ilia Timofeev and Ben Welsh and Scott Sievert},
      title = {Altair: Interactive Statistical Visualizations for Python},
      journal = {Journal of Open Source Software}
  }
  ```
  Please additionally consider citing the [vega-lite](https://vega.github.io/vega-lite/) project, which Altair is based on: https://dl.acm.org/doi/10.1109/TVCG.2016.2599030
  ```bib
  @article{Satyanarayan2017,
      author={Satyanarayan, Arvind and Moritz, Dominik and Wongsuphasawat, Kanit and Heer, Jeffrey},
      title={Vega-Lite: A Grammar of Interactive Graphics},
      journal={IEEE transactions on visualization and computer graphics},
      year={2017},
      volume={23},
      number={1},
      pages={341-350},
      publisher={IEEE}
  }
  ```



  Altair is the [brightest star](https://en.wikipedia.org/wiki/Altair) in the constellation Aquila, and along with Deneb and Vega forms the northern-hemisphere asterism known as the [Summer Triangle](https://en.wikipedia.org/wiki/Summer_Triangle).


pkgId: da76ad918914dd7a8c7e9df00fcb9c537ee2d283f40ba35660cdddaac8ca0d6e
name: python-amico
arch: src
version: 1.0.1
epoch: 0
release: 1
summary: Relationships (e.g. friendships) backed by Redis.
url: https://github.com/agoragames/amico-python
rpm_license: LICENSE.txt
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-7a187ca1-ff28-4fae-b239-cd07dc023eea
location_href: 00003012-python-amico/python-amico-1.0.1-1.src.rpm
checksum_type: sha256
description:
  Relationships (e.g. friendships) backed by Redis. This is a port of the [amico gem](https://github.com/agoragames/amico).



  `pip install amico`

  Make sure your redis server is running! Redis configuration is outside the scope of this README, but
  check out the [Redis documentation](http://redis.io/documentation).



  Be sure to import the Amico library:

  ```python
  from amico import Amico
  ```

  Amico is configured with a number of defaults:

  ```python
  >>> Amico.DEFAULTS
  {'namespace': 'amico', 'pending_follow': False, 'reciprocated_key': 'reciprocated', 'followers_key': 'followers', 'pending_with_key': 'pending_with', 'following_key': 'following', 'page_size': 25, 'pending_key': 'pending', 'blocked_by_key': 'blocked_by', 'default_scope_key': 'default', 'blocked_key': 'blocked'}
  ```

  The initializer for Amico takes two optional parameters:

  * `options` : Dictionary of updated defaults
  * `redis_connection` : Connection to Redis

  ```python
  >>> amico = Amico(redis_connection = redis)
  ```

  ```python
  >>> amico.follow(1, 11)
  >>> amico.is_following(1, 11)
  True
  >>> amico.is_following(11, 1)
  False
  >>> amico.follow(11, 1)
  >>> amico.is_following(11, 1)
  True
  >>> amico.following_count(1)
  1
  >>> amico.followers_count(1)
  1
  >>> amico.unfollow(11, 1)
  >>> amico.following_count(11)
  0
  >>> amico.following_count(1)
  1
  >>> amico.is_follower(1, 11)
  False
  >>> amico.following(1)
  ['11']
  >>> amico.block(1, 11)
  >>> amico.is_following(11, 1)
  False
  >>> amico.is_blocked(1, 11)
  True
  >>> amico.is_blocked_by(11, 1)
  True
  >>> amico.unblock(1, 11)
  >>> amico.is_blocked(1, 11)
  False
  >>> amico.is_blocked_by(11, 1)
  False
  >>> amico.follow(11, 1)
  >>> amico.follow(1, 11)
  >>> amico.is_reciprocated(1, 11)
  True
  >>> amico.reciprocated(1)
  ['11']
  ```

  Use amico (with pending relationships for follow):

  ```python
  >>> amico = Amico(options = {'pending_follow': True}, redis_connection = redis)
  >>> amico.follow(1, 11)
  >>> amico.follow(11, 1)
  >>> amico.is_pending(1, 11)
  True
  >>> amico.is_pending_with(11, 1)
  True
  >>> amico.is_pending(11, 1)
  True
  >>> amico.is_pending_with(1, 11)
  True
  >>> amico.accept(1, 11)
  >>> amico.is_pending(1, 11)
  False
  >>> amico.is_pending_with(11, 1)
  False
  >>> amico.is_pending(11, 1)
  True
  >>> amico.is_pending_with(1, 11)
  True
  >>> amico.is_following(1, 11)
  True
  >>> amico.is_following(11, 1)
  False
  >>> amico.is_follower(11, 1)
  True
  >>> amico.is_follower(1, 11)
  False
  >>> amico.accept(11, 1)
  >>> amico.is_pending(1, 11)
  False
  >>> amico.is_pending_with(11, 1)
  False
  >>> amico.is_pending(11, 1)
  False
  >>> amico.is_pending_with(1, 11)
  False
  >>> amico.is_following(1, 11)
  True
  >>> amico.is_following(11, 1)
  True
  >>> amico.is_follower(11, 1)
  True
  >>> amico.is_follower(1, 11)
  True
  >>> amico.is_reciprocated(1, 11)
  True
  >>> amico.follow(1, 12)
  >>> amico.is_following(1, 12)
  False
  >>> amico.is_pending(1, 12)
  True
  >>> amico.deny(1, 12)
  >>> amico.is_following(1, 12)
  False
  >>> amico.is_pending(1, 12)
  False
  ```

  All of the calls support a `scope` parameter to allow you to scope the calls to express relationships for different types of things. For example:

  ```python
  >>> amico = Amico(options = {'default_scope_key': 'user'}, redis_connection = redis)
  >>> amico.follow(1, 11)
  >>> amico.is_following(1, 11)
  True
  >>> amico.is_following(1, 11, scope = 'user')
  True
  >>> amico.following(1)
  ['11']
  >>> amico.following(1, scope = 'user')
  ['11']
  >>> amico.is_following(1, 11, scope = 'project')
  False
  >>> amico.follow(1, 11, scope = 'project')
  >>> amico.is_following(1, 11, scope = 'project')
  True
  >>> amico.following(1, scope = 'project')
  ['11']
  ```

  You can retrieve all of a particular type of relationship using the `all(id, type, scope)` call. For example:

  ```python
  >>> amico.follow(1, 11)
  >>> amico.follow(1, 12)
  >>> amico.all(1, 'following')
  ['12', '11']
  ```

  `type` can be one of 'following', 'followers', 'blocked', 'blocked_by', reciprocated', 'pending' and 'pending_with'. Use this with caution as there may potentially be a large number of items that could be returned from this call.

  You can clear all relationships that have been set for an ID by calling `clear(id, scope)`. You may wish to do this if you allow records to be deleted and you wish to prevent orphaned IDs and inaccurate follower/following counts. Note that this clears *all* relationships in either direction - including blocked and pending. An example:

  ```python
  >>> amico.follow(11, 1)
  >>> amico.block(12, 1)
  >>> amico.following(11)
  ['1']
  >>> amico.blocked(12)
  ['1']
  >>> amico.clear(1)
  >>> amico.following(11)
  []
  >>> amico.blocked(12)
  []
  ```





  Based on the work I did in developing [leaderboard](https://github.com/agoragames/leaderboard),
  leaderboards backed by Redis, I know I wanted to be able to page through the various relationships.
  This does not seem to be possible given the current set of commands for Redis sets.

  Also, by using the "score" in Redis sorted sets that is based on the time of when a relationship
  is established, we can get our "recent friends". It is possible that the scoring function may be
  user-defined in the future to allow for some specific ordering.



  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
  * Fork the project
  * Start a feature/bugfix branch
  * Commit and push until you are happy with your contribution
  * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
  * Please try not to mess with the version or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.



  Copyright (c) 2013 David Czarnecki. See LICENSE.txt for further details.


pkgId: 53a54c5024196015809f108965d762095b203437a9b3284b31c5971239547365
name: python-amplpy
arch: src
version: 0.9.2
epoch: 0
release: 1
summary: Python API for AMPL
url: http://ampl.com/
rpm_license: BSD-3
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-89455792-d4fd-4bc2-a9d3-c9b48f02025d
location_href: 00013684-python-amplpy/python-amplpy-0.9.2-1.src.rpm
checksum_type: sha256
description:
  ```python

  $ python -m pip install amplpy --upgrade


  $ python -m amplpy.modules install highs cbc gurobi


  $ python -m amplpy.modules activate <license-uuid>


  $ python
  >>> from amplpy import AMPL
  >>> ampl = AMPL() # instantiate AMPL object
  ```

  [[Documentation](https://amplpy.readthedocs.io/)] [[AMPL Modules for Python](https://dev.ampl.com/ampl/python/modules.html)] [[Available on Google Colab](https://colab.ampl.com/)] [[AMPL Community Edition](http://ampl.com/ce)]

  `amplpy` is an interface that allows developers to access the features of [AMPL](https://ampl.com) from within Python. For a quick introduction to AMPL see [Quick Introduction to AMPL](https://dev.ampl.com/ampl/introduction.html).

  In the same way that AMPL’s syntax matches naturally the mathematical description of the model, the input and output data matches naturally Python lists, sets, dictionaries, `pandas` and `numpy` objects.

  All model generation and solver interaction is handled directly by AMPL, which leads to great stability and speed; the library just acts as an intermediary, and the added overhead (in terms of memory and CPU usage) depends mostly on how much data is sent and read back from AMPL, the size of the expanded model as such is irrelevant.

  With `amplpy` you can model and solve large scale optimization problems in Python with the performance of heavily optimized C code without losing model readability. The same model can be deployed on applications built on different languages by just switching the API used.



  - http://amplpy.readthedocs.io



  * GitHub Repository: https://github.com/ampl/amplpy
  * PyPI Repository: https://pypi.python.org/pypi/amplpy


pkgId: 8e58e7c50b7ab233e4129510c89e58553ae7584114d8dbb4a1ca27928966d822
name: python-amplpy-debuginfo
arch: x86_64
version: 0.9.2
epoch: 0
release: 1
summary: Debug information for package python-amplpy
url: http://ampl.com/
rpm_license: BSD-3
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-89455792-d4fd-4bc2-a9d3-c9b48f02025d
rpm_sourcerpm: python-amplpy-0.9.2-1.src.rpm
location_href: 00013684-python-amplpy/python-amplpy-debuginfo-0.9.2-1.x86_64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-amplpy.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: b477b7976cadae5cc513af359c7c10f36d2f5143d03bd8ef86be79a718aa5f9d
name: python-amplpy-debugsource
arch: x86_64
version: 0.9.2
epoch: 0
release: 1
summary: Debug sources for package python-amplpy
url: http://ampl.com/
rpm_license: BSD-3
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-89455792-d4fd-4bc2-a9d3-c9b48f02025d
rpm_sourcerpm: python-amplpy-0.9.2-1.src.rpm
location_href: 00013684-python-amplpy/python-amplpy-debugsource-0.9.2-1.x86_64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-amplpy.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: b9caaaa647ab416e290f79cc02ce536ad865e7fdb2a4b7c2642cdba60e883534
name: python-analytics-python
arch: src
version: 1.4.post1
epoch: 0
release: 1
summary: The hassle-free way to integrate analytics into any python application.
url: https://github.com/segmentio/analytics-python
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a6d7cd7a-9876-468b-ad05-91d716f30289
location_href: 00009891-python-analytics-python/python-analytics-python-1.4.post1-1.src.rpm
checksum_type: sha256
description:
  This library was renamed due to a naming conflict with an official python library.
  Please use the new listing at https://pypi.org/project/segment-analytics-python/

  Segment is the simplest way to integrate analytics into your application.
  One API allows you to turn on any other analytics service. No more learning
  new APIs, repeated code, and wasted development time.

  This is the official python client that wraps the Segment REST API (https://segment.com).

  Documentation and more details at https://github.com/segmentio/analytics-python


pkgId: b809493d70e9e4f64e9ab83fd718a471921cc7bd1118c24fb5a6018979cee7ed
name: python-androguard
arch: src
version: 3.3.5
epoch: 0
release: 1
summary: Androguard is a full python tool to play with Android files.
url: https://github.com/androguard/androguard
rpm_license: Apache Licence, Version 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-d3b3818e-e6dc-466d-81fc-90b1493ed5ff
location_href: 00011610-python-androguard/python-androguard-3.3.5-1.src.rpm
checksum_type: sha256
description:
  Androguard is a tool and python library to interact with Android Files.

  Usually they come in the form of Android Packages (APK) or Dalvik Executeable (DEX) files.
  Androguard has tools to read Android's binary format for XML files (AXML) and is also suited with a decompiler for DEX.

  Androguard might not only be used as a tool for reverse engineering single applications, but features a lot of functions
  for automated analysis. It provides a pure python framework to build your own analysis tools.

  If you encounter bugs while using androguard, please feel free to report them in our bugtracker_.

  .. _bugtracker: https://github.com/androguard/androguard/issues


pkgId: 90bae9dfa902e042bab43f13d2431665b69cfe8b5f4f7bc85526213f3824a0fd
name: python-angr
arch: src
version: 9.2.40
epoch: 0
release: 1
url: https://github.com/angr/angr
rpm_license: BSD-2-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-96bfa4d1-b70f-42d4-94ec-f92cd88f6d8f
location_href: 00003015-python-angr/python-angr-9.2.40-1.src.rpm
checksum_type: sha256
summary:
  A multi-architecture binary analysis toolkit, with the ability to perform dynamic symbolic execution and various static analyses on binaries

description:
  [![Latest Release](https://img.shields.io/pypi/v/angr.svg)](https://pypi.python.org/pypi/angr/)
  [![PyPI Statistics](https://img.shields.io/pypi/dm/angr.svg)](https://pypistats.org/packages/angr)
  [![Build Status](https://github.com/angr/angr/actions/workflows/.github/workflows/ci.yml/badge.svg)](https://github.com/angr/angr/actions/workflows/.github/workflows/ci.yml/badge.svg)
  [![License](https://img.shields.io/github/license/angr/angr.svg)](https://github.com/angr/angr/blob/master/LICENSE)
  [![Gitbook](https://img.shields.io/badge/docs-gitbook-green.svg)](https://docs.angr.io)
  [![API Docs](https://img.shields.io/badge/docs-api-green.svg)](https://angr.io/api-doc)
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
  [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)
  angr is a platform-agnostic binary analysis framework.
  It is brought to you by [the Computer Security Lab at UC Santa Barbara](https://seclab.cs.ucsb.edu), [SEFCOM at Arizona State University](https://sefcom.asu.edu),  their associated CTF team, [Shellphish](https://shellphish.net), the open source community, and **[@rhelmot](https://github.com/rhelmot)**.

  angr is a suite of Python 3 libraries that let you load a binary and do a lot of cool things to it:
  - Disassembly and intermediate-representation lifting
  - Program instrumentation
  - Symbolic execution
  - Control-flow analysis
  - Data-dependency analysis
  - Value-set analysis (VSA)
  - Decompilation
  The most common angr operation is loading a binary: `p = angr.Project('/bin/bash')` If you do this in an enhanced REPL like IPython, you can use tab-autocomplete to browse the [top-level-accessible methods](https://docs.angr.io/docs/toplevel) and their docstrings.
  The short version of "how to install angr" is `mkvirtualenv --python=$(which python3) angr && python -m pip install angr`.

  angr does a lot of binary analysis stuff.
  To get you started, here's a simple example of using symbolic execution to get a flag in a CTF challenge.
  ```python
  import angr
  project = angr.Project("angr-doc/examples/defcamp_r100/r100", auto_load_libs=False)
  @project.hook(0x400844)
  def print_flag(state):
      print("FLAG SHOULD BE:", state.posix.dumps(0))
      project.terminate_execution()
  project.execute()
  ```

  - [Install Instructions](https://docs.angr.io/introductory-errata/install)
  - Documentation as [HTML](https://docs.angr.io/) and as a [Github repository](https://github.com/angr/angr-doc)
  - Dive right in: [top-level-accessible methods](https://docs.angr.io/core-concepts/toplevel)
  - [Examples using angr to solve CTF challenges](https://docs.angr.io/examples).
  - [API Reference](https://angr.io/api-doc/)
  - [awesome-angr repo](https://github.com/degrigis/awesome-angr)


pkgId: 5566e6b4c5489efc331578e991367a15ca31addbcd9a5226d92bbc223d2bfc70
name: python-animatplot
arch: src
version: 0.4.2
epoch: 0
release: 1
summary: Making animating in matplotlib easy
url: https://github.com/t-makaro/animatplot/
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8e502602-6f33-461c-adb4-60ce0c695f6a
location_href: 00003016-python-animatplot/python-animatplot-0.4.2-1.src.rpm
checksum_type: sha256
description:
  [![Documentation Status](https://readthedocs.org/projects/animatplot/badge/?version=latest)](https://animatplot.readthedocs.io/en/latest/?badge=latest)


  A python package for making interactive as well as animated plots with matplotlib.

  ![image](docs/source/tutorial/images/multiblock.gif)
  ![image](docs/source/_static/animatplot-mouse.gif)


  - Python >= 3.5
  - Matplotlib >= 2.2 (because [sliders have discrete values](https://matplotlib.org/users/whats_new.html#slider-ui-widget-can-snap-to-discrete-values))

  ```bash
  pip install animatplot
  ```

  or using conda
  ```bash
  conda install animatplot -c conda-forge
  ```


  Documentation can be found [here](https://animatplot.readthedocs.io/en/latest/index.html)


  ```bash
  git clone https://github.com/t-makaro/animatplot.git
  pip install -e .
  ```
  This project uses ```pycodestyle``` for linting. For testing, ```pytest``` is used.


pkgId: b36a14fb5bdf30a6c0ba7dce81f39c993b2188f944bc7e7ce01c4174236b6d21
name: python-ansi2html
arch: src
version: 1.8.0
epoch: 0
release: 1
summary: please add a summary manually as the author left a blank one
url: https://github.com/pycontribs/ansi2html
rpm_license: GNU Lesser General Public License v3 or later (LGPLv3+)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-70faf0a1-427e-4bfe-99b8-0e535835805b
location_href: 00003019-python-ansi2html/python-ansi2html-1.8.0-1.src.rpm
checksum_type: sha256
description:
  Convert text with ANSI color codes to HTML or to LaTeX.
  Inspired by and developed off of the work of `pixelbeat`_ and `blackjack`_.
  `Read the docs <https://ansi2html.readthedocs.io/>`_ for more informations.


pkgId: b4fbc708386ef4030423090b969258940a0608cf628d5d14d828dabca06c7f05
name: python-ansible-core
arch: src
version: 2.14.4
epoch: 0
release: 1
summary: Radically simple IT automation
url: https://ansible.com/
rpm_license: GPLv3+
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-d7273066-c0f9-4118-bba8-03001b523888
location_href: 00009492-python-ansible-core/python-ansible-core-2.14.4-1.src.rpm
checksum_type: sha256
description:
  *  Have an extremely simple setup process with a minimal learning curve.
  *  Manage machines quickly and in parallel.
  *  Avoid custom-agents and additional open ports, be agentless by
     leveraging the existing SSH daemon.
  *  Describe infrastructure in a language that is both machine and human
     friendly.
  *  Focus on security and easy auditability/review/rewriting of content.
  *  Manage new remote machines instantly, without bootstrapping any
     software.
  *  Allow module development in any dynamic language, not just Python.
  *  Be usable as non-root.
  *  Be the easiest IT automation system to use, ever.


pkgId: adc0f9d59c061a1a1e9b84d31adf1ac8b9c7c5ca0e2f1c2222d18bfcd6c1f620
name: python-ansible-tower-cli
arch: src
version: 3.3.9
epoch: 0
release: 1
summary: A CLI tool for Ansible Tower and AWX.
url: https://github.com/ansible/tower-cli
rpm_license: Apache 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a1dd6bcd-c86f-41e9-a674-ebe3e1962e16
location_href: 00010094-python-ansible-tower-cli/python-ansible-tower-cli-3.3.9-1.src.rpm
checksum_type: sha256
description:
  **tower-cli** is a legacy command line tool for Ansible Tower.
  It is also what the Ansible `tower_*` modules use under the hood. Such as:
  https://docs.ansible.com/ansible/latest/modules/tower_organization_module.html
  These modules are now vendored as part of the AWX collection at:
  https://galaxy.ansible.com/awx/awx
  Supporting correct operation of the modules is the maintenance aim of this
  package.
  Anyone developing new tooling around AWX or Ansible Tower via a Unix command
  line is suggested to use the new CLI.
  https://github.com/ansible/awx/tree/devel/awxkit/awxkit/cli/docs


pkgId: b10a26956b24e912bda2edc0b5f359c044febaef9f4ae89cf5bfb8b9200109e5
name: python-ansiwrap
arch: src
version: 0.8.4
epoch: 0
release: 1
summary: textwrap, but savvy to ANSI colors and styles
url: https://github.com/jonathaneunice/ansiwrap
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-da5c5a11-4b45-40e6-94d7-3b6d43c9b9b4
location_href: 00003025-python-ansiwrap/python-ansiwrap-0.8.4-1.src.rpm
checksum_type: sha256
description:
  | |travisci| |version| |versions| |impls| |wheel| |coverage|

  .. |travisci| image:: https://api.travis-ci.org/jonathaneunice/ansiwrap.svg
      :target: http://travis-ci.org/jonathaneunice/ansiwrap

  .. |version| image:: http://img.shields.io/pypi/v/ansiwrap.svg?style=flat
      :alt: PyPI Package latest release
      :target: https://pypi.python.org/pypi/ansiwrap

  .. |versions| image:: https://img.shields.io/pypi/pyversions/ansiwrap.svg
      :alt: Supported versions
      :target: https://pypi.python.org/pypi/ansiwrap

  .. |impls| image:: https://img.shields.io/pypi/implementation/ansiwrap.svg
      :alt: Supported implementations
      :target: https://pypi.python.org/pypi/ansiwrap

  .. |wheel| image:: https://img.shields.io/pypi/wheel/ansiwrap.svg
      :alt: Wheel packaging support
      :target: https://pypi.python.org/pypi/ansiwrap

  .. |coverage| image:: https://img.shields.io/badge/test_coverage-99%25-0000FF.svg
      :alt: Test line coverage
      :target: https://pypi.python.org/pypi/ansiwrap


  ``ansiwrap`` wraps text, like the standard ``textwrap`` module.
  But it also correctly wraps text that contains ANSI control
  sequences that colorize or style text.

  Where ``textwrap`` is fooled by the raw string length of those control codes,
  ``ansiwrap`` is not; it understands that however much those codes affect color
  and display style, they have no logical length.

  The API mirrors the ``wrap``, ``fill``, and ``shorten``
  functions of ``textwrap``. For example::

      from __future__ import print_function
      from colors import *     # ansicolors on PyPI
      from ansiwrap import *

      s = ' '.join([red('this string'),
                    blue('is going on a bit long'),
                    green('and may need to be'),
                    color('shortened a bit', fg='purple')])

      print('-- original string --')
      print(s)
      print('-- now filled --')
      print(fill(s, 20))
      print('-- now shortened / truncated --')
      print(shorten(s, 20, placeholder='...'))

  It also exports several other functions:

  * ``ansilen`` (giving the effective length of a string, ignoring ANSI control codes)
  * ``ansi_terminate_lines`` (propagates control codes though a list of strings/lines
    and terminates each line.)
  * ``strip_color`` (removes ANSI control codes from a string)

  See also the enclosed ``demo.py``.

  .. image:: https://content.screencast.com/users/jonathaneunice/folders/Jing/media/8db64be2-01cc-4da4-b46a-789c53c63b44/00000569.png
     :align: center


pkgId: 7fcdc5b90735c006f0fb80b8869c9bdbd6e8f483adef53ff7275d4bbaa92fd1b
name: python-antiorm
arch: src
version: 1.2.1
epoch: 0
release: 1
summary: A Pythonic Helper for DBAPI-2.0 SQL Access
url: http://furius.ca/antiorm
rpm_license: GPL
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-f581f0cd-ec64-408c-9b44-8b13b419a532
location_href: 00011154-python-antiorm/python-antiorm-1.2.1-1.src.rpm
checksum_type: sha256
description:
  Anti-ORM is not an ORM, and it certainly does not want to be.  Anti-ORM is a
  simple Python module that provides a pythonic syntax for making it more
  convenient to build SQL queries over the DBAPI-2.0 interface.

  In practice, if you're the kind of person that likes it to the bare metal, it's
  almost as good as the ORMs.  At least there is no magic, and it just works.


pkgId: 210d00e2abe8f7697fed1aab3b9df5cb174271d55b6f4f51fc961100437c8293
name: python-antispaminc
arch: src
version: 4.0
epoch: 0
release: 1
summary: A Python Wrapper For Antispam Inc.
url: http://antispaminc.tk
rpm_license: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-d79b7084-6fbf-4f8c-a249-b5e6af87562b
location_href: 00011394-python-antispaminc/python-antispaminc-4.0-1.src.rpm
checksum_type: sha256
description:
  An Python Wrapper For AntispamInc Api.


  * Channel : @AntispamInc
  * Group : @AntispamIncSupport
  * Bot : @AntispamIncBot
  * Website : antispaminc.tk



  ```python
  from antispaminc.connect import Connect
  mytoken = 'your_token_from_@antispamincbot'
  sed = Connect(mytoken)
  sed2 = sed.is_banned('12974624')
  print(sed2.reason)
  ```


  ```sh
  pip install antispaminc
  ```
  or
  ```shell script
  pip3 install antispaminc


pkgId: f8cf3c1e7f8d407cdadd4711cd8145bf6cb7a70d80524bbe983b92610cfeaef5
name: python-anybadge
arch: src
version: 1.14.0
epoch: 0
release: 1
summary: Simple, flexible badge generator for project badges.
url: https://github.com/jongracecox/anybadge
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-fef6ae6c-73a4-40b0-bb5a-9ea5383f7e8d
location_href: 00010745-python-anybadge/python-anybadge-1.14.0-1.src.rpm
checksum_type: sha256
description:
  Here are some usage specific command line examples that may save time on defining
  thresholds.
  Pylint::
  ```
  anybadge.py --value=2.22 --file=pylint.svg pylint
  anybadge.py --label=pylint --value=2.22 --file=pylint.svg 2=red 4=orange 8=yellow 10=green
  ```
  Coverage::
  ```
  anybadge.py --value=65 --file=coverage.svg coverage
  anybadge.py --label=coverage --value=65 --suffix='%' --file=coverage.svg 50=red 60=orange 80=yellow 100=green
  ```
  CI Pipeline::
  ```
  anybadge.py --label=pipeline --value=passing --file=pipeline.svg passing=green failing=red
  ```


pkgId: 928c1df82bc658ebb773a3b63ef02e910e8eb158fb85a32f889ff0b8204df5e9
name: python-anyconfig
arch: src
version: 0.13.0
epoch: 0
release: 1
summary: Library provides common APIs to load and dump configuration files in various formats
url: https://github.com/ssato/python-anyconfig
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-add65627-f53d-4ccb-a705-2ef361f68107
location_href: 00003027-python-anyconfig/python-anyconfig-0.13.0-1.src.rpm
checksum_type: sha256
description:
  python-anyconfig is a python library provides common APIs to load and dump
  configuration files in various formats with some useful features such as
  contents merge, templates, query, schema validation and generation support.

  - Home: https://github.com/ssato/python-anyconfig
  - Author: Satoru SATOH <satoru.satoh@gmail.com>
  - License: MIT


pkgId: 30473613f65361b6ff0ce5b0ba767fbc4a30674f13d1d718b4aa7a96c10b12a4
name: python-anymarkup
arch: src
version: 0.8.1
epoch: 0
release: 1
summary: Parse/serialize any markup format
url: https://github.com/bkabrda/anymarkup
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c7dffc53-3a4d-45fb-8f9a-7293ebe23f37
location_href: 00003030-python-anymarkup/python-anymarkup-0.8.1-1.src.rpm
checksum_type: sha256
description:
  Parse or serialize any markup. Currently supports ini, json, json5, toml, xml and yaml.
  Report bugs and new functionality requests at https://github.com/bkabrda/anymarkup/issues.
  Parsing::
    >>> import anymarkup
    >>> anymarkup.parse('foo: bar')
    {'foo': 'bar'}
    >>> anymarkup.parse_file('foo/bar.ini')
    {'section': {'subsection': {'opt2': 'bar'}, 'opt1': 'foo'}}
    $ cat foo/bar.ini
    [section]
    opt1=foo
    [[subsection]]
    opt2=bar
  Serializing::
    >>> import anymarkup
    >>> anymarkup.serialize({'foo': 'bar'}, 'json')
    b'{\n  "foo": "bar"\n}'
    >>> anymarkup.serialize_file({'foo': 'bar'}, 'foo/bar.json')
    $ cat foo/bar.json
    {
      "foo": "bar"
    }
  ``anymarkup`` is licensed under BSD license. You can download official releases
  from https://pypi.python.org/pypi/anymarkup or install them via ``pip install anymarkup``.
  ``anymarkup`` works with Python 2.7 and >= 3.3.


pkgId: 4feff4e88319c0a47f259ecd34addc746342429494d079a69cc4fcbde5b329f8
name: python-anymarkup-core
arch: src
version: 0.8.1
epoch: 0
release: 1
summary: Core library for anymarkup
url: https://github.com/bkabrda/anymarkup-core
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-506968b6-82c1-4b1e-9705-6761e2f76546
location_href: 00003031-python-anymarkup-core/python-anymarkup-core-0.8.1-1.src.rpm
checksum_type: sha256
description:
  This is the core library that implements functionality of https://github.com/bkabrda/anymarkup.
  You can install this if you only want to use a subset of anymarkup parsers. For example, you
  can do this::
    $ pip install anymarkup-core PyYAML
    $ python -c "import anymarkup_core; print(anymarkup_core.parse('foo: bar'))"
  in the same way you use anymarkup, except you have to import from `anymarkup_core`, obviously.


pkgId: 4715b5120dc84d1b6761b74b8498ee4897538d9255a77319af933c47aac0e623
name: python-apache-airflow-providers-airbyte
arch: src
version: 3.2.1
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-airbyte package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-643df51a-71b2-40a0-9b1f-afaa242c8d31
checksum_type: sha256
description:
  This is a provider package for ``airbyte`` provider. All classes for this provider package
  are in ``airflow.providers.airbyte`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-airbyte/3.2.1/>`_.

location_href:
  00011247-python-apache-airflow-providers-airbyte/python-apache-airflow-providers-airbyte-3.2.1-1.src.rpm


pkgId: ff4f4f66a461656a4bfe30b4e0e42c37df2310ff1cf356aefb432f592d8214b7
name: python-apache-airflow-providers-airbyte-help
arch: noarch
version: 3.2.1
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-airbyte
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-643df51a-71b2-40a0-9b1f-afaa242c8d31
rpm_sourcerpm: python-apache-airflow-providers-airbyte-3.2.1-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``airbyte`` provider. All classes for this provider package
  are in ``airflow.providers.airbyte`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-airbyte/3.2.1/>`_.

location_href:
  00011247-python-apache-airflow-providers-airbyte/python-apache-airflow-providers-airbyte-help-3.2.1-1.noarch.rpm


pkgId: d1b19e0e37054cbf3771f5a8d9f02506bdc402e55133f4bcc294cf9c79921ea0
name: python-apache-airflow-providers-apache-spark
arch: src
version: 4.0.1
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-apache-spark package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a439c482-0f63-416f-ad8d-ac5f7f7b7fbc
checksum_type: sha256
description:
  This is a provider package for ``apache.spark`` provider. All classes for this provider package
  are in ``airflow.providers.apache.spark`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-apache-spark/4.0.1/>`_.

location_href:
  00012838-python-apache-airflow-providers-apache-spark/python-apache-airflow-providers-apache-spark-4.0.1-1.src.rpm


pkgId: 1efa2f7f6f9f0d04a7ff470fbb0404f63732f0b917ea44da6c9a0d313d0ff147
name: python-apache-airflow-providers-apache-spark-help
arch: noarch
version: 4.0.1
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-apache-spark
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a439c482-0f63-416f-ad8d-ac5f7f7b7fbc
rpm_sourcerpm: python-apache-airflow-providers-apache-spark-4.0.1-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``apache.spark`` provider. All classes for this provider package
  are in ``airflow.providers.apache.spark`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-apache-spark/4.0.1/>`_.

location_href:
  00012838-python-apache-airflow-providers-apache-spark/python-apache-airflow-providers-apache-spark-help-4.0.1-1.noarch.rpm


pkgId: ed6bd3bcaf8d3499dc671cd95090bbb0c85da63544d7a991177eb9356943e6ec
name: python-apache-airflow-providers-celery
arch: src
version: 3.1.0
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-celery package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-3de619e6-29ac-49ee-b8d4-8449ed58a195
checksum_type: sha256
description:
  This is a provider package for ``celery`` provider. All classes for this provider package
  are in ``airflow.providers.celery`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-celery/3.1.0/>`_.

location_href:
  00012188-python-apache-airflow-providers-celery/python-apache-airflow-providers-celery-3.1.0-1.src.rpm


pkgId: e618973a6214741c0c8a2c636be3fc90c126aace89c9394dfeff3d4193151bd3
name: python-apache-airflow-providers-celery-help
arch: noarch
version: 3.1.0
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-celery
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-3de619e6-29ac-49ee-b8d4-8449ed58a195
rpm_sourcerpm: python-apache-airflow-providers-celery-3.1.0-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``celery`` provider. All classes for this provider package
  are in ``airflow.providers.celery`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-celery/3.1.0/>`_.

location_href:
  00012188-python-apache-airflow-providers-celery/python-apache-airflow-providers-celery-help-3.1.0-1.noarch.rpm


pkgId: ffaaa74101a8ee5a4a27be6b7190ebde7d39f20b695bbc68b34e3eb06c0d56f4
name: python-apache-airflow-providers-cncf-kubernetes
arch: src
version: 5.3.0
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-cncf-kubernetes package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4d1e7a66-fb1a-490c-b1c9-b2b058976343
checksum_type: sha256
description:
  This is a provider package for ``cncf.kubernetes`` provider. All classes for this provider package
  are in ``airflow.providers.cncf.kubernetes`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/5.3.0/>`_.

location_href:
  00010142-python-apache-airflow-providers-cncf-kubernetes/python-apache-airflow-providers-cncf-kubernetes-5.3.0-1.src.rpm


pkgId: 17608bf19d1a98b63c4f5378f5d918c73708c6e6d23cba7280b6ebe976b7d009
name: python-apache-airflow-providers-cncf-kubernetes-help
arch: noarch
version: 5.3.0
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-cncf-kubernetes
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4d1e7a66-fb1a-490c-b1c9-b2b058976343
rpm_sourcerpm: python-apache-airflow-providers-cncf-kubernetes-5.3.0-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``cncf.kubernetes`` provider. All classes for this provider package
  are in ``airflow.providers.cncf.kubernetes`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/5.3.0/>`_.

location_href:
  00010142-python-apache-airflow-providers-cncf-kubernetes/python-apache-airflow-providers-cncf-kubernetes-help-5.3.0-1.noarch.rpm


pkgId: b7d047de2f7b8542783ac7b8207f04630c3ee948cca65aae3d93edb81c336c61
name: python-apache-airflow-providers-databricks
arch: src
version: 4.0.1
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-databricks package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-e148bbec-2806-48db-8204-5fe3d48bc5fd
checksum_type: sha256
description:
  This is a provider package for ``databricks`` provider. All classes for this provider package
  are in ``airflow.providers.databricks`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-databricks/4.0.1/>`_.

location_href:
  00010198-python-apache-airflow-providers-databricks/python-apache-airflow-providers-databricks-4.0.1-1.src.rpm


pkgId: 1a31d04b3c70fd3aca0eff20cbe86a03538450339d7621c8834d8fee9720411a
name: python-apache-airflow-providers-databricks-help
arch: noarch
version: 4.0.1
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-databricks
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-e148bbec-2806-48db-8204-5fe3d48bc5fd
rpm_sourcerpm: python-apache-airflow-providers-databricks-4.0.1-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``databricks`` provider. All classes for this provider package
  are in ``airflow.providers.databricks`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-databricks/4.0.1/>`_.

location_href:
  00010198-python-apache-airflow-providers-databricks/python-apache-airflow-providers-databricks-help-4.0.1-1.noarch.rpm


pkgId: 8606fd1c08f0d2aae82e8657cb2908688c3d57df16c6b3d5a28f1810496a8509
name: python-apache-airflow-providers-datadog
arch: src
version: 3.2.0
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-datadog package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-296e6d14-ad0b-4290-8773-880a0e43958f
checksum_type: sha256
description:
  This is a provider package for ``datadog`` provider. All classes for this provider package
  are in ``airflow.providers.datadog`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-datadog/3.2.0/>`_.

location_href:
  00012063-python-apache-airflow-providers-datadog/python-apache-airflow-providers-datadog-3.2.0-1.src.rpm


pkgId: 1df1cac48cbab6bb4d73d07c05db4772295d37a404e4c0affd2d65aa9fafbfa7
name: python-apache-airflow-providers-datadog-help
arch: noarch
version: 3.2.0
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-datadog
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-296e6d14-ad0b-4290-8773-880a0e43958f
rpm_sourcerpm: python-apache-airflow-providers-datadog-3.2.0-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``datadog`` provider. All classes for this provider package
  are in ``airflow.providers.datadog`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-datadog/3.2.0/>`_.

location_href:
  00012063-python-apache-airflow-providers-datadog/python-apache-airflow-providers-datadog-help-3.2.0-1.noarch.rpm


pkgId: 20be33e30c3600208e697114e8ac600ce5668095c3b027ab34b674395cb20486
name: python-apache-airflow-providers-docker
arch: src
version: 3.5.1
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-docker package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ff0f01fb-196f-4b9e-89d2-2b1ac5ef5a60
checksum_type: sha256
description:
  This is a provider package for ``docker`` provider. All classes for this provider package
  are in ``airflow.providers.docker`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-docker/3.5.1/>`_.

location_href:
  00014145-python-apache-airflow-providers-docker/python-apache-airflow-providers-docker-3.5.1-1.src.rpm


pkgId: 7d8712192404813115a7a22f3890fa88657312f4807bc1f030521940eba4fcf6
name: python-apache-airflow-providers-docker-help
arch: noarch
version: 3.5.1
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-docker
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ff0f01fb-196f-4b9e-89d2-2b1ac5ef5a60
rpm_sourcerpm: python-apache-airflow-providers-docker-3.5.1-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``docker`` provider. All classes for this provider package
  are in ``airflow.providers.docker`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-docker/3.5.1/>`_.

location_href:
  00014145-python-apache-airflow-providers-docker/python-apache-airflow-providers-docker-help-3.5.1-1.noarch.rpm


pkgId: 12a750e57759921b4f5f019c5cb5c9f4935509f58bf1f0a3eed5adc20c98ddc3
name: python-apache-airflow-providers-ftp
arch: src
version: 3.3.1
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-ftp package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-79ed9947-2fdb-47d3-8d0c-d7501083797f
location_href: 00009870-python-apache-airflow-providers-ftp/python-apache-airflow-providers-ftp-3.3.1-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``ftp`` provider. All classes for this provider package
  are in ``airflow.providers.ftp`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-ftp/3.3.1/>`_.


pkgId: 62a982e016f447ada8234a74d5162f3b3408116082ad2d12e27465aa694112de
name: python-apache-airflow-providers-ftp-help
arch: noarch
version: 3.3.1
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-ftp
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-79ed9947-2fdb-47d3-8d0c-d7501083797f
rpm_sourcerpm: python-apache-airflow-providers-ftp-3.3.1-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``ftp`` provider. All classes for this provider package
  are in ``airflow.providers.ftp`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-ftp/3.3.1/>`_.

location_href:
  00009870-python-apache-airflow-providers-ftp/python-apache-airflow-providers-ftp-help-3.3.1-1.noarch.rpm


pkgId: 8bdfd59f93f65623f1201b97cc1747c1e8581675b278a0c0e2529661dbc86a01
name: python-apache-airflow-providers-http
arch: src
version: 4.3.0
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-http package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-3e3b46b4-ecfd-46fa-b6cf-d319eafcbeab
location_href: 00009863-python-apache-airflow-providers-http/python-apache-airflow-providers-http-4.3.0-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``http`` provider. All classes for this provider package
  are in ``airflow.providers.http`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-http/4.3.0/>`_.


pkgId: e306d132a5cd6bdbc350fc643c42ed9dd421a0f238b505a6cdb50a674c7b3d3a
name: python-apache-airflow-providers-http-help
arch: noarch
version: 4.3.0
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-http
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-3e3b46b4-ecfd-46fa-b6cf-d319eafcbeab
rpm_sourcerpm: python-apache-airflow-providers-http-4.3.0-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``http`` provider. All classes for this provider package
  are in ``airflow.providers.http`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-http/4.3.0/>`_.

location_href:
  00009863-python-apache-airflow-providers-http/python-apache-airflow-providers-http-help-4.3.0-1.noarch.rpm


pkgId: 04d438d5e19efa32ef0d71138ad09f51ec18ff27b2cc0bd2e52e81c9196b4cdc
name: python-apache-airflow-providers-imap
arch: src
version: 3.1.1
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-imap package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-f295fdc1-256c-4f27-8065-5e684d1a108f
location_href: 00009873-python-apache-airflow-providers-imap/python-apache-airflow-providers-imap-3.1.1-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``imap`` provider. All classes for this provider package
  are in ``airflow.providers.imap`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-imap/3.1.1/>`_.


pkgId: 62c04596262af6ea4b9371c85df9faea29806a107edd0c4ffc21459073e0cb1b
name: python-apache-airflow-providers-imap-help
arch: noarch
version: 3.1.1
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-imap
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-f295fdc1-256c-4f27-8065-5e684d1a108f
rpm_sourcerpm: python-apache-airflow-providers-imap-3.1.1-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``imap`` provider. All classes for this provider package
  are in ``airflow.providers.imap`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-imap/3.1.1/>`_.

location_href:
  00009873-python-apache-airflow-providers-imap/python-apache-airflow-providers-imap-help-3.1.1-1.noarch.rpm


pkgId: 46254fc9bafdabb51153e55fe3716841fcbfe4fa2eac30de058beb428f0bbd2e
name: python-apache-airflow-providers-jdbc
arch: src
version: 3.3.0
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-jdbc package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-2c94f117-08c0-4288-966d-f8f674f6385c
location_href: 00012680-python-apache-airflow-providers-jdbc/python-apache-airflow-providers-jdbc-3.3.0-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``jdbc`` provider. All classes for this provider package
  are in ``airflow.providers.jdbc`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-jdbc/3.3.0/>`_.


pkgId: eece18109ac7ad18710785cac72c252318df9fea3187c614bd48ca308a88b194
name: python-apache-airflow-providers-jdbc-help
arch: noarch
version: 3.3.0
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-jdbc
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-2c94f117-08c0-4288-966d-f8f674f6385c
rpm_sourcerpm: python-apache-airflow-providers-jdbc-3.3.0-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``jdbc`` provider. All classes for this provider package
  are in ``airflow.providers.jdbc`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-jdbc/3.3.0/>`_.

location_href:
  00012680-python-apache-airflow-providers-jdbc/python-apache-airflow-providers-jdbc-help-3.3.0-1.noarch.rpm


pkgId: a54c54235c15621ff514f9ee62ce7cc1b8add686482d7cf84cae9ded333ef600
name: python-apache-airflow-providers-jira
arch: src
version: 3.1.0
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-jira package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-20fe98fd-3e91-4594-8160-2c0d1e8fe211
location_href: 00010711-python-apache-airflow-providers-jira/python-apache-airflow-providers-jira-3.1.0-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``jira`` provider. All classes for this provider package
  are in ``airflow.providers.jira`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-jira/3.1.0/>`_.


pkgId: 54f67b37b67239062c9632f76877164c522969148d3e6e74d1fb2e0b11e0763e
name: python-apache-airflow-providers-jira-help
arch: noarch
version: 3.1.0
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-jira
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-20fe98fd-3e91-4594-8160-2c0d1e8fe211
rpm_sourcerpm: python-apache-airflow-providers-jira-3.1.0-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``jira`` provider. All classes for this provider package
  are in ``airflow.providers.jira`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-jira/3.1.0/>`_.

location_href:
  00010711-python-apache-airflow-providers-jira/python-apache-airflow-providers-jira-help-3.1.0-1.noarch.rpm


pkgId: d9bd953095c6a62ad38059e2b88f981799f90b4e13984038e061436187155486
name: python-apache-airflow-providers-microsoft-mssql
arch: src
version: 3.3.2
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-microsoft-mssql package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-6e5afc6b-8aa5-4deb-a882-e61fdec18f36
checksum_type: sha256
description:
  This is a provider package for ``microsoft.mssql`` provider. All classes for this provider package
  are in ``airflow.providers.microsoft.mssql`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-mssql/3.3.2/>`_.

location_href:
  00010475-python-apache-airflow-providers-microsoft-mssql/python-apache-airflow-providers-microsoft-mssql-3.3.2-1.src.rpm


pkgId: 9e691844a5ee1102cd22eebb9247828c4fb7326c3fa615e7f975c1a5c4e23185
name: python-apache-airflow-providers-microsoft-mssql-help
arch: noarch
version: 3.3.2
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-microsoft-mssql
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-6e5afc6b-8aa5-4deb-a882-e61fdec18f36
rpm_sourcerpm: python-apache-airflow-providers-microsoft-mssql-3.3.2-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``microsoft.mssql`` provider. All classes for this provider package
  are in ``airflow.providers.microsoft.mssql`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-mssql/3.3.2/>`_.

location_href:
  00010475-python-apache-airflow-providers-microsoft-mssql/python-apache-airflow-providers-microsoft-mssql-help-3.3.2-1.noarch.rpm


pkgId: 4291ae0a4bc9b15af6f8bfb86d7f849d43e486d6343282cfa6930dd441f26348
name: python-apache-airflow-providers-mongo
arch: src
version: 3.1.1
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-mongo package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-d9da6ecc-f122-4e6c-b94c-a1f738ce8440
checksum_type: sha256
description:
  This is a provider package for ``mongo`` provider. All classes for this provider package
  are in ``airflow.providers.mongo`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-mongo/3.1.1/>`_.

location_href:
  00010653-python-apache-airflow-providers-mongo/python-apache-airflow-providers-mongo-3.1.1-1.src.rpm


pkgId: 89a9db6069f3bb2b4028c94395936bd8cbed624c57ffd7dbe9ca961fdba19b63
name: python-apache-airflow-providers-mongo-help
arch: noarch
version: 3.1.1
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-mongo
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-d9da6ecc-f122-4e6c-b94c-a1f738ce8440
rpm_sourcerpm: python-apache-airflow-providers-mongo-3.1.1-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``mongo`` provider. All classes for this provider package
  are in ``airflow.providers.mongo`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-mongo/3.1.1/>`_.

location_href:
  00010653-python-apache-airflow-providers-mongo/python-apache-airflow-providers-mongo-help-3.1.1-1.noarch.rpm


pkgId: 3df43e53abe93b497dcb7eec602af964402066f5b86f68d77dea0c695174fd10
name: python-apache-airflow-providers-mysql
arch: src
version: 4.0.2
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-mysql package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-83b1444a-86a2-4fc4-be09-f032a696c30c
checksum_type: sha256
description:
  This is a provider package for ``mysql`` provider. All classes for this provider package
  are in ``airflow.providers.mysql`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-mysql/4.0.2/>`_.

location_href:
  00010884-python-apache-airflow-providers-mysql/python-apache-airflow-providers-mysql-4.0.2-1.src.rpm


pkgId: df8eca3f1db9325e0c5291f9443b00bc8dba1c44c55ff307f154264800bed778
name: python-apache-airflow-providers-mysql-help
arch: noarch
version: 4.0.2
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-mysql
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-83b1444a-86a2-4fc4-be09-f032a696c30c
rpm_sourcerpm: python-apache-airflow-providers-mysql-4.0.2-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``mysql`` provider. All classes for this provider package
  are in ``airflow.providers.mysql`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-mysql/4.0.2/>`_.

location_href:
  00010884-python-apache-airflow-providers-mysql/python-apache-airflow-providers-mysql-help-4.0.2-1.noarch.rpm


pkgId: 881d0ce192ffe8805dd2264476477b3d413259aa06d695a9a02f06eb24335cc8
name: python-apache-airflow-providers-opsgenie
arch: src
version: 5.0.0
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-opsgenie package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-49762638-65cc-4b5c-b743-af06aac14609
checksum_type: sha256
description:
  This is a provider package for ``opsgenie`` provider. All classes for this provider package
  are in ``airflow.providers.opsgenie`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-opsgenie/5.0.0/>`_.

location_href:
  00010728-python-apache-airflow-providers-opsgenie/python-apache-airflow-providers-opsgenie-5.0.0-1.src.rpm


pkgId: c338b2f2fa46d8efd7f45053d8a1997f7851475b9b0a293743164ed8e3604407
name: python-apache-airflow-providers-opsgenie-help
arch: noarch
version: 5.0.0
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-opsgenie
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-49762638-65cc-4b5c-b743-af06aac14609
rpm_sourcerpm: python-apache-airflow-providers-opsgenie-5.0.0-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``opsgenie`` provider. All classes for this provider package
  are in ``airflow.providers.opsgenie`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-opsgenie/5.0.0/>`_.

location_href:
  00010728-python-apache-airflow-providers-opsgenie/python-apache-airflow-providers-opsgenie-help-5.0.0-1.noarch.rpm


pkgId: 127cadf8dc4ba585d6219d785a8a6a76a17e21fb7ce430485be309a046b3bb86
name: python-apache-airflow-providers-postgres
arch: src
version: 5.4.0
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-postgres package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-076dbf99-dc33-48bb-a6cf-1653b82dfa09
checksum_type: sha256
description:
  This is a provider package for ``postgres`` provider. All classes for this provider package
  are in ``airflow.providers.postgres`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-postgres/5.4.0/>`_.

location_href:
  00010937-python-apache-airflow-providers-postgres/python-apache-airflow-providers-postgres-5.4.0-1.src.rpm


pkgId: 454c3734b0c78aaf8c7a9a13486a957ea3d85074d420302cd962a957b8f20df8
name: python-apache-airflow-providers-postgres-help
arch: noarch
version: 5.4.0
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-postgres
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-076dbf99-dc33-48bb-a6cf-1653b82dfa09
rpm_sourcerpm: python-apache-airflow-providers-postgres-5.4.0-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``postgres`` provider. All classes for this provider package
  are in ``airflow.providers.postgres`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-postgres/5.4.0/>`_.

location_href:
  00010937-python-apache-airflow-providers-postgres/python-apache-airflow-providers-postgres-help-5.4.0-1.noarch.rpm


pkgId: ed739b65e05c6ded4bc6b28eaa2bed52aed1701f9c3700e8bd8ea82ef4e5008f
name: python-apache-airflow-providers-presto
arch: src
version: 4.2.2
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-presto package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-e6b85ce0-6849-4e98-adae-48ea99cd4c1f
checksum_type: sha256
description:
  This is a provider package for ``presto`` provider. All classes for this provider package
  are in ``airflow.providers.presto`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-presto/4.2.2/>`_.

location_href:
  00013617-python-apache-airflow-providers-presto/python-apache-airflow-providers-presto-4.2.2-1.src.rpm


pkgId: ceafd5ac241943ef88e0ab2f56216299371cff39515846b7b90cf45dcb8ae99c
name: python-apache-airflow-providers-presto-help
arch: noarch
version: 4.2.2
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-presto
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-e6b85ce0-6849-4e98-adae-48ea99cd4c1f
rpm_sourcerpm: python-apache-airflow-providers-presto-4.2.2-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``presto`` provider. All classes for this provider package
  are in ``airflow.providers.presto`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-presto/4.2.2/>`_.

location_href:
  00013617-python-apache-airflow-providers-presto/python-apache-airflow-providers-presto-help-4.2.2-1.noarch.rpm


pkgId: 041a69be528f715b3a1cfda922497e2333f6bf5d75cd3f9756da336a39c59cf5
name: python-apache-airflow-providers-sftp
arch: src
version: 4.2.4
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-sftp package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ffce04c1-677e-4db8-9bd4-fcb636b7409e
location_href: 00011884-python-apache-airflow-providers-sftp/python-apache-airflow-providers-sftp-4.2.4-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``sftp`` provider. All classes for this provider package
  are in ``airflow.providers.sftp`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-sftp/4.2.4/>`_.


pkgId: 8307453ad938a3d3df5e24438103c10e6320915ef5f3ea3c00f1336860a363bf
name: python-apache-airflow-providers-sftp-help
arch: noarch
version: 4.2.4
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-sftp
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ffce04c1-677e-4db8-9bd4-fcb636b7409e
rpm_sourcerpm: python-apache-airflow-providers-sftp-4.2.4-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``sftp`` provider. All classes for this provider package
  are in ``airflow.providers.sftp`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-sftp/4.2.4/>`_.

location_href:
  00011884-python-apache-airflow-providers-sftp/python-apache-airflow-providers-sftp-help-4.2.4-1.noarch.rpm


pkgId: d8e6f4b6bdfbc418087e2ee99b231c2c3ee4c7f1b793332921aee129d15e13a2
name: python-apache-airflow-providers-snowflake
arch: src
version: 4.0.4
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-snowflake package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-44cada38-c1f7-456a-93e3-ba621332fa64
checksum_type: sha256
description:
  This is a provider package for ``snowflake`` provider. All classes for this provider package
  are in ``airflow.providers.snowflake`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/4.0.4/>`_.

location_href:
  00009901-python-apache-airflow-providers-snowflake/python-apache-airflow-providers-snowflake-4.0.4-1.src.rpm


pkgId: e5728595633768e1aa950d6795849cf9fdfee6b64a02e1fea08fd4aa8929e6eb
name: python-apache-airflow-providers-snowflake-help
arch: noarch
version: 4.0.4
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-snowflake
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-44cada38-c1f7-456a-93e3-ba621332fa64
rpm_sourcerpm: python-apache-airflow-providers-snowflake-4.0.4-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``snowflake`` provider. All classes for this provider package
  are in ``airflow.providers.snowflake`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/4.0.4/>`_.

location_href:
  00009901-python-apache-airflow-providers-snowflake/python-apache-airflow-providers-snowflake-help-4.0.4-1.noarch.rpm


pkgId: b120e0a5c9e6b3250fa0aec9f8892a17506f810e854f3fbcaf3b4ae42d9d935e
name: python-apache-airflow-providers-sqlite
arch: src
version: 3.3.1
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-sqlite package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a4532698-d964-453e-b17c-96b88936fd21
checksum_type: sha256
description:
  This is a provider package for ``sqlite`` provider. All classes for this provider package
  are in ``airflow.providers.sqlite`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-sqlite/3.3.1/>`_.

location_href:
  00009869-python-apache-airflow-providers-sqlite/python-apache-airflow-providers-sqlite-3.3.1-1.src.rpm


pkgId: ee2c753d45762e818196bbd39b2af85828933f6cda279a5e853c2a844de814d9
name: python-apache-airflow-providers-sqlite-help
arch: noarch
version: 3.3.1
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-sqlite
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a4532698-d964-453e-b17c-96b88936fd21
rpm_sourcerpm: python-apache-airflow-providers-sqlite-3.3.1-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``sqlite`` provider. All classes for this provider package
  are in ``airflow.providers.sqlite`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-sqlite/3.3.1/>`_.

location_href:
  00009869-python-apache-airflow-providers-sqlite/python-apache-airflow-providers-sqlite-help-3.3.1-1.noarch.rpm


pkgId: fb61e0e90217a3bca4efb64da231ec95e9477ddeafd25105fe79656b286c17da
name: python-apache-airflow-providers-ssh
arch: src
version: 3.6.0
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-ssh package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ea87b785-b003-4685-8237-a5adc2286707
location_href: 00010944-python-apache-airflow-providers-ssh/python-apache-airflow-providers-ssh-3.6.0-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``ssh`` provider. All classes for this provider package
  are in ``airflow.providers.ssh`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-ssh/3.6.0/>`_.


pkgId: 85baab9bd5746c60e5a77909efff57a9a4fac56823964a03fde0d578efb030e3
name: python-apache-airflow-providers-ssh-help
arch: noarch
version: 3.6.0
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-ssh
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-ea87b785-b003-4685-8237-a5adc2286707
rpm_sourcerpm: python-apache-airflow-providers-ssh-3.6.0-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``ssh`` provider. All classes for this provider package
  are in ``airflow.providers.ssh`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-ssh/3.6.0/>`_.

location_href:
  00010944-python-apache-airflow-providers-ssh/python-apache-airflow-providers-ssh-help-3.6.0-1.noarch.rpm


pkgId: 71e1b60a79d2914a0b354b38ebc31314cdf800556df59d59c8ab326729f775a4
name: python-apache-airflow-providers-tableau
arch: src
version: 4.1.0
epoch: 0
release: 1
summary: Provider for Apache Airflow. Implements apache-airflow-providers-tableau package
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a8b0c57d-8aff-4265-b406-fdc2baedaba6
checksum_type: sha256
description:
  This is a provider package for ``tableau`` provider. All classes for this provider package
  are in ``airflow.providers.tableau`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-tableau/4.1.0/>`_.

location_href:
  00010372-python-apache-airflow-providers-tableau/python-apache-airflow-providers-tableau-4.1.0-1.src.rpm


pkgId: 8fd8d5e5975c402be78c14d6d41c6a5b1427099b791182ddb622de596f26b58b
name: python-apache-airflow-providers-tableau-help
arch: noarch
version: 4.1.0
epoch: 0
release: 1
summary: Development documents and examples for apache-airflow-providers-tableau
url: https://airflow.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a8b0c57d-8aff-4265-b406-fdc2baedaba6
rpm_sourcerpm: python-apache-airflow-providers-tableau-4.1.0-1.src.rpm
checksum_type: sha256
description:
  This is a provider package for ``tableau`` provider. All classes for this provider package
  are in ``airflow.providers.tableau`` python package.
  You can find package information and changelog for the provider
  in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-tableau/4.1.0/>`_.

location_href:
  00010372-python-apache-airflow-providers-tableau/python-apache-airflow-providers-tableau-help-4.1.0-1.noarch.rpm


pkgId: 66c08aadcb5c7c32e79cbf0f55e0fdc645c51f6f21f90a9865d1fed172816125
name: python-apache-libcloud
arch: src
version: 3.7.0
epoch: 0
release: 1
url: https://libcloud.apache.org/
rpm_license: Apache License (2.0)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-da838525-25ca-4be1-9f2c-b833ff2af9f4
location_href: 00011529-python-apache-libcloud/python-apache-libcloud-3.7.0-1.src.rpm
checksum_type: sha256
summary:
  A standard Python library that abstracts away differences among multiple cloud provider APIs. For more information and documentation, please see https://libcloud.apache.org

description:
  Apache Libcloud is a Python library which hides differences between different
  cloud provider APIs and allows you to manage different cloud resources
  through a unified and easy to use API.
                              (Python 2.7 and Python 3.4 is supported by the
                              v2.8.x release series, last version which supports
                              Python 3.5 is v3.4.0 and v3.6.x for Python 3.6)
  Resources you can manage with Libcloud are divided into the following categories:
  * **Compute** - Cloud Servers and Block Storage - services such as Amazon EC2 and Rackspace
    Cloud Servers (``libcloud.compute.*``)
  * **Storage** - Cloud Object Storage and CDN  - services such as Amazon S3 and Rackspace
    CloudFiles (``libcloud.storage.*``)
  * **Load Balancers** - Load Balancers as a Service, LBaaS (``libcloud.loadbalancer.*``)
  * **DNS** - DNS as a Service, DNSaaS (``libcloud.dns.*``)
  * **Container** - Container virtualization services (``libcloud.container.*``)
  Apache Libcloud is an Apache project, see <http://libcloud.apache.org> for
  more information.


pkgId: facaf3c3bd558a68eb493aa2cf24cb1b4ffa1a43048ee6a1d8f656422fa5bafa
name: python-apache-superset
arch: src
version: 2.1.0
epoch: 0
release: 1
summary: A modern, enterprise-ready business intelligence web application
url: https://superset.apache.org/
rpm_license: Apache License, Version 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-91a25ba4-4ea7-4829-ad5c-0605f5dd03ec
location_href: 00011059-python-apache-superset/python-apache-superset-2.1.0-1.src.rpm
checksum_type: sha256
description:
  <!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

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

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



  [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
  [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/apache/superset?sort=semver)](https://github.com/apache/superset/tree/latest)
  [![Build Status](https://github.com/apache/superset/workflows/Python/badge.svg)](https://github.com/apache/superset/actions)
  [![PyPI version](https://badge.fury.io/py/apache-superset.svg)](https://badge.fury.io/py/apache-superset)
  [![Coverage Status](https://codecov.io/github/apache/superset/coverage.svg?branch=master)](https://codecov.io/github/apache/superset)
  [![PyPI](https://img.shields.io/pypi/pyversions/apache-superset.svg?maxAge=2592000)](https://pypi.python.org/pypi/apache-superset)
  [![Get on Slack](https://img.shields.io/badge/slack-join-orange.svg)](http://bit.ly/join-superset-slack)
  [![Documentation](https://img.shields.io/badge/docs-apache.org-blue.svg)](https://superset.apache.org)

  <img
    src="https://github.com/apache/superset/raw/master/superset-frontend/src/assets/branding/superset-logo-horiz-apache.png"
    alt="Superset"
    width="500"
  />

  A modern, enterprise-ready business intelligence web application.

  [**Why Superset?**](#why-superset) |
  [**Supported Databases**](#supported-databases) |
  [**Installation and Configuration**](#installation-and-configuration) |
  [**Release Notes**](RELEASING/README.md#release-notes-for-recent-releases) |
  [**Get Involved**](#get-involved) |
  [**Contributor Guide**](#contributor-guide) |
  [**Resources**](#resources) |
  [**Organizations Using Superset**](RESOURCES/INTHEWILD.md)



  Superset is a modern data exploration and data visualization platform. Superset can replace or augment proprietary business intelligence tools for many teams. Superset integrates well with a variety of data sources.

  Superset provides:

  - A **no-code interface** for building charts quickly
  - A powerful, web-based **SQL Editor** for advanced querying
  - A **lightweight semantic layer** for quickly defining custom dimensions and metrics
  - Out of the box support for **nearly any SQL** database or data engine
  - A wide array of **beautiful visualizations** to showcase your data, ranging from simple bar charts to geospatial visualizations
  - Lightweight, configurable **caching layer** to help ease database load
  - Highly extensible **security roles and authentication** options
  - An **API** for programmatic customization
  - A **cloud-native architecture** designed from the ground up for scale



  **Large Gallery of Visualizations**

  <kbd><img title="Gallery" src="superset-frontend/src/assets/images/screenshots/gallery.jpg"/></kbd><br/>

  **Craft Beautiful, Dynamic Dashboards**

  <kbd><img title="View Dashboards" src="superset-frontend/src/assets/images/screenshots/slack_dash.jpg"/></kbd><br/>

  **No-Code Chart Builder**

  <kbd><img title="Slice & dice your data" src="superset-frontend/src/assets/images/screenshots/explore.jpg"/></kbd><br/>

  **Powerful SQL Editor**

  <kbd><img title="SQL Lab" src="superset-frontend/src/assets/images/screenshots/sql_lab.jpg"/></kbd><br/>



  Superset can query data from any SQL-speaking datastore or data engine (Presto, Trino, Athena, [and more](https://superset.apache.org/docs/databases/installing-database-drivers/)) that has a Python DB-API driver and a SQLAlchemy dialect.

  Here are some of the major database solutions that are supported:

  <p align="center">
    <img src="superset-frontend/src/assets/images/redshift.png" alt="redshift" border="0" width="200" height="80"/>
    <img src="superset-frontend/src/assets/images/google-biquery.png" alt="google-biquery" border="0" width="200" height="80"/>
    <img src="superset-frontend/src/assets/images/snowflake.png" alt="snowflake" border="0" width="200" height="80"/>
    <img src="superset-frontend/src/assets/images/trino.png" alt="trino" border="0" width="200" height="80"/>
    <img src="superset-frontend/src/assets/images/presto.png" alt="presto" border="0" width="200" height="80"/>
    <img src="superset-frontend/src/assets/images/databricks.png" alt="databricks" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/druid.png" alt="druid" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/firebolt.png" alt="firebolt" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/timescale.png" alt="timescale" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/rockset.png" alt="rockset" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/postgresql.png" alt="postgresql" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/mysql.png" alt="mysql" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/mssql-server.png" alt="mssql-server" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/db2.png" alt="db2" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/sqlite.png" alt="sqlite" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/sybase.png" alt="sybase" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/mariadb.png" alt="mariadb" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/vertica.png" alt="vertica" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/oracle.png" alt="oracle" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/firebird.png" alt="firebird" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/greenplum.png" alt="greenplum" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/clickhouse.png" alt="clickhouse" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/exasol.png" alt="exasol" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/monet-db.png" alt="monet-db" border="0" width="200" height="80" />
    <img src="superset-frontend/src/assets/images/apache-kylin.png" alt="apache-kylin" border="0" width="200" height="80"/>
    <img src="superset-frontend/src/assets/images/hologres.png" alt="hologres" border="0" width="200" height="80"/>
    <img src="superset-frontend/src/assets/images/netezza.png" alt="netezza" border="0" width="200" height="80"/>
    <img src="superset-frontend/src/assets/images/pinot.png" alt="pinot" border="0" width="200" height="80"/>
    <img src="superset-frontend/src/assets/images/teradata.png" alt="teradata" border="0" width="200" height="80"/>
    <img src="superset-frontend/src/assets/images/yugabyte.png" alt="yugabyte" border="0" width="200" height="80"/>
  </p>

  **A more comprehensive list of supported databases** along with the configuration instructions can be found [here](https://superset.apache.org/docs/databases/installing-database-drivers).

  Want to add support for your datastore or data engine? Read more [here](https://superset.apache.org/docs/frequently-asked-questions#does-superset-work-with-insert-database-engine-here) about the technical requirements.



  [Extended documentation for Superset](https://superset.apache.org/docs/installation/installing-superset-using-docker-compose)



  - Ask and answer questions on [StackOverflow](https://stackoverflow.com/questions/tagged/apache-superset) using the **apache-superset** tag
  - [Join our community's Slack](http://bit.ly/join-superset-slack)
    and please read our [Slack Community Guidelines](https://github.com/apache/superset/blob/master/CODE_OF_CONDUCT.md#slack-community-guidelines)
  - [Join our dev@superset.apache.org Mailing list](https://lists.apache.org/list.html?dev@superset.apache.org)



  Interested in contributing? Check out our
  [CONTRIBUTING.md](https://github.com/apache/superset/blob/master/CONTRIBUTING.md)
  to find resources around contributing along with a detailed guide on
  how to set up a development environment.



  Superset 2.0!
  - [Superset 2.0 Meetup](https://preset.io/events/superset-2-0-meetup/)
  - [Superset 2.0 Release Notes](https://github.com/apache/superset/tree/master/RELEASING/release-notes-2-0)

  Understanding the Superset Points of View
  - [The Case for Dataset-Centric Visualization](https://preset.io/blog/dataset-centric-visualization/)
  - [Understanding the Superset Semantic Layer](https://preset.io/blog/understanding-superset-semantic-layer/)


  - Getting Started with Superset
    - [Superset in 2 Minutes using Docker Compose](https://superset.apache.org/docs/installation/installing-superset-using-docker-compose#installing-superset-locally-using-docker-compose)
    - [Installing Database Drivers](https://superset.apache.org/docs/databases/docker-add-drivers/)
    - [Building New Database Connectors](https://preset.io/blog/building-database-connector/)
    - [Create Your First Dashboard](https://superset.apache.org/docs/creating-charts-dashboards/first-dashboard)
    - [Comprehensive Tutorial for Contributing Code to Apache Superset
    ](https://preset.io/blog/tutorial-contributing-code-to-apache-superset/)
  - [Resources to master Superset by Preset](https://preset.io/resources/)

  - Deploying Superset
    - [Official Docker image](https://hub.docker.com/r/apache/superset)
    - [Helm Chart](https://github.com/apache/superset/tree/master/helm/superset)

  - Recordings of Past [Superset Community Events](https://preset.io/events)
    - [Mixed Time Series Charts](https://preset.io/events/mixed-time-series-visualization-in-superset-workshop/)
    - [How the Bing Team Customized Superset for the Internal Self-Serve Data & Analytics Platform](https://preset.io/events/how-the-bing-team-heavily-customized-superset-for-their-internal-data/)
    - [Live Demo: Visualizing MongoDB and Pinot Data using Trino](https://preset.io/events/2021-04-13-visualizing-mongodb-and-pinot-data-using-trino/)
  	- [Introduction to the Superset API](https://preset.io/events/introduction-to-the-superset-api/)
  	- [Building a Database Connector for Superset](https://preset.io/events/2021-02-16-building-a-database-connector-for-superset/)

  - Visualizations
    - [Creating Viz Plugins](https://superset.apache.org/docs/contributing/creating-viz-plugins/)
    - [Managing and Deploying Custom Viz Plugins](https://medium.com/nmc-techblog/apache-superset-manage-custom-viz-plugins-in-production-9fde1a708e55)
    - [Why Apache Superset is Betting on Apache ECharts](https://preset.io/blog/2021-4-1-why-echarts/)

  - [Superset API](https://superset.apache.org/docs/rest-api)


pkgId: d0f67d0fd9772ba9d62eb25731373dffc8ee99340d9fff17b72da75f9430ff7c
name: python-apiclient
arch: src
version: 1.0.4
epoch: 0
release: 1
summary: Framework for making good API client libraries using urllib3.
url: https://github.com/shazow/apiclient
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-663f97e5-1bf0-4f26-9efd-099176452c7f
location_href: 00010543-python-apiclient/python-apiclient-1.0.4-1.src.rpm
checksum_type: sha256
description:
  - Threadsafely reuses connections with Keep-Alive (via urllib3).
  - Small and easy to understand codebase perfect for extending and building upon.
  - Built-in support for rate limiting and request throttling.
  - Functional examples for the
    `Klout API <https://github.com/shazow/apiclient/blob/master/examples/klout.py>`_
    and the
    `Facebook OpenGraph API <https://github.com/shazow/apiclient/blob/master/examples/facebook.py>`_.


pkgId: f9e087b6399d9f23a722edbe67378a93029296a3efa3716c8a4738f195f08a09
name: python-apispec
arch: src
version: 6.3.0
epoch: 0
release: 1
url: https://github.com/marshmallow-code/apispec
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8b4646be-df7d-41e3-b4f8-b11ab155dfa2
location_href: 00009284-python-apispec/python-apispec-6.3.0-1.src.rpm
checksum_type: sha256
summary:
  A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification).

description:
  - Supports the OpenAPI Specification (versions 2 and 3)
  - Framework-agnostic
  - Built-in support for `marshmallow <https://marshmallow.readthedocs.io/>`_
  - Utilities for parsing docstrings


pkgId: f0860c12cd7de966d447962e873c03d47cfc0ddb7a6a8fe141e168211ffac626
name: python-apispec-webframeworks
arch: src
version: 0.5.2
epoch: 0
release: 1
summary: Web framework plugins for apispec.
url: https://github.com/marshmallow-code/apispec-webframeworks
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-bc695886-bc28-4995-84c4-4ac1002d1a9a
location_href: 00011522-python-apispec-webframeworks/python-apispec-webframeworks-0.5.2-1.src.rpm
checksum_type: sha256
description:
  To migrate from older versions of apispec, install this package
  with
      pip install apispec-webframeworks
  Change your imports, like so:
      
      from apispec.ext.flask import FlaskPlugin
      
      from apispec_webframeworks.flask import FlaskPlugin


pkgId: 6d16c436c16e64dd3589d16518c61eb3cc116a75075fe7b991013d278be0efa0
name: python-aplpy
arch: src
version: 2.1.0
epoch: 0
release: 1
summary: The Astronomical Plotting Library in Python
url: http://aplpy.github.io
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-932b2ce2-168e-4f91-bc33-70efee503ef6
location_href: 00002835-python-APLpy/python-aplpy-2.1.0-1.src.rpm
checksum_type: sha256
description:
  APLpy (the Astronomical Plotting Library in Python) is a Python module
  aimed at producing publication-quality plots of astronomical imaging
  data in FITS format.
  PyPI: https://pypi.python.org/pypi/APLpy
  Website: http://aplpy.github.io
  Documentation: http://aplpy.readthedocs.io
  APLpy is released under an MIT open-source license.


pkgId: 408d35a1168a1d534581b3636c3f7ad1114737546482d34f107e2a4a6bb63a3f
name: python-appdirs
arch: src
version: 1.4.4
epoch: 0
release: 1
summary: A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
url: http://github.com/ActiveState/appdirs
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c1782c59-fe1c-4166-9abd-e864475043cf
location_href: 00009043-python-appdirs/python-appdirs-1.4.4-1.src.rpm
checksum_type: sha256
description:
  What directory should your app use for storing user data? If running on Mac OS X, you
  should use::
      ~/Library/Application Support/<AppName>
  If on Windows (at least English Win XP) that should be::
      C:\Documents and Settings\<User>\Application Data\Local Settings\<AppAuthor>\<AppName>
  or possibly::
      C:\Documents and Settings\<User>\Application Data\<AppAuthor>\<AppName>
  for `roaming profiles <http://bit.ly/9yl3b6>`_ but that is another story.
  On Linux (and other Unices) the dir, according to the `XDG
  spec <http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html>`_, is::
      ~/.local/share/<AppName>


pkgId: e7826d746e93ea3c1cb19b4d06cb6e0d3e79cbd6fe02393452166e86a81cdca4
name: python-appier
arch: src
version: 1.30.1
epoch: 0
release: 1
summary: Appier Framework
url: http://appier.hive.pt
rpm_license: Apache License, Version 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-5c255193-24f3-4b8b-8a9d-8ae344928867
location_href: 00012132-python-appier/python-appier-1.30.1-1.src.rpm
checksum_type: sha256
description:
  Joyful Python Web App development
  Appier is an object-oriented Python web framework built for super fast app development.
  It's as lightweight as possible, but not too lightweight.
  It gives you the power of bigger frameworks, without their complexity.


pkgId: 9d7efa6da8eb74f96561649eb4d45406df4bce07e01d9f8bd8f6660cb29ef0b9
name: python-applicationinsights
arch: src
version: 0.11.10
epoch: 0
release: 1
summary: This project extends the Application Insights API surface to support Python.
url: https://github.com/Microsoft/ApplicationInsights-Python
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-1c02e4f2-d826-485a-9f4d-6fb595ad3aaa
location_href: 00009062-python-applicationinsights/python-applicationinsights-0.11.10-1.src.rpm
checksum_type: sha256
description:
  This SDK is no longer maintained or supported by Microsoft. Check out the `Python OpenCensus SDK <https://docs.microsoft.com/azure/azure-monitor/app/opencensus-python>`_ for Azure Monitor's latest Python investments. Azure Monitor only provides support when using the `supported SDKs <https://docs.microsoft.com/en-us/azure/azure-monitor/app/platforms#unsupported-community-sdks>`_. We’re constantly assessing opportunities to expand our support for other languages, so follow our `GitHub Announcements <https://github.com/microsoft/ApplicationInsights-Announcements/issues>`_ page to receive the latest SDK news.


pkgId: c6a2e40090582e3efacfba21bd96d0ea02be25617c91cfa873367d627c060e3b
name: python-appnope
arch: src
version: 0.1.3
epoch: 0
release: 1
summary: Disable App Nap on macOS >= 10.9
url: http://github.com/minrk/appnope
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-af1dff1a-3452-4dbd-a876-2bf74efc5376
location_href: 00009557-python-appnope/python-appnope-0.1.3-1.src.rpm
checksum_type: sha256
description:
  Simple package for disabling App Nap on macOS >= 10.9,
  which can be problematic.

  To disable App Nap:

  ```python
  import appnope
  appnope.nope()
  ```

  To reenable, for some reason:

  ```python
  appnope.nap()
  ```

  or to only disable App Nap for a particular block:

  ```
  with appnope.nope_scope():
      do_important_stuff()
  ```

  It uses ctypes to wrap a `[NSProcessInfo beginActivityWithOptions]` call to disable App Nap.

  To install:

      pip install appnope


pkgId: 0edc038772e8694d51af630be5f9cdd72417fedb9124b963d47f37dcc9ce2976
name: python-apprise
arch: src
version: 1.3.0
epoch: 0
release: 1
summary: Push Notifications that work with just about every platform!
url: https://github.com/caronc/apprise
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-cfa73893-785d-455e-bab6-895b02888d7d
location_href: 00003035-python-apprise/python-apprise-1.3.0-1.src.rpm
checksum_type: sha256
description:
  ![Apprise Logo](https://raw.githubusercontent.com/caronc/apprise/master/apprise/assets/themes/default/apprise-logo.png)

  <hr/>

  **ap·prise** / *verb*<br/>
  To inform or tell (someone). To make one aware of something.
  <hr/>

  *Apprise* allows you to send a notification to *almost* all of the most popular *notification* services available to us today such as: Telegram, Discord, Slack, Amazon SNS, Gotify, etc.

  * One notification library to rule them all.
  * A common and intuitive notification syntax.
  * Supports the handling of images and attachments (_to the notification services that will accept them_).
  * It's incredibly lightweight.
  * Amazing response times because all messages sent asynchronously.

  Developers who wish to provide a notification service no longer need to research each and every one out there. They no longer need to try to adapt to the new ones that comeout thereafter. They just need to include this one library and then they can immediately gain access to almost all of the notifications services available to us today.

  System Administrators and DevOps who wish to send a notification now no longer need to find the right tool for the job. Everything is already wrapped and supported within the `apprise` command line tool (CLI) that ships with this product.

  [![Paypal](https://img.shields.io/badge/paypal-donate-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MHANV39UZNQ5E)
  [![Follow](https://img.shields.io/twitter/follow/l2gnux)](https://twitter.com/l2gnux/)<br/>
  [![Discord](https://img.shields.io/discord/558793703356104724.svg?colorB=7289DA&label=Discord&logo=Discord&logoColor=7289DA&style=flat-square)](https://discord.gg/MMPeN2D)
  [![Python](https://img.shields.io/pypi/pyversions/apprise.svg?style=flat-square)](https://pypi.org/project/apprise/)
  [![Build Status](https://github.com/caronc/apprise/actions/workflows/tests.yml/badge.svg)](https://github.com/caronc/apprise/actions/workflows/tests.yml)
  [![CodeCov Status](https://codecov.io/github/caronc/apprise/branch/master/graph/badge.svg)](https://codecov.io/github/caronc/apprise)
  [![PyPi](https://img.shields.io/pypi/dm/apprise.svg?style=flat-square)](https://pypi.org/project/apprise/)


  <!--ts-->
  * [Supported Notifications](#supported-notifications)
    * [Productivity Based Notifications](#productivity-based-notifications)
    * [SMS Notifications](#sms-notifications)
    * [Desktop Notifications](#desktop-notifications)
    * [Email Notifications](#email-notifications)
    * [Custom Notifications](#custom-notifications)
  * [Installation](#installation)
  * [Command Line Usage](#command-line-usage)
    * [Configuration Files](#cli-configuration-files)
    * [File Attachments](#cli-file-attachments)
    * [Loading Custom Notifications/Hooks](#cli-loading-custom-notificationshooks)
  * [Developer API Usage](#developer-api-usage)
    * [Configuration Files](#api-configuration-files)
    * [File Attachments](#api-file-attachments)
    * [Loading Custom Notifications/Hooks](#api-loading-custom-notificationshooks)
  * [More Supported Links and Documentation](#want-to-learn-more)
  <!--te-->



  The section identifies all of the services supported by this library. [Check out the wiki for more information on the supported modules here](https://github.com/caronc/apprise/wiki).



  The table below identifies the services this tool supports and some example service urls you need to use in order to take advantage of it. Click on any of the services listed below to get more details on how you can configure Apprise to access them.

  | Notification Service | Service ID | Default Port | Example Syntax |
  | -------------------- | ---------- | ------------ | -------------- |
  | [Apprise API](https://github.com/caronc/apprise/wiki/Notify_apprise_api)  | apprise:// or apprises:// | (TCP) 80 or 443 | apprise://hostname/Token
  | [AWS SES](https://github.com/caronc/apprise/wiki/Notify_ses)  | ses://   | (TCP) 443   | ses://user@domain/AccessKeyID/AccessSecretKey/RegionName<br/>ses://user@domain/AccessKeyID/AccessSecretKey/RegionName/email1/email2/emailN
  | [Bark](https://github.com/caronc/apprise/wiki/Notify_bark)  | bark://   | (TCP) 80 or 443   | bark://hostname<br />bark://hostname/device_key<br />bark://hostname/device_key1/device_key2/device_keyN
  | [Boxcar](https://github.com/caronc/apprise/wiki/Notify_boxcar)  | boxcar://   | (TCP) 443   | boxcar://hostname<br />boxcar://hostname/@tag<br/>boxcar://hostname/device_token<br />boxcar://hostname/device_token1/device_token2/device_tokenN<br />boxcar://hostname/@tag/@tag2/device_token
  | [Discord](https://github.com/caronc/apprise/wiki/Notify_discord)  | discord://   | (TCP) 443   | discord://webhook_id/webhook_token<br />discord://avatar@webhook_id/webhook_token
  | [Emby](https://github.com/caronc/apprise/wiki/Notify_emby)  | emby:// or embys:// | (TCP) 8096 | emby://user@hostname/<br />emby://user:password@hostname
  | [Enigma2](https://github.com/caronc/apprise/wiki/Notify_enigma2)  | enigma2:// or enigma2s:// | (TCP) 80 or 443 | enigma2://hostname
  | [Faast](https://github.com/caronc/apprise/wiki/Notify_faast) | faast://    | (TCP) 443    | faast://authorizationtoken
  | [FCM](https://github.com/caronc/apprise/wiki/Notify_fcm) | fcm://    | (TCP) 443    | fcm://project@apikey/DEVICE_ID<br />fcm://project@apikey/#TOPIC<br/>fcm://project@apikey/DEVICE_ID1/#topic1/#topic2/DEVICE_ID2/
  | [Flock](https://github.com/caronc/apprise/wiki/Notify_flock) | flock://    | (TCP) 443    | flock://token<br/>flock://botname@token<br/>flock://app_token/u:userid<br/>flock://app_token/g:channel_id<br/>flock://app_token/u:userid/g:channel_id
  | [Gitter](https://github.com/caronc/apprise/wiki/Notify_gitter) | gitter://    | (TCP) 443    | gitter://token/room<br/>gitter://token/room1/room2/roomN
  | [Google Chat](https://github.com/caronc/apprise/wiki/Notify_googlechat) | gchat://    | (TCP) 443    | gchat://workspace/key/token
  | [Gotify](https://github.com/caronc/apprise/wiki/Notify_gotify) | gotify:// or gotifys://   | (TCP) 80 or 443    | gotify://hostname/token<br />gotifys://hostname/token?priority=high
  | [Growl](https://github.com/caronc/apprise/wiki/Notify_growl)  | growl://   | (UDP) 23053   | growl://hostname<br />growl://hostname:portno<br />growl://password@hostname<br />growl://password@hostname:port</br>**Note**: you can also use the get parameter _version_ which can allow the growl request to behave using the older v1.x protocol. An example would look like: growl://hostname?version=1
  | [Guilded](https://github.com/caronc/apprise/wiki/Notify_guilded)  | guilded://   | (TCP) 443   | guilded://webhook_id/webhook_token<br />guilded://avatar@webhook_id/webhook_token
  | [Home Assistant](https://github.com/caronc/apprise/wiki/Notify_homeassistant)       | hassio:// or hassios://   | (TCP) 8123 or 443 | hassio://hostname/accesstoken<br />hassio://user@hostname/accesstoken<br />hassio://user:password@hostname:port/accesstoken<br />hassio://hostname/optional/path/accesstoken
  | [IFTTT](https://github.com/caronc/apprise/wiki/Notify_ifttt) | ifttt://    | (TCP) 443    | ifttt://webhooksID/Event<br />ifttt://webhooksID/Event1/Event2/EventN<br/>ifttt://webhooksID/Event1/?+Key=Value<br/>ifttt://webhooksID/Event1/?-Key=value1
  | [Join](https://github.com/caronc/apprise/wiki/Notify_join) | join://   | (TCP) 443    | join://apikey/device<br />join://apikey/device1/device2/deviceN/<br />join://apikey/group<br />join://apikey/groupA/groupB/groupN<br />join://apikey/DeviceA/groupA/groupN/DeviceN/
  | [KODI](https://github.com/caronc/apprise/wiki/Notify_kodi) | kodi:// or kodis://    | (TCP) 8080 or 443   | kodi://hostname<br />kodi://user@hostname<br />kodi://user:password@hostname:port
  | [Kumulos](https://github.com/caronc/apprise/wiki/Notify_kumulos) | kumulos:// | (TCP) 443 | kumulos://apikey/serverkey
  | [LaMetric Time](https://github.com/caronc/apprise/wiki/Notify_lametric) | lametric:// | (TCP) 443 | lametric://apikey@device_ipaddr<br/>lametric://apikey@hostname:port<br/>lametric://client_id@client_secret
  | [Line](https://github.com/caronc/apprise/wiki/Notify_line) | line:// | (TCP) 443 | line://Token@User<br/>line://Token/User1/User2/UserN
  | [Mailgun](https://github.com/caronc/apprise/wiki/Notify_mailgun) | mailgun:// | (TCP) 443 | mailgun://user@hostname/apikey<br />mailgun://user@hostname/apikey/email<br />mailgun://user@hostname/apikey/email1/email2/emailN<br />mailgun://user@hostname/apikey/?name="From%20User"
  | [Mastodon](https://github.com/caronc/apprise/wiki/Notify_mastodon) | mastodon:// or mastodons://| (TCP) 80 or 443  | mastodon://access_key@hostname<br />mastodon://access_key@hostname/@user<br />mastodon://access_key@hostname/@user1/@user2/@userN
  | [Matrix](https://github.com/caronc/apprise/wiki/Notify_matrix) | matrix:// or matrixs://  | (TCP) 80 or 443 | matrix://hostname<br />matrix://user@hostname<br />matrixs://user:pass@hostname:port/#room_alias<br />matrixs://user:pass@hostname:port/!room_id<br />matrixs://user:pass@hostname:port/#room_alias/!room_id/#room2<br />matrixs://token@hostname:port/?webhook=matrix<br />matrix://user:token@hostname/?webhook=slack&format=markdown
  | [Mattermost](https://github.com/caronc/apprise/wiki/Notify_mattermost) | mmost:// or mmosts:// | (TCP) 8065 | mmost://hostname/authkey<br />mmost://hostname:80/authkey<br />mmost://user@hostname:80/authkey<br />mmost://hostname/authkey?channel=channel<br />mmosts://hostname/authkey<br />mmosts://user@hostname/authkey<br />
  | [Microsoft Teams](https://github.com/caronc/apprise/wiki/Notify_msteams) | msteams://  | (TCP) 443   | msteams://TokenA/TokenB/TokenC/
  | [Misskey](https://github.com/caronc/apprise/wiki/Notify_misskey) | misskey:// or misskeys://| (TCP) 80 or 443  | misskey://access_token@hostname
  | [MQTT](https://github.com/caronc/apprise/wiki/Notify_mqtt) | mqtt://  or mqtts:// | (TCP) 1883 or 8883   | mqtt://hostname/topic<br />mqtt://user@hostname/topic<br />mqtts://user:pass@hostname:9883/topic
  | [Nextcloud](https://github.com/caronc/apprise/wiki/Notify_nextcloud) | ncloud:// or nclouds:// | (TCP) 80 or 443 | ncloud://adminuser:pass@host/User<br/>nclouds://adminuser:pass@host/User1/User2/UserN
  | [NextcloudTalk](https://github.com/caronc/apprise/wiki/Notify_nextcloudtalk) | nctalk:// or nctalks:// | (TCP) 80 or 443 | nctalk://user:pass@host/RoomId<br/>nctalks://user:pass@host/RoomId1/RoomId2/RoomIdN
  | [Notica](https://github.com/caronc/apprise/wiki/Notify_notica) | notica://  | (TCP) 443   | notica://Token/
  | [Notifico](https://github.com/caronc/apprise/wiki/Notify_notifico) | notifico://  | (TCP) 443   | notifico://ProjectID/MessageHook/
  | [ntfy](https://github.com/caronc/apprise/wiki/Notify_ntfy) | ntfy://  | (TCP) 80 or 443   | ntfy://topic/<br/>ntfys://topic/
  | [Office 365](https://github.com/caronc/apprise/wiki/Notify_office365) | o365://  | (TCP) 443   | o365://TenantID:AccountEmail/ClientID/ClientSecret<br />o365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail<br />o365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail1/TargetEmail2/TargetEmailN
  | [OneSignal](https://github.com/caronc/apprise/wiki/Notify_onesignal) | onesignal:// | (TCP) 443 | onesignal://AppID@APIKey/PlayerID<br/>onesignal://TemplateID:AppID@APIKey/UserID<br/>onesignal://AppID@APIKey/#IncludeSegment<br/>onesignal://AppID@APIKey/Email
  | [Opsgenie](https://github.com/caronc/apprise/wiki/Notify_opsgenie) | opsgenie:// | (TCP) 443 | opsgenie://APIKey<br/>opsgenie://APIKey/UserID<br/>opsgenie://APIKey/#Team<br/>opsgenie://APIKey/\*Schedule<br/>opsgenie://APIKey/^Escalation
  | [PagerDuty](https://github.com/caronc/apprise/wiki/Notify_pagerduty) | pagerduty:// | (TCP) 443 | pagerduty://IntegrationKey@ApiKey<br/>pagerduty://IntegrationKey@ApiKey/Source/Component
  | [PagerTree](https://github.com/caronc/apprise/wiki/Notify_pagertree) | pagertree:// | (TCP) 443 | pagertree://integration_id
  | [ParsePlatform](https://github.com/caronc/apprise/wiki/Notify_parseplatform) | parsep:// or parseps:// | (TCP) 80 or 443 | parsep://AppID:MasterKey@Hostname<br/>parseps://AppID:MasterKey@Hostname
  | [PopcornNotify](https://github.com/caronc/apprise/wiki/Notify_popcornnotify) | popcorn://  | (TCP) 443   | popcorn://ApiKey/ToPhoneNo<br/>popcorn://ApiKey/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/<br/>popcorn://ApiKey/ToEmail<br/>popcorn://ApiKey/ToEmail1/ToEmail2/ToEmailN/<br/>popcorn://ApiKey/ToPhoneNo1/ToEmail1/ToPhoneNoN/ToEmailN
  | [Prowl](https://github.com/caronc/apprise/wiki/Notify_prowl) | prowl://   | (TCP) 443    | prowl://apikey<br />prowl://apikey/providerkey
  | [PushBullet](https://github.com/caronc/apprise/wiki/Notify_pushbullet) | pbul://    | (TCP) 443    | pbul://accesstoken<br />pbul://accesstoken/#channel<br/>pbul://accesstoken/A_DEVICE_ID<br />pbul://accesstoken/email@address.com<br />pbul://accesstoken/#channel/#channel2/email@address.net/DEVICE
  | [Pushjet](https://github.com/caronc/apprise/wiki/Notify_pushjet) | pjet:// or pjets:// | (TCP) 80 or 443 | pjet://hostname/secret<br />pjet://hostname:port/secret<br />pjets://secret@hostname/secret<br />pjets://hostname:port/secret
  | [Push (Techulus)](https://github.com/caronc/apprise/wiki/Notify_techulus) | push://    | (TCP) 443    | push://apikey/
  | [Pushed](https://github.com/caronc/apprise/wiki/Notify_pushed) | pushed://    | (TCP) 443    | pushed://appkey/appsecret/<br/>pushed://appkey/appsecret/#ChannelAlias<br/>pushed://appkey/appsecret/#ChannelAlias1/#ChannelAlias2/#ChannelAliasN<br/>pushed://appkey/appsecret/@UserPushedID<br/>pushed://appkey/appsecret/@UserPushedID1/@UserPushedID2/@UserPushedIDN
  | [Pushover](https://github.com/caronc/apprise/wiki/Notify_pushover)  | pover://   | (TCP) 443   | pover://user@token<br />pover://user@token/DEVICE<br />pover://user@token/DEVICE1/DEVICE2/DEVICEN<br />**Note**: you must specify both your user_id and token
  | [PushSafer](https://github.com/caronc/apprise/wiki/Notify_pushsafer)  | psafer:// or psafers://  | (TCP) 80 or 443  | psafer://privatekey<br />psafers://privatekey/DEVICE<br />psafer://privatekey/DEVICE1/DEVICE2/DEVICEN
  | [Reddit](https://github.com/caronc/apprise/wiki/Notify_reddit) | reddit:// | (TCP) 443   | reddit://user:password@app_id/app_secret/subreddit<br />reddit://user:password@app_id/app_secret/sub1/sub2/subN
  | [Rocket.Chat](https://github.com/caronc/apprise/wiki/Notify_rocketchat) | rocket:// or rockets://  | (TCP) 80 or 443   | rocket://user:password@hostname/RoomID/Channel<br />rockets://user:password@hostname:443/#Channel1/#Channel1/RoomID<br />rocket://user:password@hostname/#Channel<br />rocket://webhook@hostname<br />rockets://webhook@hostname/@User/#Channel
  | [Ryver](https://github.com/caronc/apprise/wiki/Notify_ryver) | ryver://  | (TCP) 443   | ryver://Organization/Token<br />ryver://botname@Organization/Token
  | [SendGrid](https://github.com/caronc/apprise/wiki/Notify_sendgrid) | sendgrid://  | (TCP) 443   | sendgrid://APIToken:FromEmail/<br />sendgrid://APIToken:FromEmail/ToEmail<br />sendgrid://APIToken:FromEmail/ToEmail1/ToEmail2/ToEmailN/
  | [ServerChan](https://github.com/caronc/apprise/wiki/Notify_serverchan) | schan://   | (TCP) 443    | schan://sendkey/
  | [Signal API](https://github.com/caronc/apprise/wiki/Notify_signal) | signal://  or signals:// | (TCP) 80 or 443  | signal://hostname:port/FromPhoneNo<br/>signal://hostname:port/FromPhoneNo/ToPhoneNo<br/>signal://hostname:port/FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/
  | [SimplePush](https://github.com/caronc/apprise/wiki/Notify_simplepush) | spush://   | (TCP) 443    | spush://apikey<br />spush://salt:password@apikey<br />spush://apikey?event=Apprise
  | [Slack](https://github.com/caronc/apprise/wiki/Notify_slack) | slack://  | (TCP) 443   | slack://TokenA/TokenB/TokenC/<br />slack://TokenA/TokenB/TokenC/Channel<br />slack://botname@TokenA/TokenB/TokenC/Channel<br />slack://user@TokenA/TokenB/TokenC/Channel1/Channel2/ChannelN
  | [SMTP2Go](https://github.com/caronc/apprise/wiki/Notify_smtp2go) | smtp2go:// | (TCP) 443 | smtp2go://user@hostname/apikey<br />smtp2go://user@hostname/apikey/email<br />smtp2go://user@hostname/apikey/email1/email2/emailN<br />smtp2go://user@hostname/apikey/?name="From%20User"
  | [Streamlabs](https://github.com/caronc/apprise/wiki/Notify_streamlabs) | strmlabs:// | (TCP) 443 | strmlabs://AccessToken/<br/>strmlabs://AccessToken/?name=name&identifier=identifier&amount=0&currency=USD
  | [SparkPost](https://github.com/caronc/apprise/wiki/Notify_sparkpost) | sparkpost:// | (TCP) 443 | sparkpost://user@hostname/apikey<br />sparkpost://user@hostname/apikey/email<br />sparkpost://user@hostname/apikey/email1/email2/emailN<br />sparkpost://user@hostname/apikey/?name="From%20User"
  | [Spontit](https://github.com/caronc/apprise/wiki/Notify_spontit) | spontit://  | (TCP) 443   | spontit://UserID@APIKey/<br />spontit://UserID@APIKey/Channel<br />spontit://UserID@APIKey/Channel1/Channel2/ChannelN
  | [Syslog](https://github.com/caronc/apprise/wiki/Notify_syslog) | syslog://  | (UDP) 514 (_if hostname specified_) | syslog://<br />syslog://Facility<br />syslog://hostname<br />syslog://hostname/Facility
  | [Telegram](https://github.com/caronc/apprise/wiki/Notify_telegram) | tgram://  | (TCP) 443   | tgram://bottoken/ChatID<br />tgram://bottoken/ChatID1/ChatID2/ChatIDN
  | [Twitter](https://github.com/caronc/apprise/wiki/Notify_twitter) | twitter://  | (TCP) 443   | twitter://CKey/CSecret/AKey/ASecret<br/>twitter://user@CKey/CSecret/AKey/ASecret<br/>twitter://CKey/CSecret/AKey/ASecret/User1/User2/User2<br/>twitter://CKey/CSecret/AKey/ASecret?mode=tweet
  | [Twist](https://github.com/caronc/apprise/wiki/Notify_twist) | twist://  | (TCP) 443   | twist://pasword:login<br/>twist://password:login/#channel<br/>twist://password:login/#team:channel<br/>twist://password:login/#team:channel1/channel2/#team3:channel
  | [XBMC](https://github.com/caronc/apprise/wiki/Notify_xbmc) | xbmc:// or xbmcs://    | (TCP) 8080 or 443   | xbmc://hostname<br />xbmc://user@hostname<br />xbmc://user:password@hostname:port
  | [Webex Teams (Cisco)](https://github.com/caronc/apprise/wiki/Notify_wxteams) | wxteams://  | (TCP) 443   | wxteams://Token
  | [Zulip Chat](https://github.com/caronc/apprise/wiki/Notify_zulip) | zulip://  | (TCP) 443   | zulip://botname@Organization/Token<br />zulip://botname@Organization/Token/Stream<br />zulip://botname@Organization/Token/Email



  | Notification Service | Service ID | Default Port | Example Syntax |
  | -------------------- | ---------- | ------------ | -------------- |
  | [AWS SNS](https://github.com/caronc/apprise/wiki/Notify_sns)  | sns://   | (TCP) 443   | sns://AccessKeyID/AccessSecretKey/RegionName/+PhoneNo<br/>sns://AccessKeyID/AccessSecretKey/RegionName/+PhoneNo1/+PhoneNo2/+PhoneNoN<br/>sns://AccessKeyID/AccessSecretKey/RegionName/Topic<br/>sns://AccessKeyID/AccessSecretKey/RegionName/Topic1/Topic2/TopicN
  | [BulkSMS](https://github.com/caronc/apprise/wiki/Notify_bulksms) | bulksms://  | (TCP) 443   | bulksms://user:password@ToPhoneNo<br/>bulksms://User:Password@ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/
  | [ClickSend](https://github.com/caronc/apprise/wiki/Notify_clicksend) | clicksend://  | (TCP) 443   | clicksend://user:pass@PhoneNo<br/>clicksend://user:pass@ToPhoneNo1/ToPhoneNo2/ToPhoneNoN
  | [DAPNET](https://github.com/caronc/apprise/wiki/Notify_dapnet) | dapnet://  | (TCP) 80   | dapnet://user:pass@callsign<br/>dapnet://user:pass@callsign1/callsign2/callsignN
  | [D7 Networks](https://github.com/caronc/apprise/wiki/Notify_d7networks) | d7sms://  | (TCP) 443   | d7sms://token@PhoneNo<br/>d7sms://token@ToPhoneNo1/ToPhoneNo2/ToPhoneNoN
  | [DingTalk](https://github.com/caronc/apprise/wiki/Notify_dingtalk)  | dingtalk://   | (TCP) 443   | dingtalk://token/<br />dingtalk://token/ToPhoneNo<br />dingtalk://token/ToPhoneNo1/ToPhoneNo2/ToPhoneNo1/
  | [Kavenegar](https://github.com/caronc/apprise/wiki/Notify_kavenegar) | kavenegar://  | (TCP) 443   | kavenegar://ApiKey/ToPhoneNo<br/>kavenegar://FromPhoneNo@ApiKey/ToPhoneNo<br/>kavenegar://ApiKey/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN
  | [MessageBird](https://github.com/caronc/apprise/wiki/Notify_messagebird) | msgbird://  | (TCP) 443   | msgbird://ApiKey/FromPhoneNo<br/>msgbird://ApiKey/FromPhoneNo/ToPhoneNo<br/>msgbird://ApiKey/FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/
  | [MSG91](https://github.com/caronc/apprise/wiki/Notify_msg91) | msg91://  | (TCP) 443   | msg91://AuthKey/ToPhoneNo<br/>msg91://SenderID@AuthKey/ToPhoneNo<br/>msg91://AuthKey/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/
  | [Signal API](https://github.com/caronc/apprise/wiki/Notify_signal) | signal://  or signals:// | (TCP) 80 or 443  | signal://hostname:port/FromPhoneNo<br/>signal://hostname:port/FromPhoneNo/ToPhoneNo<br/>signal://hostname:port/FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/
  | [Sinch](https://github.com/caronc/apprise/wiki/Notify_sinch) | sinch://  | (TCP) 443   | sinch://ServicePlanId:ApiToken@FromPhoneNo<br/>sinch://ServicePlanId:ApiToken@FromPhoneNo/ToPhoneNo<br/>sinch://ServicePlanId:ApiToken@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/<br/>sinch://ServicePlanId:ApiToken@ShortCode/ToPhoneNo<br/>sinch://ServicePlanId:ApiToken@ShortCode/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/
  | [SMSEagle](https://github.com/caronc/apprise/wiki/Notify_smseagle) | smseagle://  or smseagles:// | (TCP) 80 or 443  | smseagles://hostname:port/ToPhoneNo<br/>smseagles://hostname:port/@ToContact<br/>smseagles://hostname:port/#ToGroup<br/>smseagles://hostname:port/ToPhoneNo1/#ToGroup/@ToContact/
  | [Twilio](https://github.com/caronc/apprise/wiki/Notify_twilio) | twilio://  | (TCP) 443   | twilio://AccountSid:AuthToken@FromPhoneNo<br/>twilio://AccountSid:AuthToken@FromPhoneNo/ToPhoneNo<br/>twilio://AccountSid:AuthToken@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/<br/>twilio://AccountSid:AuthToken@FromPhoneNo/ToPhoneNo?apikey=Key<br/>twilio://AccountSid:AuthToken@ShortCode/ToPhoneNo<br/>twilio://AccountSid:AuthToken@ShortCode/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/
  | [Voipms](https://github.com/caronc/apprise/wiki/Notify_voipms) | voipms://  | (TCP) 443   | voipms://password:email/FromPhoneNo<br/>voipms://password:email/FromPhoneNo/ToPhoneNo<br/>voipms://password:email/FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/
  | [Vonage](https://github.com/caronc/apprise/wiki/Notify_nexmo) (formerly Nexmo) | nexmo://  | (TCP) 443   | nexmo://ApiKey:ApiSecret@FromPhoneNo<br/>nexmo://ApiKey:ApiSecret@FromPhoneNo/ToPhoneNo<br/>nexmo://ApiKey:ApiSecret@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/



  | Notification Service | Service ID | Default Port | Example Syntax |
  | -------------------- | ---------- | ------------ | -------------- |
  | [Linux DBus Notifications](https://github.com/caronc/apprise/wiki/Notify_dbus)  | dbus://<br />qt://<br />glib://<br />kde://  | n/a  | dbus://<br />qt://<br />glib://<br />kde://
  | [Linux Gnome Notifications](https://github.com/caronc/apprise/wiki/Notify_gnome) | gnome://    |        n/a          | gnome://
  | [MacOS X Notifications](https://github.com/caronc/apprise/wiki/Notify_macosx) | macosx://    |        n/a          | macosx://
  | [Windows Notifications](https://github.com/caronc/apprise/wiki/Notify_windows) | windows://    |        n/a          | windows://



  | Service ID | Default Port | Example Syntax |
  | ---------- | ------------ | -------------- |
  | [mailto://](https://github.com/caronc/apprise/wiki/Notify_email)  |  (TCP) 25    | mailto://userid:pass@domain.com<br />mailto://domain.com?user=userid&pass=password<br/>mailto://domain.com:2525?user=userid&pass=password<br />mailto://user@gmail.com&pass=password<br />mailto://mySendingUsername:mySendingPassword@example.com?to=receivingAddress@example.com<br />mailto://userid:password@example.com?smtp=mail.example.com&from=noreply@example.com&name=no%20reply
  | [mailtos://](https://github.com/caronc/apprise/wiki/Notify_email) |  (TCP) 587   | mailtos://userid:pass@domain.com<br />mailtos://domain.com?user=userid&pass=password<br/>mailtos://domain.com:465?user=userid&pass=password<br />mailtos://user@hotmail.com&pass=password<br />mailtos://mySendingUsername:mySendingPassword@example.com?to=receivingAddress@example.com<br />mailtos://userid:password@example.com?smtp=mail.example.com&from=noreply@example.com&name=no%20reply

  Apprise have some email services built right into it (such as yahoo, fastmail, hotmail, gmail, etc) that greatly simplify the mailto:// service.  See more details [here](https://github.com/caronc/apprise/wiki/Notify_email).



  | Post Method          | Service ID | Default Port | Example Syntax |
  | -------------------- | ---------- | ------------ | -------------- |
  | [Form](https://github.com/caronc/apprise/wiki/Notify_Custom_Form)       | form:// or form://   | (TCP) 80 or 443 | form://hostname<br />form://user@hostname<br />form://user:password@hostname:port<br />form://hostname/a/path/to/post/to
  | [JSON](https://github.com/caronc/apprise/wiki/Notify_Custom_JSON)       | json:// or jsons://   | (TCP) 80 or 443 | json://hostname<br />json://user@hostname<br />json://user:password@hostname:port<br />json://hostname/a/path/to/post/to
  | [XML](https://github.com/caronc/apprise/wiki/Notify_Custom_XML)         | xml:// or xmls://   | (TCP) 80 or 443 | xml://hostname<br />xml://user@hostname<br />xml://user:password@hostname:port<br />xml://hostname/a/path/to/post/to



  The easiest way is to install this package is from pypi:
  ```bash
  pip install apprise
  ```

  Apprise is also packaged as an RPM and available through [EPEL](https://docs.fedoraproject.org/en-US/epel/) supporting CentOS, Redhat, Rocky, Oracle Linux, etc.
  ```bash



  yum install apprise


  dnf install apprise
  ```

  You can also check out the [Graphical version of Apprise](https://github.com/caronc/apprise-api) to centralize your configuration and notifications through a managable webpage.



  A small command line interface (CLI) tool is also provided with this package called *apprise*. If you know the server urls you wish to notify, you can simply provide them all on the command line and send your notifications that way:
  ```bash



  apprise -vv -t 'my title' -b 'my notification body' \
     'mailto://myemail:mypass@gmail.com' \
     'pbul://o.gn5kj6nfhv736I7jC3cj3QLRiyhgl98b'



  cat /proc/cpuinfo | apprise -vv -t 'cpu info' \
     'mailto://myemail:mypass@gmail.com'


  uptime | apprise -vv \
     'discord:///4174216298/JHMHI8qBe7bk2ZwO5U711o3dV_js'
  ```



  No one wants to put their credentials out for everyone to see on the command line.  No problem *apprise* also supports configuration files.  It can handle both a specific [YAML format](https://github.com/caronc/apprise/wiki/config_yaml) or a very simple [TEXT format](https://github.com/caronc/apprise/wiki/config_text). You can also pull these configuration files via an HTTP query too! You can read more about the expected structure of the configuration files [here](https://github.com/caronc/apprise/wiki/config).
  ```bash




















  apprise -vv -t 'my title' -b 'my notification body'



  apprise -vv -t 'my title' -b 'my notification body' \
     --config=/path/to/my/config.yml



  apprise -vv -t 'my title' -b 'my notification body' \
     --config=/path/to/my/config.yml \
     --config=https://localhost/my/apprise/config
  ```



  Apprise also supports file attachments too! Specify as many attachments to a notification as you want.
  ```bash

  apprise -vv --title 'Agile Joke' \
          --body 'Did you see this one yet?' \
          --attach https://i.redd.it/my2t4d2fx0u31.jpg \
          'mailto://myemail:mypass@gmail.com'


  apprise -vv --title 'system crash' \
          --body 'I do not think Jim fixed the bug; see attached...' \
          --attach /var/log/myprogram.log \
          --attach /var/debug/core.2345 \
          --tag devteam
  ```



  To create your own custom `schema://` hook so that you can trigger your own custom code,
  simply include the `@notify` decorator to wrap your function.
  ```python
  from apprise.decorators import notify



  @notify(on="foobar", name="My Custom Foobar Plugin")
  def my_custom_notification_wrapper(body, title, notify_type, *args, **kwargs):
      """My custom notification function that triggers on all foobar:// calls
      """
      
      print("{}: {} - {}".format(notify_type.upper(), title, body))

      
      
  ```

  Once you've defined your custom hook, you just need to tell Apprise where it is at runtime.
  ```bash











  apprise -vv --title 'custom override' \
          --body 'the body of my message' \
          foobar:\\


  apprise -vv --title 'custom override' \
          --body 'the body of my message' \
          --plugin-path /path/to/my/plugin.py \
          foobar:\\
  ```

  You can read more about creating your own custom notifications and/or hooks [here](https://github.com/caronc/apprise/wiki/decorator_notify).



  To send a notification from within your python application, just do the following:
  ```python
  import apprise


  apobj = apprise.Apprise()



  apobj.add('mailto://myuserid:mypass@gmail.com')


  apobj.add('pbul://o.gn5kj6nfhv736I7jC3cj3QLRiyhgl98b')



  apobj.notify(
      body='what a great notification service!',
      title='my notification title',
  )
  ```



  Developers need access to configuration files too. The good news is their use just involves declaring another object (called *AppriseConfig*) that the *Apprise* object can ingest.  You can also freely mix and match config and notification entries as often as you wish! You can read more about the expected structure of the configuration files [here](https://github.com/caronc/apprise/wiki/config).
  ```python
  import apprise


  apobj = apprise.Apprise()


  config = apprise.AppriseConfig()


  config.add('/path/to/my/config.yml')


  config.add('https://myserver:8080/path/to/config')


  apobj.add(config)



  apobj.add('mailto://myuser:mypass@hotmail.com', tag='admin')




  apobj.notify(
      body='what a great notification service!',
      title='my notification title',
  )



  apobj.notify(
      body='send a notification to our admin group',
      title='Attention Admins',
      
      tag='admin',
  )



  apobj.notify(
      body='send a notification to our admin group',
      title='Attention Admins',
      
      
      tag='all',
  )
  ```



  Attachments are very easy to send using the Apprise API:
  ```python
  import apprise


  apobj = apprise.Apprise()


  apobj.add('mailto://myuser:mypass@hotmail.com')


  apobj.notify(
      title='A great photo of our family',
      body='The flash caused Jane to close her eyes! hah! :)',
      attach='/local/path/to/my/DSC_003.jpg',
  )






  apobj.notify(
      title='Latest security image',
      attach='http://admin:password@hikvision-cam01/ISAPI/Streaming/channels/101/picture?cache=3'
  )
  ```

  To send more than one attachment, just use a list, set, or tuple instead:
  ```python
  import apprise


  apobj = apprise.Apprise()


  apobj.add('mailto://myuser:mypass@hotmail.com')


  attach = (
      
      
      'https://i.redd.it/my2t4d2fx0u31.jpg?name=FlyingToMars.jpg',

      
      '/path/to/funny/joke.gif',
  )


  apobj.notify(
      title='Some good jokes.',
      body='Hey guys, check out these!',
      attach=attach,
  )
  ```



  By default, no custom plugins are loaded at all for those building from within the Apprise API.
  It's at the developers discretion to load custom modules. But should you choose to do so, it's as easy
  as including the path reference in the `AppriseAsset()` object prior to the initialization of your `Apprise()`
  instance.

  For example:
  ```python
  from apprise import Apprise
  from apprise import AppriseAsset



  asset = AppriseAsset(plugin_paths="/path/to/scan")


  asset = AppriseAsset(
      plugin_paths=[
          
          
          
          
          "/dir/containing/many/python/libraries",

          
          "/path/to/plugin.py",

          
          
          
          
          "/path/to/dir/library"
      ]
  )



  aobj = Apprise(asset=asset)




  aobj.add('foobar://')


  aobj.notify("test")
  ```

  You can read more about creating your own custom notifications and/or hooks [here](https://github.com/caronc/apprise/wiki/decorator_notify).



  - 🚀 [Novu - Open-source notification infrastructure](https://github.novu.co/apprise)



  If you're interested in reading more about this and other methods on how to customize your own notifications, please check out the following links:
  * 📣 [Using the CLI](https://github.com/caronc/apprise/wiki/CLI_Usage)
  * 🛠️ [Development API](https://github.com/caronc/apprise/wiki/Development_API)
  * 🔧 [Troubleshooting](https://github.com/caronc/apprise/wiki/Troubleshooting)
  * ⚙️ [Configuration File Help](https://github.com/caronc/apprise/wiki/config)
  * ⚡ [Create Your Own Custom Notifications](https://github.com/caronc/apprise/wiki/decorator_notify)
  * 🌎 [Apprise API/Web Interface](https://github.com/caronc/apprise-api)
  * 🎉 [Showcase](https://github.com/caronc/apprise/wiki/showcase)

  Want to help make Apprise better?
  * 💡 [Contribute to the Apprise Code Base](https://github.com/caronc/apprise/wiki/Development_Contribution)
  * ❤️ [Sponsorship and Donations](https://github.com/caronc/apprise/wiki/Sponsors)


pkgId: a966a75a51f44eb50b7c24e3caadaf6bd7d9e29f01290a8138babc3f09e38595
name: python-apsw
arch: src
version: 3.41.0.0
epoch: 0
release: 1
summary: Another Python SQLite Wrapper
url: https://github.com/rogerbinns/apsw/
rpm_license: OSI Approved
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-f8d8e384-14bb-452f-8e89-685d4f20b687
location_href: 00003037-python-apsw/python-apsw-3.41.0.0-1.src.rpm
checksum_type: sha256
description:
  APSW is a Python wrapper for the `SQLite <https://sqlite.org/>`__
  embedded relational database engine.  It focuses translating between
  the complete `SQLite C API <https://sqlite.org/c3ref/intro.html>`__
  and `Python's C API <https://docs.python.org/3/c-api/index.html>`__,
  letting you get the most out of SQLite from Python.
  It is recommended to use the builtin `sqlite3 module
  <https://docs.python.org/3/library/sqlite3.html>`__ if you want SQLite
  to be interchangeable with the other database drivers.
  Use APSW when you want to use SQLite fully, and have an improved
  developer experience.  The `documentation
  <https://rogerbinns.github.io/apsw/pysqlite.html>`__ has a section on
  the differences between APSW and sqlite3.


pkgId: 1fd45854b585c7e074921c4077bfef32c3387e11ef9cd96560e30d7f975dc0cb
name: python-apsw-debuginfo
arch: x86_64
version: 3.41.0.0
epoch: 0
release: 1
summary: Debug information for package python-apsw
url: https://github.com/rogerbinns/apsw/
rpm_license: OSI Approved
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-f8d8e384-14bb-452f-8e89-685d4f20b687
rpm_sourcerpm: python-apsw-3.41.0.0-1.src.rpm
location_href: 00003037-python-apsw/python-apsw-debuginfo-3.41.0.0-1.x86_64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-apsw.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: da3d98d1d8db73bb77ae2617791f5e80d07e71d16a93982ca0e9395e6da36ff1
name: python-apsw-debugsource
arch: x86_64
version: 3.41.0.0
epoch: 0
release: 1
summary: Debug sources for package python-apsw
url: https://github.com/rogerbinns/apsw/
rpm_license: OSI Approved
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-f8d8e384-14bb-452f-8e89-685d4f20b687
rpm_sourcerpm: python-apsw-3.41.0.0-1.src.rpm
location_href: 00003037-python-apsw/python-apsw-debugsource-3.41.0.0-1.x86_64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-apsw.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: 64bfb381273c9160bf4b5679f216612fe2da2b2d73b865bd5a12e0c3ef34c4af
name: python-apypie
arch: src
version: 0.3.2
epoch: 0
release: 1
summary: Apipie bindings for Python
url: https://github.com/Apipie/apypie
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-21a8334d-adf5-4a19-9920-c53a61a629ad
location_href: 00003038-python-apypie/python-apypie-0.3.2-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://travis-ci.com/Apipie/apypie.svg?branch=master)](https://travis-ci.com/Apipie/apypie)
  [![codecov](https://codecov.io/gh/Apipie/apypie/branch/master/graph/badge.svg)](https://codecov.io/gh/Apipie/apypie)
  [![Documentation Status](https://readthedocs.org/projects/apypie/badge/?version=latest)](https://apypie.readthedocs.io/en/latest/?badge=latest)


pkgId: cb99e59a586e7efdc05a9f34c75bfb25c752bc3a385e8efd697ccecf15ab302a
name: python-ara
arch: src
version: 1.6.1
epoch: 0
release: 1
summary: ARA Records Ansible
url: https://github.com/ansible-community/ara
rpm_license: GNU General Public License v3 (GPLv3)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-69621e56-89fb-4288-9a83-6a5bf47619cc
location_href: 00003039-python-ara/python-ara-1.6.1-1.src.rpm
checksum_type: sha256
description:
  ARA Records Ansible and makes it easier to understand and troubleshoot.

  ![logo](doc/source/_static/ara-with-icon.png)

  It's another recursive acronym and features simplicity as a core principle.



  ara provides Ansible reporting by recording ``ansible`` and ``ansible-playbook`` commands wherever and however they are run:

  - from a terminal, by hand or from a script
  - from a laptop, desktop, server, VM or container
  - for development, CI or production
  - from most Linux distributions and even on Mac OS (as long as ``python >= 3.6`` is available)
  - from tools that run playbooks such as AWX & Automation Controller (Tower), ansible-(pull|test|runner|navigator) and Molecule
  - from CI/CD platforms such as Jenkins, GitHub Actions, GitLab CI, Rundeck and Zuul

  ![getting-started](doc/source/_static/getting-started.gif)

  In addition to the built-in CLI, the data is made available through an included reporting interface as well as a REST API.

  ![ui-web-demo](doc/source/_static/ui-web-demo.gif)

  *Note: open the above gifs in a new tab (or window) if the resolution is too small*



  ara records results to SQLite, MySQL and PostgreSQL databases with a standard [Ansible callback plugin](https://docs.ansible.com/ansible/latest/plugins/callback.html).

  The callback plugin leverages built-in python API clients to send data to a REST API server:

  ![recording-workflow](doc/source/_static/graphs/recording-workflow.png)



  - Any recent Linux distribution or Mac OS with python >=3.6 available
  - The ara package (containing the Ansible plugins) must be installed for the same python interpreter as Ansible itself



  Running an API server is not required to get started and it is designed to be simple to record data to a local sqlite database.

  For production use, it is strongly encouraged to:

  - [Enable authentication for the web interface and API](https://ara.readthedocs.io/en/latest/api-security.html#authentication) to avoid unintentionally leaking passwords, tokens, secrets or otherwise sensitive information that ara might come across and record
  - [Configure the callback plugin to ignore sensitive files, host facts and CLI arguments (such as extra vars)](https://ara.readthedocs.io/en/latest/ansible-plugins-and-use-cases.html#ansible-plugins)
  - Learn about the [best practices to improve playbook recording performance](https://ara.readthedocs.io/en/latest/troubleshooting.html#improving-playbook-recording-performance)



  ```bash

  python3 -m pip install --user ansible "ara[server]"


  export ANSIBLE_CALLBACK_PLUGINS="$(python3 -m ara.setup.callback_plugins)"


  ansible-playbook hello-world.yml


  ara playbook list



  ara-manage runserver
  ```



  It is possible to get started with the [ara_api role](https://github.com/ansible-community/ara-collection/blob/master/roles/ara_api/README.md)
  or with the [container images](https://ara.readthedocs.io/en/latest/container-images.html) published by the project on
  [DockerHub](https://hub.docker.com/r/recordsansible/ara-api) and [quay.io](https://quay.io/repository/recordsansible/ara-api):

  ```bash

  mkdir -p ~/.ara/server


  docker run --name api-server --detach --tty \
    --volume ~/.ara/server:/opt/ara -p 8000:8000 \
    docker.io/recordsansible/ara-api:latest


  podman run --name api-server --detach --tty \
    --volume ~/.ara/server:/opt/ara -p 8000:8000 \
    quay.io/recordsansible/ara-api:latest
  ```

  Once the server is running, ara's Ansible callback plugin must be installed and configured to send data to it:

  ```bash

  python3 -m pip install --user ansible ara


  export ANSIBLE_CALLBACK_PLUGINS="$(python3 -m ara.setup.callback_plugins)"


  export ARA_API_CLIENT="http"
  export ARA_API_SERVER="http://127.0.0.1:8000"


  ansible-playbook playbook.yaml


  ara playbook list



  ```

  Data will be available on the API server in real time as the playbook progresses and completes.



  A live demo is deployed with the ara Ansible collection from [Ansible Galaxy](https://galaxy.ansible.com/recordsansible/ara).

  It is available at https://demo.recordsansible.org.



  Documentation for installing, configuring, running and using ara is available on [ara.readthedocs.io](https://ara.readthedocs.io).

  Common issues may be resolved by reading the [troubleshooting guide](https://ara.readthedocs.io/en/latest/troubleshooting.html).

  Changelog and release notes are available within the repository's [git tags](https://github.com/ansible-community/ara/tags) as well as the [documentation](https://ara.readthedocs.io/en/latest/changelog-release-notes.html).



  - Bugs, issues and enhancements: https://github.com/ansible-community/ara/issues
  - IRC: #ara on [Libera.chat](https://web.libera.chat/?channels=#ara)
  - Matrix: Bridged from IRC via [#ara:libera.chat](https://matrix.to/#/#ara:libera.chat)
  - Slack: Bridged from IRC via [https://arecordsansible.slack.com](https://join.slack.com/t/arecordsansible/shared_invite/enQtMjMxNzI4ODAxMDQxLTU2NTU3YjMwYzRlYmRkZTVjZTFiOWIxNjE5NGRhMDQ3ZTgzZmQyZTY2NzY5YmZmNDA5ZWY4YTY1Y2Y1ODBmNzc>)
  - Website and blog: https://ara.recordsansible.org
  - Twitter: https://twitter.com/recordsansible



  Contributions to the project are welcome and appreciated !

  Get started with the [contributor's documentation](https://ara.readthedocs.io/en/latest/contributing.html).



  Code contributions to the project can be viewed from the git log or on [GitHub](https://github.com/ansible-community/ara/graphs/contributors).

  The ara parrot logo was designed and contributed by [Jason E. Rist](https://github.com/ansible-community/ara/commit/0d5d0939a6b7a319d99acc1fb20d4ca282bd76ab).



  ```
  Copyright (c) 2022 The ARA Records Ansible authors

  ARA Records Ansible is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  ARA Records Ansible is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with ARA Records Ansible.  If not, see <http://www.gnu.org/licenses/>.
  ```


pkgId: 1b07fb8d8ab113714929efe74b20164777dadcedc0391a7f217dbfba119c493d
name: python-archinfo
arch: src
version: 9.2.40
epoch: 0
release: 1
summary: Classes with architecture-specific information useful to other projects.
url: https://github.com/angr/archinfo
rpm_license: BSD-2-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-f1e0d894-fd8d-460a-9b47-5a8e29772fc2
location_href: 00003042-python-archinfo/python-archinfo-9.2.40-1.src.rpm
checksum_type: sha256
description:
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

  archinfo is a collection of classes that contain architecture-specific information.
  It is useful for cross-architecture tools (such as pyvex).


pkgId: 65b103480d34e1867a0dff9592fc3b8a9235b93783571d72a04a66e2e01cf254
name: python-arcus
arch: src
version: 1.2.11
epoch: 0
release: 1
summary: Arcus API Client
url: https://github.com/cuenca-mx/arcus-python
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c204886a-159e-4b67-bfe1-79d64799cc94
location_href: 00003043-python-arcus/python-arcus-1.2.11-1.src.rpm
checksum_type: sha256
description:
  [![test](https://github.com/cuenca-mx/arcus-python/workflows/test/badge.svg)](https://github.com/cuenca-mx/arcus-python/actions?query=workflow%3Atest)
  [![codecov](https://codecov.io/gh/cuenca-mx/arcus-python/branch/master/graph/badge.svg)](https://codecov.io/gh/cuenca-mx/arcus-python)
  [![PyPI](https://img.shields.io/pypi/v/arcus.svg)](https://pypi.org/project/arcus/)
  [![Downloads](https://pepy.tech/badge/arcus)](https://pepy.tech/project/arcus)


  Arcus python3.6+ client library for API version 3.1 of [Arcus](https://www.arcusfi.com/).





  ```bash
  $ pip install arcus
  ```



  ```bash
  $ make test
  ```



  Current version support direct endpoint calls.

  ```python
  from arcus.client import Client


  client = Client('your-api-key', 'your-secret-key')


  account_info = client.get('/account')


  account_info = dict(biller_id=40, account_number='501000000007')
  bill = client.post('/bills', account_info)

  ```




  ```python
  from arcus import Client

  client = Client('your-api-key', 'your-secret-key')



  bill = client.bills.create(40, '501000000007')


  transaction = bill.pay()


  transaction.refresh()


  cancellation = transaction.cancel()
  assert cancellation['code'] == 'R0'
  assert cancellation['message'] == 'Transaction successful'
  assert transaction.status == 'refunded'
  ```


  ```python
  from arcus import Client

  client = Client('your-api-key', 'your-secret-key')

  biller_id = 808080
  phone_number = '5599992222'
  amount = 100.0


  topup = client.topups.create(biller_id, phone_number, amount)

  assert topup.bill_amount == 100.0

  ```




  You can list all active billers or filter in a specific field
  ```python
  from arcus.client import Client


  client = Client('your-api-key', 'your-secret-key')


  mx_biller_list = client.biller.list(country='MX', currency='MXN')


  electricity_biller_list = client.biller.list(biller_type='Electricity')


pkgId: ca74100be7ff9729e458514728d7d9fc691bb3829893cc53a74caadaa49c44b4
name: python-area
arch: src
version: 1.1.1
epoch: 0
release: 1
url: https://github.com/scisco/area
rpm_license: BSD-2-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-6761c458-4215-42f6-8c41-7faa8c37f03b
location_href: 00013308-python-area/python-area-1.1.1-1.src.rpm
checksum_type: sha256
summary:
  Calculate the area inside of any GeoJSON geometry. This is a port of Mapbox'sgeojson-area for Python

description:
  Calculate the area inside of any `GeoJSON <http://geojson.org/>`_ geometry. This is a port of Mapbox's `geojson-area <https://github.com/mapbox/geojson-area>`_ for Python.


pkgId: d0dd84526f709072c7949bd8ea46e4b7a2b1a37da03ee12ded255250653ab90d
name: python-aresponses
arch: src
version: 2.1.6
epoch: 0
release: 1
summary: Asyncio response mocking. Similar to the responses library used for 'requests'
url: https://github.com/circleup/aresponses
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-bc5749ef-a1cc-4dee-bfc9-648670573a41
location_href: 00003045-python-aresponses/python-aresponses-2.1.6-1.src.rpm
checksum_type: sha256
description:
  [![image](https://img.shields.io/pypi/v/aresponses.svg)](https://pypi.org/project/aresponses/)
  [![image](https://img.shields.io/pypi/pyversions/aresponses.svg)](https://pypi.org/project/aresponses/)
  [![build status](https://github.com/CircleUp/aresponses/workflows/Python%20Checks/badge.svg)](https://github.com/CircleUp/aresponses/actions?query=branch%3Amaster)
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)


  an asyncio testing server for mocking external services


   - Fast mocks using actual network connections
   - allows mocking some types of network issues
   - use regular expression matching for domain, path, method, or body
   - works with https requests as well (by switching them to http requests)
   - works with callables



  Add routes and responses via the `aresponses.add` method:

  ```python
  def add(
      host_pattern=ANY,
      path_pattern=ANY,
      method_pattern=ANY,
      response="",
      *,
      route=None,
      body_pattern=ANY, m
      match_querystring=False,
      repeat=1
      )
  ```

  When a request is received the first matching response will be returned
  and removed from the routing table.  The `response` argument can be
  either a string, Response, dict, or list.  Use `aresponses.Response`
  when you need to do something more complex.


  **Note that version >=2.0 requires explicit assertions!**
  ```python
  @pytest.mark.asyncio
  async def test_simple(aresponses):
      aresponses.add("google.com", "/api/v1/", "GET", response="OK")
      aresponses.add('foo.com', '/', 'get', aresponses.Response(text='error', status=500))

      async with aiohttp.ClientSession() as session:
          async with session.get("http://google.com/api/v1/") as response:
              text = await response.text()
              assert text == "OK"

          async with session.get("https://foo.com") as response:
              text = await response.text()
              assert text == "error"

      aresponses.assert_plan_strictly_followed()
  ```


  In aresponses 1.x requests that didn't match a route stopped the event
  loop and thus forced an exception.  In aresponses >2.x it's required to
  make assertions at the end of the test.

  There are three assertions functions provided:
  - `aresponses.assert_no_unused_routes` Raises `UnusedRouteError` if all
  the routes defined were not used up.
  - `aresponses.assert_called_in_order` - Raises `UnorderedRouteCallError`
  if the routes weren't called in the order they were defined.
  - `aresponses.assert_all_requests_matched` - Raises `NoRouteFoundError`
  if any requests were made that didn't match to a route.  It's likely
  but not guaranteed that your code will throw an exception in this
  situation before the assertion is reached.

  Instead of calling these individually, **it's recommended to call
  `aresponses.assert_plan_strictly_followed()` at the end of each test as
  it runs all three of the above assertions.**



  `host_pattern`, `path_pattern`, `method_pattern` and `body_pattern` may
  be either strings (exact match) or regular expressions.

  The repeat argument permits a route to be used multiple times.

  If you want to just blanket mock a service, without concern for how many
  times its called you could set repeat to a large number and not call
  `aresponses.assert_plan_strictly_followed` or
  `arespones.assert_no_unused_routes`.

  ```python
  @pytest.mark.asyncio
  async def test_regex_repetition(aresponses):
      aresponses.add(re.compile(r".*\.?google\.com"), response="OK", repeat=2)

      async with aiohttp.ClientSession() as session:
          async with session.get("http://google.com") as response:
              text = await response.text()
              assert text == "OK"

          async with session.get("http://api.google.com") as response:
              text = await response.text()
              assert text == "OK"

      aresponses.assert_plan_strictly_followed()
  ```


  As a convenience, if a dict or list is passed to `response` then it will
  create a json response. A `aiohttp.web_response.json_response` object
  can be used for more complex situations.

  ```python
  @pytest.mark.asyncio
  async def test_json(aresponses):
      aresponses.add("google.com", "/api/v1/", "GET", response={"status": "OK"})

      async with aiohttp.ClientSession() as session:
          async with session.get("http://google.com/api/v1/") as response:
              assert {"status": "OK"} == await response.json()

      aresponses.assert_plan_strictly_followed()
  ```



  Custom functions can be used for whatever other complex logic is
  desired. In example below the handler is set to repeat infinitely
  and always return 500.

  ```python
  import math

  @pytest.mark.asyncio
  async def test_handler(aresponses):
      def break_everything(request):
          return aresponses.Response(status=500, text=str(request.url))

      aresponses.add(response=break_everything, repeat=math.inf)

      async with aiohttp.ClientSession() as session:
          async with session.get("http://google.com/api/v1/") as response:
              assert response.status == 500
  ```



  Pass `aresponses.passthrough` into the response argument to allow a
  request to bypass mocking.

  ```python
      aresponses.add('httpstat.us', '/200', 'get', aresponses.passthrough)
  ```


  History of calls can be inspected via `aresponses.history` which returns
  the namedTuple `RoutingLog(request, route, response)`

  ```python
  @pytest.mark.asyncio
  async def test_history(aresponses):
      aresponses.add(response=aresponses.Response(text="hi"), repeat=2)

      async with aiohttp.ClientSession() as session:
          async with session.get("http://foo.com/b") as response:
              await response.text()
          async with session.get("http://bar.com/a") as response:
              await response.text()

      assert len(aresponses.history) == 2
      assert aresponses.history[0].request.host == "foo.com"
      assert aresponses.history[1].request.host == "bar.com"
      assert "Route(" in repr(aresponses.history[0].route)
      aresponses.assert_plan_strictly_followed()
  ```


  ```python
  import aiohttp
  import pytest
  import aresponses


  @pytest.mark.asyncio
  async def test_foo(event_loop):
      async with aresponses.ResponsesMockServer(loop=event_loop) as arsps:
          arsps.add('foo.com', '/', 'get', 'hi there!!')
          arsps.add(arsps.ANY, '/', 'get', arsps.Response(text='hey!'))

          async with aiohttp.ClientSession(loop=event_loop) as session:
              async with session.get('http://foo.com') as response:
                  text = await response.text()
                  assert text == 'hi'

              async with session.get('https://google.com') as response:
                  text = await response.text()
                  assert text == 'hey!'

  ```



  If you need to use aresponses together with pytest-aiohttp, you should re-initialize main aresponses fixture with `loop` fixture
  ```python
  from aresponses import ResponsesMockServer

  @pytest.fixture
  async def aresponses(loop):
      async with ResponsesMockServer(loop=loop) as server:
          yield server
  ```

  If you're trying to use the `aiohttp_client` test fixture then you'll need to mock out the aiohttp `loop` fixture
  instead:
  ```python
  @pytest.fixture
  def loop(event_loop):
      """replace aiohttp loop fixture with pytest-asyncio fixture"""
      return event_loop
  ```




    - **install pyenv and pyenv-virtualenv**  - Makes it easy to install specific versions of python and switch between them. Make sure you install the virtualenv bash hook
    - `git clone` the repo and `cd` into it.
    - `make init` - installs proper version of python, creates the virtual environment, activates it and installs all the requirements


    - **`git checkout -b my-feature-branch`**
    - **make some cool changes**
    - **`make autoformat`**
    - **`make test`**
    - **`make lint`**
    - **create pull request**


    - `make deploy`





  - fix: incorrect pytest plugin entrypoint name (#72)


  - support asyncio_mode = strict (#68)


  - fix: don't assume utf8 request contents


  - accidental no-op release


  - documentation: add pypi documentation



  - bugfix: RecursionError when aresponses is used in more than 1000 tests (#63)


  - feature: add convenience method `add_local_passthrough`
  - bugfix: fix https subrequest mocks. support aiohttp_client compatibility


  - bugfix: ensure request body is available in history


  **Warning! Breaking Changes!**
  - breaking change: require explicit assertions for test failures
  - feature: autocomplete works in intellij/pycharm
  - feature: can match on body of request
  - feature: store calls made
  - feature: repeated responses
  - bugfix: no longer stops event loop
  - feature: if dict or list is passed into `response`, a json response
  will be generated



  - make passthrough feature work with binary data


  - regex fix for Python 3.7.0


  - Added passthrough option to permit live network calls
  - Added example of using a callable as a response



  - Added an optional `match_querystring` argument that lets you match on querystring as well



  * Bryce Drennan, CircleUp <aresponses@brycedrennan.com>
  * Marco Castelluccio, Mozilla <mcastelluccio@mozilla.com>
  * Jesse Vogt, CircleUp <jesse.vogt@gmail.com>
  * Pavol Vargovcik, Kiwi.com <pavol.vargovcik@gmail.com>


pkgId: 48c6bc68bf9ba7f15030d4dba7c95fc3f77cf118fc87d046f09a5516affe07e6
name: python-argcomplete
arch: src
version: 3.0.5
epoch: 0
release: 1
summary: Bash tab completion for argparse
url: https://github.com/kislyuk/argcomplete
rpm_license: Apache Software License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-506cfd60-5f28-4354-8118-68d41b20f062
location_href: 00009012-python-argcomplete/python-argcomplete-3.0.5-1.src.rpm
checksum_type: sha256
description:
  *Tab complete all the things!*
  Argcomplete provides easy, extensible command line tab completion of arguments for your Python application.
  It makes two assumptions:
  * You're using bash or zsh as your shell
  * You're using `argparse <http://docs.python.org/3/library/argparse.html>`_ to manage your command line arguments/options
  Argcomplete is particularly useful if your program has lots of options or subparsers, and if your program can
  dynamically suggest completions for your argument/option values (for example, if the user is browsing resources over
  the network).


pkgId: 0d41220e43401c32741f56ef2f38f939f70b0a1d1ad312f015da61fe622dc975
name: python-argopt
arch: src
version: 0.8.2
epoch: 0
release: 1
summary: doc to argparse driven by docopt
url: https://github.com/casperdcl/argopt
rpm_license: Mozilla Public License 2.0 (MPL 2.0)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a1e3ffc9-6228-4ead-8760-2d3ef184027b
location_href: 00003048-python-argopt/python-argopt-0.8.2-1.src.rpm
checksum_type: sha256
description:
  doc to ``argparse`` driven by ``docopt``
  |Py-Versions| |PyPI| |Conda-Forge|
  |Build-Status| |Coverage-Status| |Branch-Coverage-Status| |Codacy-Grade| |Libraries-Rank| |PyPI-Downloads|
  |LICENCE| |OpenHub-Status| |Gift-Casper|
  Define your command line interface (CLI) from a docstring (rather than the
  other way around). Because it's easy. It's quick. Painless. Then focus on
  what's actually important - using the arguments in the rest of your program.
  The problem is that this is not always flexible. Still need all the features of
  `argparse`? Now have the best of both worlds... all the extension such as
  `shtab <https://github.com/iterative/shtab>`__ or
  `Gooey <https://github.com/chriskiehl/Gooey>`__ but with the simple syntax of


pkgId: 936cb5ce619645e7a6d26aeaae31db566bcaf092b0244025204add1c266a3ad0
name: python-argparse
arch: src
version: 1.4.0
epoch: 0
release: 1
summary: Python command-line parsing library
url: https://github.com/ThomasWaldmann/argparse/
rpm_license: Python Software Foundation License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-0631bc5d-b5ca-4676-a687-de43b4151f8a
location_href: 00009203-python-argparse/python-argparse-1.4.0-1.src.rpm
checksum_type: sha256
description:
  argparse should work on Python >= 2.3, it was tested on:
  * 2.3, 2.4, 2.5, 2.6 and 2.7
  * 3.1, 3.2, 3.3, 3.4


pkgId: a464c50f1b282f59680531ec0e1a83e5516062a550ec0a6a6cd4822f3454318c
name: python-arpy
arch: src
version: 2.3.0
epoch: 0
release: 1
summary: Library for accessing "ar" files
url: https://github.com/viraptor/arpy
rpm_license: Simplified BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-9c8f3c02-8272-4206-b17a-7dae19dbf87f
location_href: 00003050-python-arpy/python-arpy-2.3.0-1.src.rpm
checksum_type: sha256
description:
  'arpy' is a library for accessing the archive files and reading the contents. It supports extended long filenames in both GNU and BSD format. Right now it does not support the symbol tables, but can ignore them gracefully.

  Usage instructions are included in the module docstring. Works with python >=3.5, as well as pypy3. (for python 2.x see versions 1.*)


pkgId: 5ba045433b69f8671f18afcf7d9b746c02781519e64f62206bf9867419697ffa
name: python-arrow
arch: src
version: 1.2.3
epoch: 0
release: 1
summary: Better dates & times for Python
url: https://arrow.readthedocs.io
rpm_license: Apache 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-b54cbe61-6d02-4f78-8984-cf1051a12907
location_href: 00003051-python-arrow/python-arrow-1.2.3-1.src.rpm
checksum_type: sha256
description:
  **Arrow** is a Python library that offers a sensible and human-friendly approach to creating, manipulating, formatting and converting dates, times and timestamps. It implements and updates the datetime type, plugging gaps in functionality and providing an intelligent module API that supports many common creation scenarios. Simply put, it helps you work with dates and times with fewer imports and a lot less code.
  Arrow is named after the `arrow of time <https://en.wikipedia.org/wiki/Arrow_of_time>`_ and is heavily inspired by `moment.js <https://github.com/moment/moment>`_ and `requests <https://github.com/psf/requests>`_.


pkgId: 0ed99428bd96e765e80246b79cb8700a3cac52d6e7ff7a6a5e62ea30903da844
name: python-arviz
arch: src
version: 0.15.1
epoch: 0
release: 1
summary: Exploratory analysis of Bayesian models
url: http://github.com/arviz-devs/arviz
rpm_license: Apache-2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-2a443d64-7cdb-47ef-b388-e2a6f770024a
location_href: 00003052-python-arviz/python-arviz-0.15.1-1.src.rpm
checksum_type: sha256
description:
  <p>
  <table>
  <tr>
    <td>
    <a href="https://python.arviz.org/en/latest/examples/plot_forest_ridge.html">
    <img alt="Ridge plot"
    src="https://raw.githubusercontent.com/arviz-devs/arviz/gh-pages/_images/mpl_plot_forest_ridge.png" />
    </a>
    </td>
    <td>
    <a href="https://python.arviz.org/en/latest/examples/plot_forest.html">
    <img alt="Forest Plot"
    src="https://raw.githubusercontent.com/arviz-devs/arviz/gh-pages/_images/mpl_plot_forest.png" />
    </a>
    </td>
    <td>
    <a href="https://python.arviz.org/en/latest/examples/plot_violin.html">
    <img alt="Violin Plot"
    src="https://raw.githubusercontent.com/arviz-devs/arviz/gh-pages/_images/mpl_plot_violin.png" />
    </a>
    </td>
  </tr>
  <tr>
    <td>
    <a href="https://python.arviz.org/en/latest/examples/plot_ppc.html">
    <img alt="Posterior predictive plot"
    src="https://raw.githubusercontent.com/arviz-devs/arviz/gh-pages/_images/mpl_plot_ppc.png" />
    </a>
    </td>
    <td>
    <a href="https://python.arviz.org/en/latest/examples/plot_dot.html">
    <img alt="Joint plot"
    src="https://raw.githubusercontent.com/arviz-devs/arviz/gh-pages/_images/mpl_plot_dot.png" />
    </a>
    </td>
    <td>
    <a href="https://python.arviz.org/en/latest/examples/plot_posterior.html">
    <img alt="Posterior plot"
    src="https://raw.githubusercontent.com/arviz-devs/arviz/gh-pages/_images/mpl_plot_posterior.png" />
    </a>
    </td>
  </tr>
  <tr>
    <td>
    <a href="https://python.arviz.org/en/latest/examples/plot_density.html">
    <img alt="Density plot"
    src="https://raw.githubusercontent.com/arviz-devs/arviz/gh-pages/_images/mpl_plot_density.png" />
    </a>
    </td>
    <td>
    <a href="https://python.arviz.org/en/latest/examples/plot_pair.html">
    <img alt="Pair plot"
    src="https://raw.githubusercontent.com/arviz-devs/arviz/gh-pages/_images/mpl_plot_pair.png" />
    </a>
    </td>
    <td>
    <a href="https://python.arviz.org/en/latest/examples/plot_pair_hex.html">
    <img alt="Hexbin Pair plot"
    src="https://raw.githubusercontent.com/arviz-devs/arviz/gh-pages/_images/mpl_plot_pair_hex.png" />
    </a>
    </td>
  </tr>
  <tr>
    <td>
    <a href="https://python.arviz.org/en/latest/examples/plot_trace.html">
    <img alt="Trace plot"
    src="https://raw.githubusercontent.com/arviz-devs/arviz/gh-pages/_images/mpl_plot_trace.png" />
    </a>
    </td>
    <td>
    <a href="https://python.arviz.org/en/latest/examples/plot_energy.html">
    <img alt="Energy Plot"
    src="https://raw.githubusercontent.com/arviz-devs/arviz/gh-pages/_images/mpl_plot_energy.png" />
    </a>
    </td>
    <td>
    <a href="https://python.arviz.org/en/latest/examples/plot_rank.html">
    <img alt="Rank Plot"
    src="https://raw.githubusercontent.com/arviz-devs/arviz/gh-pages/_images/mpl_plot_rank.png" />
    </a>
    </td>
  </tr>
  </table>

  ArviZ is tested on Python 3.7, 3.8 and 3.9, and depends on NumPy, SciPy, xarray, and Matplotlib.

  If you use ArviZ and want to cite it please use [![DOI](http://joss.theoj.org/papers/10.21105/joss.01143/status.svg)](https://doi.org/10.21105/joss.01143)
  Here is the citation in BibTeX format
  ```
  @article{arviz_2019,
    doi = {10.21105/joss.01143},
    url = {https://doi.org/10.21105/joss.01143},
    year = {2019},
    publisher = {The Open Journal},
    volume = {4},
    number = {33},
    pages = {1143},
    author = {Ravin Kumar and Colin Carroll and Ari Hartikainen and Osvaldo Martin},
    title = {ArviZ a unified library for exploratory analysis of Bayesian models in Python},
    journal = {Journal of Open Source Software}
  }
  ```

  ArviZ is a community project and welcomes contributions.
  Additional information can be found in the [Contributing Readme](https://github.com/arviz-devs/arviz/blob/main/CONTRIBUTING.md)

  ArviZ wishes to maintain a positive community. Additional details
  can be found in the [Code of Conduct](https://github.com/arviz-devs/arviz/blob/main/CODE_OF_CONDUCT.md)

  ArviZ is a non-profit project under NumFOCUS umbrella. If you want to support ArviZ financially, you can donate [here](https://numfocus.org/donate-to-arviz).

  [![NumFOCUS](https://www.numfocus.org/wp-content/uploads/2017/07/NumFocus_LRG.png)](https://numfocus.org)


pkgId: 20e027e52f28859659c3d6ddc3c4761c01dff554943cd409012f172fb18ab973
name: python-asciitree
arch: src
version: 0.3.3
epoch: 0
release: 1
summary: Draws ASCII trees.
url: http://github.com/mbr/asciitree
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-6b2cdd83-0b5f-44da-b671-b13256438f9f
location_href: 00012090-python-asciitree/python-asciitree-0.3.3-1.src.rpm
checksum_type: sha256
description:
    asciitree
     +-- sometimes
     |   +-- you
     +-- just
     |   +-- want
     |       +-- to
     |       +-- draw
     +-- trees
     +-- in
         +-- your
             +-- terminal
    from asciitree import LeftAligned
    from collections import OrderedDict as OD
    tree = {
        'asciitree': OD([
            ('sometimes',
                {'you': {}}),
            ('just',
                {'want': OD([
                    ('to', {}),
                    ('draw', {}),
                ])}),
            ('trees', {}),
            ('in', {
                'your': {
                    'terminal': {}
                }
            })
        ])
    }
    tr = LeftAligned()
    print(tr(tree))
  Read the documentation at http://pythonhosted.org/asciitree


pkgId: 56e9c5c87b2ec78ebf60a62765fffae7dbd4c4a1b4fc0989bd887a20c9da8f26
name: python-ase
arch: src
version: 3.22.1
epoch: 0
release: 1
summary: Atomic Simulation Environment
url: https://wiki.fysik.dtu.dk/ase
rpm_license: LGPLv2.1+
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4eb6dd9c-e6d6-4b5c-b219-779b359ab7af
location_href: 00003053-python-ase/python-ase-3.22.1-1.src.rpm
checksum_type: sha256
description:
  ASE is a set of tools and Python modules for setting up, manipulating,
  running, visualizing and analyzing atomistic simulations.
  Webpage: http://wiki.fysik.dtu.dk/ase


pkgId: f55960fe7de098b290f65e69cf14105d37688e88d3603315b9ae86bb568a6d7a
name: python-asgiref
arch: src
version: 3.6.0
epoch: 0
release: 1
summary: ASGI specs, helper code, and adapters
url: https://github.com/django/asgiref/
rpm_license: BSD-3-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-0825a96e-90fe-4bfb-bfc8-b17dfa8a3cc3
location_href: 00003054-python-asgiref/python-asgiref-3.6.0-1.src.rpm
checksum_type: sha256
description:
  ASGI is a standard for Python asynchronous web apps and servers to communicate
  with each other, and positioned as an asynchronous successor to WSGI. You can
  read more at https://asgi.readthedocs.io/en/latest/
  This package includes ASGI base libraries, such as:
  * Sync-to-async and async-to-sync function wrappers, ``asgiref.sync``
  * Server base classes, ``asgiref.server``
  * A WSGI-to-ASGI adapter, in ``asgiref.wsgi``


pkgId: 285b5d9d29b098680017355e264b2b7e1465551461e747ec61a1db0efbcef1b2
name: python-asn1crypto
arch: src
version: 1.5.1
epoch: 0
release: 1
url: https://github.com/wbond/asn1crypto
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-0e28a0da-95d7-403e-953e-75594c6aba86
location_href: 00008952-python-asn1crypto/python-asn1crypto-1.5.1-1.src.rpm
checksum_type: sha256
summary:
  Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP

description:
  A fast, pure Python library for parsing and serializing ASN.1 structures.

   - [Features](#features)
   - [Why Another Python ASN.1 Library?](#why-another-python-asn1-library)
   - [Related Crypto Libraries](#related-crypto-libraries)
   - [Current Release](#current-release)
   - [Dependencies](#dependencies)
   - [Installation](#installation)
   - [License](#license)
   - [Security Policy](#security-policy)
   - [Documentation](#documentation)
   - [Continuous Integration](#continuous-integration)
   - [Testing](#testing)
   - [Development](#development)
   - [CI Tasks](#ci-tasks)

  [![GitHub Actions CI](https://github.com/wbond/asn1crypto/workflows/CI/badge.svg)](https://github.com/wbond/asn1crypto/actions?workflow=CI)
  [![CircleCI](https://circleci.com/gh/wbond/asn1crypto.svg?style=shield)](https://circleci.com/gh/wbond/asn1crypto)
  [![PyPI](https://img.shields.io/pypi/v/asn1crypto.svg)](https://pypi.org/project/asn1crypto/)



  In addition to an ASN.1 BER/DER decoder and DER serializer, the project includes
  a bunch of ASN.1 structures for use with various common cryptography standards:

  | Standard               | Module                                      | Source                                                                                                                 |
  | ---------------------- | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
  | X.509                  | [`asn1crypto.x509`](asn1crypto/x509.py)     | [RFC 5280](https://tools.ietf.org/html/rfc5280)                                                                        |
  | CRL                    | [`asn1crypto.crl`](asn1crypto/crl.py)       | [RFC 5280](https://tools.ietf.org/html/rfc5280)                                                                        |
  | CSR                    | [`asn1crypto.csr`](asn1crypto/csr.py)       | [RFC 2986](https://tools.ietf.org/html/rfc2986), [RFC 2985](https://tools.ietf.org/html/rfc2985)                       |
  | OCSP                   | [`asn1crypto.ocsp`](asn1crypto/ocsp.py)     | [RFC 6960](https://tools.ietf.org/html/rfc6960)                                                                        |
  | PKCS#12                | [`asn1crypto.pkcs12`](asn1crypto/pkcs12.py) | [RFC 7292](https://tools.ietf.org/html/rfc7292)                                                                        |
  | PKCS#8                 | [`asn1crypto.keys`](asn1crypto/keys.py)     | [RFC 5208](https://tools.ietf.org/html/rfc5208)                                                                        |
  | PKCS#1 v2.1 (RSA keys) | [`asn1crypto.keys`](asn1crypto/keys.py)     | [RFC 3447](https://tools.ietf.org/html/rfc3447)                                                                        |
  | DSA keys               | [`asn1crypto.keys`](asn1crypto/keys.py)     | [RFC 3279](https://tools.ietf.org/html/rfc3279)                                                                        |
  | Elliptic curve keys    | [`asn1crypto.keys`](asn1crypto/keys.py)     | [SECG SEC1 V2](http://www.secg.org/sec1-v2.pdf)                                                                        |
  | PKCS#3 v1.4            | [`asn1crypto.algos`](asn1crypto/algos.py)   | [PKCS#3 v1.4](ftp://ftp.rsasecurity.com/pub/pkcs/ascii/pkcs-3.asc)                                                        |
  | PKCS#5 v2.1            | [`asn1crypto.algos`](asn1crypto/algos.py)   | [PKCS#5 v2.1](http://www.emc.com/collateral/white-papers/h11302-pkcs5v2-1-password-based-cryptography-standard-wp.pdf) |
  | CMS (and PKCS#7)       | [`asn1crypto.cms`](asn1crypto/cms.py)       | [RFC 5652](https://tools.ietf.org/html/rfc5652), [RFC 2315](https://tools.ietf.org/html/rfc2315)                       |
  | TSP                    | [`asn1crypto.tsp`](asn1crypto/tsp.py)       | [RFC 3161](https://tools.ietf.org/html/rfc3161)                                                                        |
  | PDF signatures         | [`asn1crypto.pdf`](asn1crypto/pdf.py)       | [PDF 1.7](http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf)                           |



  Python has long had the [pyasn1](https://pypi.org/project/pyasn1/) and
  [pyasn1_modules](https://pypi.org/project/pyasn1-modules/) available for
  parsing and serializing ASN.1 structures. While the project does include a
  comprehensive set of tools for parsing and serializing, the performance of the
  library can be very poor, especially when dealing with bit fields and parsing
  large structures such as CRLs.

  After spending extensive time using *pyasn1*, the following issues were
  identified:

   1. Poor performance
   2. Verbose, non-pythonic API
   3. Out-dated and incomplete definitions in *pyasn1-modules*
   4. No simple way to map data to native Python data structures
   5. No mechanism for overridden universal ASN.1 types

  The *pyasn1* API is largely method driven, and uses extensive configuration
  objects and lowerCamelCase names. There were no consistent options for
  converting types of native Python data structures. Since the project supports
  out-dated versions of Python, many newer language features are unavailable
  for use.

  Time was spent trying to profile issues with the performance, however the
  architecture made it hard to pin down the primary source of the poor
  performance. Attempts were made to improve performance by utilizing unreleased
  patches and delaying parsing using the `Any` type. Even with such changes, the
  performance was still unacceptably slow.

  Finally, a number of structures in the cryptographic space use universal data
  types such as `BitString` and `OctetString`, but interpret the data as other
  types. For instance, signatures are really byte strings, but are encoded as
  `BitString`. Elliptic curve keys use both `BitString` and `OctetString` to
  represent integers. Parsing these structures as the base universal types and
  then re-interpreting them wastes computation.

  *asn1crypto* uses the following techniques to improve performance, especially
  when extracting one or two fields from large, complex structures:

   - Delayed parsing of byte string values
   - Persistence of original ASN.1 encoded data until a value is changed
   - Lazy loading of child fields
   - Utilization of high-level Python stdlib modules

  While there is no extensive performance test suite, the
  `CRLTests.test_parse_crl` test case was used to parse a 21MB CRL file on a
  late 2013 rMBP. *asn1crypto* parsed the certificate serial numbers in just
  under 8 seconds. With *pyasn1*, using definitions from *pyasn1-modules*, the
  same parsing took over 4,100 seconds.

  For smaller structures the performance difference can range from a few times
  faster to an order of magnitude or more.



  *asn1crypto* is part of the modularcrypto family of Python packages:

   - [asn1crypto](https://github.com/wbond/asn1crypto)
   - [oscrypto](https://github.com/wbond/oscrypto)
   - [csrbuilder](https://github.com/wbond/csrbuilder)
   - [certbuilder](https://github.com/wbond/certbuilder)
   - [crlbuilder](https://github.com/wbond/crlbuilder)
   - [ocspbuilder](https://github.com/wbond/ocspbuilder)
   - [certvalidator](https://github.com/wbond/certvalidator)



  1.5.0 - [changelog](changelog.md)



  Python 2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 or pypy. *No third-party
  packages required.*



  ```bash
  pip install asn1crypto
  ```



  *asn1crypto* is licensed under the terms of the MIT license. See the
  [LICENSE](LICENSE) file for the exact license text.



  The security policies for this project are covered in
  [SECURITY.md](https://github.com/wbond/asn1crypto/blob/master/SECURITY.md).



  The documentation for *asn1crypto* is composed of tutorials on basic usage and
  links to the source for the various pre-defined type classes.



   - [Universal Types with BER/DER Decoder and DER Encoder](docs/universal_types.md)
   - [PEM Encoder and Decoder](docs/pem.md)



   - [Universal types](asn1crypto/core.py), `asn1crypto.core`
   - [Digest, HMAC, signed digest and encryption algorithms](asn1crypto/algos.py), `asn1crypto.algos`
   - [Private and public keys](asn1crypto/keys.py), `asn1crypto.keys`
   - [X509 certificates](asn1crypto/x509.py), `asn1crypto.x509`
   - [Certificate revocation lists (CRLs)](asn1crypto/crl.py), `asn1crypto.crl`
   - [Online certificate status protocol (OCSP)](asn1crypto/ocsp.py), `asn1crypto.ocsp`
   - [Certificate signing requests (CSRs)](asn1crypto/csr.py), `asn1crypto.csr`
   - [Private key/certificate containers (PKCS#12)](asn1crypto/pkcs12.py), `asn1crypto.pkcs12`
   - [Cryptographic message syntax (CMS, PKCS#7)](asn1crypto/cms.py), `asn1crypto.cms`
   - [Time stamp protocol (TSP)](asn1crypto/tsp.py), `asn1crypto.tsp`
   - [PDF signatures](asn1crypto/pdf.py), `asn1crypto.pdf`



  Various combinations of platforms and versions of Python are tested via:

   - [macOS, Linux, Windows](https://github.com/wbond/asn1crypto/actions/workflows/ci.yml) via GitHub Actions
   - [arm64](https://circleci.com/gh/wbond/asn1crypto) via CircleCI



  Tests are written using `unittest` and require no third-party packages.

  Depending on what type of source is available for the package, the following
  commands can be used to run the test suite.



  When working within a Git working copy, or an archive of the Git repository,
  the full test suite is run via:

  ```bash
  python run.py tests
  ```

  To run only some tests, pass a regular expression as a parameter to `tests`.

  ```bash
  python run.py tests ocsp
  ```



  When working within an extracted source distribution (aka `.tar.gz`) from
  PyPi, the full test suite is run via:

  ```bash
  python setup.py test
  ```



  When the package has been installed via pip (or another method), the package
  `asn1crypto_tests` may be installed and invoked to run the full test suite:

  ```bash
  pip install asn1crypto_tests
  python -m asn1crypto_tests
  ```



  To install the package used for linting, execute:

  ```bash
  pip install --user -r requires/lint
  ```

  The following command will run the linter:

  ```bash
  python run.py lint
  ```

  Support for code coverage can be installed via:

  ```bash
  pip install --user -r requires/coverage
  ```

  Coverage is measured by running:

  ```bash
  python run.py coverage
  ```

  To change the version number of the package, run:

  ```bash
  python run.py version {pep440_version}
  ```

  To install the necessary packages for releasing a new version on PyPI, run:

  ```bash
  pip install --user -r requires/release
  ```

  Releases are created by:

   - Making a git tag in [PEP 440](https://www.python.org/dev/peps/pep-0440/#examples-of-compliant-version-schemes) format
   - Running the command:

     ```bash
     python run.py release
     ```

  Existing releases can be found at https://pypi.org/project/asn1crypto/.



  A task named `deps` exists to download and stage all necessary testing
  dependencies. On posix platforms, `curl` is used for downloads and on Windows
  PowerShell with `Net.WebClient` is used. This configuration sidesteps issues
  related to getting pip to work properly and messing with `site-packages` for
  the version of Python being used.

  The `ci` task runs `lint` (if flake8 is available for the version of Python) and
  `coverage` (or `tests` if coverage is not available for the version of Python).
  If the current directory is a clean git working copy, the coverage data is
  submitted to codecov.io.

  ```bash
  python run.py deps
  python run.py ci
  ```


pkgId: c5ac386964ae38f296903059ca3155f03bea7ce41b6540affcf2f2db72f0df4c
name: python-aspy.yaml
arch: src
version: 1.3.0
epoch: 0
release: 1
summary: A few extensions to pyyaml.
url: https://github.com/asottile/aspy.yaml
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-3cb78cd9-6afe-473f-a597-f1bfe1e52177
location_href: 00010341-python-aspy-yaml/python-aspy.yaml-1.3.0-1.src.rpm
checksum_type: sha256
description:
  Some extensions to pyyaml.

  `pip install aspy.yaml`

  yaml.load which respects order for dictionaries in the yaml file.
  ```python
  >>> from aspy.yaml import ordered_load
  >>> ordered_load(
          'foo: bar\n'
          'bar: baz\n'
          'herp: derp\n'
      )
  OrderedDict([('foo', 'bar'), ('bar', 'baz'), ('herp', 'derp')])
  ```

  yaml.dump which respects order for dictionaries in the yaml file.
  ```python
  >>> from aspy.yaml import ordered_dump
  >>> print(ordered_dump(
          OrderedDict((('a', '1'), ('b', '2'), ('c', '3'), ('d', '4'))),
          default_flow_style=False,
      ))
  a: '1'
  b: '2'
  c: '3'
  d: '4'
  ```


pkgId: 7606ff51d49e834d0455880a73f499dbbe7c3e2d8dd41100c26fcdc39047120f
name: python-assertpy
arch: src
version: 1.1
epoch: 0
release: 1
summary: Simple assertion library for unit testing in python with a fluent API
url: https://github.com/assertpy/assertpy
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-53911315-2ae9-4fe3-a3b9-411ee9f790da
location_href: 00010928-python-assertpy/python-assertpy-1.1-1.src.rpm
checksum_type: sha256
description:
  Simple assertions library for unit testing in Python with a nice fluent API. Supports both Python 2 and 3.


pkgId: 5c2c939209aee2a97ac2491a3f658358a3be3f41340297b2beaeb20382dc8b7f
name: python-asteval
arch: src
version: 0.9.29
epoch: 0
release: 1
summary: Safe, minimalistic evaluator of python expression using ast module
url: https://github.com/newville/asteval
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a127481f-e047-4aa3-85f4-bdec9a26b41d
location_href: 00011131-python-asteval/python-asteval-0.9.29-1.src.rpm
checksum_type: sha256
description:
  ASTEVAL provides a numpy-aware, safe(ish) 'eval' function
  Emphasis is on mathematical expressions, and so numpy ufuncs
  are used if available.  Symbols are held in the Interpreter
  symbol table 'symtable':  a simple dictionary supporting a
  simple, flat namespace.
  Expressions can be compiled into ast node for later evaluation,
  using the values in the symbol table current at evaluation time.


pkgId: b887d21b9862489e3f842f502b7b9d4233840c9d423b7db9ba47cfc26d71bee5
name: python-astrometry
arch: src
version: 4.1.1
epoch: 0
release: 1
summary: Astrometry.net solver interface
url: https://github.com/neuromorphicsystems/astrometry
rpm_license: GNU General Public License v3 (GPLv3)
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a8d77f46-7434-434d-ac37-6497e22e88fb
location_href: 00003057-python-astrometry/python-astrometry-4.1.1-1.src.rpm
checksum_type: sha256
description:
  - [Astrometry](#astrometry)
  - [Get started](#get-started)
  - [Examples](#examples)
      - [Provide size and position hints](#provide-size-and-position-hints)
      - [Print progress information (download and solve)](#print-progress-information-download-and-solve)
      - [Print field stars metadata](#print-field-stars-metadata)
      - [Calculate field stars pixel positions with astropy](#calculate-field-stars-pixel-positions-with-astropy)
      - [Print series description and size (without downloading them)](#print-series-description-and-size-without-downloading-them)
      - [Disable tune-up and distortion](#disable-tune-up-and-distortion)
      - [Stop the solver early using the log-odds callback](#stop-the-solver-early-using-the-log-odds-callback)
          - [Return after the first match](#return-after-the-first-match)
          - [Return early if the best log-odds are larger than 100.0](#return-early-if-the-best-log-odds-are-larger-than-1000)
          - [Return early if there are at least ten matches](#return-early-if-there-are-at-least-ten-matches)
          - [Return early if the three best matches are similar](#return-early-if-the-three-best-matches-are-similar)
  - [Choosing series](#choosing-series)
  - [Documentation](#documentation)
      - [Solver](#solver)
      - [SizeHint](#sizehint)
      - [PositionHint](#positionhint)
      - [Action](#action)
      - [Parity](#parity)
      - [SolutionParameters](#solutionparameters)
      - [Solution](#solution)
      - [Match](#match)
      - [Star](#star)
      - [Series](#series)
      - [batches\_generator](#batches_generator)
      - [SupportsFloatMapping](#supportsfloatmapping)
  - [Contribute](#contribute)
  - [Publish](#publish)
  - [MSVC compatibility (work in progress)](#msvc-compatibility-work-in-progress)



  Astrometry turns a list of star positions into a pixel-to-sky transformation (WCS) by calling C functions from the Astrometry.net library (https://astrometry.net).

  Astrometry.net star index files ("series") are automatically downloaded when required.

  This package is useful for solving plates from a Python script, comparing star extraction methods, or hosting a simple local version of Astrometry.net with minimal dependencies. See https://github.com/dam90/astrometry for a more complete self-hosting solution.

  Unlike Astrometry.net, Astrometry does not include FITS parsing or image pre-processing algorithms. Stars must be provided as a list of pixel positions.

  This library works on Linux and macOS, but not Windows (at the moment). WSL should work but has not been tested.

  We are not the authors of the Astrometry.net library. You should cite works from https://astrometry.net/biblio.html if you use the Astrometry.net algorithm via this package.



  ```sh
  python3 -m pip install astrometry
  ```

  ```py
  import astrometry

  solver = astrometry.Solver(
      astrometry.series_5200.index_files(
          cache_directory="astrometry_cache",
          scales={6},
      )
  )

  stars = [
      [388.9140568247906, 656.5003281719216],
      [732.9210858972549, 473.66395545775106],
      [401.03459504299843, 253.788113189415],
      [312.6591868096163, 624.7527729425295],
      [694.6844564647456, 606.8371776658344],
      [741.7233477959561, 344.41284826261443],
      [867.3574610200455, 672.014835980283],
      [1063.546651153479, 593.7844603550848],
      [286.69070190952704, 422.170016812049],
      [401.12779619355155, 16.13543616977013],
      [205.12103484692776, 698.1847350789413],
      [202.88444768690894, 111.24830187635557],
      [339.1627757703069, 86.60739435924549],
  ]

  solution = solver.solve(
      stars=stars,
      size_hint=None,
      position_hint=None,
      solution_parameters=astrometry.SolutionParameters(),
  )

  if solution.has_match():
      print(f"{solution.best_match().center_ra_deg=}")
      print(f"{solution.best_match().center_dec_deg=}")
      print(f"{solution.best_match().scale_arcsec_per_pixel=}")
  ```

  `solve` is thread-safe. It can be called any number of times from the same `Solver` object.





  ```py
  import astrometry

  solver = ...
  solution = solver.solve(
      stars=...,
      size_hint=astrometry.SizeHint(
          lower_arcsec_per_pixel=1.0,
          upper_arcsec_per_pixel=2.0,
      ),
      position_hint=astrometry.PositionHint(
          ra_deg=65.7,
          dec_deg=36.2,
          radius_deg=1.0,
      ),
      solution_parameters=...
  )
  ```



  ```py
  import astrometry
  import logging

  logging.getLogger().setLevel(logging.INFO)

  solver = ...
  solution = ...
  ```



  Astrometry extracts metadata from the star index ("series"). See [Choosing series](#choosing-series) for a description of the available data.

  ```py
  import astrometry

  solver = ...
  solution = ...

  if solution.has_match():
      for star in solution.best_match().stars:
          print(f"{star.ra_deg}º, {star.dec_deg}º:", star.metadata)
  ```



  ```py
  import astrometry

  solver = ...
  solution = ...

  if solution.has_match():
      wcs = solution.best_match().astropy_wcs()
      pixels = wcs.all_world2pix(
          [[star.ra_deg, star.dec_deg] for star in solution.best_match().stars],
          0,
      )
      
  ```

  `astropy.wcs.WCS` provides many more functions to probe the transformation properties and convert from and to pixel coordinates. See https://docs.astropy.org/en/stable/api/astropy.wcs.WCS.html for details. Astropy (https://pypi.org/project/astropy/) must be installed to use this method.



  ```py
  import astrometry

  print(astrometry.series_5200_heavy.description)
  print(astrometry.series_5200_heavy.size_as_string({2, 3, 4}))
  ```

  See [Choosing Series](#choosing-series) for a list of available series.



  ```py
  import astrometry

  solver = ...
  solution = solver.solve(
      stars=...,
      size_hint=...,
      position_hint=...,
      solution_parameters=astrometry.SolutionParameters(
          sip_order=0,
          tune_up_logodds_threshold=None,
      ),
  )
  ```





  ```py
  import astrometry

  solver = ...
  solution = solver.solve(
      stars=...,
      size_hint=...,
      position_hint=...,
      solution_parameters=astrometry.SolutionParameters(
          logodds_callback=lambda logodds_list: astrometry.Action.STOP,
      ),
  )
  ```



  ```py
  import astrometry

  solver = ...
  solution = solver.solve(
      stars=...,
      size_hint=...,
      position_hint=...,
      solution_parameters=astrometry.SolutionParameters(
          logodds_callback=lambda logodds_list: (
              astrometry.Action.STOP
              if logodds_list[0] > 100.0
              else astrometry.Action.CONTINUE
          ),
      ),
  )
  ```



  ```py
  import astrometry

  solver = ...
  solution = solver.solve(
      stars=...,
      size_hint=...,
      position_hint=...,
      solution_parameters=astrometry.SolutionParameters(
          logodds_callback=lambda logodds_list: (
              astrometry.Action.STOP
              if len(logodds_list) >= 10.0
              else astrometry.Action.CONTINUE
          ),
      ),
  )
  ```



  ```py
  import astrometry

  def logodds_callback(logodds_list: list[float]) -> astrometry.Action:
      if len(logodds_list) < 3:
          return astrometry.Action.CONTINUE
      if logodds[1] > logodds[0] - 10 and logodds[2] > logodds[0] - 10:
          return astrometry.Action.STOP
      return astrometry.Action.CONTINUE


  solver = ...
  solution = solver.solve(
      stars=...,
      size_hint=...,
      position_hint=...,
      solution_parameters=astrometry.SolutionParameters(
          logodds_callback=logodds_callback,
      ),
  )
  ```



  This library downloads series from http://data.astrometry.net. A solver can be instantiated with multiple series and scales as follows:

  ```py
  import astrometry

  solver = astrometry.Solver(
      astrometry.series_5200.index_files(
          cache_directory="astrometry_cache",
          scales={4, 5, 6},
      )
      + astrometry.series_4200.index_files(
          cache_directory="astrometry_cache",
          scales={6, 7, 12},
      )
  )
  ```

  Astrometry.net gives the following recommendations to choose a scale:

  > Each index file contains a large number of “skymarks” (landmarks for the sky) that allow our solver to identify your images. The skymarks contained in each index file have sizes (diameters) within a narrow range. You probably want to download index files whose quads are, say, 10% to 100% of the sizes of the images you want to solve.
  >
  > For example, let’s say you have some 1-degree square images. You should grab index files that contain skymarks of size 0.1 to 1 degree, or 6 to 60 arcminutes. Referring to the table below, you should [try index files with scales 3 to 9]. You might find that the same number of fields solve, and faster, using just one or two of the index files in the middle of that range - in our example you might try [5, 6 and 7].
  >
  > -- _http://astrometry.net/doc/readme.html_

  | Scale                     | 0               | 1               | 2               | 3               | 4            | 5             | 6             | 7             | 8             | 9             | 10            | 11             | 12              | 13              | 14              | 15              | 16              | 17               | 18                | 19                |
  | ------------------------- | --------------- | --------------- | --------------- | --------------- | ------------ | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | -------------- | --------------- | --------------- | --------------- | --------------- | --------------- | ---------------- | ----------------- | ----------------- |
  | Skymark diameter (arcmin) | [2.0,&nbsp;2.8] | [2.8,&nbsp;4.0] | [4.0,&nbsp;5.6] | [5.6,&nbsp;8.0] | [8,&nbsp;11] | [11,&nbsp;16] | [16,&nbsp;22] | [22,&nbsp;30] | [30,&nbsp;42] | [42,&nbsp;60] | [60,&nbsp;85] | [85,&nbsp;120] | [120,&nbsp;170] | [170,&nbsp;240] | [240,&nbsp;340] | [340,&nbsp;480] | [480,&nbsp;680] | [680,&nbsp;1000] | [1000,&nbsp;1400] | [1400,&nbsp;2000] |

  The table below lists series sizes and properties (we copied the descriptions from http://data.astrometry.net). You can access a series' object with `astrometry.series_{name}` (for example `astrometry.series_4200`).

  | Name       | Total&nbsp;size | Scales       | Description                                                                                                                                                                                                                                          | Metadata                                                                                                                                                                                                                                                                                                                                                                                  |
  | ---------- | --------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | 4100       | 0.36&nbsp;GB    | [7,&nbsp;19] | built from the Tycho-2 catalog, good for images wider than 1 degree, recommended                                                                                                                                                                     | MAG_BT:&nbsp;float<br />MAG_VT:&nbsp;float<br />MAG_HP:&nbsp;float<br />MAG:&nbsp;float                                                                                                                                                                                                                                                                                                   |
  | 4200       | 33.78&nbsp;GB   | [0,&nbsp;19] | built from the near-infared 2MASS survey, runs out of stars at the low end, most users will probably prefer 4100 or 5200                                                                                                                             | j_mag:&nbsp;float                                                                                                                                                                                                                                                                                                                                                                         |
  | 5000       | 76.24&nbsp;GB   | [0,&nbsp;7]  | an older version from Gaia-DR2 but without Tycho-2 stars merged in, our belief is that series_5200 will work better than this one                                                                                                                    | source_id:&nbsp;int<br />phot_g_mean_mag:&nbsp;float<br />phot_bp_mean_mag:&nbsp;float<br />phot_rp_mean_mag:&nbsp;float<br />parallax:&nbsp;float<br />parallax_error:&nbsp;float<br />pmra:&nbsp;float<br />pmra_error:&nbsp;float<br />pmdec:&nbsp;float<br />pmdec_error:&nbsp;float<br />ra:&nbsp;float<br />dec:&nbsp;float<br />ref_epoch:&nbsp;float                              |
  | 5200       | 36.14&nbsp;GB   | [0,&nbsp;6]  | LIGHT version built from Tycho-2 + Gaia-DR2, good for images narrower than 1 degree, combine with 4100-series for broader scale coverage, the LIGHT version contains smaller files with no additional Gaia-DR2 information tagged along, recommended | -                                                                                                                                                                                                                                                                                                                                                                                         |
  | 5200_heavy | 79.67&nbsp;GB   | [0,&nbsp;6]  | HEAVY version same as 5200, but with additional Gaia-DR2 information (magnitude in G, BP, RP, proper motions and parallaxes), handy if you want that extra Gaia information for matched stars                                                        | ra:&nbsp;float<br />dec:&nbsp;float<br />mag:&nbsp;float<br />ref_cat:&nbsp;str<br />ref_id:&nbsp;int<br />pmra:&nbsp;float<br />pmdec:&nbsp;float<br />parallax:&nbsp;float<br />ra_ivar:&nbsp;float<br />dec_ivar:&nbsp;float<br />pmra_ivar:&nbsp;float<br />pmdec_ivar:&nbsp;float<br />parallax_ivar:&nbsp;float<br />phot_bp_mean_mag:&nbsp;float<br />phot_rp_mean_mag:&nbsp;float |
  | 6000       | 1.20&nbsp;GB    | [4,&nbsp;6]  | very specialized, uses GALEX Near-UV measurements, and only a narrow range of scales                                                                                                                                                                 | fuv_mag:&nbsp;float<br />nuv_mag:&nbsp;float                                                                                                                                                                                                                                                                                                                                              |
  | 6100       | 1.58&nbsp;GB    | [4,&nbsp;6]  | very specialized, uses GALEX Far-UV measurements, and only a narrow range of scales                                                                                                                                                                  | fuv_mag:&nbsp;float<br />nuv_mag:&nbsp;float                                                                                                                                                                                                                                                                                                                                              |

  The table below indicates the total file size for each scale (most series have multiple index files per scale).

  | Name       | 0             | 1             | 2             | 3            | 4              | 5              | 6              | 7              | 8             | 9             | 10            | 11            | 12           | 13           | 14           | 15             | 16             | 17             | 18             | 19             |
  | ---------- | ------------- | ------------- | ------------- | ------------ | -------------- | -------------- | -------------- | -------------- | ------------- | ------------- | ------------- | ------------- | ------------ | ------------ | ------------ | -------------- | -------------- | -------------- | -------------- | -------------- |
  | 4100       | -             | -             | -             | -            | -              | -              | -              | 165.00&nbsp;MB | 94.55&nbsp;MB | 49.77&nbsp;MB | 24.87&nbsp;MB | 10.21&nbsp;MB | 5.30&nbsp;MB | 2.73&nbsp;MB | 1.38&nbsp;MB | 740.16&nbsp;kB | 408.96&nbsp;kB | 247.68&nbsp;kB | 187.20&nbsp;kB | 144.00&nbsp;kB |
  | 4200       | 14.22&nbsp;GB | 9.25&nbsp;GB  | 5.06&nbsp;GB  | 2.63&nbsp;GB | 1.31&nbsp;GB   | 659.09&nbsp;MB | 328.25&nbsp;MB | 165.44&nbsp;MB | 81.84&nbsp;MB | 41.18&nbsp;MB | 20.52&nbsp;MB | 8.02&nbsp;MB  | 4.17&nbsp;MB | 2.16&nbsp;MB | 1.10&nbsp;MB | 596.16&nbsp;kB | 339.84&nbsp;kB | 213.12&nbsp;kB | 164.16&nbsp;kB | 132.48&nbsp;kB |
  | 5000       | 34.79&nbsp;GB | 20.19&nbsp;GB | 10.74&nbsp;GB | 5.44&nbsp;GB | 2.71&nbsp;GB   | 1.36&nbsp;GB   | 676.79&nbsp;MB | 340.73&nbsp;MB | -             | -             | -             | -             | -            | -            | -            | -              | -              | -              | -              | -              |
  | 5200       | 17.20&nbsp;GB | 9.49&nbsp;GB  | 4.86&nbsp;GB  | 2.45&nbsp;GB | 1.22&nbsp;GB   | 614.89&nbsp;MB | 307.72&nbsp;MB | -              | -             | -             | -             | -             | -            | -            | -            | -              | -              | -              | -              | -              |
  | 5200_heavy | 36.46&nbsp;GB | 21.20&nbsp;GB | 11.29&nbsp;GB | 5.72&nbsp;GB | 2.85&nbsp;GB   | 1.43&nbsp;GB   | 714.56&nbsp;MB | -              | -             | -             | -             | -             | -            | -            | -            | -              | -              | -              | -              | -              |
  | 6000       | -             | -             | -             | -            | 892.55&nbsp;MB | 457.66&nbsp;MB | 233.23&nbsp;MB | -              | -             | -             | -             | -             | -            | -            | -            | -              | -              | -              | -              | -              |
  | 6100       | -             | -             | -             | -            | 599.33&nbsp;MB | 384.09&nbsp;MB | 214.79&nbsp;MB | -              | -             | -             | -             | -             | -            | -            | -            | -              | -              | -              | -              | -              |





  ```py
  class Solver:
      def __init__(self, index_files: list[pathlib.Path]): ...

      def solve(
          self,
          stars: typing.Iterable[SupportsFloatMapping],
          size_hint: typing.Optional[SizeHint],
          position_hint: typing.Optional[PositionHint],
          solution_parameters: SolutionParameters,
      ) -> Solution: ...
  ```

  `solve` is thread-safe and can be called any number of times.

  -   `index_files`: List of index files to use for solving. The list need not come from a `Series` object. Series subsets and combinations are possible as well.
  -   `star`: iterator over a list of pixel coordinates for the input stars.
  -   `size_hint`: Optional angular pixel size range ([SizeHint](#sizehint)). Significantly speeds up `solve` when provided. If `size_hint` is `None`, the range `[0.1, 1000.0]` is used. This default range can be changed by setting `astrometry.DEFAULT_LOWER_ARCSEC_PER_PIXEL` and `astrometry.DEFAULT_UPPER_ARCSEC_PER_PIXEL` to other values.
  -   `position_hint`: Optional field center Ra/Dec coordinates and error radius ([PositionHint](#positionhint)). Significantly speeds up `solve` when provided. If `position_hint` is None, the entire sky is used (`radius_deg = 180.0`).
  -   `solution_parameters`: Advanced solver parameters ([SolutionParameters](#solutionparameters))



  ```py
  @dataclasses.dataclass
  class SizeHint:
      lower_arcsec_per_pixel: float
      upper_arcsec_per_pixel: float
  ```

  `lower_arcsec_per_pixel` and `upper_arcsec_per_pixel` must be larger than `0` and `upper_arcsec_per_pixel` must be smaller than or equal to `upper_arcsec_per_pixel`.



  ```py
  @dataclasses.dataclass
  class PositionHint:
      ra_deg: float
      dec_deg: float
      radius_deg: float
  ```

  -   `ra_deg` must be in the range `[0.0, 360.0[`.
  -   `dec_deg` must be in the range `[-90.0, 90.0]`.
  -   `radius` must be larger than or equal to zero.

  All values are in degrees and must use the same frame of reference as the index files. Astrometry.net index files use J2000 FK5 (https://docs.astropy.org/en/stable/api/astropy.coordinates.FK5.html). ICRS and FK5 differ by less than 0.1 arcsec (https://www.iers.org/IERS/EN/Science/ICRS/ICRS.html).



  ```py
  class Action(enum.Enum):
      STOP = 0
      CONTINUE = 1
  ```



  ```py
  class Parity(enum.IntEnum):
      NORMAL = 0
      FLIP = 1
      BOTH = 2
  ```



  ```py
  @dataclasses.dataclass
  class SolutionParameters:
      solve_id: typing.Optional[str] = None
      uniformize_index: bool = True
      deduplicate: bool = True
      sip_order: int = 3
      sip_inverse_order: int = 0
      distance_from_quad_bonus: bool = True
      positional_noise_pixels: float = 1.0
      distractor_ratio: float = 0.25
      code_tolerance_l2_distance: float = 0.01
      minimum_quad_size_pixels: typing.Optional[float] = None
      minimum_quad_size_fraction: float = 0.1
      maximum_quad_size_pixels: float = 0.0
      maximum_quads: int = 0
      maximum_matches: int = 0
      parity: Parity = Parity.BOTH
      tune_up_logodds_threshold: typing.Optional[float] = 14.0
      output_logodds_threshold: float = 21.0
      slices_generator: typing.Callable[[int], typing.Iterable[tuple[int, int]]] = astrometry.batches_generator(25)
      logodds_callback: typing.Callable[[list[float]], Action] = lambda _: Action.CONTINUE
  ```

  -   `solve_id`: Optional plate identifier used in logging messages. If `solve_id` is `None`, it is automatically assigned a unique integer. The value can be retrieved from the Solution object (`solution.solve_id`).
  -   `uniformize_index`: Uniformize field stars at the matched index scale before verifying a match.
  -   `deduplicate`: De-duplicate field stars before verifying a match.
  -   `sip_order`: Polynomial order of the Simple Imaging Polynomial distortion (see https://irsa.ipac.caltech.edu/data/SPITZER/docs/files/spitzer/shupeADASS.pdf). `0` disables SIP distortion. `tune_up_logodds_threshold` must be `None` if `sip_order` is `0`.
  -   `sip_inverse_order`: Polynomial order of the inversee Simple Polynomial distortion. Usually equal to `sip_order`. `0` means "equal to `sip_order`".
  -   `distance_from_quad_bonus`: Assume that stars far from the matched quad will have larger positional variance.
  -   `positional_noise_pixels`: Expected error on the positions of stars.
  -   `distractor_ratio`: Fraction of distractors in the range `]0, 1]`.
  -   `code_tolerance_l2_distance`: Code tolerance in 4D codespace L2 distance.
  -   `minimum_quad_size_pixels`: Minimum size of field quads to try, `None` calculates the size automatically as `minimum_quad_size_fraction * min(Δx, Δy)`, where `Δx` (resp. `Δy`) is the maximum `x` distance (resp. `y` distance) between stars in the field.
  -   `minimum_quad_size_fraction`: Only used if `minimum_quad_size_pixels` is `None` (see above).
  -   `maximum_quad_size_pixels`: Maximum size of field quads to try, `0.0` means no limit.
  -   `maximum_quads`: Number of field quads to try, `0` means no limit.
  -   `maximum_matches`: Number of quad matches to try, `0` means no limit.
  -   `parity`: Parity.NORMAL does not flip the axes, Parity.FLIP does, and Parity.BOTH tries flipped and non-flipped axes (at the cost of doubling computations).
  -   `tune_up_logodds_threshold`: Matches whose log-odds are larger than this value are tuned-up (SIP distortion estimation) and accepted if their post-tune-up log-odds are larger than `output_logodds_threshold`. `None` disables tune-up and distortion estimation (SIP). The default Astrometry.net value is `math.log(1e6)`.
  -   `output_logodds_threshold`: Matches whose log-odds are larger than this value are immediately accepted (added to the solution matches). The default Astrometry.net value is `math.log(1e9)`.
  -   `slices_generator`: User-provided function that takes a number of stars as parameter and returns an iterable (such as list) of two-elements tuples representing ranges. The first tuple item (start) is included while the second tuple item (end) is not. The returned ranges can have a variable size and/or overlap. The algorithm compares each range with the star catalogue sequentially. Small ranges significantly speed up the algorithm but increase the odds of missing matches. `astrometry.batches_generator(n)` generates non-overlapping batches of `n` stars.
  -   `logodds_callback`: User-provided function that takes a list of matches log-odds as parameter and returns an `astrometry.Action` object. `astrometry.Action.CONTINUE` tells the solver to keep searching for matches whereas `astrometry.Action.STOP` tells the solver to return the current matches immediately. The log-odds list is sorted from highest to lowest value and should not be modified by the callback function.

  Accepted matches are always tuned up, even if they hit `tune_up_logodds_threshold` and were already tuned-up. Since log-odds are compared with the thresholds before the tune-up, the final log-odds are often significantly larger than `output_logodds_threshold`. Set `tune_up_logodds_threshold` to a value larger than or equal to `output_logodds_threshold` to disable the first tune-up, and `None` to disable tune-up altogether. Tune-up logic is equivalent to the following Python snippet:

  ```py





  if tune_up_logodds_threshold is None:
      if log_odds >= output_logodds_threshold:
          add_to_solution(match)
  else:
      if log_odds >= output_logodds_threshold:
          tuned_up_match, tuned_up_loggods = tune_up(match)
          add_to_solution(tuned_up_match)
      elif log_odds >= tune_up_logodds_threshold:
          tuned_up_match, tuned_up_loggods = tune_up(match)
          if tuned_up_loggods >= output_logodds_threshold:
              tuned_up_twice_match, tuned_up_twice_loggods = tune_up(tuned_up_match)
              add_to_solution(tuned_up_twice_match)
  ```

  Astrometry.net gives the following description of the tune-up algorithm. See `tweak2` in _astrometry.net/solver/tweak2.c_ for the implementation.

  > Given an initial WCS solution, compute SIP polynomial distortions using an annealing-like strategy. That is, it finds matches between image and reference catalog by searching within a radius, and that radius is small near a region of confidence, and grows as you move away. That makes it possible to pick up more distant matches, but they are downweighted in the fit. The annealing process reduces the slope of the growth of the matching radius with respect to the distance from the region of confidence.
  >
  > -- _astrometry.net/include/astrometry/tweak2.h_



  ```py
  @dataclasses.dataclass
  class Solution:
      solve_id: str
      matches: list[Match]

      def has_match(self) -> bool: ...

      def best_match(self) -> Match: ...

      def to_json(self) -> str: ...

      @classmethod
      def from_json(cls, solution_as_json: str) -> Solution: ...

  ```

  `matches` are sorted in descending log-odds order. `best_match` returns the first match in the list. `to_json` and `from_json` may be used to save and load solutions.



  ```py
  @dataclasses.dataclass
  class Match:
      logodds: float
      center_ra_deg: float
      center_dec_deg: float
      scale_arcsec_per_pixel: float
      index_path: pathlib.Path
      stars: tuple[Star, ...]
      quad_stars: tuple[Star, ...]
      wcs_fields: dict[str, tuple[typing.Any, str]]

      def astropy_wcs(self) -> astropy.wcs.WCS: ...
  ```

  -   `logodds`: Log-odds (https://en.wikipedia.org/wiki/Logit) of the match.
  -   `center_ra_deg`: Right ascension of the stars bounding box's center, in degrees and in the frame of reference of the index (J200 FK5 for Astrometry.net series).
  -   `center_dec_deg`: Declination of the stars bounding box's center in degrees and in the frame of reference of the index (J200 FK5 for Astrometry.net series).
  -   `scale_arcsec_per_pixel`: Pixel scale in arcsec per pixel.
  -   `index_path`: File system path of the index file used for this match.
  -   `stars`: List of visible index stars. This list is almost certainly going to differ from the input stars list.
  -   `quad_stars`: The index stars subset (usually 4 but can be 3 or 5) used in the hash code search step (see https://arxiv.org/pdf/0910.2233.pdf, 2. Methods).
  -   `wcs_fields`: WCS fields describing the transformation between pixel coordinates and world coordinates. This dictionary can be passed directly to `astropy.wcs.WCS`.

  `astropy_wcs` generates an Astropy WCS object. Astropy (https://pypi.org/project/astropy/) must be installed to use this method. See [Calculate field stars pixel positions with astropy](#calculate-field-stars-pixel-positions-with-astropy) for details.



  ```py
  @dataclasses.dataclass
  class Star:
      ra_deg: float
      dec_deg: float
      metadata: dict[str, typing.Any]
  ```

  `ra_deg` and `dec_deg` are in degrees and use the same frame of reference as the index files. Astrometry.net index files use J2000 FK5 (https://docs.astropy.org/en/stable/api/astropy.coordinates.FK5.html). ICRS and FK5 differ by less than 0.1 arcsec (https://www.iers.org/IERS/EN/Science/ICRS/ICRS.html).

  The contents of `metadata` depend on the data available in index files. See [Series](#series) for details.



  ```py
  @dataclasses.dataclass
  class Series:
      name: str
      description: str
      scale_to_sizes: dict[int, tuple[int, ...]]
      url_pattern: str

      def size(self, scales: typing.Optional[set[int]] = None): ...

      def size_as_string(self, scales: typing.Optional[set[int]] = None): ...

      def index_files(
          self,
          cache_directory: typing.Union[bytes, str, os.PathLike],
          scales: typing.Optional[set[int]] = None,
      ) -> list[pathlib.Path]: ...
  ```

  -   `name` defines the cache subdirectory name.
  -   `description` is a copy of the text description in http://data.astrometry.net.
  -   `scale_to_sizes` maps each available HEALPix resolution to index files sizes in bytes. The smaller the scale, the larger the number of HEALPix subdivisions.
  -   `url_pattern` is the base pattern used to generate file download links.
  -   `size` returns the cumulative file sizes for the given scales in bytes. If `scales` is `None`, all the scales available for the series are used.
  -   `size_as_string` returns a human-readable string representation of `size`.
  -   `index_files` returns index files paths for the given scales (or all available scales if `scales` is `None`). This function downloads files that are not already in the cache directory. `cache_directory` is created if it does not exist. Download automatically resumes for partially downloaded files.

  Change the constants `astrometry.CHUNK_SIZE`, `astrometry.DOWNLOAD_SUFFIX` and `astrometry.TIMEOUT` to configure the downloader parameters.



  ```py
  def batches_generator(
      batch_size: int,
  ) -> typing.Callable[[int], typing.Iterable[tuple[int, int]]]:
      ...
  ```

  -   `batch_size` sets the size of the generated batches.

  `batches_generator` returns a slices generator compatible with `SolutionParameters.slices_generator`. The slices are non-overlapping and non-full slices are ignored. For instance, a batch size of `25` over `83` stars would generate the slices `(0, 25)`, `(25, 50)`, and `(50, 75)`.



  ```py
  class SupportsFloatMapping(typing.Protocol):
      def __getitem__(self, index: typing.SupportsIndex, /) -> typing.SupportsFloat:
          ...
  ```



  Clone this repository and pull its submodule:

  ```
  git clone --recursive https://github.com/neuromorphicsystems/astrometry.git
  cd astrometry
  ```

  or

  ```
  git clone https://github.com/neuromorphicsystems/astrometry.git
  cd astrometry
  git submodule update --recursive
  ```

  Format the code:

  ```sh
  clang-format -i astrometry_extension/astrometry_extension.c astrometry_extension/astrometry_extension_utilities.h
  ```

  Build a local version:

  ```sh
  python3 -m pip install -e .

  ```



  1. Bump the version number in _setup.py_.

  2. Create a new release on GitHub.



  -   _fitsbin.c_, _kdtree_internal.c_, _kdtree_internal_fits.c_, _solver.c_: replace Variable Length Arrays (VAL) with \_alloca (`type name[size]` -> `type* name = _alloca(size)`)
  -   _fitsbin.c_, _fitsioutils.c_, _fitstable.c_: cast `void*` to `char*` to enable pointer arithmetic
  -   _anqfits.c_, _verify.c_: `#define debug(args...)` -> `#define debug(...)`
  -   _qfits_time.c_: remove `#include <pwd.h>`
  -   _log.h_, _keywords.h_: remove `__attribute__` directives
  -   _bl.c_: remove redundant bl.inc and bl_nl.c includes
  -   replace all POSIX calls (file IO, network, select...). This requires significant effort when targeting the entire Astrometry.net library. It might be less complicated with Astrometry, which uses only a subset of Astrometry.net.


pkgId: 5e387332deb226f923fba88fa21f7cea62e5545f210a2cb19030727b3577fbda
name: python-astroplan
arch: src
version: 0.8
epoch: 0
release: 1
summary: Observation planning package for astronomers
url: https://github.com/astropy/astroplan
rpm_license: BSD
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-893fdc92-8bdd-43d1-8eaa-3da858db965b
location_href: 00003058-python-astroplan/python-astroplan-0.8-1.src.rpm
checksum_type: sha256
description:
  Observation planning package for astronomers
  * Code: https://github.com/astropy/astroplan
  * Docs: https://astroplan.readthedocs.io/
  * License: BSD-3
  Attribution
  +++++++++++
  If you use astroplan in your work, please cite `Morris et al. 2018 <https://ui.adsabs.harvard.edu/abs/2018AJ....155..128M/abstract>`_:
    @ARTICLE{2018AJ....155..128M,
           author = {{Morris}, Brett M. and {Tollerud}, Erik and {Sip{\H{o}}cz}, Brigitta and {Deil}, Christoph and {Douglas}, Stephanie T. and {Berlanga Medina}, Jazmin and {Vyhmeister}, Karl and {Smith}, Toby R. and {Littlefair}, Stuart and {Price-Whelan}, Adrian M. and {Gee}, Wilfred T. and {Jeschke}, Eric},
            title = "{astroplan: An Open Source Observation Planning Package in Python}",
          journal = {\aj},
         keywords = {methods: numerical, methods: observational, Astrophysics - Instrumentation and Methods for Astrophysics},
             year = 2018,
            month = mar,
           volume = {155},
           number = {3},
              eid = {128},
            pages = {128},
              doi = {10.3847/1538-3881/aaa47e},
    archivePrefix = {arXiv},
           eprint = {1712.09631},
     primaryClass = {astro-ph.IM},
           adsurl = {https://ui.adsabs.harvard.edu/abs/2018AJ....155..128M},
          adsnote = {Provided by the SAO/NASA Astrophysics Data System}
    }


pkgId: f8626189da085d8262520eab462e6a7860b0c30e78cd9ff2ce778e571a0da5bf
name: python-astropy-healpix
arch: src
version: 0.7
epoch: 0
release: 1
summary: BSD-licensed HEALPix for Astropy
url: https://github.com/astropy/astropy-healpix
rpm_license: BSD 3-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-57ecf842-d04b-4a54-a051-caf39b22e8f1
location_href: 00003061-python-astropy-healpix/python-astropy-healpix-0.7-1.src.rpm
checksum_type: sha256
description:
  This is a BSD-licensed HEALPix package developed by the Astropy project
  and based on C code written by Dustin Lang in `astrometry.net <http://astrometry.net/>`__. See the
  `Documentation <http://astropy-healpix.readthedocs.io>`__ for
  information about installing and using this package.


pkgId: de169dfa390e4f62bb8c1766a34cecfd398006fdf038a7ea832fceeb10b3ef42
name: python-astropy-helpers
arch: src
version: 4.0.1
epoch: 0
release: 1
summary: Utilities for building and installing packages in the Astropy ecosystem
url: https://github.com/astropy/astropy-helpers
rpm_license: BSD 3-Clause License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-323aec46-8d9d-4421-b7f6-738ebb2991ff
location_href: 00003062-python-astropy-helpers/python-astropy-helpers-4.0.1-1.src.rpm
checksum_type: sha256
description:
  The **astropy-helpers** package includes many build, installation, and
  documentation-related tools used by the Astropy project, but packaged separately
  for use by other projects that wish to leverage this work. The motivation behind
  this package and details of its implementation are in the accepted
  `Astropy Proposal for Enhancement (APE) 4 <https://github.com/astropy/astropy-APEs/blob/master/APE4.rst>`_.
  Astropy-helpers is not a traditional package in the sense that it is not
  intended to be installed directly by users or developers. Instead, it is meant
  to be accessed when the ``setup.py`` command is run - see the
  "`Using astropy-helpers in a package <https://astropy-helpers.readthedocs.io/en/stable/using.html>`_"
  section in the documentation for how to do this.
  For a real-life example of how to implement astropy-helpers in a
  project, see the ``setup.py`` and ``setup.cfg`` files of the
  `Affiliated package template <https://github.com/astropy/package-template>`_.
  For more information, see the documentation at http://astropy-helpers.readthedocs.io


pkgId: 608350a2b953a4b1a33a796506b6a9073203c4d7f6cf7a62e97f88c16de8c6f9
name: python-astroscrappy
arch: src
version: 1.1.0
epoch: 0
release: 1
summary: Speedy Cosmic Ray Annihilation Package in Python
url: https://github.com/astropy/astroscrappy
rpm_license: BSD 3-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-66bb964c-46b5-49f9-9fd4-c2f1d0f4062a
location_href: 00003064-python-astroscrappy/python-astroscrappy-1.1.0-1.src.rpm
checksum_type: sha256
description:
  An optimized cosmic ray detector.
  Astro-SCRAPPY is designed to detect cosmic rays in images (numpy arrays),
  based on Pieter van Dokkum's L.A.Cosmic algorithm.
  Much of this was originally adapted from cosmics.py written by Malte Tewes.
  I have ported all of the slow functions to Cython/C, and optimized
  where I can. This is designed to be as fast as possible so some of the
  readability has been sacrificed, specifically in the C code.
  If you use this code, please cite the Zendo DOI: https://zenodo.org/record/1482019
  Please cite the original paper which can be found at:
  http://www.astro.yale.edu/dokkum/lacosmic/
  van Dokkum 2001, PASP, 113, 789, 1420
  (article : http://adsabs.harvard.edu/abs/2001PASP..113.1420V)
  This code requires Cython, preferably version >= 0.21.
  Parallelization is achieved using OpenMP. This code should compile (although
  the Cython files may have issues) using a compiler that does not support OMP,
  e.g. clang.


pkgId: 8fc6397044157f22e3b3b72384b929cb297411931a840fa25f743a123436f16b
name: python-asttokens
arch: src
version: 2.2.1
epoch: 0
release: 1
summary: Annotate AST trees with source code positions
url: https://github.com/gristlabs/asttokens
rpm_license: Apache 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-97f09505-edf5-45c6-bd03-502714066a1a
location_href: 00003065-python-asttokens/python-asttokens-2.2.1-1.src.rpm
checksum_type: sha256
description:
  The ``asttokens`` module annotates Python abstract syntax trees (ASTs) with the positions of tokens
  and text in the source code that generated them.
  It makes it possible for tools that work with logical AST nodes to find the particular text that
  resulted in those nodes, for example for automated refactoring or highlighting.


pkgId: e40b494e706130f85c1f38ef05a8403de6f67161f0cb2ae460f49279712ccad8
name: python-async-upnp-client
arch: src
version: 0.33.1
epoch: 0
release: 1
summary: Async UPnP Client
url: https://github.com/StevenLooman/async_upnp_client
rpm_license: Apache 2
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-869fff9a-3652-4297-a94c-625aab6b7434
location_href: 00003068-python-async-upnp-client/python-async-upnp-client-0.33.1-1.src.rpm
checksum_type: sha256
description:
  Asyncio UPnP Client library for Python/asyncio.
  Written initially for use in `Home Assistant <https://github.com/home-assistant/home-assistant>`_ to drive `DLNA DMR`-capable devices, but useful for other projects as well.


pkgId: 55d1a1e29c2aa1cd027dfc2a5ab8fe39e4f8456796feab551ca1c775d2cd32dc
name: python-async_generator
arch: src
version: 1.10
epoch: 0
release: 1
summary: Async generators and context managers for Python 3.5+
url: https://github.com/python-trio/async_generator
rpm_license: MIT -or- Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-6727751a-f2f2-4afb-b800-d4cd60eb54be
location_href: 00003066-python-async-generator/python-async_generator-1.10-1.src.rpm
checksum_type: sha256
description:
  Python 3.6 added `async generators
  <https://www.python.org/dev/peps/pep-0525/>`__. (What's an async
  generator? `Check out my 5-minute lightning talk demo from PyCon 2016
  <https://youtu.be/PulzIT8KYLk?t=24m30s>`__.) Python 3.7 adds some more
  tools to make them usable, like ``contextlib.asynccontextmanager``.
  This library gives you all that back to Python 3.5.
  For example, this code only works in Python 3.6+:
     async def load_json_lines(stream_reader):
         async for line in stream_reader:
             yield json.loads(line)
  But this code does the same thing, and works on Python 3.5+:
     from async_generator import async_generator, yield_
     @async_generator
     async def load_json_lines(stream_reader):
         async for line in stream_reader:
             await yield_(json.loads(line))
  Or in Python 3.7, you can write:
     from contextlib import asynccontextmanager
     @asynccontextmanager
     async def background_server():
         async with trio.open_nursery() as nursery:
             value = await nursery.start(my_server)
             try:
                 yield value
             finally:
                 
                 nursery.cancel_scope.cancel()
  This is the same, but back to 3.5:
     from async_generator import async_generator, yield_, asynccontextmanager
     @asynccontextmanager
     @async_generator
     async def background_server():
         async with trio.open_nursery() as nursery:
             value = await nursery.start(my_server)
             try:
                 await yield_(value)
             finally:
                 
                 nursery.cancel_scope.cancel()
  (And if you're on 3.6, you can use ``@asynccontextmanager`` with
  native generators.)


pkgId: 2b8078fc73387c599ac5bbe6a498be9457434378ef039cc77ae7fc640a4e3298
name: python-asyncio-dgram
arch: src
version: 2.1.2
epoch: 0
release: 1
summary: Higher level Datagram support for Asyncio
url: https://github.com/jsbronder/asyncio-dgram
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-b00b6af1-ddf8-4fa3-95a8-bf1493a7df38
location_href: 00003069-python-asyncio-dgram/python-asyncio-dgram-2.1.2-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://github.com/jsbronder/asyncio-dgram/workflows/ci/badge.svg)](https://github.com/jsbronder/asyncio-dgram/actions)


  Simple wrappers that allow you to `await read()` from datagrams as suggested
  by Guido van Rossum
  [here](https://github.com/python/asyncio/pull/321#issuecomment-187022351).  I
  frequently found myself having to inherit from `asyncio.DatagramProtocol` and
  implement this over and over.


  The goal of this package is to make implementing common patterns that use datagrams
  simple and straight-forward while still supporting more esoteric options.  This is done
  by taking an opinionated stance on the API that differs from parts of asyncio.  For instance,
  rather than exposing a function like
  [create\_datagram\_endpoint](https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.create_datagram_endpoint)
  which supports many use-cases and has conflicting parameters, `asyncio_dgram`
  only provides three functions for creating a stream:

  - `connect((host, port))`: Creates a datagram endpoint which can only
    communicate with the endpoint it connected to.
  - `bind((host, port))`: Creates a datagram endpoint that can communicate
    with anyone, but must specified the destination address every time it
    sends.
  - `from_socket(sock)`: If the above two functions are not sufficient, then
    `asyncio_dgram` simply lets the caller setup the socket as they see fit.



  Following the example of asyncio documentation, here's what a UDP echo client
  and server would look like.
  ```python
  import asyncio

  import asyncio_dgram


  async def udp_echo_client():
      stream = await asyncio_dgram.connect(("127.0.0.1", 8888))

      await stream.send(b"Hello World!")
      data, remote_addr = await stream.recv()
      print(f"Client received: {data.decode()!r}")

      stream.close()


  async def udp_echo_server():
      stream = await asyncio_dgram.bind(("127.0.0.1", 8888))

      print(f"Serving on {stream.sockname}")

      data, remote_addr = await stream.recv()
      print(f"Echoing {data.decode()!r}")
      await stream.send(data, remote_addr)

      await asyncio.sleep(0.5)
      print(f"Shutting down server")


  def main():
      loop = asyncio.get_event_loop()
      loop.run_until_complete(asyncio.gather(udp_echo_server(), udp_echo_client()))


  if __name__ == "__main__":
      main()
  ```


pkgId: 80a80a72068df3a4032eb764361fe30f5cbbfdb51bb23b232f4ca3da2b9fc09d
name: python-asyncio_extras
arch: src
version: 1.3.2
epoch: 0
release: 1
summary: Asynchronous generators, context managers and more for asyncio
url: https://github.com/agronholm/asyncio_extras
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-7e49b1e4-00f7-45fe-b2da-19e74256c3f0
location_href: 00011728-python-asyncio-extras/python-asyncio_extras-1.3.2-1.src.rpm
checksum_type: sha256
description:
  .. image:: https://travis-ci.org/agronholm/asyncio_extras.svg?branch=master
    :target: https://travis-ci.org/agronholm/asyncio_extras
    :alt: Build Status
  .. image:: https://coveralls.io/repos/agronholm/asyncio_extras/badge.svg?branch=master&service=github
    :target: https://coveralls.io/github/agronholm/asyncio_extras?branch=master
    :alt: Code Coverage
  .. image:: https://readthedocs.org/projects/asyncio-extras/badge/?version=latest
    :target: https://asyncio-extras.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation Status

  This library provides several conveniences to users of asyncio_:

  * decorator for making asynchronous context managers (like ``contextlib.contextmanager``)
  * decorator and context manager for running a function or parts of a function in a thread pool
  * helpers for calling functions in the event loop from worker threads and vice versa
  * helpers for doing non-blocking file i/o

  .. _asyncio: https://docs.python.org/3/library/asyncio.html


pkgId: 922027a169e81d12e8b25ff045ad86fe4c73f194586e6ff5a2419f89d80f23b4
name: python-asyncore-wsgi
arch: src
version: 0.0.10
epoch: 0
release: 1
summary: Asynchronous WSGI and WebSocket server based on asyncore module
url: https://github.com/romanvm/asyncore-wsgi
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-25dc964c-2dc2-4dcf-9bbd-bbdb9de18e7a
location_href: 00010756-python-asyncore-wsgi/python-asyncore-wsgi-0.0.10-1.src.rpm
checksum_type: sha256
description:
  This is a single-threaded asynchronous WSGI server with WebSockets support
  based on `asyncore <https://docs.python.org/3.6/library/asyncore.html>`_ module.
  It should be compatible with Python 2.7 and 3.
  Example:
      from from wsgiref.simple_server import demo_app
      from asyncore_wsgi import AsyncWebSocketHandler, make_server
      class SimpleEchoHandler(AsyncWebSocketHandler):
          def handleMessage(self):
              print('Received WebSocket message: {}'.format(self.data))
              self.sendMessage(self.data)
          def handleConnected(self):
              print('WebSocket connected')
          def handleClose(self):
              print('WebSocket closed')
      httpd = make_server('', 8000, demo_app, ws_handler_class=SimpleEchoHandler)
      httpd.serve_forever()
  The server in the preceding example serves a demo WSGI app from
  the Standard Library and the echo WebSocket handler on ``'/ws'`` path.
  WebSocket part was borrowed from
  `this project <https://github.com/dpallot/simple-websocket-server>`_.


pkgId: 4c013bf0c781ebf510ea1fcb287cc88e54d0b7be39b0f60e9979ce046b435827
name: python-asyncpg
arch: src
version: 0.27.0
epoch: 0
release: 1
summary: An asyncio PostgreSQL driver
url: https://github.com/MagicStack/asyncpg
rpm_license: Apache License, Version 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-b794d949-b08a-4982-a7e3-a922bd82300f
location_href: 00009704-python-asyncpg/python-asyncpg-0.27.0-1.src.rpm
checksum_type: sha256
description:
  **asyncpg** is a database interface library designed specifically for
  PostgreSQL and Python/asyncio.  asyncpg is an efficient, clean implementation
  of PostgreSQL server binary protocol for use with Python's ``asyncio``
  framework.  You can read more about asyncpg in an introductory
  `blog post <http://magic.io/blog/asyncpg-1m-rows-from-postgres-to-python/>`_.
  asyncpg requires Python 3.7 or later and is supported for PostgreSQL
  versions 9.5 to 15.  Older PostgreSQL versions or other databases implementing
  the PostgreSQL protocol *may* work, but are not being actively tested.


pkgId: 1a3774509924968ae80d63b62533874dac9973fdbdeae2f60dcea0e41c83d358
name: python-asyncpg-debuginfo
arch: x86_64
version: 0.27.0
epoch: 0
release: 1
summary: Debug information for package python-asyncpg
url: https://github.com/MagicStack/asyncpg
rpm_license: Apache License, Version 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-b794d949-b08a-4982-a7e3-a922bd82300f
rpm_sourcerpm: python-asyncpg-0.27.0-1.src.rpm
location_href: 00009704-python-asyncpg/python-asyncpg-debuginfo-0.27.0-1.x86_64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-asyncpg.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: c7a2ec4aa7471aa91b8384a8bf1a1e7a3cce5e33ec16a73b799885c47e03f6cc
name: python-asyncpg-debugsource
arch: x86_64
version: 0.27.0
epoch: 0
release: 1
summary: Debug sources for package python-asyncpg
url: https://github.com/MagicStack/asyncpg
rpm_license: Apache License, Version 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Development/Debug
rpm_buildhost: resalloc-b794d949-b08a-4982-a7e3-a922bd82300f
rpm_sourcerpm: python-asyncpg-0.27.0-1.src.rpm
location_href: 00009704-python-asyncpg/python-asyncpg-debugsource-0.27.0-1.x86_64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-asyncpg.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: bc0f4b0a557ee49b8afaa86ebcfa63b28aad8e8f301757ac9784b4b7fd03baf8
name: python-asyncssh
arch: src
version: 2.13.1
epoch: 0
release: 1
summary: AsyncSSH: Asynchronous SSHv2 client and server library
url: http://asyncssh.timeheart.net
rpm_license: Eclipse Public License v2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-f342446b-fcba-4463-a65e-09da4ed787f1
location_href: 00003070-python-asyncssh/python-asyncssh-2.13.1-1.src.rpm
checksum_type: sha256
description:
  AsyncSSH is a Python package which provides an asynchronous client and
  server implementation of the SSHv2 protocol on top of the Python 3.6+
  asyncio framework.
    import asyncio, asyncssh, sys
    async def run_client():
        async with asyncssh.connect('localhost') as conn:
            result = await conn.run('echo "Hello!"', check=True)
            print(result.stdout, end='')
    try:
        asyncio.get_event_loop().run_until_complete(run_client())
    except (OSError, asyncssh.Error) as exc:
        sys.exit('SSH connection failed: ' + str(exc))
  Check out the `examples`__ to get started!
  __ http://asyncssh.readthedocs.io/en/stable/#client-examples


pkgId: 6f150ca5f8a6288680bd186cedce4c81d63c4b4725f5d94d9ee64e2c49e692c3
name: python-attr
arch: src
version: 0.3.2
epoch: 0
release: 1
summary: Simple decorator to set attributes of target function or class in a DRY way.
url: https://github.com/denis-ryzhkov/attr
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-dd4f55d7-fb37-4115-b270-d6bcfb442fb1
location_href: 00010985-python-attr/python-attr-0.3.2-1.src.rpm
checksum_type: sha256
description:
  Usage example::

      
      def my_calculated_field(...
      my_calculated_field.short_description = 'Field'
      my_calculated_field.admin_order_field = 'real_field'

      
      @attr(short_description='Field', admin_order_field='real_field')
      def my_calculated_field(...

  Get it::

      sudo pip install attr
      from attr import attr

  New popular `attrs.org <http://attrs.org>`_ used by `pytest.org <https://pytest.org>`_ defines another "attr" package that shadows this "attr" module.

  Please use "dry_attr" alias to unshadow it::

      from dry_attr import attr
      from dry_attr import dry_attr


pkgId: 6e8be0f53ea68b3634416b260d78aa8bba36aa84d9be0785b8cacd644e668d78
name: python-attributedict
arch: src
version: 0.3.0
epoch: 0
release: 1
summary: A dictionary object with attributes support.
url: https://github.com/grimen/python-attributedict
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-727459b6-070c-4685-bb9a-73bff0acaaf4
location_href: 00012864-python-attributedict/python-attributedict-0.3.0-1.src.rpm
checksum_type: sha256
description:
  *A dictionary object with attributes support.*




  Install using **pip**:

  ```sh
  $ pip install attributedict
  ```




  Example:

  ```python
  from attributedict.collections import AttributeDict

  data = AttributeDict({'foo': {'bar': [1, 2, 3]}})

  data.foo # => `{'bar': [1, 2, 3]}}`
  data.foo.bar # => `[1, 2, 3]`

  data.foo = {'baz': True}
  data.foo = # => `{'baz': True}`

  del data.foo.baz



  data = AttributeDict({'foo': {'bar': [1, 2, 3]}})

  data['foo'] # => `{'bar': [1, 2, 3]}}`
  data['foo']['bar'] # => `[1, 2, 3]`

  data['foo'] = {'baz': True}
  data['foo'] = # => `{'baz': True}`

  del data['foo']['baz']



  isinstance(data, dict) # => True
  isinstance(data, attributedict.collections.AttributeDict) # => True

  isinstance(data.__dict__, dict) # => True
  isinstance(data.__dict__, attributedict.collections.AttributeDict) # => False



  data = AttributeDict({'foo': {'bar': [1, 2, 3]}})

  json.dumps(data) # => `{"foo": {"bar": [1, 2, 3]}}`
  json.dumps(data.__dict__) # => `{"foo": {"bar": [1, 2, 3]}}`



  ```




  Clone down source code and run:

  ```sh
  $ make install
  $ make test
  ```




  Released under the MIT license.


pkgId: e32a390738d7e4bc6ae8764e548bd89cb1a9a9231c11e68ea5ac9c7b4d02ecf6
name: python-attrify
arch: src
version: 3.0
epoch: 0
release: 1
summary: Convert dict to access dict keys as attributes.
url: https://github.com/DragSama/attrify
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-dae22cd1-96f4-465e-8543-399cf85dc6b1
location_href: 00012865-python-attrify/python-attrify-3.0-1.src.rpm
checksum_type: sha256
description:
  [![Codacy Badge](https://app.codacy.com/project/badge/Grade/1daae9072d214d199f95c53c8fe16d05)](https://www.codacy.com/gh/DragSama/Attrify/dashboard?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=DragSama/Attrify&amp;utm_campaign=Badge_Grade)
  [![PyPI Download Stats](https://img.shields.io/pypi/dd/attrify)](https://pypi.org/project/attrify/)
  [![PyPI Version](https://img.shields.io/pypi/v/attrify?color=brightgreen)](https://pypi.org/project/attrify/)
  [![Code style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

  **Access python dict keys as attributes**



  - Install using pip: `pip install attrify`




  -  Convert normal dict
  ```python
  from attrify import Attrify

  normal_dict = {'name': 'Cool'}
  attrified_dict = Attrify(normal_dict)

  attrified_dict = Attrify(**normal_dict)

  assert attrified_dict['name'] == attrified_dict.name
  ```
  -  Convert complex nested dict
  ```python
  complex_nested_normal_dict = {"data": {"results": [{"name": "something"}, {"name": "anything"}]}}
  complex_nested_attrified_dict = Attrify(complex_nested_normal_dict)

  complex_nested_attrified_dict = Attrify(**complex_nested_normal_dict)

  assert complex_nested_attrified_dict.data.results[0].name == complex_nested_normal_dict['data']['results'][0]['name']
  ```
  -  Convert back to dict
  ```python
  normal_dict = {'name': 'Cool'}
  attrified_dict = Attrify(normal_dict)
  assert type(attrified_dict.to_dict()) == type(normal_dict)
  ```
  -  Keys inside dir: **Will only contain with alphabetic keys, To see which keys are considered alphabetic see `help(str.isalpha)`**
  ```python
  attrified_dict = Attrify({'name': 'Cool'})
  print(dir(attrified_dict)) # List return will contain the key 'name'.
  ```
  -  There is also a shortcut method to prettify dict, Just calls json.dumps with some args set.
  ```python
  print(complex_nested_attrified_dict.prettify())
  ```


pkgId: e12236c499cdc9339842ef3981d52ddd49e1c4af177886c2f3dfbf1101b8d4bd
name: python-audioread
arch: src
version: 3.0.0
epoch: 0
release: 1
summary: multi-library, cross-platform audio decoding
url: https://github.com/sampsyo/audioread
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-42af45cf-bf5c-4fd7-aff6-375147e39a85
location_href: 00003077-python-audioread/python-audioread-3.0.0-1.src.rpm
checksum_type: sha256
description:
  Decode audio files using whichever backend is available. The library
  currently supports:
  - `Gstreamer`_ via `PyGObject`_.
  - `Core Audio`_ on Mac OS X via `ctypes`_. (PyObjC not required.)
  - `MAD`_ via the `pymad`_ bindings.
  - `FFmpeg`_ or `Libav`_ via its command-line interface.
  - The standard library `wave`_, `aifc`_, and `sunau`_ modules (for
    uncompressed audio formats).
  Use the library like so::
      with audioread.audio_open(filename) as f:
          print(f.channels, f.samplerate, f.duration)
          for buf in f:
              do_something(buf)
  Buffers in the file can be accessed by iterating over the object returned from
  ``audio_open``. Each buffer is a bytes-like object (``buffer``, ``bytes``, or
  ``bytearray``) containing raw **16-bit little-endian signed integer PCM
  data**. (Currently, these PCM format parameters are not configurable, but this
  could be added to most of the backends.)
  Additional values are available as fields on the audio file object:
  - ``channels`` is the number of audio channels (an integer).
  - ``samplerate`` is given in Hz (an integer).
  - ``duration`` is the length of the audio in seconds (a float).
  The ``audio_open`` function transparently selects a backend that can read the
  file. (Each backend is implemented in a module inside the ``audioread``
  package.) If no backends succeed in opening the file, a ``DecodeError``
  exception is raised. This exception is only used when the file type is
  unsupported by the backends; if the file doesn't exist, a standard ``IOError``
  will be raised.
  A second optional parameter to ``audio_open`` specifies which backends to try
  (instead of trying them all, which is the default). You can use the
  ``available_backends`` function to get a list backends that are usable on the
  current system.
  Audioread supports Python 3 (3.6+).


pkgId: 2c7d163a62da5c03cee9cda0f11454fdb32ac4b60fa28882bebc3c03b9e98dd6
name: python-auditwheel
arch: src
version: 5.3.0
epoch: 0
release: 1
summary: Cross-distribution Linux wheels
url: https://github.com/pypa/auditwheel
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-c07b1d17-dcf0-4576-814e-4bcc177b5f5e
location_href: 00011837-python-auditwheel/python-auditwheel-5.3.0-1.src.rpm
checksum_type: sha256
description:
  Auditing and relabeling of `PEP 600 manylinux_x_y
  <https://www.python.org/dev/peps/pep-0600/>`_, `PEP 513 manylinux1
  <https://www.python.org/dev/peps/pep-0513/>`_, `PEP 571 manylinux2010
  <https://www.python.org/dev/peps/pep-0571/>`_ and `PEP 599 manylinux2014
  <https://www.python.org/dev/peps/pep-0599/>`_ Linux wheels.


pkgId: d2630a0a485eae0bf2e56a60c014c3a0fcb5bbc8920ce390b03824d371b3753b
name: python-august
arch: src
version: 2.4.0
epoch: 0
release: 1
summary: A library for converting HTML to plain text.
url: https://gitlab.com/alantrick/august/
rpm_license: LGPL-3.0-or-later
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-a68ea08e-0488-44e9-bbdb-ea32462218f9
location_href: 00003078-python-august/python-august-2.4.0-1.src.rpm
checksum_type: sha256
description:
  August is an html to text converter specifically intended for producing
  text versions of HTML emails. The main code is all written in Rust,
  this packages is includes python bindings.




  Install using PIP

  ```shell
  $ pip3 install august
  ```

  Then, import it and run convert

  ```python
  import august

  html = '<p>I\'m <em>so</em> excited to try this</p>'
  print(august.convert(html, width=20))
  ```

  which prints

  ```text
  I'm /so/ excited to
  try this
  ```




  * [html2text](https://pypi.org/project/html2text/):
    Coverts HTML into markdown, and supports a bazillion options.
    It's a great project if you want to produce markdown; but markdown, because
    it's designed to be turned into HTML, has a little more noise than is
    strictly necessary, and the header formatting is pretty unclear.
  * [html-to-text](https://www.npmjs.com/package/html-to-text):
    Converts HTML to text. Javascript/node project.


pkgId: 8a607c74288086fc85eb87fc14ebf17f22a4075ec61b77f106c00d1399ba3c0e
name: python-auth0-python
arch: src
version: 4.1.0
epoch: 0
release: 1
summary: Auth0 Python SDK
url: https://github.com/auth0/auth0-python
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-20f556f9-1d55-4f1c-8a10-b0f0cb72fd00
location_href: 00010181-python-auth0-python/python-auth0-python-4.1.0-1.src.rpm
checksum_type: sha256
description:
  <p align="center">
    <picture>
      <source media="(prefers-color-scheme: light)" srcset="https://cdn.auth0.com/website/sdks/logos/auth0_light_mode.png"   width="150">
      <source media="(prefers-color-scheme: dark)" srcset="https://cdn.auth0.com/website/sdks/logos/auth0_dark_mode.png" width="150">
      <img alt="Auth0 Logo" src="https://cdn.auth0.com/website/sdks/logos/auth0_light_mode.png" width="150">
    </picture>
  </p>
  <p align="center">Auth0 is an easy to implement, adaptable authentication and authorization platform. To learn more checkout <a href="https://auth0.com/why-auth0">Why Auth0?</a></p>
  <p align="center">
  This project is licensed under the MIT license. See the <a href="https://github.com/auth0/auth0-python/blob/master/LICENSE"> LICENSE</a> file for more info.</p>


pkgId: d3961a56447b16a473f3adf09da130cac59fd819a801057ef7c0285996d67713
name: python-authcaptureproxy
arch: src
version: 1.1.4
epoch: 0
release: 1
url: https://github.com/alandtse/auth_capture_proxy
rpm_license: Apache-2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-23791227-2fec-407e-b0d2-0afcd6352efe
location_href: 00012177-python-authcaptureproxy/python-authcaptureproxy-1.1.4-1.src.rpm
checksum_type: sha256
summary:
  A Python project to create a proxy to capture authentication information from a webpage. This is useful to capture oauth login details without access to a third-party oauth.

description:
  [![Version status](https://img.shields.io/pypi/status/authcaptureproxy)](https://pypi.org/project/authcaptureproxy)
  [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
  [![Python version compatibility](https://img.shields.io/pypi/pyversions/authcaptureproxy)](https://pypi.org/project/authcaptureproxy)
  [![Version on Github](https://img.shields.io/github/v/release/alandtse/auth_capture_proxy?include_prereleases&label=GitHub)](https://github.com/alandtse/auth_capture_proxy/releases)
  [![Version on PyPi](https://img.shields.io/pypi/v/authcaptureproxy)](https://pypi.org/project/authcaptureproxy)
  ![PyPI - Downloads](https://img.shields.io/pypi/dd/authcaptureproxy)
  ![PyPI - Downloads](https://img.shields.io/pypi/dw/authcaptureproxy)
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/authcaptureproxy)
  [![Documentation Status](https://readthedocs.org/projects/auth-capture-proxy/badge/?version=latest)](https://auth-capture-proxy.readthedocs.io/en/latest/?badge=latest)
  [![Build (Github Actions)](https://img.shields.io/github/workflow/status/alandtse/auth_capture_proxy/Build%20&%20test?label=Build%20&%20test)](https://github.com/alandtse/auth_capture_proxy/actions)
  [![Test coverage (coveralls)](https://coveralls.io/repos/github/alandtse/auth_capture_proxy/badge.svg?branch=main&service=github)](https://coveralls.io/github/alandtse/auth_capture_proxy?branch=main)

  A Python project to create a proxy to capture authentication information from a webpage. This is useful to capture oauth login details without access to a third-party oauth.



  ```bash
  pip install authcaptureproxy
  ```



  To see basic usage look at the [proxy-example](authcaptureproxy/cli.py) that logs into Amazon.com and will print out the detected email and password.

  ```bash
  python authcaptureproxy/cli.py proxy-example
  ```

  [See the docs 📚](https://auth-capture-proxy.readthedocs.io/en/latest/) for more info.



  Licensed under the terms of the [Apache License 2.0](https://spdx.org/licenses/Apache-2.0.html).



  [New issues](https://github.com/alandtse/auth_capture_proxy/issues) and pull requests are welcome.
  Please refer to the [contributing guide](https://github.com/alandtse/auth_capture_proxy/blob/main/CONTRIBUTING.md)
  and [security policy](https://github.com/alandtse/auth_capture_proxy/blob/main/SECURITY.md).

  Generated with [Tyrannosaurus](https://github.com/dmyersturnbull/tyrannosaurus).


pkgId: b4305e20f6955090f1c64d24c602ff8d6b350c11bf54f5b3e2ca29d6c6f13e08
name: python-auto-py-to-exe
arch: src
version: 2.33.0
epoch: 0
release: 1
summary: Converts .py to .exe using a simple graphical interface.
url: https://github.com/brentvollebregt/auto-py-to-exe
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-eb8bc0e7-2241-48ce-82ee-876a82583ce9
location_href: 00013353-python-auto-py-to-exe/python-auto-py-to-exe-2.33.0-1.src.rpm
checksum_type: sha256
description:
  <h1 align="center">Auto PY to EXE</h1>
  <p align="center">A .py to .exe converter using a simple graphical interface and <a href="https://pyinstaller.readthedocs.io/en/stable/index.html">PyInstaller</a> in Python.</p>

  <p align="center">
      <img src="https://nitratine.net/posts/auto-py-to-exe/feature.png" alt="Empty interface">
  </p>

  <p align="center">
      <a href="https://pypi.org/project/auto-py-to-exe/"><img src="https://img.shields.io/pypi/v/auto-py-to-exe.svg" alt="PyPI Version"></a>
      <a href="https://pypi.org/project/auto-py-to-exe/"><img src="https://img.shields.io/pypi/pyversions/auto-py-to-exe.svg" alt="PyPI Supported Versions"></a>
      <a href="https://pypi.org/project/auto-py-to-exe/"><img src="https://img.shields.io/pypi/l/auto-py-to-exe.svg" alt="License"></a>
      <a href="https://pepy.tech/project/auto-py-to-exe"><img src="https://static.pepy.tech/badge/auto-py-to-exe/month" alt="Downloads Per Month"></a>
      <a href="https://pyinstaller.readthedocs.io/en/stable/requirements.html"><img src="https://img.shields.io/badge/platform-windows%20%7C%20linux%20%7C%20macos-lightgrey" alt="Supported Platforms"></a>
      <a href="https://www.buymeacoffee.com/brentvollebregt"><img src="https://img.shields.io/badge/-buy_me_a%C2%A0beer-gray?logo=buy-me-a-coffee" alt="Donate"></a>
  </p>

  阅读中文版的README ，点击 [这里](./README-Chinese.md)

  Suomenkieliset käyttöohjeet löydät [täältä](./README-Finnish.md)



  <p align="center">
      <img src="https://nitratine.net/posts/auto-py-to-exe/auto-py-to-exe-demo.gif" alt="auto-py-to-exe Demo">
  </p>




   - Python : 3.6-3.11

  *To have the interface displayed in the images, you will need chrome. If chrome is not installed or --no-chrome is supplied, the default browser will be used.*

  > As of [PyInstaller 4.0](https://github.com/pyinstaller/pyinstaller/releases/tag/v4.0), Python 2.7 is no longer supported. Read "[Python 2.7 Support](#python-27-support)" below for steps on how to use this tool with Python 2.7.



  You can install this project using PyPI:
  ```
  $ pip install auto-py-to-exe
  ```
  Then to run it, execute the following in the terminal:
  ```
  $ auto-py-to-exe
  ```

  > If you have more than one version of Python installed, you can use `python -m auto_py_to_exe` instead of `auto-py-to-exe`.


  ```
  $ git clone https://github.com/brentvollebregt/auto-py-to-exe.git
  $ cd auto-py-to-exe
  $ python setup.py install
  ```
  Then to run it, execute the following in the terminal:
  ```
  $ auto-py-to-exe
  ```


  You can run this project locally by following these steps:
  1. Clone/download the [repo](https://github.com/brentvollebregt/auto-py-to-exe)
  2. Open cmd/terminal and cd into the project
  3. Execute ```python -m pip install -r requirements.txt```

  Now to run the application, execute ```python -m auto_py_to_exe```. A Chrome window in app mode will open with the project running inside.

  > Make sure you are in the directory below auto_py_to_exe (you will be after step 3) when calling `python -m auto_py_to_exe` or you will need to reference the folder auto_py_to_exe absolutely/relatively to where you currently are.


  1. Select your script location (paste in or use a file explorer)
      - Outline will become blue when file exists
  2. Select other options and add things like an icon or other files
  3. Click the big blue button at the bottom to convert
  4. Find your converted files in /output when completed

  *Easy.*


  Usage: `auto-py-to-exe [-nc] [-c [CONFIG]] [-o [PATH]] [filename]`

  | Argument                                                     | Type                | Description                                                                                                                       |
  | ------------------------------------------------------------ | ------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
  | filename                                                     | positional/optional | Pre-fill the "Script Location" field in the UI.                                                                                   |
  | -nc, --no-chrome                                             | optional            | Open the UI using the default browser (which may be Chrome). Will not try to find Chrome.                                         |
  | -nu, --no-ui                                                 | optional            | Don't try to open the UI in a browser and simply print out the address that the application can be accessed at.                   |
  | -c [CONFIG], --config [CONFIG]                               | optional            | Provide a configuration file (json) to pre-fill the UI. These can be generated in the settings tab.                               |
  | -o [PATH], --output-dir [PATH]                               | optional            | Set the default output directory. This can still be changed in the ui.                                                            |
  | -bdo [FOLDER_PATH], --build-directory-override [FOLDER_PATH] | optional            | Override the default build directory. Useful if you need to whitelist a folder to stop your antivirus from removing files.        |
  | -lang [LANGUAGE_CODE], --language [LANGUAGE_CODE]            | optional            | Hint the UI what language it should default to when opening. Language codes can be found in the table under "Translations" below. |


  > If you are running this package locally, you will need to call ```python -m auto_py_to_exe``` instead of ```auto-py-to-exe```


  Instead of inserting the same data into the UI over and over again, you can export the current state by going to the "Configuration" section within the settings tab and exporting the config to a JSON file. This can then be imported into the UI again to re-populate all fields.

  This JSON config export action does not save the output directory automatically as moving hosts could mean different directory structures. If you want to have the output directory in the JSON config, add the directory under `nonPyinstallerOptions.outputDirectory` in the JSON file (will need to create a new key).


  If you need something visual to help you get started, [I made a video for the original release of this project](https://youtu.be/OZSZHmWSOeM); some things may be different but the same concepts still apply.


  If you're having issues with the packaged executable or using this tool in general, I recommend you read [my blog post on common issues when using auto-py-to-exe](https://nitratine.net/blog/post/issues-when-using-auto-py-to-exe/?utm_source=auto_py_to_exe&utm_medium=readme_link&utm_campaign=auto_py_to_exe_help). This post covers things you should know about packaging Python scripts and fixes for things that commonly go wrong.

  If you believe you've found an issue with this tool, please [create an issue](https://github.com/brentvollebregt/auto-py-to-exe/issues/new/choose) (click "Get started") and fill out the template provided by the "Bug report" option. If your issue is only associated with your application, please do not create an issue in this repository - instead, comment on the help post, video or create a new discussion.

  > When filling out the template, be sure to clearly explain what's happening, give reproduction steps and a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) and explain what you believe should have happened. Without these, it's going to take longer to identify the issue.



  | Language                                    | Code  | Translator                                                             | Translated                           |
  | ------------------------------------------- | ----- | ---------------------------------------------------------------------- | ------------------------------------ |
  | Arabic (العربية)                            | ar    | [Tayeb-Ali](https://github.com/tayeb-ali)                              | UI                                   |
  | Brazilian Portuguese (Português Brasileiro) | pt_br | [marleyas](https://github.com/marleyas)                                | UI (partial)                         |
  | Chinese Simplified (简体中文)               | zh    | [jiangzhe11](https://github.com/jiangzhe11)                            | UI and [README](./README-Chinese.md) |
  | Chinese Traditional (繁體中文)              | zh_tw | [startgo](https://github.com/ystartgo)                                 | UI                                   |
  | Czech                                       | cz    | [Matto58](https://github.com/Matto58)                                  | UI                                   |
  | English                                     | en    | -                                                                      | UI and README                        |
  | Finnish (Suomen kieli)                      | fi    | [ZapX5](https://github.com/ZapX5)                                      | UI and [README](./README-Finnish.md) |
  | French (Français)                           | fr    | [flaviedesp](https://github.com/flaviedesp)                            | UI                                   |
  | German (Deutsch)                            | de    | [hebens](https://github.com/hebens), [ackhh](https://github.com/ackhh) | UI                                   |
  | Greek (Ελληνικά)                            | gr    | [sofronas](https://github.com/sofronas)                                | UI                                   |
  | Indonesian (Bahasa Indonesia)               | id    | [MarvinZhong](https://github.com/MarvinZhong)                          | UI                                   |
  | Italian (Italiano)                          | it    | [itsEmax64](https://github.com/itsEmax64)                              | UI                                   |
  | Japanese (日本語)                           | ja    | [NattyanTV](https://github.com/nattyan-tv)                             | UI                                   |
  | Russian (Русский)                           | ru    | Oleg                                                                   | UI                                   |
  | Spanish (Español)                           | sp    | [enriiquee](https://github.com/enriiquee)                              | UI                                   |
  | Spanish Latam (Español Latam)               | sp_la | [Matyrela](https://github.com/Matyrela)                                | UI                                   |
  | Serbian                                     | sr    | [rina](https://github.com/sweatshirts)                                 | UI                                   |
  | Thai (ภาษาไทย)                              | th    | [teerut26](https://github.com/teerut26)                                | UI (partial)                         |
  | Turkish (Türkçe)                            | tr    | [mcagriaksoy](https://github.com/mcagriaksoy)                          | UI                                   |
  | Ukrainian (Українська)                      | ua    | [AndrejGorodnij](https://github.com/AndrejGorodnij)                    | UI                                   |

  > Want to add a translation for another language? Update [i18n.js](https://github.com/brentvollebregt/auto-py-to-exe/blob/master/auto_py_to_exe/web/js/i18n.js) and submit a PR or attach it in an issue.


  As of [PyInstaller v4.0](https://github.com/pyinstaller/pyinstaller/releases/tag/v4.0) released on Aug 9 2020, Python 2.7 is no longer supported; although you can still use this tool with Python 2.7 by installing an older version of PyInstaller. [PyInstaller v3.6](https://github.com/pyinstaller/pyinstaller/releases/tag/v3.6) was the last version that supported Python 2.7; to install this, first uninstall any existing versions of PyInstaller and then execute `python -m pip install pyinstaller==3.6`.


  Tests are located in `tests/` and are run using pytest:

  ```
  $ pip install pytest
  $ pip install -e .
  $ pytest
  ```



  | <!-- -->    | <!-- -->    |
  |-------------|-------------|
  | [![Empty interface](https://nitratine.net/posts/auto-py-to-exe/empty-interface.png)](https://nitratine.net/posts/auto-py-to-exe/empty-interface.png) | [![Filled out](https://nitratine.net/posts/auto-py-to-exe/filled-out.png)](https://nitratine.net/posts/auto-py-to-exe/filled-out.png) |
  | [![Converting](https://nitratine.net/posts/auto-py-to-exe/converting.png)](https://nitratine.net/posts/auto-py-to-exe/converting.png) | [![Completed](https://nitratine.net/posts/auto-py-to-exe/completed.png)](https://nitratine.net/posts/auto-py-to-exe/completed.png) |


pkgId: 85746c3bcce73f70cc3d7760b44247849d528b59c7ab19127a5ff2dd80921f5d
name: python-autocfg
arch: src
version: 0.0.8
epoch: 0
release: 1
summary: Deep learning configuration
url: https://github.com/zhreshold/autocfg
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-748daaa9-7d12-48d6-9230-c562adc9dcb5
location_href: 00010192-python-autocfg/python-autocfg-0.0.8-1.src.rpm
checksum_type: sha256
description:
  [![PyPI](https://img.shields.io/pypi/v/autocfg.svg)](https://pypi.python.org/pypi/autocfg)

  All you need is a minimal config system for automl.





  See [basic usage](examples/basics.ipynb)



  See [version control](examples/versioning.ipynb)


pkgId: c01172ee3c7e42bd876e1a602690e2a4111c493e809e0b6b90eea3c967e331a1
name: python-autograd-gamma
arch: src
version: 0.5.0
epoch: 0
release: 1
summary: Autograd compatible approximations to the gamma family of functions
url: https://github.com/CamDavidsonPilon/autograd-gamma
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8ab2e822-fa8a-45fb-aa5e-60863f313c91
location_href: 00010426-python-autograd-gamma/python-autograd-gamma-0.5.0-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/autograd-gamma.svg)](https://badge.fury.io/py/autograd-gamma)


  [autograd](https://github.com/HIPS/autograd) compatible approximations to the derivatives of the Gamma-family of functions.




  ```python
  from autograd import grad
  from autograd_gamma import gammainc, gammaincc, gammaincln, gammainccln


  grad(gammainc, argnum=0)(1., 2.)
  grad(gammaincc, argnum=0)(1., 2.)


  grad(gammaincln, argnum=0)(1., 2.)
  grad(gammainccln, argnum=0)(1., 2.)



  from autograd_gamma import betainc, betaincln

  grad(betainc, argnum=0)(1., 2., 0.5)
  grad(betainc, argnum=1)(1., 2., 0.5)


  grad(betaincln, argnum=0)(1., 2., 0.5)
  grad(betaincln, argnum=1)(1., 2., 0.5)

  ```




  Build and improve upon the derivative of the upper and lower incomplete gamma functions. Eventually, if we have a fast analytical solution, we will merge into the autograd library.


pkgId: f9aa66600fadaf26c9b694ee89680e25705cb6319296d3af20342f847986073d
name: python-autowrap
arch: src
version: 0.22.11
epoch: 0
release: 1
summary: Generates Python Extension modules from commented Cython PXD files
url: https://pypi.org/project/autowrap/
rpm_license: http://opensource.org/licenses/BSD-3-Clause
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-6ec9539d-315b-4e8f-ae31-b6f2c60fe06c
location_href: 00003085-python-autowrap/python-autowrap-0.22.11-1.src.rpm
checksum_type: sha256
description:
  autowrap automatically generates python extension modules for wrapping
  C++ libraries based on annotated (commented) cython pxd files.


pkgId: 9612adbc9a0bd5a54e9eb7f389a24762dd83a338507a7e4d530b1a68ef9b98b4
name: python-avro
arch: src
version: 1.11.1
epoch: 0
release: 1
summary: Avro is a serialization and RPC framework.
url: https://avro.apache.org/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-8867ed85-6c31-4b4a-b6c5-8d6208a0ad41
location_href: 00009372-python-avro/python-avro-1.11.1-1.src.rpm
checksum_type: sha256
description:
  Apache Avro™ is a data serialization system. To learn more, please visit our [website](https://avro.apache.org/).




  Apache Avro documentation is maintained on our [wiki](https://cwiki.apache.org/confluence/display/AVRO/Index).




  To contribute to Avro, please read [How to Contribute](https://cwiki.apache.org/confluence/display/AVRO/How+To+Contribute) on the wiki.




  License, credits and acknowledgements are maintained in the [LICENSE.txt](https://github.com/apache/avro/blob/master/LICENSE.txt) and [NOTICE.txt](https://github.com/apache/avro/blob/master/NOTICE.txt) in the source code repository. Those files are also included with the installed package.


pkgId: 557c1f4488c720b84a9bbf878135d534d505085ce71ca766e511b9c9db5b3605
name: python-avro-gen
arch: src
version: 0.3.0
epoch: 0
release: 1
summary: Avro record class and specific record reader generator
url: https://github.com/rbystrit/avro_gen
rpm_license: License :: OSI Approved :: Apache Software License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-1ba5e40f-e448-44bf-9388-cea321ff55f6
location_href: 00009628-python-avro-gen/python-avro-gen-0.3.0-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://travis-ci.org/rbystrit/avro_gen.svg?branch=master)](https://travis-ci.org/rbystrit/avro_gen)
  [![codecov](https://codecov.io/gh/rbystrit/avro_gen/branch/master/graph/badge.svg)](https://codecov.io/gh/rbystrit/avro_gen)

  Current Avro implementation in Python is completely typelss and operates on dicts.
  While in many cases this is convenient and pythonic, not being able to discover the schema
  by looking at the code, not enforcing schema during record constructions, and not having any
  context help from the IDE could hamper developer performance and introduce bugs.
  This project aims to rectify this situation by providing a generator for constructing concrete
  record classes and constructing a reader which wraps Avro DatumReader and returns concrete classes
  instead of dicts. In order not to violate Avro internals, this functionality is built strictly
  on top of the DatumReader and all the specific record classes dict wrappers which define accessor
  properties with proper type hints for each field in the schema. For this exact reason the
  generator does not provide an overloaded DictWriter; each specific record appears just to be a
  regular dictionary.

      schema_json = "....."
      output_directory = "....."
      from avrogen import write_schema_files
      write_schema_files(schema_json, output_directory)
  The generator will create output directory if it does not exist and put generated files there.
  The generated files will be:
  >  OUTPUT_DIR
  >  + \_\_init\_\_.py
  >  + schema_classes.py
  >  + submodules*
  In order to deal with Avro namespaces, since python doesn't support circular imports, the generator
   will emit all records into schema_classes.py as nested classes. The top level class there will be
   SchemaClasses, whose children will be classes representing namespaces. Each namespace class will
   in turn contain classes for records belonging to that namespace.
   Consider following schema:
       {"type": "record", "name": "tweet", "namespace": "com.twitter.avro", "fields": [{"name": "ID", "type": "long" }
   Then schema_classes.py would contain:
      class SchemaClasses(object):
          class com(object):
              class twitter(object):
                  class acro(object):
                      class tweetClass(DictWrapper):
                          def __init__(self, inner_dict=None):
                          @property
                          def ID(self):
                              """
                              """
                              return self._inner_dict.get('ID', None)
                          @ID.setter
                          def ID(self, value):
                              
                              
                              
                              self._inner_dict['ID'] = value
   In order to map specific record types and namespaces to modules, so that proper importing can
   be supported, there generator will create a sub-module under the output directory for each namespace
   which will export names of all types contained in that namespace. Types declared with empty
   namespace will be exported from the root module.
   So for the example above, output directory will look as follows:
   >  OUTPUT_DIR
   >  + \_\_init\_\_.py
   >  + schema_classes.py
   >  + com
   >   + twitter
   >     + avro
   >       + \_\_init\_\_.py
  The contents of OUTPUT_DIR/com/twitter/avro/\_\_init\_\_.py will be:
      from ....schema_classes import SchemaClasses
      tweet = SchemaClasses.com.twitter.avro.tweet
  So in your code you will be able to say:
      from OUTPUT_DIR.com.twitter.avro import tweet
      from OUTPUT_DIR import SpecificDatumReader as TweetReader, SCHEMA as your_schema
      from avro import datafile, io
      my_tweet = tweet()
      my_tweet.ID = 1
      with open('somefile', 'w+b') as f:
          writer = datafile.DataFileWriter(f,io.DatumWriter(), your_schema)
          writer.append(my_tweet)
          writer.close()
      with open('somefile', 'rb') as f:
          reader = datafile.DataFileReader(f,TweetReader(readers_schema=your_schema))
          my_tweet1 = reader.next()
          reader.close()

  Avro protocol support is implemented the same way as schema support. To generate classes
  for a protocol:
      protocol_json = "....."
      output_directory = "....."
      from avrogen import write_protocol_files
      write_protocol_files(protocol_json, output_directory)
  The structure of the generated code will be exactly same as for schema, but in addition to
  regular types, *Request types will be generated in the root namespace of the protocol for each
  each message defined.

  Avrogen implements logical types on top of standard avro package and supports generation of
  classes thus typed. To enable logical types support, pass **use_logical_types=True** to schema
  and protocol generators. If custom logical types are implemented and such types map to types
  other than simple types or datetime.* or decimal.* then pass **custom_imports** parameter to
  generator functions so that your types are imported. Types implemented out of the box are:
  - decimal (using string representation only)
  - date
  - time-millis
  - time-micros
  - timestamp-millis
  - timestamp-micros
  To register your custom logical type, inherit from avrogen.logical.LogicalTypeProcessor, implement
  abstract methods, and add an instance to avrogen.logical.DEFAULT_LOGICAL_TYPES dictionary under the
  name of your logical type. A sample implementation looks as follows:
      class DateLogicalTypeProcessor(LogicalTypeProcessor):
          _matching_types = {'int', 'long', 'float', 'double'}
          def can_convert(self, writers_schema):
              return isinstance(writers_schema, schema.PrimitiveSchema) and writers_schema.type == 'int'
          def validate(self, expected_schema, datum):
              return isinstance(datum, datetime.date)
          def convert(self, writers_schema, value):
              if not isinstance(value, datetime.date):
                  raise Exception("Wrong type for date conversion")
              return (value - EPOCH_DATE).total_seconds() // SECONDS_IN_DAY
          def convert_back(self, writers_schema, readers_schema, value):
              return EPOCH_DATE + datetime.timedelta(days=int(value))
          def does_match(self, writers_schema, readers_schema):
              if isinstance(writers_schema, schema.PrimitiveSchema):
                  if writers_schema.type in DateLogicalTypeProcessor._matching_types:
                      return True
              return False
          def typename(self):
              return 'datetime.date'
          def initializer(self, value=None):
              return ((
                          'logical.DateLogicalTypeProcessor().convert_back(None, None, %s)' % value) if value is not None
                      else 'datetime.datetime.today().date()')
  To read/write data with logical type support, use generated SpecificDatumReader
  and a LogicalDatumWriter from avro.logical.


pkgId: 87938e83bc6be5652f2e8e53f9fae68c1461f5dedb8fbec6c30290ecf6796333
name: python-avro-gen3
arch: src
version: 0.7.10
epoch: 0
release: 1
summary: Avro record class and specific record reader generator
url: https://github.com/acryldata/avro_gen
rpm_license: License :: OSI Approved :: Apache Software License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-bd209ef2-9c2d-4c23-b4c1-db2257aa2887
location_href: 00010173-python-avro-gen3/python-avro-gen3-0.7.10-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://travis-ci.org/rbystrit/avro_gen.svg?branch=master)](https://travis-ci.org/rbystrit/avro_gen)
  [![codecov](https://codecov.io/gh/rbystrit/avro_gen/branch/master/graph/badge.svg)](https://codecov.io/gh/rbystrit/avro_gen)

  Current Avro implementation in Python is completely typelss and operates on dicts.
  While in many cases this is convenient and pythonic, not being able to discover the schema
  by looking at the code, not enforcing schema during record constructions, and not having any
  context help from the IDE could hamper developer performance and introduce bugs.
  This project aims to rectify this situation by providing a generator for constructing concrete
  record classes and constructing a reader which wraps Avro DatumReader and returns concrete classes
  instead of dicts. In order not to violate Avro internals, this functionality is built strictly
  on top of the DatumReader and all the specific record classes dict wrappers which define accessor
  properties with proper type hints for each field in the schema. For this exact reason the
  generator does not provide an overloaded DictWriter; each specific record appears just to be a
  regular dictionary.
  This is a fork of [https://github.com/rbystrit/avro_gen](https://github.com/rbystrit/avro_gen).
  It adds better Python 3 support, including types, better namespace handling, support for
  documentation generation, and JSON (de-)serialization.
  ```sh
  pip install avro-gen3
  ```

      schema_json = "....."
      output_directory = "....."
      from avrogen import write_schema_files
      write_schema_files(schema_json, output_directory)
  The generator will create output directory if it does not exist and put generated files there.
  The generated files will be:
  >  OUTPUT_DIR
  >  + \_\_init\_\_.py
  >  + schema_classes.py
  >  + submodules*
  In order to deal with Avro namespaces, since python doesn't support circular imports, the generator
   will emit all records into schema_classes.py as nested classes. The top level class there will be
   SchemaClasses, whose children will be classes representing namespaces. Each namespace class will
   in turn contain classes for records belonging to that namespace.
   Consider following schema:
       {"type": "record", "name": "tweet", "namespace": "com.twitter.avro", "fields": [{"name": "ID", "type": "long" }
   Then schema_classes.py would contain:
      class SchemaClasses(object):
          class com(object):
              class twitter(object):
                  class acro(object):
                      class tweetClass(DictWrapper):
                          def __init__(self, inner_dict=None):
                          @property
                          def ID(self):
                              """
                              """
                              return self._inner_dict.get('ID', None)
                          @ID.setter
                          def ID(self, value):
                              
                              
                              
                              self._inner_dict['ID'] = value
   In order to map specific record types and namespaces to modules, so that proper importing can
   be supported, there generator will create a sub-module under the output directory for each namespace
   which will export names of all types contained in that namespace. Types declared with empty
   namespace will be exported from the root module.
   So for the example above, output directory will look as follows:
   >  OUTPUT_DIR
   >  + \_\_init\_\_.py
   >  + schema_classes.py
   >  + com
   >   + twitter
   >     + avro
   >       + \_\_init\_\_.py
  The contents of OUTPUT_DIR/com/twitter/avro/\_\_init\_\_.py will be:
      from ....schema_classes import SchemaClasses
      tweet = SchemaClasses.com.twitter.avro.tweet
  So in your code you will be able to say:
      from OUTPUT_DIR.com.twitter.avro import tweet
      from OUTPUT_DIR import SpecificDatumReader as TweetReader, SCHEMA as your_schema
      from avro import datafile, io
      my_tweet = tweet()
      my_tweet.ID = 1
      with open('somefile', 'w+b') as f:
          writer = datafile.DataFileWriter(f,io.DatumWriter(), your_schema)
          writer.append(my_tweet)
          writer.close()
      with open('somefile', 'rb') as f:
          reader = datafile.DataFileReader(f,TweetReader(readers_schema=your_schema))
          my_tweet1 = next(reader)
          reader.close()

  Avro protocol support is implemented the same way as schema support. To generate classes
  for a protocol:
      protocol_json = "....."
      output_directory = "....."
      from avrogen import write_protocol_files
      write_protocol_files(protocol_json, output_directory)
  The structure of the generated code will be exactly same as for schema, but in addition to
  regular types, *Request types will be generated in the root namespace of the protocol for each
  each message defined.

  Avrogen implements logical types on top of standard avro package and supports generation of
  classes thus typed. To enable logical types support, pass **use_logical_types=True** to schema
  and protocol generators. If custom logical types are implemented and such types map to types
  other than simple types or datetime.* or decimal.* then pass **custom_imports** parameter to
  generator functions so that your types are imported. Types implemented out of the box are:
  - decimal (using string representation only)
  - date
  - time-millis
  - time-micros
  - timestamp-millis
  - timestamp-micros
  To register your custom logical type, inherit from avrogen.logical.LogicalTypeProcessor, implement
  abstract methods, and add an instance to avrogen.logical.DEFAULT_LOGICAL_TYPES dictionary under the
  name of your logical type. A sample implementation looks as follows:
      class DateLogicalTypeProcessor(LogicalTypeProcessor):
          _matching_types = {'int', 'long', 'float', 'double'}
          def can_convert(self, writers_schema):
              return isinstance(writers_schema, schema.PrimitiveSchema) and writers_schema.type == 'int'
          def validate(self, expected_schema, datum):
              return isinstance(datum, datetime.date)
          def convert(self, writers_schema, value):
              if not isinstance(value, datetime.date):
                  raise Exception("Wrong type for date conversion")
              return (value - EPOCH_DATE).total_seconds() // SECONDS_IN_DAY
          def convert_back(self, writers_schema, readers_schema, value):
              return EPOCH_DATE + datetime.timedelta(days=int(value))
          def does_match(self, writers_schema, readers_schema):
              if isinstance(writers_schema, schema.PrimitiveSchema):
                  if writers_schema.type in DateLogicalTypeProcessor._matching_types:
                      return True
              return False
          def typename(self):
              return 'datetime.date'
          def initializer(self, value=None):
              return ((
                          'logical.DateLogicalTypeProcessor().convert_back(None, None, %s)' % value) if value is not None
                      else 'datetime.datetime.today().date()')
  To read/write data with logical type support, use generated SpecificDatumReader
  and a LogicalDatumWriter from avro.logical.


pkgId: 4e18a543ac9875c6016f077b8ceb5be24f511eb4080921697d312f4cbb8fa811
name: python-awesomeversion
arch: src
version: 22.9.0
epoch: 0
release: 1
url: https://github.com/ludeeus/awesomeversion
rpm_license: MIT
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-fb20441e-ac34-457d-b1e4-52ec938e930c
location_href: 00011700-python-awesomeversion/python-awesomeversion-22.9.0-1.src.rpm
checksum_type: sha256
summary:
  One version package to rule them all, One version package to find them, One version package to bring them all, and in the darkness bind them.

description:
  `version` | The version string to parse.
  `ensure_strategy` | Match the `AwesomeVersion` object against spesific strategies when creating if. If it does not match `AwesomeVersionStrategyException` will be raised
  `find_first_match` | If True, the version given will be scanned for the first match of the given `ensure_strategy`. Raises `AwesomeVersionStrategyException` If it is not found for any of the given strategies.

  These are some examples of what you can do, more examples can be found in the `tests` directory.
  ```python
  from awesomeversion import AwesomeVersion
  current = AwesomeVersion("1.2.2")
  upstream = AwesomeVersion("1.2.3")
  print(upstream > current)
  > True
  ```
  ```python
  from awesomeversion import AwesomeVersion
  version = AwesomeVersion("1.2.3b0")
  print(version.beta)
  > True
  ```
  ```python
  from awesomeversion import AwesomeVersion
  current = AwesomeVersion("2021.1.0")
  upstream = AwesomeVersion("2021.1.0b2")
  print(upstream > current)
  > False
  ```
  ```python
  from awesomeversion import AwesomeVersion
  current = AwesomeVersion("latest")
  upstream = AwesomeVersion("2021.1.0")
  print(upstream > current)
  > False
  ```
  ```python
  from awesomeversion import AwesomeVersion
  current = AwesomeVersion("latest")
  upstream = AwesomeVersion("dev")
  print(upstream > current)
  > True
  ```
  ```python
  from awesomeversion import AwesomeVersion
  with AwesomeVersion("20.12.0") as current:
      with AwesomeVersion("20.12.1") as upstream:
          print(upstream > current)
  > True
  ```
  ```python
  from awesomeversion import AwesomeVersion
  with AwesomeVersion("20.12.0") as current:
      print("2020.12.1" > current)
  > True
  ```
  ```python
  from awesomeversion import AwesomeVersion
  version = AwesomeVersion("2.12.0")
  print(version.major)
  > 2
  print(version.minor)
  > 12
  print(version.patch)
  > 0
  ```

  **All** contributions are welcome!
  1. Fork the repository
  2. Clone the repository locally and open the devcontainer or use GitHub codespaces
  3. Do your changes
  4. Lint the files with `make lint`
  5. Ensure all tests passes with `make test`
  6. Ensure 100% coverage with `make coverage`
  7. Commit your work, and push it to GitHub
  8. Create a PR against the `main` branch


pkgId: 656f34f1682b3d6fe5d4f2548c5f8660e906f462ee4dc6801a24421188283d0f
name: python-aws-embedded-metrics
arch: src
version: 3.1.0
epoch: 0
release: 1
summary: AWS Embedded Metrics Package
url: https://github.com/awslabs/aws-embedded-metrics-python
rpm_license: Apache Software License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-75ef1dda-0c42-4c0a-9aab-c969a7e16eba
location_href: 00012460-python-aws-embedded-metrics/python-aws-embedded-metrics-3.1.0-1.src.rpm
checksum_type: sha256
description:
  ![](https://codebuild.us-west-2.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoidjNkYXpXTzMxdUY2dEdab2RaZTgvTXhUSGh2bjNmUlhmUEorejM0UytyOWNqeFptcUpBT2wzNkJ1MkExQXI3UFdNaGQzNlVmSzBPWkRhdmhkb2lqL05NPSIsIml2UGFyYW1ldGVyU3BlYyI6IkhKZS9rd2UwYzVud1VucVgiLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D&branch=master)
  [![](https://img.shields.io/pypi/v/aws-embedded-metrics)](https://pypi.org/project/aws-embedded-metrics/)

  Generate CloudWatch Metrics embedded within structured log events. The embedded metrics will be extracted so you can visualize and alarm on them for real-time incident detection. This allows you to monitor aggregated values while preserving the detailed event context that generated them.

  - [Use Cases](#use-cases)
  - [Installation](#installation)
  - [Usage](#usage)
  - [API](#api)
  - [Examples](#examples)
  - [Development](#development)



  - **Generate custom metrics across compute environments**

    - Easily generate custom metrics from Lambda functions without requiring custom batching code, making blocking network requests or relying on 3rd party software.
    - Other compute environments (EC2, On-prem, ECS, EKS, and other container environments) are supported by installing the [CloudWatch Agent](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format_Generation_CloudWatch_Agent.html).

  - **Linking metrics to high cardinality context**

    Using the Embedded Metric Format, you will be able to visualize and alarm on custom metrics, but also retain the original, detailed and high-cardinality context which is queryable using [CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html). For example, the library automatically injects environment metadata such as Lambda Function version, EC2 instance and image ids into the structured log event data.



  ```
  pip3 install aws-embedded-metrics
  ```



  To get a metric logger, you can decorate your function with a `metric_scope`:

  ```py
  from aws_embedded_metrics import metric_scope

  @metric_scope
  def my_handler(metrics):
      metrics.put_dimensions({"Foo": "Bar"})
      metrics.put_metric("ProcessingLatency", 100, "Milliseconds", StorageResolution.STANDARD)
      metrics.put_metric("Memory.HeapUsed", 1600424.0, "Bytes", StorageResolution.HIGH)
      metrics.set_property("AccountId", "123456789012")
      metrics.set_property("RequestId", "422b1569-16f6-4a03")
      metrics.set_property("DeviceId", "61270781-c6ac-46f1")

      return {"message": "Hello!"}
  ```





  The `MetricsLogger` is the interface you will use to publish embedded metrics.

  - **put_metric**(key: str, value: float, unit: str = "None", storage_resolution: int = 60) -> MetricsLogger

  Adds a new metric to the current logger context. Multiple metrics using the same key will be appended to an array of values. Multiple metrics cannot have same key and different storage resolution. The Embedded Metric Format supports a maximum of 100 values per key. If more metric values are added than are supported by the format, the logger will be flushed to allow for new metric values to be captured.

  Requirements:

  - Name Length 1-255 characters
  - Name must be ASCII characters only
  - Values must be in the range of 8.515920e-109 to 1.174271e+108. In addition, special values (for example, NaN, +Infinity, -Infinity) are not supported.
  - Metrics must meet CloudWatch Metrics requirements, otherwise a `InvalidMetricError` will be thrown. See [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) for valid values.

  - ##### Storage Resolution
  An OPTIONAL value representing the storage resolution for the corresponding metric. Setting this to `High` specifies this metric as a high-resolution metric, so that CloudWatch stores the metric with sub-minute resolution down to one second. Setting this to `Standard` specifies this metric as a standard-resolution metric, which CloudWatch stores at 1-minute resolution. If a value is not provided, then a default value of `Standard` is assumed. See [Cloud Watch High-Resolution metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html#high-resolution-metrics)

  Examples:

  ```py

  put_metric("Latency", 200, "Milliseconds")
  put_metric("Latency", 201, "Milliseconds", StorageResolution.STANDARD)


  put_metric("Memory.HeapUsed", 1600424.0, "Bytes", StorageResolution.HIGH)
  ```

  - **set_property**(key: str, value: Any) -> MetricsLogger

  Adds or updates the value for a given property on this context. This value is not submitted to CloudWatch Metrics but is searchable by CloudWatch Logs Insights. This is useful for contextual and potentially high-cardinality data that is not appropriate for CloudWatch Metrics dimensions.

  Requirements:

  - Length 1-255 characters

  Examples:

  ```py
  set_property("RequestId", "422b1569-16f6-4a03-b8f0-fe3fd9b100f8")
  set_property("InstanceId", "i-1234567890")
  set_property("Device", {
    "Id": "61270781-c6ac-46f1-baf7-22c808af8162",
    "Name": "Transducer",
    "Model": "PT-1234"
  })
  ```

  - **put_dimensions**(dimensions: Dict[str, str]) -> MetricsLogger

  Adds a new set of dimensions that will be associated to all metric values.

  **WARNING**: Every distinct value will result in a new CloudWatch Metric.
  If the cardinality of a particular value is expected to be high, you should consider
  using `setProperty` instead.

  Requirements:

  - Length 1-255 characters
  - ASCII characters only
  - Dimensions must meet CloudWatch Dimensions requirements, otherwise a `InvalidDimensionError` or `DimensionSetExceededError` will be thrown. See [Dimensions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Dimension.html) for valid values.

  Examples:

  ```py
  put_dimensions({ "Operation": "Aggregator" })
  put_dimensions({ "Operation": "Aggregator", "DeviceType": "Actuator" })
  ```

  - **set_dimensions**(\*dimensions: Dict[str, str], use_default: bool = False) -> MetricsLogger

  Explicitly override all dimensions. By default, this will disable the default dimensions, but can be configured using the *keyword-only* parameter `use_default`.

  **WARNING**: Every distinct value will result in a new CloudWatch Metric.
  If the cardinality of a particular value is expected to be high, you should consider
  using `setProperty` instead.

  Requirements:

  - Length 1-255 characters
  - ASCII characters only
  - Dimensions must meet CloudWatch Dimensions requirements, otherwise a `InvalidDimensionError` or `DimensionSetExceededError` will be thrown. See [Dimensions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Dimension.html) for valid values.

  Examples:

  ```py
  set_dimensions(
    { "Operation": "Aggregator" },
    { "Operation": "Aggregator", "DeviceType": "Actuator" }
  )
  ```

  ```py
  set_dimensions(
    { "Operation": "Aggregator" },
    use_default=True  # default dimensions would be enabled
  )
  ```

  - **reset_dimensions**(use_default: bool) -> MetricsLogger

  Explicitly clear all custom dimensions. The behavior of whether default dimensions should be used can be configured with the `use_default` parameter.

  Examples:

  ```py
  reset_dimensions(False)  # this will clear all custom dimensions as well as disable default dimensions
  ```

  - **set_namespace**(value: str) -> MetricsLogger

  Sets the CloudWatch [namespace](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace) that extracted metrics should be published to. If not set, a default value of aws-embedded-metrics will be used.

  Requirements:

  - Name Length 1-255 characters
  - Name must be ASCII characters only
  - Namespace must meet CloudWatch Namespace requirements, otherwise a `InvalidNamespaceError` will be thrown. See [Namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace) for valid values.

  Examples:

  ```py
  set_namespace("MyApplication")
  ```

  - **flush**()

  Flushes the current MetricsContext to the configured sink and resets all properties and metric values. The namespace and default dimensions will be preserved across flushes.
  Custom dimensions are **not** preserved by default, but this behavior can be changed by setting `logger.flush_preserve_dimensions = True`, so that custom dimensions would be preserved after each flushing thereafter.

  Example:

  ```py
  logger.flush()  # only default dimensions will be preserved after each flush()
  ```

  ```py
  logger.flush_preserve_dimensions = True
  logger.flush()  # custom dimensions and default dimensions will be preserved after each flush()
  ```

  ```py
  logger.reset_dimensions(False)
  logger.flush()  # default dimensions are disabled; no dimensions will be preserved after each flush()
  ```



  All configuration values can be set using environment variables with the prefix (`AWS_EMF_`). Configuration should be performed as close to application start up as possible.

  **ServiceName**: Overrides the name of the service. For services where the name cannot be inferred (e.g. Java process running on EC2), a default value of Unknown will be used if not explicitly set.

  Requirements:

  - Name Length 1-255 characters
  - Name must be ASCII characters only

  Example:

  ```py

  from aws_embedded_metrics.config import get_config
  Config = get_config()
  Config.service_name = "MyApp"


  AWS_EMF_SERVICE_NAME = MyApp
  ```

  **ServiceType**: Overrides the type of the service. For services where the type cannot be inferred (e.g. Java process running on EC2), a default value of Unknown will be used if not explicitly set.

  Requirements:

  - Name Length 1-255 characters
  - Name must be ASCII characters only

  Example:

  ```py

  from aws_embedded_metrics.config import get_config
  Config = get_config()
  Config.service_type = "NodeJSWebApp"


  AWS_EMF_SERVICE_TYPE = NodeJSWebApp
  ```

  **LogGroupName**: For agent-based platforms, you may optionally configure the destination log group that metrics should be delivered to. This value will be passed from the library to the agent in the Embedded Metric payload. If a LogGroup is not provided, the default value will be derived from the service name: <service-name>-metrics

  Requirements:

  - Name Length 1-512 characters
  - Log group names consist of the following characters: a-z, A-Z, 0-9, '\_' (underscore), '-' (hyphen), '/' (forward slash), and '.' (period). Pattern: [\.\-_/#A-Za-z0-9]+

  Example:

  ```py

  from aws_embedded_metrics.config import get_config
  Config = get_config()
  Config.log_group_name = "LogGroupName"


  AWS_EMF_LOG_GROUP_NAME = LogGroupName
  ```

  **LogStreamName**: For agent-based platforms, you may optionally configure the destination log stream that metrics should be delivered to. This value will be passed from the library to the agent in the Embedded Metric payload. If a LogGroup is not provided, the default value will be derived by the agent (this will likely be the hostname).

  Requirements:

  - Name Length 1-512 characters
  - The ':' (colon) and '\*' (asterisk) characters are not allowed. Pattern: [^:]\*

  Example:

  ```py

  from aws_embedded_metrics.config import get_config
  Config = get_config()
  Config.log_stream_name = "LogStreamName"


  AWS_EMF_LOG_STREAM_NAME = LogStreamName
  ```

  **NameSpace**: Overrides the CloudWatch [namespace](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace). If not set, a default value of aws-embedded-metrics will be used.

  Requirements:

  - Name Length 1-512 characters
  - Name must be ASCII characters only

  Example:

  ```py

  from aws_embedded_metrics.config import get_config
  Config = get_config()
  Config.namespace = "MyApplication"


  AWS_EMF_NAMESPACE = MyApplication
  ```

  **DISABLE_METRIC_EXTRACTION**: Disables extraction of metrics by CloudWatch, by omitting EMF
  metadata from serialized log records.

  Example:

  ```py

  from aws_embedded_metrics.config import get_config
  Config = get_config()
  Config.disable_metric_extraction = True


  AWS_EMF_DISABLE_METRIC_EXTRACTION = true
  ```



  Check out the [examples](https://github.com/awslabs/aws-embedded-metrics-python/tree/master/examples) directory to get started.



  1. Install Test Dependencies

  ```
  pip install tox
  ```

  2. Run tests

  ```
  tox
  ```

  3. Integration tests. These tests require Docker to run the CloudWatch Agent and valid AWS credentials. Tests can be run by:

  ```sh
  export AWS_ACCESS_KEY_ID=
  export AWS_SECRET_ACCESS_KEY=
  export AWS_REGION=us-west-2
  ./bin/run-integ-tests.sh
  ```



  This project is licensed under the Apache-2.0 License.


pkgId: 5bcf83f651e71273d5933037abeda9a2b4ecf0185f51af74eb3654e7b159f357
name: python-aws-logging-handlers
arch: src
version: 2.0.5
epoch: 0
release: 1
url: https://github.com/omrikiei/aws_logging_handlers/
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-6806dc0e-4593-464a-bb9e-058e037580cc
location_href: 00010892-python-aws-logging-handlers/python-aws-logging-handlers-2.0.5-1.src.rpm
checksum_type: sha256
summary:
  Logging aws_logging_handlers to AWS services that support S3 and Kinesis stream logging with multiple threads

description:
  A python multithreaded logging handler package that streams records to
  AWS services objects with support for the following AWS services: \* S3
  \* Kinesis
  Supports gzip compression(in S3)


pkgId: 559806005d82c3db5f9e2b8cae7a77269b63a440d14f302e84300f2da4bbb9af
name: python-aws-xray-sdk
arch: src
version: 2.12.0
epoch: 0
release: 1
url: https://github.com/aws/aws-xray-sdk-python
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-6185347b-377f-4ea7-8e0b-d72132a1a95e
location_href: 00009316-python-aws-xray-sdk/python-aws-xray-sdk-2.12.0-1.src.rpm
checksum_type: sha256
summary:
  The AWS X-Ray SDK for Python (the SDK) enables Python developers to record and emit information from within their applications to the AWS X-Ray service.

description:
  ![Build Status](https://github.com/aws/aws-xray-sdk-python/actions/workflows/IntegrationTesting.yaml/badge.svg)
  [![codecov](https://codecov.io/gh/aws/aws-xray-sdk-python/branch/master/graph/badge.svg)](https://codecov.io/gh/aws/aws-xray-sdk-python)



  AWS X-Ray supports using OpenTelemetry Python and the AWS Distro for OpenTelemetry (ADOT) Collector to instrument your application and send trace data to X-Ray. The OpenTelemetry SDKs are an industry-wide standard for tracing instrumentation. They provide more instrumentations and have a larger community for support, but may not have complete feature parity with the X-Ray SDKs. See [choosing between the ADOT and X-Ray SDKs](https://docs.aws.amazon.com/xray/latest/devguide/xray-instrumenting-your-app.html#xray-instrumenting-choosing) for more help with choosing between the two.

  If you want additional features when tracing your Python applications, please [open an issue on the OpenTelemetry Python Instrumentation repository](https://github.com/open-telemetry/opentelemetry-python-contrib/issues/new?labels=feature-request&template=feature_request.md&title=X-Ray%20Compatible%20Feature%20Request).



  AWS X-Ray SDK for Python versions `>2.11.0` has dropped support for Python 2.7, 3.4, 3.5, and 3.6.



  ![Screenshot of the AWS X-Ray console](/images/example_servicemap.png?raw=true)



  The AWS X-Ray SDK for Python is compatible with Python 3.7, 3.8, 3.9, 3.10, and 3.11.

  Install the SDK using the following command (the SDK's non-testing dependencies will be installed).

  ```
  pip install aws-xray-sdk
  ```

  To install the SDK's testing dependencies, use the following command.

  ```
  pip install tox
  ```



  Use the following community resources for getting help with the SDK. We use the GitHub
  issues for tracking bugs and feature requests.

  * Ask a question in the [AWS X-Ray Forum](https://forums.aws.amazon.com/forum.jspa?forumID=241&start=0).
  * Open a support ticket with [AWS Support](http://docs.aws.amazon.com/awssupport/latest/user/getting-started.html).
  * If you think you may have found a bug, open an [issue](https://github.com/aws/aws-xray-sdk-python/issues/new).



  If you encounter a bug with the AWS X-Ray SDK for Python, we want to hear about
  it. Before opening a new issue, search the [existing issues](https://github.com/aws/aws-xray-sdk-python/issues)
  to see if others are also experiencing the issue. Include the version of the AWS X-Ray
  SDK for Python, Python language, and botocore/boto3 if applicable. In addition,
  include the repro case when appropriate.

  The GitHub issues are intended for bug reports and feature requests. For help and
  questions about using the AWS SDK for Python, use the resources listed
  in the [Getting Help](https://github.com/aws/aws-xray-sdk-python#getting-help) section. Keeping the list of open issues lean helps us respond in a timely manner.



  The [developer guide](https://docs.aws.amazon.com/xray/latest/devguide) provides in-depth
  guidance about using the AWS X-Ray service.
  The [API Reference](http://docs.aws.amazon.com/xray-sdk-for-python/latest/reference/)
  provides guidance for using the SDK and module-level documentation.





  ```python
  from aws_xray_sdk.core import xray_recorder

  xray_recorder.configure(
      sampling=False,
      context_missing='LOG_ERROR',
      plugins=('EC2Plugin', 'ECSPlugin', 'ElasticBeanstalkPlugin'),
      daemon_address='127.0.0.1:3000',
      dynamic_naming='*mysite.com*'
  )
  ```



  Using context managers for implicit exceptions recording:

  ```python
  from aws_xray_sdk.core import xray_recorder

  with xray_recorder.in_segment('segment_name') as segment:
      
      segment.put_metadata('key', dict, 'namespace')
      with xray_recorder.in_subsegment('subsegment_name') as subsegment:
          subsegment.put_annotation('key', 'value')
          
      with xray_recorder.in_subsegment('subsegment2') as subsegment:
          subsegment.put_annotation('key2', 'value2')
          
  ```

  async versions of context managers:

  ```python
  from aws_xray_sdk.core import xray_recorder

  async with xray_recorder.in_segment_async('segment_name') as segment:
      
      segment.put_metadata('key', dict, 'namespace')
      async with xray_recorder.in_subsegment_async('subsegment_name') as subsegment:
          subsegment.put_annotation('key', 'value')
          
      async with xray_recorder.in_subsegment_async('subsegment2') as subsegment:
          subsegment.put_annotation('key2', 'value2')
          
  ```

  Default begin/end functions:

  ```python
  from aws_xray_sdk.core import xray_recorder


  segment = xray_recorder.begin_segment('segment_name')

  subsegment = xray_recorder.begin_subsegment('subsegment_name')


  segment.put_metadata('key', dict, 'namespace')
  subsegment.put_annotation('key', 'value')
  xray_recorder.end_subsegment()


  xray_recorder.end_segment()
  ```


  To modify the sampling decision at the subsegment level, subsegments that inherit the decision of their direct parent (segment or subsegment) can be created using `xray_recorder.begin_subsegment()` and unsampled subsegments can be created using
  `xray_recorder.begin_subsegment_without_sampling()`.

  The code snippet below demonstrates creating a sampled or unsampled subsegment based on the sampling decision of each SQS message processed by Lambda.

  ```python
  from aws_xray_sdk.core import xray_recorder
  from aws_xray_sdk.core.models.subsegment import Subsegment
  from aws_xray_sdk.core.utils.sqs_message_helper import SqsMessageHelper

  def lambda_handler(event, context):

      for message in event['Records']:
          if SqsMessageHelper.isSampled(message):
              subsegment = xray_recorder.begin_subsegment('sampled_subsegment')
              print('sampled - processing SQS message')

          else:
              subsegment = xray_recorder.begin_subsegment_without_sampling('unsampled_subsegment')
              print('unsampled - processing SQS message')

      xray_recorder.end_subsegment()
  ```

  The code snippet below demonstrates wrapping a downstream AWS SDK request with an unsampled subsegment.
  ```python
  from aws_xray_sdk.core import xray_recorder, patch_all
  import boto3

  patch_all()

  def lambda_handler(event, context):
      subsegment = xray_recorder.begin_subsegment_without_sampling('unsampled_subsegment')
      client = boto3.client('sqs')
      print(client.list_queues())

      xray_recorder.end_subsegment()
  ```



  As a decorator:

  ```python
  from aws_xray_sdk.core import xray_recorder

  @xray_recorder.capture('subsegment_name')
  def myfunc():
      

  myfunc()
  ```

  or as a context manager:

  ```python
  from aws_xray_sdk.core import xray_recorder

  with xray_recorder.capture('subsegment_name') as subsegment:
      
      subsegment.put_annotation('mykey', val)
      
  ```

  Async capture as decorator:

  ```python
  from aws_xray_sdk.core import xray_recorder

  @xray_recorder.capture_async('subsegment_name')
  async def myfunc():
      

  async def main():
      await myfunc()
  ```

  or as context manager:

  ```python
  from aws_xray_sdk.core import xray_recorder

  async with xray_recorder.capture_async('subsegment_name') as subsegment:
      
      subsegment.put_annotation('mykey', val)
      
  ```



  ```python
  from aws_xray_sdk.core import xray_recorder


  segment1 = xray_recorder.begin_segment('segment_name')


  xray_recorder.put_annotation('key', 'value')


  subsegment1 = xray_recorder.begin_subsegment('subsegment_name')


  xray_recorder.put_metadata('key', 'value')

  if xray_recorder.is_sampled():
      
      val = compute_annotation_val()
      metadata = compute_metadata_body()
      xray_recorder.put_annotation('mykey', val)
      xray_recorder.put_metadata('mykey', metadata)
  ```


  X-Ray Python SDK will by default generate no-op trace and entity id for unsampled requests and secure random trace and entity id for sampled requests. If customer wants to enable generating secure random trace and entity id for all the (sampled/unsampled) requests (this is applicable for trace id injection into logs use case) then they should set the `AWS_XRAY_NOOP_ID` environment variable as False.


  Often times, it may be useful to be able to disable X-Ray for specific use cases, whether to stop X-Ray from sending traces at any moment, or to test code functionality that originally depended on X-Ray instrumented packages to begin segments prior to the code call. For example, if your application relied on an XRayMiddleware to instrument incoming web requests, and you have a method which begins subsegments based on the segment generated by that middleware, it would be useful to be able to disable X-Ray for your unit tests so that `SegmentNotFound` exceptions are not thrown when you need to test your method.

  There are two ways to disable X-Ray, one is through environment variables, and the other is through the SDKConfig module.

  **Disabling through the environment variable:**

  Prior to running your application, make sure to have the environment variable `AWS_XRAY_SDK_ENABLED` set to `false`.

  **Disabling through the SDKConfig module:**
  ```
  from aws_xray_sdk import global_sdk_config

  global_sdk_config.set_sdk_enabled(False)
  ```

  **Important Notes:**
  * Environment Variables always take precedence over the SDKConfig module when disabling/enabling. If your environment variable is set to `false` while your code calls `global_sdk_config.set_sdk_enabled(True)`, X-Ray will still be disabled.

  * If you need to re-enable X-Ray again during runtime and acknowledge disabling/enabling through the SDKConfig module, you may run the following in your application:
  ```
  import os
  from aws_xray_sdk import global_sdk_config

  del os.environ['AWS_XRAY_SDK_ENABLED']
  global_sdk_config.set_sdk_enabled(True)
  ```



  ```python
  from aws_xray_sdk.core import xray_recorder

  def lambda_handler(event, context):
      

      subsegment = xray_recorder.begin_subsegment('subsegment_name')
      
      
      subsegment.put_metadata('key', dict, 'namespace')
      subsegment.put_annotation('key', 'value')

      xray_recorder.end_subsegment()

      
  ```



  ```python
  import concurrent.futures

  import requests

  from aws_xray_sdk.core import xray_recorder
  from aws_xray_sdk.core import patch

  patch(('requests',))

  URLS = ['http://www.amazon.com/',
          'http://aws.amazon.com/',
          'http://example.com/',
          'http://www.bilibili.com/',
          'http://invalid-domain.com/']

  def load_url(url, trace_entity):
      
      xray_recorder.set_trace_entity(trace_entity)
      
      
      resp = requests.get(url)
      
      xray_recorder.clear_trace_entities()
      return resp


  current_entity = xray_recorder.get_trace_entity()
  with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
      
      future_to_url = {executor.submit(load_url, url, current_entity): url for url in URLS}
      for future in concurrent.futures.as_completed(future_to_url):
          url = future_to_url[future]
          try:
              data = future.result()
          except Exception:
              pass
  ```


  By default, if no other value is provided to `.configure()`, SQL trace streaming is enabled
  for all the supported DB engines. Those currently are:
  - Any engine attached to the Django ORM.
  - Any engine attached to SQLAlchemy.

  The behaviour can be toggled by sending the appropriate `stream_sql` value, for example:
  ```python
  from aws_xray_sdk.core import xray_recorder

  xray_recorder.configure(service='fallback_name', stream_sql=True)
  ```



  ```python
  from aws_xray_sdk.core import patch

  libs_to_patch = ('boto3', 'mysql', 'requests')
  patch(libs_to_patch)
  ```



  Full modules in the local codebase can be recursively patched by providing the module references
  to the patch function.
  ```python
  from aws_xray_sdk.core import patch

  libs_to_patch = ('boto3', 'requests', 'local.module.ref', 'other_module')
  patch(libs_to_patch)
  ```
  An `xray_recorder.capture()` decorator will be applied to all functions and class methods in the
  given module and all the modules inside them recursively. Some files/modules can be excluded by
  providing to the `patch` function a regex that matches them.
  ```python
  from aws_xray_sdk.core import patch

  libs_to_patch = ('boto3', 'requests', 'local.module.ref', 'other_module')
  ignore = ('local.module.ref.some_file', 'other_module.some_module\.*')
  patch(libs_to_patch, ignore_module_patterns=ignore)
  ```




  In django settings.py, use the following.

  ```python
  INSTALLED_APPS = [
      
      'aws_xray_sdk.ext.django',
  ]

  MIDDLEWARE = [
      'aws_xray_sdk.ext.django.middleware.XRayMiddleware',
      
  ]
  ```

  You can configure the X-Ray recorder in a Django app under the ‘XRAY_RECORDER’ namespace. For a minimal configuration, the 'AWS_XRAY_TRACING_NAME' is required unless it is specified in an environment variable.
  ```
  XRAY_RECORDER = {
      'AWS_XRAY_TRACING_NAME': 'My application', # Required - the segment name for segments generated from incoming requests
  }
  ```
  For more information about configuring Django with X-Ray read more about it in the [API reference](https://docs.aws.amazon.com/xray-sdk-for-python/latest/reference/frameworks.html)


  If Django's ORM is patched - either using the `AUTO_INSTRUMENT = True` in your settings file
  or explicitly calling `patch_db()` - the SQL query trace streaming can then be enabled or
  disabled updating the `STREAM_SQL` variable in your settings file. It is enabled by default.


  The automatic module patching can also be configured through Django settings.
  ```python
  XRAY_RECORDER = {
      'PATCH_MODULES': [
          'boto3',
          'requests',
          'local.module.ref',
          'other_module',
      ],
      'IGNORE_MODULE_PATTERNS': [
          'local.module.ref.some_file',
          'other_module.some_module\.*',
      ],
      ...
  }
  ```
  If `AUTO_PATCH_PARENT_SEGMENT_NAME` is also specified, then a segment parent will be created
  with the supplied name, wrapping the automatic patching so that it captures any dangling
  subsegments created on the import patching.


  X-Ray can't search on http annotations in subsegments.   To enable searching the middleware adds the http values as annotations
  This allows searching in the X-Ray console like so

  This is configurable in settings with `URLS_AS_ANNOTATION` that has 3 valid values
  `LAMBDA` - the default, which uses URLs as annotations by default if running in a lambda context
  `ALL` - do this for every request (useful if running in a mixed lambda/other deployment)
  `NONE` - don't do this for any (avoiding hitting the 50 annotation limit)

  ```
  annotation.url BEGINSWITH "https://your.url.com/here"
  ```



  ```python
  from aws_xray_sdk.core import xray_recorder
  from aws_xray_sdk.ext.flask.middleware import XRayMiddleware

  app = Flask(__name__)

  xray_recorder.configure(service='fallback_name', dynamic_naming='*mysite.com*')
  XRayMiddleware(app, xray_recorder)
  ```



  ```python
  from aws_xray_sdk.core import xray_recorder
  from aws_xray_sdk.ext.bottle.middleware import XRayMiddleware

  app = Bottle()

  xray_recorder.configure(service='fallback_name', dynamic_naming='*mysite.com*')
  app.install(XRayMiddleware(xray_recorder))
  ```


  Serverless is an application model that enables you to shift more of your operational responsibilities to AWS. As a result, you can focus only on your applications and services, instead of the infrastructure management tasks such as server provisioning, patching, operating system maintenance, and capacity provisioning. With serverless, you can deploy your web application to [AWS Lambda](https://aws.amazon.com/lambda/) and have customers interact with it through a Lambda-invoking endpoint, such as [Amazon API Gateway](https://aws.amazon.com/api-gateway/).

  X-Ray supports the Serverless model out of the box and requires no extra configuration. The middlewares in Lambda generate `Subsegments` instead of `Segments` when an endpoint is reached. This is because `Segments` cannot be generated inside the Lambda function, but it is generated automatically by the Lambda container. Therefore, when using the middlewares with this model, it is important to make sure that your methods only generate `Subsegments`.

  The following guide shows an example of setting up a Serverless application that utilizes API Gateway and Lambda:

  [Instrumenting Web Frameworks in a Serverless Environment](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python-serverless.html)



  Adding aiohttp middleware. Support aiohttp >= 2.3.

  ```python
  from aiohttp import web

  from aws_xray_sdk.ext.aiohttp.middleware import middleware
  from aws_xray_sdk.core import xray_recorder
  from aws_xray_sdk.core.async_context import AsyncContext

  xray_recorder.configure(service='fallback_name', context=AsyncContext())

  app = web.Application(middlewares=[middleware])
  app.router.add_get("/", handler)

  web.run_app(app)
  ```

  Tracing aiohttp client. Support aiohttp >=3.

  ```python
  from aws_xray_sdk.ext.aiohttp.client import aws_xray_trace_config

  async def foo():
      trace_config = aws_xray_trace_config()
      async with ClientSession(loop=loop, trace_configs=[trace_config]) as session:
          async with session.get(url) as resp
              await resp.read()
  ```


  The SQLAlchemy integration requires you to override the Session and Query Classes for SQL Alchemy

  SQLAlchemy integration uses subsegments so you need to have a segment started before you make a query.

  ```python
  from aws_xray_sdk.core import xray_recorder
  from aws_xray_sdk.ext.sqlalchemy.query import XRaySessionMaker

  xray_recorder.begin_segment('SQLAlchemyTest')

  Session = XRaySessionMaker(bind=engine)
  session = Session()

  xray_recorder.end_segment()
  app = Flask(__name__)

  xray_recorder.configure(service='fallback_name', dynamic_naming='*mysite.com*')
  XRayMiddleware(app, xray_recorder)
  ```



  ```python
  from aws_xray_sdk.core import xray_recorder
  from aws_xray_sdk.ext.flask.middleware import XRayMiddleware
  from aws_xray_sdk.ext.flask_sqlalchemy.query import XRayFlaskSqlAlchemy

  app = Flask(__name__)
  app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///:memory:"

  XRayMiddleware(app, xray_recorder)
  db = XRayFlaskSqlAlchemy(app)

  ```



  If you want to ignore certain httplib requests you can do so based on the hostname or URL that is being requsted. The hostname is matched using the Python [fnmatch library](https://docs.python.org/3/library/fnmatch.html) which does Unix glob style matching.

  ```python
  from aws_xray_sdk.ext.httplib import add_ignored as xray_add_ignored


  xray_add_ignored(hostname='test.myapp.com')


  xray_add_ignored(hostname='*.myapp.com')


  xray_add_ignored(urls=['/test-path', '/other-test-path'])


  xray_add_ignored(hostname='myapp.com', urls=['/test-url'])
  ```

  If you use a subclass of httplib to make your requests, you can also filter on the class name that initiates the request. This must use the complete package name to do the match.

  ```python
  from aws_xray_sdk.ext.httplib import add_ignored as xray_add_ignored


  xray_add_ignored(subclass='botocore.awsrequest.AWSHTTPConnection')
  ```



  The AWS X-Ray SDK for Python is licensed under the Apache 2.0 License. See LICENSE and NOTICE.txt for more information.


pkgId: e80e1bbcf17b8a02956f003b33e925555857f980224386acbcf5c23f9b4242be
name: python-awscli
arch: src
version: 1.27.109
epoch: 0
release: 1
summary: Universal Command Line Environment for AWS.
url: http://aws.amazon.com/cli/
rpm_license: Apache License 2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4fc960bc-75ea-4346-92ea-a1d81ce54cb0
location_href: 00008887-python-awscli/python-awscli-1.27.109-1.src.rpm
checksum_type: sha256
description:
  This package provides a unified command line interface to Amazon Web
  Services.
  Jump to:
  -  `Getting Started <#getting-started>`__
  -  `Getting Help <#getting-help>`__
  -  `More Resources <#more-resources>`__


pkgId: 959d7e017bdaf8b3bf01ab8d94288e1f8ac39db824602e458efed0783f13ad8a
name: python-awsiotsdk
arch: src
version: 1.12.6
epoch: 0
release: 1
summary: AWS IoT SDK based on the AWS Common Runtime
url: https://github.com/aws/aws-iot-device-sdk-python-v2
rpm_license: License :: OSI Approved :: Apache Software License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-3c1f43a3-04eb-42a6-a49a-60c71fe5d332
location_href: 00013343-python-awsiotsdk/python-awsiotsdk-1.12.6-1.src.rpm
checksum_type: sha256
description:
  [![Version](https://img.shields.io/pypi/v/awsiotsdk.svg?style=flat)](https://pypi.org/project/awsiotsdk/)

  This document provides information about the AWS IoT Device SDK v2 for Python.

  If you have any issues or feature requests, please file an issue or pull request.

  API documentation: https://aws.github.io/aws-iot-device-sdk-python-v2/

  This SDK is built on the AWS Common Runtime, a collection of libraries
  ([aws-c-common](https://github.com/awslabs/aws-c-common),
  [aws-c-io](https://github.com/awslabs/aws-c-io),
  [aws-c-mqtt](https://github.com/awslabs/aws-c-mqtt),
  [aws-c-compression](https://github.com/awslabs/aws-c-compression),
  [aws-c-http](https://github.com/awslabs/aws-c-http),
  [aws-c-cal](https://github.com/awslabs/aws-c-cal),
  [aws-c-auth](https://github.com/awslabs/aws-c-auth),
  [s2n](https://github.com/awslabs/s2n) ...) written in C to be
  cross-platform, high-performance, secure, and reliable. The libraries are bound
  to Python by the `awscrt` package ([PyPI](https://pypi.org/project/awscrt/)) ([Github](https://github.com/awslabs/aws-crt-python)).

  *__Jump To:__*
  * [Installation](#Installation)
  * [Samples](samples)
  * [Getting Help](#Getting-Help)
  * [FAQ](./documents/FAQ.md)
  * [Giving Feedback and Contributions](#Giving-Feedback-and-Contributions)
  * [MQTT5 User Guide](./documents/MQTT5_Userguide.md)





  * Python 3.7+

  [Step-by-step instructions](./documents/PREREQUISITES.md)





  ```
  python3 -m pip install awsiotsdk
  ```



  ```
  python -m pip install awsiotsdk
  ```



  ```

  mkdir sdk-workspace
  cd sdk-workspace

  git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git

  python3 -m pip install ./aws-iot-device-sdk-python-v2
  ```



  `awsiotsdk` depends on [awscrt](https://github.com/awslabs/aws-crt-python), which makes use of C extensions. Precompiled wheels are downloaded when installing on major platforms (Mac, Windows, Linux, Raspberry Pi OS). If wheels are unavailable for your platform, your machine must compile some C libraries.

  If you encounter issues, see [Installation Issues](./documents/PREREQUISITES.md#installation-issues) and try again.



  [Samples README](samples)



  The best way to interact with our team is through GitHub. You can [open an issue](https://github.com/aws/aws-iot-device-sdk-python-v2/issues) and choose from one of our templates for guidance, bug reports, or feature requests. You may also find help on community resources such as [StackOverFlow](https://stackoverflow.com/questions/tagged/aws-iot) with the tag #aws-iot or If you have a support plan with [AWS Support](https://aws.amazon.com/premiumsupport/), you can also create a new support case.

  Please make sure to check out our resources too before opening an issue:

  * Our [FAQ](./documents/FAQ.md)
  * [API documentation](https://aws.github.io/aws-iot-device-sdk-python-v2/)
  * Our [Developer Guide](https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html) ([source](https://github.com/awsdocs/aws-iot-docs))
  * Check for similar [Issues](https://github.com/aws/aws-iot-device-sdk-python-v2/issues)
  * [AWS IoT Core Documentation](https://docs.aws.amazon.com/iot/)
  * [Dev Blog](https://aws.amazon.com/blogs/?awsf.blog-master-iot=category-internet-of-things%23amazon-freertos%7Ccategory-internet-of-things%23aws-greengrass%7Ccategory-internet-of-things%23aws-iot-analytics%7Ccategory-internet-of-things%23aws-iot-button%7Ccategory-internet-of-things%23aws-iot-device-defender%7Ccategory-internet-of-things%23aws-iot-device-management%7Ccategory-internet-of-things%23aws-iot-platform)
  * Integration with AWS IoT Services such as
  [Device Shadow](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html)
  and [Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html)
  is provided by code that been generated from a model of the service.



  We need your help in making this SDK great. Please participate in the community and contribute to this effort by submitting issues, participating in discussion forums and submitting pull requests through the following channels.

  * [Contributions Guidelines](./documents/CONTRIBUTING.md)
  * Articulate your feature request or upvote existing ones on our [Issues](https://github.com/aws/aws-iot-device-sdk-python-v2/issues?q=is%3Aissue+is%3Aopen+label%3Afeature-request) page.
  * Create discussion questions [here](https://github.com/aws/aws-iot-device-sdk-python-v2/discussions)
  * Find a bug open an [issue](https://github.com/aws/aws-iot-device-sdk-python-v2/issues)



  This library is licensed under the [Apache 2.0 License](./documents/LICENSE).

  Latest released version: v1.12.3


pkgId: 0404ad20aa403c3ff70cc7f8baefe884e30b1950fceb68a92c3e082f630fff22
name: python-awspolicy
arch: src
version: 0.0.3.1
epoch: 0
release: 1
summary: A package that helps modifying AWS policies as an object
url: https://github.com/totoleon/AwsPolicy
rpm_license: MIT License
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-4e245304-c0d7-4b50-98f1-0d3a9902b57e
location_href: 00011386-python-awspolicy/python-awspolicy-0.0.3.1-1.src.rpm
checksum_type: sha256
description:
  AWS SDKs provides a wide availbility allowing automation and codifying your infrastructure. However, minipulating policies are not in a good control, because they are treated as a whole block of String.

  Scenario 1. You have an S3 bucket in a centralized account, which grants write permission of CloudTrail logs from all other accounts. At onboarding of a new account, you need to modify the bucket policy to insert another trusted principal. Doing it manually is ugly and unsafe.

  Scenario 2. In your billing account, there is an IAM Role that allows certain IAM Users to assume from the landing account. When a new IAM User is created and needed to be added to the trusted policy, you will need to update the policy manually.

  The diffuculty of automating this process is that, you have to keep the integrity of your policy document and only change the part that you want to. That's what this package can help you do.

  Borrowing the idea of selecting an element from HTML document, you can select a particular Statement from a policy document giving the Sid.


  This package only provides classes that you can use in your own code. It depends on boto3 but does not install it for you.

  To install the package:
  `pip install awspolicy`


  Talk is cheap and lets code. I have an S3 bucket, which has the following policy that controls permissions from IAM users. At the moment, it only grants IAM User 'bob' and 'jack' permission of to get contents from directory 'admin_folder'. When a new admin user 'daniel' onboards, I need to add his IAM User ARN to be granted in the policy, while not interferring the other functions of the policy document. Here is an example code to achieve that. Before, by bucket policy in JSON is like this:

  ```
  {
      "Id": "MyBucketPolicy",
      "Version": "2012-10-17",
      "Statement": [
          {
              "Sid": "AutomatedRestrictiveAccess",
              "Action": [
                  "s3:GetObject"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::hailong-python/admin_folder/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::888888888888:user/bob",
                      "arn:aws:iam::888888888888:user/jack"
                  ]
              }
          },
          {
              "Sid": "GenerallyGrantingAccess",
              "Action": [
                  "s3:GetObject"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::hailong-python/shared_files/*",
              "Principal": {
                  "AWS": [
                      "888888888888"
                  ]
              }
          },
          {
              "Sid": "DenyNonHTTPSTrafic",
              "Action": [
                  "s3:*"
              ],
              "Effect": "Deny",
              "Resource": "arn:aws:s3:::hailong-python/*",
              "Principal": "*",
              "Condition": {
                  "Bool": {
                      "aws:SecureTransport": "false"
                  }
              }
          }
      ]
  }
  ```

  Example code to modify the policy in Python

  ```
  import boto3
  from awspolicy import BucketPolicy

  s3_client = boto3.client('s3')
  bucket_name = 'hailong-python'


  bucket_policy = BucketPolicy(serviceModule=s3_client, resourceIdentifer=bucket_name)


  statement_to_modify = bucket_policy.select_statement('AutomatedRestrictiveAccess')


  new_user_arn = 'arn:aws:iam::888888888888:user/daniel'
  statement_to_modify.Principal['AWS'].append(new_user_arn)


  statement_to_modify.save()


  statement_to_modify.source_policy.save() # Or bucket_policy.save()

  ```

  After running the code, the new user is added to the statement:

  ```
  {
      "Version": "2012-10-17",
      "Id": "MyBucketPolicy",
      "Statement": [
          {
              "Sid": "AutomatedRestrictiveAccess",
              "Effect": "Allow",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::888888888888:user/daniel",
                      "arn:aws:iam::888888888888:user/jack",
                      "arn:aws:iam::888888888888:user/bob"
                  ]
              },
              "Action": "s3:GetObject",
              "Resource": "arn:aws:s3:::hailong-python/admin_folder/*"
          },
          {
              "Sid": "GenerallyGrantingAccess",
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::888888888888:root"
              },
              "Action": "s3:GetObject",
              "Resource": "arn:aws:s3:::hailong-python/shared_files/*"
          },
          {
              "Sid": "DenyNonHTTPSTrafic",
              "Effect": "Deny",
              "Principal": "*",
              "Action": "s3:*",
              "Resource": "arn:aws:s3:::hailong-python/*",
              "Condition": {
                  "Bool": {
                      "aws:SecureTransport": "false"
                  }
              }
          }
      ]
  }
  ```



  ```

  policy.fill_up_sids()           # Generate Sids to the statements that don't have one. This updates the policy documents
  policy.select_statement(sid)    # Selecting a statement giving Sid. It returns None if didn't find one
  policy.reload()                 # Reload the policy document. This triggers getting the policy from AWS
  policy.save()                   # Upload the current policy document to AWS
  policy.sids                     # A list of statement Ids of the policy
  policy.content                  # Policy content in dict


  statement.reload()              # Reconstruct the statement content from the loaded Policy
  statement.save()                # Save changes of the statement
  statement.content               # Statement content in dict
  statement.source_policy         # Referring to the policy object which this statement belongs to

  statement.Sid
  statement.Effect
  statement.Principal
  statement.Action
  statement.Resource
  statement.Condition
  ```


  ```



  import json, boto3
  from awspolicy import BucketPolicy, KmsPolicy, IamRoleTrustPolicy

  kms = boto3.client('kms')
  cmk_policy = KmsPolicy(serviceModule=kms, resourceIdentifer='xxxxe011-a1ff-4460-8942-02da951xxxx')
  statement = cmk_policy.select_statement('AllowCloudTrailEncryptCrossAccountLogs')
  statement.Condition['StringLike']['kms:EncryptionContext:aws:cloudtrail:arn'] += [u'arn:aws:cloudtrail:*:888888888888:trail/*']
  statement.save()
  statement.source_policy.save()


  s3 = session.client('s3')
  bucket_policy = BucketPolicy(serviceModule=s3, resourceIdentifer='hailong-cloudtrail')
  statement = bucket_policy.select_statement('CloudTrailCrossAccountPermission')
  to_add_resource = 'arn:aws:s3:::hailong-cloudtrail/AWSLogs/888888888888/*'
  if to_add_resource not in statement.Resource:
      statement.Resource += ['arn:aws:s3:::hailong-cloudtrail/AWSLogs/888888888888/*']
      statement.save()
      statement.source_policy.save()


  iam = boto3.client('iam')
  role_trust_policy = IamRoleTrustPolicy(serviceModule=iam, resourceIdentifer='EC2ReadOnly')
  s = role_trust_policy.select_statement('CrossAccount')
  s.Conditon = None
  s.save()
  s.source_policy.save()
  ```


  This is a very simple package which I hope could help someone. If needed, we can wrap it up in a tool that allows more interactions with AWS policies. At this time, it only works with three kinds of Resource based policies S3, KMS, and IAM Role. With a bit of restructuring, it can be expanded to others like IAM principal-based policies etc. Please let me know if you found any bug or want to contribute.


pkgId: 688bc443fa6689d1aa7093a82b2db7c29c84c0ca668f424a2c366f8faeee5b5a
name: python-awswrangler
arch: src
version: 2.20.1
epoch: 0
release: 1
summary: Pandas on AWS.
url: https://aws-sdk-pandas.readthedocs.io/
rpm_license: Apache-2.0
rpm_vendor: openEuler Copr - user mywaaagh_admin
rpm_group: Unspecified
rpm_buildhost: resalloc-0fedc8d0-790a-4921-bde2-00fcd2d5fb52
location_href: 00009218-python-awswrangler/python-awswrangler-2.20.1-1.src.rpm
checksum_type: sha256
description:
  AWS Data Wrangler is now **AWS SDK for pandas (awswrangler)**.  We’re changing the name we use when we talk about the library, but everything else will stay the same.  You’ll still be able to install using `pip install awswrangler` and you won’t need to change any of your code.  As part of this change, we’ve moved the library from AWS Labs to the main AWS GitHub organisation but, thanks to the GitHub’s redirect feature, you’ll still be able to access the project by its old URLs until you update your bookmarks.  Our documentation has also moved to [aws-sdk-pandas.readthedocs.io](https://aws-sdk-pandas.readthedocs.io), but old bookmarks will redirect to the new site.

  *Pandas on AWS*

  Easy integration with Athena, Glue, Redshift, Timestream, OpenSearch, Neptune, QuickSight, Chime, CloudWatchLogs, DynamoDB, EMR, SecretManager, PostgreSQL, MySQL, SQLServer and S3 (Parquet, CSV, JSON and EXCEL).

  ![AWS SDK for pandas](docs/source/_static/logo2.png?raw=true "AWS SDK for pandas")
  ![tracker](https://d3tiqpr4kkkomd.cloudfront.net/img/pixel.png?asset=GVOYN2BOOQ573LTVIHEW)

  > An [AWS Professional Service](https://aws.amazon.com/professional-services/) open source initiative | aws-proserve-opensource@amazon.com

  [![Release](https://img.shields.io/badge/release-2.20.1-brightgreen.svg)](https://pypi.org/project/awswrangler/)
  [![Python Version](https://img.shields.io/badge/python-3.7%20%7C%203.8%20%7C%203.9%20%7C%203.10-brightgreen.svg)](https://anaconda.org/conda-forge/awswrangler)
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
  [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

  [![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)
  [![Coverage](https://img.shields.io/badge/coverage-91%25-brightgreen.svg)](https://pypi.org/project/awswrangler/)
  ![Static Checking](https://github.com/aws/aws-sdk-pandas/workflows/Static%20Checking/badge.svg?branch=main)
  [![Documentation Status](https://readthedocs.org/projects/aws-sdk-pandas/badge/?version=latest)](https://aws-sdk-pandas.readthedocs.io/?badge=latest)

  | Source | Downloads | Installation Command |
  |--------|-----------|----------------------|
  | **[PyPi](https://pypi.org/project/awswrangler/)**  | [![PyPI Downloads](https://pepy.tech/badge/awswrangler)](https://pypi.org/project/awswrangler/) | `pip install awswrangler` |
  | **[Conda](https://anaconda.org/conda-forge/awswrangler)** | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/awswrangler.svg)](https://anaconda.org/conda-forge/awswrangler) | `conda install -c conda-forge awswrangler` |

  > ⚠️ **For platforms without PyArrow 3 support (e.g. [EMR](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/install.html#emr-cluster), [Glue PySpark Job](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/install.html#aws-glue-pyspark-jobs), MWAA):**<br>
  ➡️ `pip install pyarrow==2 awswrangler`

  Powered By [<img src="https://arrow.apache.org/img/arrow.png" width="200">](https://arrow.apache.org/powered_by/)



  - [Quick Start](#quick-start)
  - [Read The Docs](#read-the-docs)
  - [Getting Help](#getting-help)
  - [Community Resources](#community-resources)
  - [Logging](#logging)
  - [Who uses AWS SDK for pandas?](#who-uses-aws-sdk-pandas)



  Installation command: `pip install awswrangler`

  > ⚠️ **For platforms without PyArrow 3 support (e.g. [EMR](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/install.html#emr-cluster), [Glue PySpark Job](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/install.html#aws-glue-pyspark-jobs), MWAA):**<br>
  ➡️`pip install pyarrow==2 awswrangler`

  ```py3
  import awswrangler as wr
  import pandas as pd
  from datetime import datetime

  df = pd.DataFrame({"id": [1, 2], "value": ["foo", "boo"]})


  wr.s3.to_parquet(
      df=df,
      path="s3://bucket/dataset/",
      dataset=True,
      database="my_db",
      table="my_table"
  )


  df = wr.s3.read_parquet("s3://bucket/dataset/", dataset=True)


  df = wr.athena.read_sql_query("SELECT * FROM my_table", database="my_db")


  con = wr.redshift.connect("my-glue-connection")
  df = wr.redshift.read_sql_query("SELECT * FROM external_schema.my_table", con=con)
  con.close()


  df = pd.DataFrame({
      "time": [datetime.now(), datetime.now()],
      "my_dimension": ["foo", "boo"],
      "measure": [1.0, 1.1],
  })
  rejected_records = wr.timestream.write(df,
      database="sampleDB",
      table="sampleTable",
      time_col="time",
      measure_col="measure",
      dimensions_cols=["my_dimension"],
  )


  wr.timestream.query("""
  SELECT time, measure_value::double, my_dimension
  FROM "sampleDB"."sampleTable" ORDER BY time DESC LIMIT 3
  """)

  ```



  - [**What is AWS SDK for pandas?**](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/about.html)
  - [**Install**](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/install.html)
    - [PyPi (pip)](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/install.html#pypi-pip)
    - [Conda](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/install.html#conda)
    - [AWS Lambda Layer](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/install.html#aws-lambda-layer)
    - [AWS Glue Python Shell Jobs](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/install.html#aws-glue-python-shell-jobs)
    - [AWS Glue PySpark Jobs](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/install.html#aws-glue-pyspark-jobs)
    - [Amazon SageMaker Notebook](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/install.html#amazon-sagemaker-notebook)
    - [Amazon SageMaker Notebook Lifecycle](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/install.html#amazon-sagemaker-notebook-lifecycle)
    - [EMR](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/install.html#emr)
    - [From source](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/install.html#from-source)
  - [**Tutorials**](https://github.com/aws/aws-sdk-pandas/tree/main/tutorials)
    - [001 - Introduction](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/001%20-%20Introduction.ipynb)
    - [002 - Sessions](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/002%20-%20Sessions.ipynb)
    - [003 - Amazon S3](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/003%20-%20Amazon%20S3.ipynb)
    - [004 - Parquet Datasets](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/004%20-%20Parquet%20Datasets.ipynb)
    - [005 - Glue Catalog](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/005%20-%20Glue%20Catalog.ipynb)
    - [006 - Amazon Athena](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/006%20-%20Amazon%20Athena.ipynb)
    - [007 - Databases (Redshift, MySQL, PostgreSQL, SQL Server and Oracle)](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/007%20-%20Redshift%2C%20MySQL%2C%20PostgreSQL%2C%20SQL%20Server%2C%20Oracle.ipynb)
    - [008 - Redshift - Copy & Unload.ipynb](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/008%20-%20Redshift%20-%20Copy%20%26%20Unload.ipynb)
    - [009 - Redshift - Append, Overwrite and Upsert](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/009%20-%20Redshift%20-%20Append%2C%20Overwrite%2C%20Upsert.ipynb)
    - [010 - Parquet Crawler](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/010%20-%20Parquet%20Crawler.ipynb)
    - [011 - CSV Datasets](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/011%20-%20CSV%20Datasets.ipynb)
    - [012 - CSV Crawler](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/012%20-%20CSV%20Crawler.ipynb)
    - [013 - Merging Datasets on S3](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/013%20-%20Merging%20Datasets%20on%20S3.ipynb)
    - [014 - Schema Evolution](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/014%20-%20Schema%20Evolution.ipynb)
    - [015 - EMR](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/015%20-%20EMR.ipynb)
    - [016 - EMR & Docker](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/016%20-%20EMR%20%26%20Docker.ipynb)
    - [017 - Partition Projection](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/017%20-%20Partition%20Projection.ipynb)
    - [018 - QuickSight](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/018%20-%20QuickSight.ipynb)
    - [019 - Athena Cache](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/019%20-%20Athena%20Cache.ipynb)
    - [020 - Spark Table Interoperability](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/020%20-%20Spark%20Table%20Interoperability.ipynb)
    - [021 - Global Configurations](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/021%20-%20Global%20Configurations.ipynb)
    - [022 - Writing Partitions Concurrently](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/022%20-%20Writing%20Partitions%20Concurrently.ipynb)
    - [023 - Flexible Partitions Filter](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/023%20-%20Flexible%20Partitions%20Filter.ipynb)
    - [024 - Athena Query Metadata](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/024%20-%20Athena%20Query%20Metadata.ipynb)
    - [025 - Redshift - Loading Parquet files with Spectrum](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/025%20-%20Redshift%20-%20Loading%20Parquet%20files%20with%20Spectrum.ipynb)
    - [026 - Amazon Timestream](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/026%20-%20Amazon%20Timestream.ipynb)
    - [027 - Amazon Timestream 2](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/027%20-%20Amazon%20Timestream%202.ipynb)
    - [028 - Amazon DynamoDB](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/028%20-%20DynamoDB.ipynb)
    - [029 - S3 Select](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/029%20-%20S3%20Select.ipynb)
    - [030 - Data Api](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/030%20-%20Data%20Api.ipynb)
    - [031 - OpenSearch](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/031%20-%20OpenSearch.ipynb)
    - [032 - Lake Formation Governed Tables](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/032%20-%20Lake%20Formation%20Governed%20Tables.ipynb)
    - [033 - Amazon Neptune](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/033%20-%20Amazon%20Neptune.ipynb)
    - [034 - Glue Data Quality](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/034%20-Glue%20%20Data%20Quality.ipynb)
  - [**API Reference**](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html)
    - [Amazon S3](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#amazon-s3)
    - [AWS Glue Catalog](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#aws-glue-catalog)
    - [Amazon Athena](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#amazon-athena)
    - [AWS Lake Formation](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#aws-lake-formation)
    - [Amazon Redshift](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#amazon-redshift)
    - [PostgreSQL](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#postgresql)
    - [MySQL](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#mysql)
    - [SQL Server](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#sqlserver)
    - [Oracle](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#oracle)
    - [Data API Redshift](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#data-api-redshift)
    - [Data API RDS](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#data-api-rds)
    - [OpenSearch](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#opensearch)
    - [Amazon Neptune](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#amazon-neptune)
    - [DynamoDB](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#dynamodb)
    - [Amazon Timestream](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#amazon-timestream)
    - [Amazon EMR](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#amazon-emr)
    - [Amazon CloudWatch Logs](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#amazon-cloudwatch-logs)
    - [Amazon Chime](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#amazon-chime)
    - [Amazon QuickSight](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#amazon-quicksight)
    - [AWS STS](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#aws-sts)
    - [AWS Secrets Manager](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#aws-secrets-manager)
    - [Global Configurations](https://aws-sdk-pandas.readthedocs.io/en/2.20.1/api.html#global-configurations)
  - [**License**](https://github.com/aws/aws-sdk-pandas/blob/main/LICENSE.txt)
  - [**Contributing**](https://github.com/aws/aws-sdk-pandas/blob/main/CONTRIBUTING.md)



  The best way to interact with our team is through GitHub. You can open an [issue](https://github.com/aws/aws-sdk-pandas/issues/new/choose) and choose from one of our templates for bug reports, feature requests...
  You may also find help on these community resources:
  * The #aws-sdk-pandas Slack [channel](https://join.slack.com/t/aws-sdk-pandas/shared_invite/zt-sxdx38sl-E0coRfAds8WdpxXD2Nzfrg)
  * Ask a question on [Stack Overflow](https://stackoverflow.com/questions/tagged/awswrangler)
    and tag it with `awswrangler`



  Please [send a Pull Request](https://github.com/aws/aws-sdk-pandas/edit/main/README.md) with your resource reference and @githubhandle.

  - [Optimize Python ETL by extending Pandas with AWS SDK for pandas](https://aws.amazon.com/blogs/big-data/optimize-python-etl-by-extending-pandas-with-aws-data-wrangler/) [[@igorborgest](https://github.com/igorborgest)]
  - [Reading Parquet Files With AWS Lambda](https://aprakash.wordpress.com/2020/04/14/reading-parquet-files-with-aws-lambda/) [[@anand086](https://github.com/anand086)]
  - [Transform AWS CloudTrail data using AWS SDK for pandas](https://aprakash.wordpress.com/2020/09/17/transform-aws-cloudtrail-data-using-aws-data-wrangler/) [[@anand086](https://github.com/anand086)]
  - [Rename Glue Tables using AWS SDK for pandas](https://ananddatastories.com/rename-glue-tables-using-aws-sdk-pandas/) [[@anand086](https://github.com/anand086)]
  - [Getting started on AWS SDK for pandas and Athena](https://medium.com/@dheerajsharmainampudi/getting-started-on-aws-sdk-pandas-and-athena-7b446c834076) [[@dheerajsharma21](https://github.com/dheerajsharma21)]
  - [Simplifying Pandas integration with AWS data related services](https://medium.com/@bv_subhash/aws-sdk-pandas-simplifying-pandas-integration-with-aws-data-related-services-2b3325c12188) [[@bvsubhash](https://github.com/bvsubhash)]
  - [Build an ETL pipeline using AWS S3, Glue and Athena](https://www.linkedin.com/pulse/build-etl-pipeline-using-aws-s3-glue-athena-data-wrangler-tom-reid/) [[@taupirho](https://github.com/taupirho)]



  Enabling internal logging examples:

  ```py3
  import logging
  logging.basicConfig(level=logging.INFO, format="[s][s] s")
  logging.getLogger("awswrangler").setLevel(logging.DEBUG)
  logging.getLogger("botocore.credentials").setLevel(logging.CRITICAL)
  ```

  Into AWS lambda:

  ```py3
  import logging
  logging.getLogger("awswrangler").setLevel(logging.DEBUG)
  ```



  Knowing which companies are using this library is important to help prioritize the project internally.
  If you would like us to include your company’s name and/or logo in the README file to indicate that your company is using the AWS SDK for pandas, please raise a "Support Us" issue. If you would like us to display your company’s logo, please raise a linked pull request to provide an image file for the logo. Note that by raising a Support Us issue (and related pull request), you are granting AWS permission to use your company’s name (and logo) for the limited purpose described here and you are confirming that you have authority to grant such permission.

  - [Amazon](https://www.amazon.com/)
  - [AWS](https://aws.amazon.com/)
  - [Cepsa](https://cepsa.com) [[@alvaropc](https://github.com/alvaropc)]
  - [Cognitivo](https://www.cognitivo.ai/) [[@msantino](https://github.com/msantino)]
  - [Digio](https://www.digio.com.br/) [[@afonsomy](https://github.com/afonsomy)]
  - [DNX](https://www.dnx.solutions/) [[@DNXLabs](https://github.com/DNXLabs)]
  - [Fortescue Future Industries](https://ffi.com.au/) [[@spencervoorend](https://github.com/spencervoorend)]
  - [Funcional Health Tech](https://www.funcionalcorp.com.br/) [[@webysther](https://github.com/webysther)]
  - [Funding Circle](https://www.fundingcircle.com/) [[@pfig](https://github.com/pfig)]
  - [Infomach](https://www.infomach.com.br/)
  - [Informa Markets](https://www.informamarkets.com/en/home.html) [[@mateusmorato]](http://github.com/mateusmorato)
  - [LINE TV](https://www.linetv.tw/) [[@bryanyang0528](https://github.com/bryanyang0528)]
  - [Magnataur](https://magnataur.com) [[@brianmingus2](https://github.com/brianmingus2)]
  - [M4U](https://www.m4u.com.br/) [[@Thiago-Dantas](https://github.com/Thiago-Dantas)]
  - [NBCUniversal](https://www.nbcuniversal.com/) [[@vibe](https://github.com/vibe)]
  - [nrd.io](https://nrd.io/) [[@mrtns](https://github.com/mrtns)]
  - [OKRA Technologies](https://okra.ai) [[@JPFrancoia](https://github.com/JPFrancoia), [@schot](https://github.com/schot)]
  - [Pier](https://www.pier.digital/) [[@flaviomax](https://github.com/flaviomax)]
  - [Pismo](https://www.pismo.io/) [[@msantino](https://github.com/msantino)]
  - [ringDNA](https://www.ringdna.com/) [[@msropp](https://github.com/msropp)]
  - [Serasa Experian](https://www.serasaexperian.com.br/) [[@andre-marcos-perez](https://github.com/andre-marcos-perez)]
  - [Shipwell](https://shipwell.com/) [[@zacharycarter](https://github.com/zacharycarter)]
  - [strongDM](https://www.strongdm.com/) [[@mrtns](https://github.com/mrtns)]
  - [Thinkbumblebee](https://www.thinkbumblebee.com/) [[@dheerajsharma21]](https://github.com/dheerajsharma21)
  - [VTEX](https://vtex.com/us-en/) [[@igorborgest]](https://github.com/igorborgest)
  - [Zillow](https://www.zillow.com/) [[@nicholas-miles]](https://github.com/nicholas-miles)


