# packages

pkgId: 59be0ce37d716ebf0067df2a4d675ab602cd7417bc0233e07ff1fd84bc938ae9
name: python-absum
arch: src
version: 0.2.3
epoch: 0
release: 1
summary: Abstractive Summarization for Data Augmentation
url: https://github.com/aaronbriel/absum
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-absum-0.2.3-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
  [![PyPI version](https://badge.fury.io/py/absum.svg)](https://badge.fury.io/py/absum)
  ![Python 3.6, 3.7](https://img.shields.io/badge/python-3.6%20%7C%203.7-green.svg)


  Imbalanced class distribution is a common problem in ML. Undersampling combined with oversampling are two methods of addressing this issue.
  A technique such as SMOTE can be effective for oversampling, although the problem becomes a bit more difficult with multilabel datasets.
  [MLSMOTE](https://www.sciencedirect.com/science/article/abs/pii/S0950705115002737) has been proposed, but the high dimensional nature of numerical vectors created from text can sometimes make other forms of data augmentation more appealing.

  absum is an NLP library that uses abstractive summarization to perform data augmentation in order to oversample under-represented classes in datasets. Recent developments in abstractive summarization make this approach optimal in achieving realistic data for the augmentation process.

  It uses the latest [Huggingface T5](https://huggingface.co/transformers/model_doc/t5.html) model by default, but is designed in a modular way to allow you to use any pre-trained or out-of-the-box Transformers models capable of abstractive summarization.
  absum is format agnostic, expecting only a dataframe containing text and all features. It also uses multiprocessing to achieve optimal performance.

  Singular summarization calls are also possible.


  1. Append counts or the number of rows to add for each feature are first calculated with a ceiling threshold. Namely, if a given feature has 1000 rows and the ceiling is 100, its append count will be 0.

  2. For each feature it then completes a loop from an append index range to the append count specified for that given feature. The append index is stored
  to allow for multi processing.

  3. An abstractive summarization is calculated for a specified size subset of all rows that uniquely have the given feature.
  If multiprocessing is set, the call to abstractive summarization is stored in a task array later passed to a sub-routine that runs the calls in parallel using the [multiprocessing](https://docs.python.org/2/library/multiprocessing.html) library, vastly reducing runtime.

  4. Each summarization is appended to a new dataframe with the respective features one-hot encoded.




  ```bash
  pip install absum
  ```



  ```bash
  git clone https://github.com/aaronbriel/absum.git
  pip install [--editable] .
  ```

  or

  ```bash
  pip install git+https://github.com/aaronbriel/absum.git
  ```



  absum expects a DataFrame containing a text column which defaults to 'text', and the remaining columns representing one-hot encoded features.
  If additional columns are present that you do not wish to be considered, you have the option to pass in specific one-hot encoded features as a comma-separated string to the 'features' parameter. All available parameters are detailed in the Parameters section below.

  ```bash
  import pandas as pd
  from absum import Augmentor

  csv = 'path_to_csv'
  df = pd.read_csv(csv)
  augmentor = Augmentor(df, text_column='review_text')
  df_augmented = augmentor.abs_sum_augment()

  df_augmented.to_csv(csv.replace('.csv', '-augmented.csv'), encoding='utf-8', index=False)
  ```
  Running singular summarization on any chunk of text is simple:
  ```
  text = chunk_of_text_to_summarize
  augmentor = Augmentor(min_length=100, max_length=200)
  output = augmentor.get_abstractive_summarization(text)
  ```
  NOTE:
  When running any summarizations you may see the following warning message which can be ignored:
  "Token indices sequence length is longer than the specified maximum sequence length for this model (2987 > 512).
  Running this sequence through the model will result in indexing errors". For more information refer to [this issue](https://github.com/huggingface/transformers/issues/1791).



  | Name | Type | Description |
  | ---- | ---- | ----------- |
  | df | (:class:`pandas.Dataframe`, `optional`, defaults to None) | Dataframe containing text and one-hot encoded features.
  | text_column | (:obj:`string`, `optional`, defaults to "text") | Column in df containing text.
  | features | (:obj:`string`, `optional`, defaults to None) | Comma-separated string of features to possibly augment data for.
  | device | (:class:`torch.device`, `optional`, 'cuda' or 'cpu') | Torch device to run on cuda if available otherwise cpu.
  | model | (:class:`~transformers.T5ForConditionalGeneration`, `optional`, defaults to T5ForConditionalGeneration.from_pretrained('t5-small')) | Model used for abstractive summarization.
  | tokenizer | (:class:`~transformers.T5Tokenizer`, `optional`, defaults to T5Tokenizer.from_pretrained('t5-small')) | Tokenizer used for abstractive summarization.
  | return_tensors | (:obj:str, `optional`, defaults to "pt") | Can be set to ‘tf’, ‘pt’ or ‘np’ to return respectively TensorFlow tf.constant, PyTorch torch.Tensor or Numpy :oj: np.ndarray instead of a list of python integers.
  | num_beams | (:obj:`int`, `optional`, defaults to 4) | Number of beams for beam search. Must be between 1 and infinity. 1 means no beam search. Default to 1.
  | no_repeat_ngram_size | (:obj:`int`, `optional`, defaults to 4 | If set to int > 0, all ngrams of size no_repeat_ngram_size can only occur once.
  | min_length | (:obj:`int`, `optional`, defaults to 10) | The min length of the sequence to be generated. Between 0 and infinity. Default to 10.
  | max_length | (:obj:`int`, `optional`, defaults to 50) | The max length of the sequence to be generated. Between min_length and infinity. Default to 50.
  | early_stopping | (:obj:`bool`, `optional`, defaults to True) | bool if set to True beam search is stopped when at least num_beams sentences finished per batch. Defaults to False as defined in configuration_utils.PretrainedConfig.
  | skip_special_tokens | (:obj:`bool`, `optional`, defaults to True) | Don't decode special tokens (self.all_special_tokens). Default: False.
  | num_samples | (:obj:`int`, `optional`, defaults to 100) | Number of samples to pull from dataframe with specific feature to use in generating new sample with Abstractive Summarization.
  | threshold | (:obj:`int`, `optional`, defaults to 3500) | Maximum ceiling for each feature, normally the under-sample max.
  | multiproc | (:obj:`bool`, `optional`, defaults to True) | If set, stores calls to abstractive summarization in array which is then passed to run_cpu_tasks_in_parallel to allow for increasing performance through multiprocessing.
  | debug | (:obj:`bool`, `optional`, defaults to True) | If set, prints generated summarizations.



  Please reference [this library](https://github.com/aaronbriel/absum) and the HuggingFace [pytorch-transformers](https://github.com/huggingface/pytorch-transformers) library if you use this work in a published or open-source project.


pkgId: ea4dd80839776520914b0262e6054f738b04c26ac58ae08979646f26ea84c224
name: python-abtoolkit
arch: src
version: 1.2.8
epoch: 0
release: 1
summary: Package with tools for AB testing
url: https://github.com/nikitosl/abtoolkit
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-abtoolkit-1.2.8-1.src.rpm
checksum_type: sha256
description:
  You can find examples of toolkit usage in [examples/](https://github.com/nikitosl/abtoolkit/tree/master/examples) directory.


pkgId: c4bb869bfcdec0d193d441b3c145c964abb81ba71e61bcb6427bcbca18ca014b
name: python-abuild
arch: src
version: 0.3.0
epoch: 0
release: 1
summary: A simple, language agnostic build tool
url: https://pypi.org/project/abuild/
rpm_license: BSD-3-Clause
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-abuild-0.3.0-1.src.rpm
checksum_type: sha256
description:
  When I was looking for a build tool for a (fairly simple) monorepo, I noticed
  that although there are many great ones, they all require considerable setup or
  they only work with one particular language. I was rather looking for a basic build tool
  that needs almost no setup and can handle a handful services in one repository
  with some frontend, some backend and maybe a bit of machine learning code.

  My goals for this project are
  - Setting up abuild for a simple setup should be (almost) no effort.
  - Code that hasn't changed shouldn't be re-build (that's kind of the point of a build tool).
  - If I write a service in a different language, I should be able to use the same build tool.

  To do this, `abuild` acts as a glue between existing language specific tools&mdash;in that
  sense calling it a "build tool" might almost be promising too much. It's rather a build tool
  manager for monorepos.

  <!--
  Here is some code to setup the repository so that I can use cram tests
    $ mkdir backend
    $ touch backend/tox.ini
    $ touch backend/Dockerfile
    $ mkdir frontend
    $ echo '{"scripts": {"test": "fake", "build": "fake"}}' > frontend/package.json
    $ mkdir tools
  -->



  You can install `abuild` from pypi with `pip install abuild`.

  This example looks at a very simple monorepo with a python backend that gets build into a docker container and a javascript frontend that gets build with `npm run build`. There is also a tools directory that shouldn't be build:
    $ tree
    .
    |-- backend
    |   |-- Dockerfile
    |   `-- tox.ini
    |-- frontend
    |   `-- package.json
    `-- tools

    3 directories, 3 files

  To set up `abuild` in a new monorepo, you can run

    $ abuild parse > abuild.yaml
    $ cat abuild.yaml
    components:
    - path: backend
      steps:
      - cmd: tox
      - cmd: docker buildx build .
    - path: frontend
      steps:
      - cmd: npm run test
      - cmd: npm run build


  As you can see, `abuild` understood the basics of the repository and created the skeleton of a config file. Feel free to update the config file by hand. For example, you could add names for the steps by setting `components.[].steps.[].name`. You could also delete (or add) steps to fit your needs.

  To build your services with `abuild`, you simply run `abuild build` in your project root. `abuild` maintains a state file `.abuild_state.json` that tracks your build status. Currently, the state is not synchronized between machines (which can be a bit of a hindrance of CI). However, you can commit the `.abuild_state.json` to your revision control system.





  - general:
   - Basic support for tags
   - support for deselecting tags


  - General: directory parsing supports makefiles


pkgId: 8fb28cddf2f394105cc0d600c36a68d63b39f19667c0442b819b327c08c1b52a
name: python-abulafia
arch: src
version: 0.2.2
epoch: 0
release: 1
summary: A tool for fair and reproducible crowdsourcing using Toloka
url: https://pypi.org/project/abulafia/
rpm_license: UNKNOWN
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-abulafia-0.2.2-1.src.rpm
checksum_type: sha256
description:
  𝚊𝚋𝚞𝚕𝚊𝚏𝚒𝚊 is a tool for creating and deploying tasks on the the [Toloka](https://toloka.ai) crowdsourcing platform.

  The tool allows you to create crowdsourcing tasks using pre-defined task interfaces and to configure their settings using [YAML](https://en.wikipedia.org/wiki/YAML) files.

  For a description of the tool and the motivation for its development, see this [publication](https://aclanthology.org/2022.latechclfl-1.2/).

  Please cite the following publication if you use the tool in your research.

  > Tuomo Hiippala, Helmiina Hotti, and Rosa Suviranta. 2022. Developing a tool for fair and reproducible use of paid crowdsourcing in the digital humanities. In *Proceedings of the 6th Joint SIGHUM Workshop on Computational Linguistics for Cultural Heritage, Social Sciences, Humanities and Literature*, pages 7–12, Gyeongju, Republic of Korea. International Conference on Computational Linguistics.

  For convenience, you can use the BibTeX entry below.

  ```text
  @inproceedings{hiippala-etal-2022-developing,
      title = "Developing a tool for fair and reproducible use of paid crowdsourcing in the digital humanities",
      author = "Hiippala, Tuomo and Hotti, Helmiina and Suviranta, Rosa",
      booktitle = "Proceedings of the 6th Joint SIGHUM Workshop on Computational Linguistics for Cultural Heritage, Social Sciences, Humanities and Literature",
      month = oct,
      year = "2022",
      address = "Gyeongju, Republic of Korea",
      publisher = "International Conference on Computational Linguistics",
      url = "https://aclanthology.org/2022.latechclfl-1.2",
      pages = "7--12",
      abstract = "This system demonstration paper describes ongoing work on a tool for fair and reproducible use of paid crowdsourcing in the digital humanities. Paid crowdsourcing is widely used in natural language processing and computer vision, but has been rarely applied in the digital humanities due to ethical concerns. We discuss concerns associated with paid crowdsourcing and describe how we seek to mitigate them in designing the tool and crowdsourcing pipelines. We demonstrate how the tool may be used to create annotations for diagrams, a complex mode of expression whose description requires human input.",
  }
  ```



  You can install the tool from [PyPI](https://pypi.org/project/abulafia/) using the following command: `pip install abulafia`

  Alternatively, you can clone this repository and install the tool locally. Move to the directory that contains the repository and type: `pip install .`



  See the directory [`examples`](/examples) for documentation and practical examples.

  To deploy your crowdsourcing tasks to Toloka, the tool needs to read your credentials from a JSON file e.g. `creds.json`. Never add this file to version control.

  The file must contain the following key/value pairs in JSON:

  ```json
  {
      "token": "YOUR_OAUTH_TOKEN",
      "mode": "SANDBOX"
  }
  ```

  When you have tested your tasks in the Toloka sandbox, change the value for `"mode"` from `"SANDBOX"` to `"PRODUCTION"` to deploy the tasks on Toloka.

  The screenshot below illustrates tool in action.

  <img src="https://s3.datacloud.helsinki.fi/crowdsrc:instructions/abulafia-screenshot.png" width=700>



  If you have questions about the tool, feel free to contact tuomo.hiippala (at) helsinki.fi or open an issue on GitHub.


pkgId: 68e3a1be656b705b76d552a869174fcbae47e9862b498d99386316d69a33e751
name: python-abuse_whois
arch: src
version: 0.10.0
epoch: 0
release: 1
summary: Find where to report a domain for abuse
url: https://github.com/ninoseki/abuse_whois
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-abuse_whois-0.10.0-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/abuse-whois.svg)](https://badge.fury.io/py/abuse-whois)
  [![Python CI](https://github.com/ninoseki/abuse_whois/actions/workflows/test.yml/badge.svg)](https://github.com/ninoseki/abuse_whois/actions/workflows/test.yml)
  [![Coverage Status](https://coveralls.io/repos/github/ninoseki/abuse_whois/badge.svg?branch=main)](https://coveralls.io/github/ninoseki/abuse_whois?branch=main)

  A Sigma and RDAP/Whois based abuse contacts finder.

  ![img](./images/overview.jpg)

  This tool is highly inspired from the following libraries:

  - https://github.com/bradleyjkemp/abwhose
  - https://github.com/certsocietegenerale/abuse_finder



  - Query a given address via RDAP (fallback to Whois is if RDAP fails)
  - Check a query result with Sigma rules and find contacts (fallback to regex if there is no match)



  - Python 3.10+



  ```bash
  pip install abuse_whois


  pip install abuse_whois[api]
  ```





  ```python
  from abuse_whois import get_abuse_contacts

  await get_abuse_contacts("1.1.1.1")
  await get_abuse_contacts("github.com")
  await get_abuse_contacts("https://github.com")
  await get_abuse_contacts("foo@example.com")
  ```



  ```bash
  abuse_whois 1.1.1.1
  abuse_whois example.com
  abuse_whois foo@example.com
  abuse_whois http://example.com
  ```



  ```bash
  $ uvicorn abuse_whois.api.main:app
  INFO:     Started server process [2283]
  INFO:     Waiting for application startup.
  INFO:     Application startup complete.
  INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

  $ http localhost:8000/api/whois/ address=https://github.com
  ```



  ```bash
  git clone https://github.com/ninoseki/abuse_whois
  cd abuse_whois
  docker build . -t abuse-whois
  docker run -i -d -p 8000:8000 abuse-whois
  ```



  All settings can be done via environment variables or `.env` file.

  | Name                                     | Type                  | Default  | Desc.                                                   |
  | ---------------------------------------- | --------------------- | -------- | ------------------------------------------------------- |
  | QUERY_TIMEOUT                            | int                   | 10       | Timeout value for whois lookup (seconds)                |
  | QUERY_CACHE_SIZE                         | int                   | 1024     | Cache size for whois lookup                             |
  | QUERY_CACHE_TTL                          | int                   | 3600     | Cache TTL value for whois lookup (seconds)              |
  | QUERY_MAX_RETRIES                        | int                   | 3        | Max retries on timeout error                            |
  | RULE_EXTENSIONS                          | CommaSeparatedStrings | yaml,yml | Rule file extensions                                    |
  | ADDITIONAL_WHOIS_RULE_DIRECTORY          | str                   |          | Additional contains contain whois rule files            |
  | ADDITIONAL_SHARED_HOSTING_RULE_DIRECTORY | str                   |          | Additional directory contains shared hosting rule files |



  `abuse_whois` works based on a combination of static rules and a parsing result of whois response.

  - Rules:
    - [Registrar and hosting provider](https://github.com/ninoseki/abuse_whois/wiki/Registrar-and-Hosting-Provider)
    - [Shared hosting provider](https://github.com/ninoseki/abuse_whois/wiki/Shared-Hosting)

  Please submit a PR (or submit a feature request) if you find something missing.


pkgId: 00bfaccd2a55a5a23ea5e420500a5a803dca0fb3a77f3908567bc6481c0cf820
name: python-abusify-id
arch: src
version: 0.13
epoch: 0
release: 1
summary: Abusiveness Verification in Bahasa Indonesia
url: https://pypi.org/project/abusify-id/
rpm_license: UNKNOWN
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-abusify-id-0.13-1.src.rpm
checksum_type: sha256
description:
  Abusiveness Verification in Bahasa Indonesia. Predict the abusiveness level of a sentence, detect abusive words, and filter abusive words.

  Live Demo: https://abusifyid.streamlit.app/



  All requirements below have been installed automatically. Install manually if there are problems:

  * [Python 2.6 or higher]
  * [scikit-learn](https://pypi.org/project/scikit-learn/)
  * [pandas](https://pypi.org/project/pandas/)
  * [nltk](https://pypi.org/project/nltk/)
  * [pymysql](https://pypi.org/project/pymysql/)
  * [python-decouple](https://pypi.org/project/python-decouple/)
  * [fuzzywuzzy](https://pypi.org/project/fuzzywuzzy/)
  * [python-Levenshtein](https://pypi.org/project/python-Levenshtein/)



  Install using `pip`.

  ```
  pip install abusify-id
  ```





  Predict the abusiveness level of a sentence, using text input or `.txt` file input.

  ```
  import abusify_id as ai
  text = "Anjing, lu tolol ya!"
  level = ai.predict_abusiveness(text)
  print(level)
  ... 99.59%
  ```

  ```
  import abusify_id as ai
  ai.predict_abusiveness_file("input.txt", "output.txt")
  ... The results have been saved in a file: output.txt
  ```

  with `decimal_places`:

  ```
  import abusify_id as ai
  text = "Anjing, lu tolol ya!"
  level = ai.predict_abusiveness(text, decimal_places=5)
  print(level)
  ... 99.59093%
  ```

  ```
  import abusify_id as ai
  ai.predict_abusiveness_file("input.txt", "output.txt", decimal_places=4)
  ... The results have been saved in a file: output.txt
  ```



  ```
  import abusify_id as ai
  text = "Anjing, lu tolol ya!"
  detect = ai.abusiveword_detector(text)
  print(detect)
  ... [Anjing](https://stopucapkasar.com/detail.php?id=9), [Tolol](https://stopucapkasar.com/detail.php?id=95)
  ```



  ```
  import abusify_id as ai
  text = "Anjing, lu tolol ya!"
  filter = ai.abusiveword_filter(text)
  print(filter)
  ... Sialan, lu bebal ya!
  ```



  Visit our website: https://stopucapkasar.com/


pkgId: 988aa306b126ff6c5ca12b8ed21ae43fb9316a160f55e655a5a790dde7ab9bf5
name: python-abutils
arch: src
version: 0.4.18
epoch: 0
release: 1
summary: Utilities for analysis of adaptive immune receptor repertoire (AIRR) data
url: https://github.com/briney/abutils
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-abutils-0.4.18-1.src.rpm
checksum_type: sha256
description:
  ![](https://img.shields.io/pypi/v/abutils.svg?colorB=blue)
  [![tests](https://github.com/briney/abutils/actions/workflows/pytest.yml/badge.svg)](https://github.com/briney/abutils/actions/workflows/pytest.yml)
  [![Documentation Status](https://readthedocs.org/projects/abutils/badge/?version=latest)](https://abutils.readthedocs.io/en/latest/?badge=latest)
  ![](https://img.shields.io/pypi/pyversions/abutils.svg)
  ![](https://img.shields.io/badge/license-MIT-blue.svg)



  Models, functions and visualization tools for working with adaptive immune receptore repertoire (AIRR) data. The primary purpose of `abutils` is to provide generalizable tools suitable for direct use analyzing bulk AIRR datasets, and is used by [`scab`](https://github.com/briney/scab) for single cell AIRR analysis. `abutils` is a core component of the ab\[x\] toolkit for AIRR data analysis.

    - Source code: [github.com/briney/abutils](https://github.com/briney/abutils)
    - Documentation: [abutils.readthedocs.org](http://abutils.readthedocs.org)
    - Download: [pypi.python.org/pypi/abutils](https://pypi.python.org/pypi/abutils)
    <!-- - Docker: [hub.docker.com/r/briney/abstar/](https://hub.docker.com/r/briney/abstar/)   -->


  `pip install abutils`



  We've tried to design the  `abutils` API to be intuitive yet powerful, with the goal of enabling both interactive analyses (via environments like Jupyter notebooks) as well as integration of `abutils` tools into more complex analysis pipelines and/or standalone software tools. See the [documentation](http://abutils.readthedocs.org) for more detail about the API. As always, any feedback is greatly appreciated!!



  You can run the complete `abutils` test suite by first installing `pytest`:
  ```
  pip install pytest
  ```

  followed by:

  ```
  git clone https://github.com/briney/abutils
  cd abutils
  pytest
  ```

  This test suite is automatically run following every commit, and is tested against all supported versions of Python.



  **python 3.8+**

  abstar
  baltic
  biopython
  celery
  ete3
  fastcluster
  matplotlib
  mnemonic
  natsort
  numpy
  pandas
  paramiko
  parasail
  pytest
  python-circos
  python-Levenshtein
  pyyaml
  sample-sheet
  scikit-learn
  scipy
  seaborn
  smart_open

  All of the above dependencies can be installed with `pip`, and will be installed automatically when installing `abutils` with `pip`.

  `abutils` packages several additional external binaries that are required for specific functions:

  * ``abutils.tl.mafft`` uses [MAFFT](https://mafft.cbrc.jp/alignment/software/)
  * ``abutils.tl.muscle`` uses [MUSCLE](https://www.drive5.com/muscle/)
  * ``abutils.tl.cluster`` requires:
    * [CD-HIT](https://cd-hit.org)
    * [MMseqs2](https://github.com/soedinglab/MMseqs2)
    * [VSEARCH](https://github.com/torognes/vsearch)
  * ``abutils.tl.fasttree`` requires [FastTree](http://www.microbesonline.org/fasttree/)

  Althogh these binaries are all packaged into `abutils`, each respective `abutils` function provides the option to supply a different binary path in case you'd prefer to use a different version or an alternate compilation.


pkgId: 0d7f1df1c7485d002860387829a068b82b86a38d800cbdb3b85d5648846316c9
name: python-abydos
arch: src
version: 0.5.0
epoch: 0
release: 1
summary: Abydos NLP/IR library
url: https://github.com/chrislit/abydos
rpm_license: GPLv3+
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-abydos-0.5.0-1.src.rpm
checksum_type: sha256
description:
  +------------------+------------------------------------------------------+
  | CI & Test Status | |travis| |circle| |azure| |semaphore| |coveralls|    |
  +------------------+------------------------------------------------------+
  | Code Quality     | |codeclimate| |scrutinizer| |codacy| |codefactor|    |
  +------------------+------------------------------------------------------+
  | Dependencies     | |requires| |snyk| |pyup| |cii|                       |
  +------------------+------------------------------------------------------+
  | Local Analysis   | |pylint| |flake8| |pydocstyle| |sloccount| |black|   |
  +------------------+------------------------------------------------------+
  | Usage            | |docs| |mybinder| |license| |sourcerank| |zenodo|    |
  +------------------+------------------------------------------------------+
  | Contribution     | |openhub| |gh-commits| |gh-issues| |gh-stars|        |
  +------------------+------------------------------------------------------+
  | PyPI             | |pypi| |pypi-dl| |pypi-ver|                          |
  +------------------+------------------------------------------------------+
  | conda-forge      | |conda| |conda-dl| |conda-platforms|                 |
  +------------------+------------------------------------------------------+
  |
  |
  | `Abydos NLP/IR library <https://github.com/chrislit/abydos>`_
  | Copyright 2014-2020 by Christopher C. Little
  Abydos is a library of phonetic algorithms, string distance measures & metrics,
  stemmers, and string fingerprinters including:
  - Phonetic algorithms
      - Robert C. Russell's Index
      - American Soundex
      - Refined Soundex
      - Daitch-Mokotoff Soundex
      - Kölner Phonetik
      - NYSIIS
      - Match Rating Algorithm
      - Metaphone
      - Double Metaphone
      - Caverphone
      - Alpha Search Inquiry System
      - Fuzzy Soundex
      - Phonex
      - Phonem
      - Phonix
      - SfinxBis
      - phonet
      - Standardized Phonetic Frequency Code
      - Statistics Canada
      - Lein
      - Roger Root
      - Oxford Name Compression Algorithm (ONCA)
      - Eudex phonetic hash
      - Haase Phonetik
      - Reth-Schek Phonetik
      - FONEM
      - Parmar-Kumbharana
      - Davidson's Consonant Code
      - SoundD
      - PSHP Soundex/Viewex Coding
      - an early version of Henry Code
      - Norphone
      - Dolby Code
      - Phonetic Spanish
      - Spanish Metaphone
      - MetaSoundex
      - SoundexBR
      - NRL English-to-phoneme
      - Beider-Morse Phonetic Matching
  - String distance metrics
      - Levenshtein distance
      - Optimal String Alignment distance
      - Levenshtein-Damerau distance
      - Hamming distance
      - Tversky index
      - Sørensen–Dice coefficient & distance
      - Jaccard similarity coefficient & distance
      - overlap similarity & distance
      - Tanimoto coefficient & distance
      - Minkowski distance & similarity
      - Manhattan distance & similarity
      - Euclidean distance & similarity
      - Chebyshev distance
      - cosine similarity & distance
      - Jaro distance
      - Jaro-Winkler distance (incl. the strcmp95 algorithm variant)
      - Longest common substring
      - Ratcliff-Obershelp similarity & distance
      - Match Rating Algorithm similarity
      - Normalized Compression Distance (NCD) & similarity
      - Monge-Elkan similarity & distance
      - Matrix similarity
      - Needleman-Wunsch score
      - Smith-Waterman score
      - Gotoh score
      - Length similarity
      - Prefix, Suffix, and Identity similarity & distance
      - Modified Language-Independent Product Name Search (MLIPNS) similarity &
        distance
      - Bag distance
      - Editex distance
      - Eudex distances
      - Sift4 distance
      - Baystat distance & similarity
      - Typo distance
      - Indel distance
      - Synoname
  - Stemmers
      - the Lovins stemmer
      - the Porter and Porter2 (Snowball English) stemmers
      - Snowball stemmers for German, Dutch, Norwegian, Swedish, and Danish
      - CLEF German, German plus, and Swedish stemmers
      - Caumann's German stemmer
      - UEA-Lite Stemmer
      - Paice-Husk Stemmer
      - Schinke Latin stemmer
      - S stemmer
  - String Fingerprints
      - string fingerprint
      - q-gram fingerprint
      - phonetic fingerprint
      - Pollock & Zomora's skeleton key
      - Pollock & Zomora's omission key
      - Cisłak & Grabowski's occurrence fingerprint
      - Cisłak & Grabowski's occurrence halved fingerprint
      - Cisłak & Grabowski's count fingerprint
      - Cisłak & Grabowski's position fingerprint


pkgId: 04db2bf327fa40c65af14eb301526d0291866c4354bc2d37279ce0e671f283ab
name: python-ac-imandrill-periship
arch: src
version: 0.0.9
epoch: 0
release: 1
summary: Transactional Email MailChimp Helper Functions
url: https://pypi.org/project/ac-imandrill-periship/
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-ac-imandrill-periship-0.0.9-1.src.rpm
checksum_type: sha256
description:
  **Explanation**
  *list_all_templates(api_key)*
  > Given a valid API key (string), the function will return a list of
  > template slugs and names.
  >
  >**Example:**
  >
  >```
  >api_key = "abcd1234567"
  >list_of_templates = list_all_templates(api_key)
  ># list_of_templates could contain:
  ># [ {'slug': 'example-template', 'name': 'Example Template'} ]
  >```
  *template_merge_tags(api_key, template_name, merge_language)*
  > Given a valid API key (string), template name or slug (string),
  > and specified merge tag language (string), the function will
  > return a list of merge tags in that template. However, there may
  > be some merge tags that will be addressed somewhere else. Thus,
  > do not need to be defined in global_merge_vars or merge_vars.
  >
  >**Example:**
  >
  >```
  >api_key = "abcd1234567"
  >template_name = "example-template" # can also be "Example Template"
  >merge_language = "mailchimp" # or "handlebars"
  >list_of_merge_tags = template_merge_tags(api_key, template_name, merge_language)
  ># list_of_merge_tags could contain:
  ># {'merge_tags': ['subject', 'fullname', 'activity']}
  >```
  > 'subject' will be defined somewhere else, so it does not need to be
  > defined under global_merge_vars or merge_vars (this is applicable to every
  > template)
  *send_template(api_key, template_name, fields)*
  > Given a valid API key (string), template name or slug (string),
  > and fields (struct), the function will return Mandrill's API JSON
  > response.
  >
  >**Example:**
  >
  >```
  >api_key = "abcd1234567"
  >template_name = "example-template" # can also be "Example Template"
  >fields = {
  >   'subject': 'This is an example',
  >   'from_email': 'example@example.com',
  >   'from_name': 'Example Name',
  >   'to': [
  >       {
  >           'email': 'rcpt@example.com',
  >           'name': 'Example Rcpt',
  >           'type': 'to' #type as is
  >       },
  >       {
  >           'email': 'rcpt2@example.com',
  >           'name': 'Example Rcpt2',
  >           'type': 'to' #type as is
  >       }
  >   ],
  >   'reply-to': 'replyto@example.com',
  >   'global_merge_vars': [
  >       {
  >           'name': 'merge tag name',
  >           'content': 'replace merge tag with'
  >       }
  >   ],
  >   'merge_tags': [
  >       {
  >           'rcpt': 'rcpt2@example.com',
  >           'vars': [
  >               {
  >                   'name': 'merge tag name',
  >                   'content': 'replace merge tag content'
  >               }
  >           ]
  >       }
  >   ],
  >   'merge_language': 'mailchimp'
  >}
  >
  >response = send_template(api_key, template_name, fields)
  ># response could contain:
  ># [
  >#   {'email': 'rcpt@example.com', 'status': 'sent', '_id': '12349853'},
  >#   {'email': 'rcpt2@example.com', 'status': 'sent', '_id': '63313685'}
  ># ]
  >```
  > not every attribute is required (ex: just sending generic info to everyone,
  > so don't need 'merge_vars')
  >
  >If the attribute is not needed, you can simply delete it in its entirety.
  >
  > 'global_merge_vars' vs 'merge_vars' :: one will replace the merge tags
  > with the same info for everyone, and the other will override with specific
  > info to a certain recipient (in the case above, Example Rcpt2)
  >
  > 'merge_language' must be either 'mailchimp' or 'handlebars', this just
  > depends on what your template is using
  > *|MERGETAG|* (mailchimp) or {{*MERGETAG*}} (handlebars)
  *send_template_attachment(api_key, template_name, fields)*
  > Similar to *send_template*, but with an additional attribute in 'fields'
  >
  >**Example:**
  >
  >```
  >api_key = "abcd1234567"
  >template_name = "example-template" # can also be "Example Template"
  >fields = {
  >   'subject': 'This is an example',
  >   'from_email': 'example@example.com',
  >   'from_name': 'Example Name',
  >   'to': [
  >       {
  >           'email': 'rcpt@example.com',
  >           'name': 'Example Rcpt',
  >           'type': 'to' #type as is
  >       },
  >       {
  >           'email': 'rcpt2@example.com',
  >           'name': 'Example Rcpt2',
  >           'type': 'to' #type as is
  >       }
  >   ],
  >   'reply-to': 'replyto@example.com',
  >   'global_merge_vars': [
  >       {
  >           'name': 'merge tag name',
  >           'content': 'replace merge tag with'
  >       }
  >   ],
  >   'merge_tags': [
  >       {
  >           'rcpt': 'rcpt2@example.com',
  >           'vars': [
  >               {
  >                   'name': 'merge tag name',
  >                   'content': 'replace merge tag content'
  >               }
  >           ]
  >       }
  >   ],
  >   'merge_language': 'mailchimp',
  >   'attachments': [
  >       {
  >           'name': 'myfile.txt'
  >       },
  >       {
  >           'name': 'myimage.png'
  >       }
  >   ]
  >}
  >
  >response = send_template_attachment(api_key, template_name, fields)
  ># response could contain:
  ># [
  >#   {'email': 'rcpt@example.com', 'status': 'sent', '_id': '12349853'},
  >#   {'email': 'rcpt2@example.com', 'status': 'sent', '_id': '63313685'}
  ># ]
  >```
  > The same comments from *send_template* apply. If the attribute is not needed,
  > you can simply delete it in its entirety.
  >
  > 'attachments' can support any file type, although, images will be sent as
  > an attachment, not an embedded image.
  >
  > This works by using base64 to convert the file into a base64-encoded string,
  > which is then sent through Mandrill's API.
  *retrieve_data(api_key, query)*
  > Given a valid API key (string) and a query (struct), the function returns
  > an array of matching messages.
  >
  >**Example:**
  >
  >```
  >api_key = "abcd1234567"
  >message = {
  >   'query': 'rcpt@example.com',
  >   'date_from': '2020-06-29',
  >   'date_to': '2020-06-30',
  >   'tags': [ ]
  >   'limit': 100
  >}
  >matching_msgs = retrieve_data(api_key, messgae)
  ># matching_msgs could contain:
  ># [
  >#   {
  >#      a bunch of fields that Mandrill's API returns per matching message
  >#   }
  ># ]
  >```
  > none of the attributes in 'message' are required, but they help narrow
  > the returned results to messages that are more relevant to what you're
  > looking for. Please note how the 'date_from' and 'date_to' strings are
  > formatted.
  >
  > If the attribute is not needed, you can simply delete it in its entirety.
  >
  [Github-flavored Markdown](https://guides.github.com/features/mastering-markdown/)


pkgId: 753586f33a8414c7ea991e4d2ae26b507250c7139da204cd65cf60c055387d32
name: python-ac-infinity-ble
arch: src
version: 0.4.3
epoch: 0
release: 1
summary: AC Infinity BLE Controller
url: https://github.com/hunterjm/ac-infinity-ble
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-ac-infinity-ble-0.4.3-1.src.rpm
checksum_type: sha256
description:
  <p align="center">
    <a href="https://github.com/hunterjm/ac-infinity-ble/actions/workflows/ci.yml?query=branch%3Amain">
      <img src="https://img.shields.io/github/actions/workflow/status/hunterjm/ac-infinity-ble/ci.yml?branch=main&label=CI&logo=github&style=flat-square" alt="CI Status" >
    </a>
    <a href="https://ac-infinity-ble.readthedocs.io">
      <img src="https://img.shields.io/readthedocs/ac-infinity-ble.svg?logo=read-the-docs&logoColor=fff&style=flat-square" alt="Documentation Status">
    </a>
    <a href="https://codecov.io/gh/hunterjm/ac-infinity-ble">
      <img src="https://img.shields.io/codecov/c/github/hunterjm/ac-infinity-ble.svg?logo=codecov&logoColor=fff&style=flat-square" alt="Test coverage percentage">
    </a>
  </p>
  <p align="center">
    <a href="https://python-poetry.org/">
      <img src="https://img.shields.io/badge/packaging-poetry-299bd7?style=flat-square&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAASCAYAAABrXO8xAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJJSURBVHgBfZLPa1NBEMe/s7tNXoxW1KJQKaUHkXhQvHgW6UHQQ09CBS/6V3hKc/AP8CqCrUcpmop3Cx48eDB4yEECjVQrlZb80CRN8t6OM/teagVxYZi38+Yz853dJbzoMV3MM8cJUcLMSUKIE8AzQ2PieZzFxEJOHMOgMQQ+dUgSAckNXhapU/NMhDSWLs1B24A8sO1xrN4NECkcAC9ASkiIJc6k5TRiUDPhnyMMdhKc+Zx19l6SgyeW76BEONY9exVQMzKExGKwwPsCzza7KGSSWRWEQhyEaDXp6ZHEr416ygbiKYOd7TEWvvcQIeusHYMJGhTwF9y7sGnSwaWyFAiyoxzqW0PM/RjghPxF2pWReAowTEXnDh0xgcLs8l2YQmOrj3N7ByiqEoH0cARs4u78WgAVkoEDIDoOi3AkcLOHU60RIg5wC4ZuTC7FaHKQm8Hq1fQuSOBvX/sodmNJSB5geaF5CPIkUeecdMxieoRO5jz9bheL6/tXjrwCyX/UYBUcjCaWHljx1xiX6z9xEjkYAzbGVnB8pvLmyXm9ep+W8CmsSHQQY77Zx1zboxAV0w7ybMhQmfqdmmw3nEp1I0Z+FGO6M8LZdoyZnuzzBdjISicKRnpxzI9fPb+0oYXsNdyi+d3h9bm9MWYHFtPeIZfLwzmFDKy1ai3p+PDls1Llz4yyFpferxjnyjJDSEy9CaCx5m2cJPerq6Xm34eTrZt3PqxYO1XOwDYZrFlH1fWnpU38Y9HRze3lj0vOujZcXKuuXm3jP+s3KbZVra7y2EAAAAAASUVORK5CYII=" alt="Poetry">
    </a>
    <a href="https://github.com/ambv/black">
      <img src="https://img.shields.io/badge/code%20style-black-000000.svg?style=flat-square" alt="black">
    </a>
    <a href="https://github.com/pre-commit/pre-commit">
      <img src="https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=flat-square" alt="pre-commit">
    </a>
  </p>
  <p align="center">
    <a href="https://pypi.org/project/ac-infinity-ble/">
      <img src="https://img.shields.io/pypi/v/ac-infinity-ble.svg?logo=python&logoColor=fff&style=flat-square" alt="PyPI Version">
    </a>
    <img src="https://img.shields.io/pypi/pyversions/ac-infinity-ble.svg?style=flat-square&logo=python&amp;logoColor=fff" alt="Supported Python versions">
    <img src="https://img.shields.io/pypi/l/ac-infinity-ble.svg?style=flat-square" alt="License">
  </p>

  AC Infinity BLE Controller



  Install this via pip (or your favourite package manager):

  `pip install ac-infinity-ble`



  Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):

  <!-- prettier-ignore-start -->
  <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
  <!-- markdownlint-disable -->
  <!-- markdownlint-enable -->
  <!-- ALL-CONTRIBUTORS-LIST:END -->
  <!-- prettier-ignore-end -->

  This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!



  This package was created with
  [Copier](https://copier.readthedocs.io/) and the
  [browniebroke/pypackage-template](https://github.com/browniebroke/pypackage-template)
  project template.


pkgId: 894b0e5c601b2f70f6d9455af41f6b86cd4260e821c5963d40ee29ee59e3fb1d
name: python-ac-websocket-server
arch: src
version: 0.7.dev25
epoch: 0
release: 1
summary: Assetto Corsa Websockets Server
url: https://pypi.org/project/ac-websocket-server/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-ac-websocket-server-0.7.dev25-1.src.rpm
checksum_type: sha256
description:
  The ac-websockets-server is a python based server to control a local Assetto Corsa dedicated server via a websockets connection from a remote host.



  You can install ac-websockets-server from PyPi:

  ```
  pip install ac-websockets-server
  ```

  The module is only supported in python3.





  The client protocol consists of single line commands which receive a Google style JSON object response.


  The following ACWS related commands are supported:

  - `shutdown now`  shutdown the ACWS server


  The following server related commands are supported:

  - `server drivers`  shows a summary of the active drivers on the server
  - `server entries`  shows a summary of the entry_list.ini contents
  - `server info`  shows a summary of the server
  - `server restart`   stops and starts the AC server
  - `server sessions`  shows a summary of configured sessions
  - `server set session_name enable|disable`  enable or disable a session
  - `server set session_name laps number_of_laps`  set number of laps for a session (only valid for RACE)
  - `server set session_name time number_of_mins`  set number of mins for a session
  - `server start` starts the AC server
  - `server stop`  stops the AC server
  - `server time number_of_minutes`  sets the number of minutes - needs server restart to take effect

  Excerts from the responses to these commands are shown below.



  ```

  {
      "data": {
          "drivers": {
              "Mark Hannon": {
                  "name": "Mark Hannon",
                  "host": "192.168.1.1",
                  "port": 50834,
                  "car": "bmw_m3_e30",
                  "guid": "9993334455599",
                  "ballast": 0,
                  "msg": "joining"
              },
              "Boof Head": {
                  "name": "Boof Head",
                  "host": "192.168.2.1",
                  "port": 50834,
                  "car": "bmw_m3_e30",
                  "guid": "123456768",
                  "ballast": 0,
                  "msg": "joining"
              },
              "Crazy Guy": {
                  "name": "Crazy Guy",
                  "host": "192.168.3.1",
                  "port": 50834,
                  "car": "bmw_m3_e30",
                  "guid": "7777777777777",
                  "ballast": 0,
                  "msg": "joining"
              }
          }
      }
  }
  ```


  ```

  {
      "data": {
          "entries": {
              "CAR_0": {
                  "car_id": "CAR_0",
                  "model": "dj_skipbarber_f2000",
                  "skin": "The9GAG",
                  "spectator_mode": "0",
                  "drivername": "",
                  "team": "",
                  "guid": "76561198102064903",
                  "ballast": "0",
                  "restrictor": "0"
              }
  ```


  ```

  {
      "Practice": {
          "type": "Practice",
          "laps": 0,
          "time": 120,
          "msg": ""
      },
      "Qualify": {
          "type": "Qualify",
          "laps": 0,
          "time": "10",
          "msg": ""
      },
      "Race": {
          "type": "Race",
          "laps": 20,
          "time": 0,
          "msg": ""
      }
  }
  ```

  ```


  {
      "data": {
          "msg": "Assetto Corsa server started"
      }
  }

      "data": {
          "serverInfo": {
              "version": "v1.15",
              "timestamp": "2022-07-22 10:42:32.8776464 +1000 AEST m=+0.007426800",
              "track": "rt_autodrom_most",
              "cars": "[\"ks_mazda_mx5_cup\"]",
              "msg": ""
          }
      }
  }
  ```


  The following grid related commands are supported:

  - `grid finish`  sets grid order based on latest race finishing order
  - `grid reverse`  sets grid order based on latest race REVERSED order
  - `grid order`  shows a summary of the current/updated grid order
  - `grid entries`  shows a summary of the all slots for/from entry_list.ini
  - `grid save` write the changes to the grid to the entry_list.ini file


  Setting reverse grid and then writing the result are shown below:

  ```

  {
      "data": {
          "msg": "test/results/2020_12_20_20_58_RACE.json parse SUCCESS"
      }
  }

  {
      "data": {
          "grid": {
              "1": "Keith",
              "2": ".SNRL.shille",
              "3": "Wayne",
              "4": "Russ S",
              "5": "Mark Hannon",
              "6": "RussG",
              "7": "ab156"
          }
      }
  }

  {
      "data": {
          "msg": "entry_list.ini file update SUCCESS"
      }
  }
  ```


  The following lobby related commands are supported:

  - `lobby info` shows the lobby info
  - `lobby restart`   re-registers to the lobby




  The following tracker related commands are supported:

  - `tracker start` starts the AC server
  - `tracker stop`  stops the AC server
  - `tracker restart`   stops and starts the AC server

  All commands require stracker.ini to be stored in the cfg directory and stracker.exe in the server root.


pkgId: 56fadd131619a1ed8b86b374d135d2861199e8e8f697daa3ad7747064d9f385e
name: python-acabim-common-services-cas
arch: src
version: 1.0.69
epoch: 0
release: 1
url: https://pypi.org/project/acabim-common-services-cas/
rpm_license: UNKNOWN
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acabim-common-services-cas-1.0.69-1.src.rpm
checksum_type: sha256
summary:
  Contains the model classes and interfaces which provide the services required for ACABIM Backend Services in Python


pkgId: 7ba163c3d26f8d46bb41a13e26d5768cff3cdb0fe9ed602f4bcb40b76185b351
name: python-academic-ads-bibtex
arch: src
version: 0.2.3
epoch: 0
release: 1
summary: Construct a proper BibTeX file to use with the Hugo Academic theme from ADS export
url: https://github.com/astrochun/academic-ads-bibtex
rpm_license: GNU GPLv3
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-academic-ads-bibtex-0.2.3-1.src.rpm
checksum_type: sha256
description:
  ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/academic-ads-bibtex)
  ![PyPI](https://img.shields.io/pypi/v/academic-ads-bibtex?color=blue)
  ![License](https://img.shields.io/github/license/astrochun/academic-ads-bibtex?color=blue)
  [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/astrochun/academic-ads-bibtex/Sphinx%20Docs%20Check?label=sphinx%20docs&color=blue)](https://github.com/astrochun/academic-ads-bibtex/actions?query=workflow%3A%22Sphinx+Docs+Check%22)

  ![PyPI - Downloads](https://img.shields.io/pypi/dm/academic-ads-bibtex?color=light%20green&label=PyPI-download&style=flat-square)
  ![Hits](https://hitcounter.pythonanywhere.com/count/tag.svg?url=https%3A%2F%2Fgithub.com%2Fastrochun%2Facademic-ads-bibtex)

  API documentation is available at: [ReadTheDocs](https://academic-ads-bibtex.readthedocs.io)

  - [Overview](#overview)
  - [Installation](#installation)
      - [From PyPi](#from-pypi)
      - [From source](#from-source)
  - [Examples](#examples)
  - [Versioning](#versioning)
  - [Authors](#authors)
  - [License](#license)



  The [Hugo Academic admin tool](https://github.com/wowchemy/hugo-academic-cli)
  allows for the ingestion of BibTeX records to add to the publication list.
  One easy solution is to use the NASA ADS to retrieve such records from a
  NASA ADS Library. However, such records often contain LaTeX `\newcommand`.
  For example:

  ```
  @ARTICLE{2016ApJS..226....5L,
     author = {{Ly}, C. and {Malhotra}, S. and {Malkan}, M.~A. and {Rigby}, J.~R. and
          {Kashikawa}, N. and {de los Reyes}, M.~A. and {Rhoads}, J.~E.
          },
      title = "{The Metal Abundances across Cosmic Time (MACT) Survey. I. Optical Spectroscopy in the Subaru Deep Field}",
    journal = {\apjs},
  archivePrefix = "arXiv",
     eprint = {1602.01089},
   keywords = {galaxies: abundances, galaxies: distances and redshifts, galaxies: evolution, galaxies: ISM, galaxies: photometry, galaxies: star formation},
       year = 2016,
      month = sep,
     volume = 226,
        eid = {5},
      pages = {5},
        doi = {10.3847/0067-0049/226/1/5},
     adsurl = {https://ui.adsabs.harvard.edu/abs/2016ApJS..226....5L},
    adsnote = {Provided by the SAO/NASA Astrophysics Data System}
  }
  ```

  Here, the journal name is simplified to "\apjs". This ends up propagating into
  Hugo Academic sites. To fix this, this simple pure Python script will convert
  such aliases into the full journal names. It uses a journal database to
  conduct the replacement.




  There are two ways to get the code:
  1. From [PyPi](https://pypi.org/project/academic-ads-bibtex/)
  2. From [source](https://github.com/astrochun/academic-ads-bibtex)

  But first, we recommend creating a separate (virtual) environment to avoid any
  possible conflicts with existing software that you used. Instructions are
  provided for `conda` and `virtualenv`.



  Using `conda`:

  ```bash
  (base) $ (sudo) conda create -n bibtex python=3.7
  (base) $ conda activate bibtex
  (bibtex) $ (sudo) pip install academic-ads-bibtex
  ```

  Using `virtualenv`:

  ```bash
  (base) $ (sudo) conda install virtualenv  # if not installed
  (base) $ mkdir academic-ads-bibtex
  (base) $ cd academic-ads-bibtex
  (base) $ virtualenv venv
  (base) $ source venv/bin/activate
  (venv) $ pip install academic-ads-bibtex
  ```



  Using `conda`:

  ```bash
  (base) $ (sudo) conda create -n bibtex python=3.7
  (base) $ conda activate bibtex
  (bibtex) $ git clone https://github.com/astrochun/academic-ads-bibtex.git
  (bibtex) $ cd academic-ads-bibtex
  (bibtex) $ (sudo) python setup.py install
  ```

  Using `virtualenv`:

  ```bash
  (base) $ (sudo) conda install virtualenv  # if not installed
  (base) $ git clone https://github.com/astrochun/academic-ads-bibtex.git
  (base) $ cd academic-ads-bibtex
  (base) $ virtualenv venv
  (base) $ source venv/bin/activate
  (venv) $ python setup.py install
  ```



  The primary script to execute is [`academic_ads_bibtex`](bin/academic_ads_bibtex).
  The above installation will include this executable in your python
  environment paths.

  Execution requires only one argument, which is the full path to the BibTeX
  file. It can be provided with the `-f` or `--filename` command-line flags.

  ```
  $ academic_ads_bibtex -f /full/path/to/my_pubs.bbl
  ```

  By default:

  1. The code uses the repository-based journal database,
     [bibtex_journals.db](academic_ads_bibtex/database/bibtex_journals.db).
     This can be changed by specifying the `-d` or `--db_filename` command-line
     flag.
  2. The revised BibTeX file will be based on the input `filename` with the
     prefix changed to include `_revised`. For example, for the above case,
     the output file will be `/full/path/to/my_pubs_revised.bbl`. This can be
     changed by specifying the `-o` or `--out_filename` command-line flag.

  A log file is constructed: `/full/path/to/academic_ads_bibtex.YYYY-MM-DD.log`




  We use [SemVer](http://semver.org/) for versioning. For the versions available,
  see the [releases on this repository](https://github.com/astrochun/academic-ads-bibtex/releases).




  * Chun Ly, Ph.D. ([@astrochun](http://www.github.com/astrochun))




  This project is licensed under the [GNU GPLv3 License](https://www.gnu.org/licenses/gpl-3.0.en.html).
  See the [LICENSE](LICENSE) file for details.


pkgId: 10ca43f2c52c197eece796e9f07df14b4d71116c6409e03b6002ea40974fcfdf
name: python-academic-metrics
arch: src
version: 0.1.0b0
epoch: 0
release: 1
summary: A tool to extract and format academic data from Web of Science and Crossref
url: https://github.com/SpencerPresley/COSC425-DATA
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-academic-metrics-0.1.0b0-1.src.rpm
checksum_type: sha256
description:
  A repository which implements data collection of a University's academic research articles within a given time period and classifies them into categories defined by the NSF PhD research focus areas taxonomy then provides:

  - Data on an article level
  - Data on individual authors
  - Data on category level

  Currently the data is outputted in JSON format. There exists a script for converting the JSON to an Excel file but is currently somewhat finnicky.

  A more thorough offline file formatting will be implemented in the future.





  1. Install the package `pip install academic-metrics`
  2. Create a `.env` file in the root directory and add your OpenAI API key: `OPENAI_API_KEY=<your_openai_api_key>`
  3. Create a script `run_pipeline.py` in the root directory and add the following:

      ```python
      from academic_metrics.runners.pipeline import PipelineRunner

      runner = PipelineRunner(ai_api_key=os.getenv("OPENAI_API_KEY"))
      runner.run_pipeline()
      ```


  1. Clone the repository:
      - HTTPS: `git clone https://github.com/SpencerPresley/COSC425-DATA.git`
      - SSH: `git clone git@github.com:SpencerPresley/COSC425-DATA.git`
  2. Navigate into the project root directory `cd COSC425-DATA` and run the setup script `python setup_environment.py`:
      - This will install the academic_metrics package in editable mode and configure the pre-commit in `.git/hooks`
      - The git hook will format the code on commit using black



  As of 11/9/2024 the pipeline runs off input files in `src/academic_metrics/data/core/input_files`

  Shortly integration of the crossref API code will be made in `academic_metrics/runners/pipeline.py` so that you can pass in your school name, data range, etc. to get your own data outputted.

  Integration for writing to a mongoDB database is currently implemented only for our use case, future integration will allow two modes:

  1. Offline output files to `src/academic_metrics/data/core/output_files`
      - In this mode the API for crossref will still work but the output files will be saved locally rather to a database.
  2. Database support. For this you will have to create a `.env` file in the root directory and add the following:
      - `MONGO_URI=<your_mongo_uri>`
      - `MONGO_DB_NAME=<your_mongo_db_name>`
      - `MONGO_COLLECTION_NAME=<your_mongo_collection_name>`


pkgId: 9286fa24ac282da1017e11501f096a78bfdd187258717e98edab64bac91f8eb3
name: python-academic-review-tool
arch: src
version: 1.1.0
epoch: 0
release: 1
url: https://github.com/alan-turing-institute/academic_review_tool
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-academic-review-tool-1.1.0-1.src.rpm
checksum_type: sha256
summary:
  The Academic Review Tool (ART) is a package for performing academic reviews and bibliometric analyses in Python. It offers capabilities for discovering, retrieving, and analysing academic literature at scale.

description:
  The Academic Review Tool (ART) is a package for performing academic reviews and bibliometric analyses in Python. It offers capabilities for discovering, retrieving, and analysing academic literature at scale. ART accesses records from Crossref, Web of Science, Scopus, Orcid, and more.

  [TOC]

  ART is a package for performing academic reviews and bibliometric analyses in Python. It offers capabilities for discovering, retrieving, and analysing academic literature at scale.
  The tool's functionalities include:
  * Searching for works using keywords, dates, authors, funders, and other information.
  * Searching for authors and their works.
  * Searching for funders and their funded works.
  * Looking up DOIs, ISBNs, ISSNs, ORCID IDs, URLs, and other unique identifiers.
  * Scraping academic repositories and websites.
  * Citation and weblink crawling.
  * Citation and coauthorship analysis.
  * Generating networks representing:
      * Citations and references
      * Coauthors
      * Cofunders
      * And more...
  ART uses the following APIs:
  * Crossref
  * Web of Science (Starter API)
  * Scopus
  * ORCID
  * Geopy / Nominatim
  The tool is object-oriented. It leverages Pandas, Numpy, iGraph, and other standard Python libraries for ease of use.
  ART can read and write your results to a large variety of file types (e.g. .xlsx, .csv, .txt, .json, .graphML).

  To install using PyPi, run the following code in your command interface:
  ```bash
  pip install academic-review-tool
  ```


  Leave a comment!

rpm_license:
[cell repeats an earlier one in this file: 34486 characters]


pkgId: f5aca0bd5aa3eaa325e02475fd12d5f3118a5e85714882e840eaf81a474b9b6a
name: python-academic-tracker
arch: src
version: 2.0.1
epoch: 0
release: 1
summary: Find publications on PubMed, Crossref, ORCID, and Google Scholar for given authors or references.
url: https://github.com/MoseleyBioinformaticsLab/academic_tracker
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-academic-tracker-2.0.1-1.src.rpm
checksum_type: sha256
description:
  |
  Academic Tracker was created to automate the process of making sure that federally
  funded publications get listed on PubMed and that the grant funding source for
  them is cited.
  Academic Tracker is a command line tool to search PubMed, ORCID, Google Scholar,
  and Crossref for publications. The program can either be given a list of authors
  to look for publications for, or references/citations to publications themselves.
  The program will then will look for publications on the aforementioned sources
  and return what relevant information is available from those sources.
  The primary use case is to give the program a list of authors to find publications
  for. From this list of publications it can then be determined which ones need
  further action to be in compliance.
  A secondary use case for finding author's publications is to create a report of
  the collaborators they have worked with, and can be done by specifying the creation
  of that report in the configuration file. Details on reports are in the `documentation <https://moseleybioinformaticslab.github.io/academic_tracker/reporting.html>`__.
  The other primary use case is to give the program a list of publication references
  to find information for.
  Links
  ~~~~~
     * Academic Tracker @ GitHub_
     * Academic Tracker @ PyPI_
     * Documentation @ Pages_
  Installation
  ~~~~~~~~~~~~
  The Academic Tracker package runs under Python 3.8+. Use pip_ to install.
  Starting with Python 3.4, pip_ is included by default. Be sure to use the latest
  version of pip as older versions are known to have issues grabbing all dependencies.
  Academic Tracker relies on sendmail to send emails, so if you need to use that
  feature be sure sendmail is installed and in PATH.

rpm_license:
  The Clear BSD License with Extra Clause  Copyright (c) 2022, Travis Thompson, Hunter N.B. Moseley All rights reserved.  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:  * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.  * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.  * All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the copyright holder.  * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.  * If the source code is used in a published work, then proper citation of the source code must be included with the published work.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


pkgId: f8abd6504ba4baf65881d587fb4e1b3ae346dea73dd44993dcd123a8ce844bcf
name: python-acai-aws
arch: src
version: 2.2.3
epoch: 0
release: 1
summary: DRY, configurable, opinionated, minimalist framework for use with AWS Serverless Lambdas
url: https://github.com/syngenta/acai-python.git
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acai-aws-2.2.3-1.src.rpm
checksum_type: sha256
description:
  [![CircleCI](https://circleci.com/gh/syngenta/acai-python.svg?style=shield)](https://circleci.com/gh/syngenta/acai-python)
  [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=syngenta_acai-python&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=syngenta_acai-python)


  DRY, configurable, declarative python library for working with Amazon Web Service Lambdas.


  * Highly configurable apigateway internal router
  * Openapi schema adherence for all event types
  * Generate OpenAPI docs from code base
  * Extensible and customizable middleware for validation and other tasks
  * DRY coding interfaces without the need of boilerplate
  * Ease-of-use with the [serverless framework](https://www.serverless.com/)
  * Local Development support
  * Happy Path Programming (See Philosophy below)



  The Acai philosophy is to provide a dry, configurable, declarative library for use with the amazon lambdas, which encourages Happy Path Programming (HPP).

  Happy Path Programming is an idea in which inputs are all validated before operated on. This ensures code follows the happy path without the need for mid-level, nested exceptions and all the nasty exception handling that comes with that. The library uses layers of customizable middleware options to allow a developer to easily dictate what constitutes a valid input, without nested conditionals, try/catch blocks or other coding blocks which distract from the happy path that covers the majority of that codes intended operation.



  This is a [python](https://www.python.org/) module available through the
  [pypi registry](https://pypi.org).

  Before installing, [download and install python](https://www.python.org/downloads/).
  python 3 or higher is required.


  Installation is done using the
  [`pip install`](https://packaging.python.org/tutorials/installing-packages/) command:

  ```bash
  $ pip install acai_aws


  ```


  * [Full Docs](https://syngenta.github.io/acai-python-docs/)
  * [Tutorial](https://syngenta.github.io/acai-python-docs/)
  * [Examples](https://github.com/syngenta/acai-python-docs/blob/main/examples/)




  If you would like to contribute please make sure to follow the established patterns and unit test your code:



  To run unit test, enter command:
  ```bash
  $ pipenv install
  $ pipenv run test
  ```


pkgId: 265bf43c6ab2ed8f9b61f0bc5c4412b5b482604b87c56c915b88a5b49719edff
name: python-acapi
arch: src
version: 0.9.0
epoch: 0
release: 1
summary: Acquia Cloud API client.
url: http://github.com/skwashd/python-acquia-cloud
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acapi-0.9.0-1.src.rpm
checksum_type: sha256
description:
  This is a python client for using the [Acquia Cloud API](https://cloudapi.acquia.com/).

  [![PyPI Version](https://img.shields.io/pypi/v/acapi.svg)](https://pypi.org/project/acapi/)
  [![Requirements Status](https://requires.io/github/skwashd/python-acquia-cloud/requirements.svg?branch=master)](https://requires.io/github/skwashd/python-acquia-cloud/requirements/?branch=master)
  [![Coverage Status](https://coveralls.io/repos/skwashd/python-acquia-cloud/badge.svg?branch=master&service=github)](https://coveralls.io/github/skwashd/python-acquia-cloud?branch=master)
  [![Build Status](https://travis-ci.org/skwashd/python-acquia-cloud.png)](https://travis-ci.org/skwashd/python-acquia-cloud)




  `pip install acapi`


  ```
  $ git clone git@github.com:skwashd/python-acquia-cloud.git acapi
  $ cd acapi
  $ ./setup.py build && ./setup.py install
  ```


  ```python

  import acapi

  from pprint import pprint


  subname = 'example'

  domain = 'example.com'



  c = acapi.Client()


  site = c.site(subname)


  envs = site.environments()


  pprint(envs)


  for env in envs:
      print "Env: {env} SSH Host: {host}".format(env=env, host=envs[env]['ssh_host'])


  envs['prod'].domain(domain).move('test')


  site.environment('dev').db(subname).backups().create().download('/tmp/backup.sql.gz')

  ```

  This library was created and maintained by [Dave Hall](http://davehall.com.au).

  See [LICENSE](LICENSE).

  [1]: https://requires.io/github/skwashd/python-acquia-cloud/requirements/
  [2]: https://requires.io/github/skwashd/python-acquia-cloud/requirements.svg?style=flat


pkgId: 6a5e5a2c5289b23bc84f9e219c1a7eee1130a46a57419e884d78cbff9a5cc1ab
name: python-acapi2
arch: src
version: 2.1.2
epoch: 0
release: 1
summary: Acquia Cloud API v2 client library.
url: https://github.com/pmatias/python-acquia-cloud-2
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acapi2-2.1.2-1.src.rpm
checksum_type: sha256
description:
  Python Client library to communicate with the [Acquia Cloud API V2](http://cloud.acquia.com/api-docs).

  [Pablo Fabregat](http://pablofabregat.com) - [License](LICENSE.txt)

  [![Build Status](https://travis-ci.org/pmatias/python-acquia-cloud-2.svg?branch=master)](https://travis-ci.org/pmatias/python-acquia-cloud-2) [![Documentation Status](https://readthedocs.org/projects/acapi2/badge/?version=latest)](https://acapi2.readthedocs.io/en/latest/?badge=latest) [![codecov](https://codecov.io/gh/pmatias/python-acquia-cloud-2/branch/2.x/graph/badge.svg)](https://codecov.io/gh/pmatias/python-acquia-cloud-2)




  The following items will be removed in 2.0.3:

  * ~~Support for environment variables `ACQUIA_CLOUD_API_KEY` and
  `ACQUIA_CLOUD_API_SECRET`; how the credentials are provided to the library is
  responsibility of the user.~~ I've decided not to remove this, for now.

  * Tasks object; Acquia API is deprecating this as well, the Notifications object
  should be used instead



  Please bear in mind that the library is being actively developed and
  most of its functionality is just a reduced set of what it should be.

  Minimal request

  ```python
  acquia = Acquia(api_key, api_secret)
  application = acquia.application("a47ac10b-58cc-4372-a567-0e02b2c3d470")

  print(application["name"])
  ```



  ```python
  subscription_name = "MySubsName"
  filters = "name=" + subscription_name

  application = acapi.applications(filters=filters).first()
  dev_environment = application.environments()["dev"]

  print(dev_environment["id"])

  dev_environment.set_php_version("7.0")

  more_settings = {
    "max_execution_time": 10,
    "memory_limit": 192,
    "apc": 128,
    "max_input_vars": 1000,
    "max_post_size": 256,
    "sendmail_path": "/usr/bin/sendmail",
    "varnish_over_ssl": False
  }

  dev_environment.configure(more_settings)
  ```



  acapi2 now supports [the notifications endpoint](https://cloudapi-docs.acquia.com/#/Notifications/getNotificationByUuid)

  Whenever an action is executed (e.g. [a code import](https://cloudapi-docs.acquia.com/#/Environments/postEnvironmentsImportSite)),
   the API will return a uuid for its correspondant
  task status (notification), this can be used to check on the status of the task itself"

  ```python
  notif_uuid = "d82a122d-b7b8-46fc-9999-39cb824fac8d"
  notification = acquia.notification(notif_uuid)
  print(notification.data)
  ```

  You can also check on the [current notifications for a specific application](https://cloudapi-docs.acquia.com/#/Applications/getApplicationNotifications)

  ````python
  filters = "name=@*myapp*"
  app = acquia.applications(filters=filters).first()

  notifications = app.notifications()
  for uuid, notification in notifications.items():
          print(notification.data)
  ````



  Current version: **2.0.3**



  * 2.x becomes the default repository branch,
  * Out of the beta status,
  * Notifications support,
  * Code coverage increase,
  * Clean up the original code a bit.
  * Support for backups.



  * Small release to put back support of credentials in environment variables,
  which is now being announced as deprecated.



  * Tasks endpoint removal (you should use notifications),
  * Credential environment variables removal,
  * Wait until a notification completes,
  * More support for log forwarding



  * Minor release: Added support for DB Backup Downloads


  * ~~Credential environment variables removal (now for real :) )~~ I've decided not to remove this, for now,
  * Taken over https://pypi.org/project/http-hmac-python since it dissapeared.
  * Support for environment cron operations


  * Distributions endpoint support,
  * Messages endpoint support,
  * Better exceptions handling.



  This library was originally based on the Acquia API Python Library created
  by Dave Hall (http://github.com/skwashd/python-acquia-cloud)


pkgId: d38cdfb864588f83d0ab3ac1277863abd5a631a0df9ca6fde02e3a30dd3a56aa
name: python-acapture
arch: src
version: 1.2.6
epoch: 0
release: 1
summary: Async web camera/video/images/screenshot capturing library.
url: https://github.com/aieater/python_acapture
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acapture-1.2.6-1.src.rpm
checksum_type: sha256
description:
  ```
  import acapture
  import cv2
  cap = acapture.open("test.mp4")
  while True:
      check,frame = cap.read() # non-blocking
      if check:
          frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
          cv2.imshow("test",frame)
          cv2.waitKey(1)
  ```

  ```
  cap = acapture.open("test.mp4",frame_capture=True)
  ```

  ```
  import acapture
  import cv2
  cap = acapture.open(0) # /dev/video0
  while True:
      check,frame = cap.read() # non-blocking
      if check:
          frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
          cv2.imshow("test",frame)
          cv2.waitKey(1)
  ```

  ```
  import acapture
  import cv2
  cap = acapture.open(-1)
  while True:
      check,frame = cap.read() # blocking
      if check:
          frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
          cv2.imshow("test",frame)
          cv2.waitKey(1)
  ```

  ```
  import acapture
  import cv2
  cap = acapture.open("images/")
  while True:
      check,frame = cap.read() # blocking
      if check:
          frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
          cv2.imshow("test",frame)
          cv2.waitKey(1)
  ```

  ```
  import acapture
  import cv2
  cap = acapture.open("images/test.jpg")
  while True:
      check,frame = cap.read()
      if check:
          frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
          cv2.imshow("test",frame)
          cv2.waitKey(1)
  ```

  ```
  import acapture
  acapture.extract_video2images("test.mp4",format="jpg",quality=2)


pkgId: cfb3bfef47c8dcb3df38f6867626fe54a41b84640d256c8e5d958e22aba69d5d
name: python-acat
arch: src
version: 1.7.1
epoch: 0
release: 1
summary: Alloy Catalysis Automated Toolkit
url: https://gitlab.com/asm-dtu/acat
rpm_license: GNU Lesser General Public License v3 (LGPLv3)
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acat-1.7.1-1.src.rpm
checksum_type: sha256
description:
  ACAT is a Python package for atomistic modelling of metal (alloy) (oxide) catalysts used in heterogeneous catalysis. The package is based on automatic identifications of adsorption sites and adsorbate coverages on surface slabs and nanoparticles. Synergizing with ASE, ACAT provides useful tools to build atomistic models and perform global optimization tasks for alloy surfaces and nanoparticles with and without adsorbates. The goal is to automate workflows for the high-throughput screening of alloy catalysts.

  ACAT has been developed by Shuang Han at the Section of Atomic Scale Materials Modelling, Department of Energy Conversion and Storage, Technical University of Denmark (DTU) in Lyngby, Denmark.

  To use ACAT, please read **[ACAT documentation](https://asm-dtu.gitlab.io/acat)** (also [notebook tutorial](https://gitlab.com/asm-dtu/acat/-/blob/master/notebooks/) and [examples](examples/)). For all symmetry-inequivalent adsorption sites on the surfaces (and nanoparticles) supported in ACAT, please refer to the [table of adsorption sites](table_of_adsorption_sites.pdf).

  ![](images/acat_logo.png)


  Shuang Han (hanshuangshiren@gmail.com) - current maintainer


  * python>=3.6
  * networkx>=2.4
  * ase
  * asap3 (strongly recommended but not required, since asap3 does not support Windows)


  Install via pip:

  ```pip3 install acat```

  Alternatively, you can clone the repository:

  ```git clone https://gitlab.com/asm-dtu/acat.git```

  then go to the installed path and install all dependencies:

  ```pip3 install -r requirements.txt```

  Finally, install the main package:

  ```python3 setup.py install```



  I would like to highly appreciate the support from BIKE project, where fundings are received from the European Union’s Horizon 2020 Research and Innovation programme under the Marie Skłodowska-Curie Action – International Training Network (MSCA-ITN), grant agreement 813748.

  <img src="images/eu_logo.png" width="250"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  <img src="images/bike_logo.png" width="250">

  I also want to thank Dr. Steen Lysgaard for the useful scripts and Dr. Giovanni Barcaro, Dr. Alessandro Fortunelli for the useful discussions.


  If you find ACAT useful in your research, please cite [this paper](https://doi.org/10.1038/s41524-023-01087-4):

      [1] Han, S., Lysgaard, S., Vegge, T. et al. Rapid mapping of alloy surface phase diagrams via Bayesian
      evolutionary multitasking. npj Comput. Mater. 9, 139 (2023).

  If you use ACAT's modules related to symmetric nanoalloy, please also cite [this paper](https://doi.org/10.1038/s41524-022-00807-6):

      [2] S. Han, G. Barcaro, A. Fortunelli et al. Unfolding the structural stability of nanoalloys via
      symmetry-constrained genetic algorithm and neural network potential. npj Comput. Mater. 8, 121 (2022).



  1. ACAT was originally developed for metal (alloy) surface slabs and nanoparticles. Therefore H, C, N, O, F, S and Cl atoms are treated as adsorbate molecules and metals are treated as catalyst by default. Now ACAT is generalized for any given surface structure through ``acat.settings.CustomSurface``, which means (mixed) metal oxide surfaces are also allowed. However, note that the H, C, N, O, F, S and Cl atoms at the surface are still always treated as adsorabtes.

  2. Some functions distinguishes between nanoparticle and surface slabs based on periodic boundary condition (PBC). Therefore, before using the code, it is recommended (but not required) to **set all directions as non-periodic for nanoparticles and at least one direction periodic for surface slabs, and also add vacuum layers to all non-periodic directions. For periodic surface slabs the code will not work if the number of layers is less than 3 (which should be avoided anyways).** Each layer always has the same number of atoms as the surface atoms. For stepped surface slabs one layer will have atoms at different z coordinates. However, note that **there is no limitation to the size of the cell in the x and y directions.** ACAT is able to identify adsorption sites for even a 1x1x3 cell with only one surface atom.

  3. ACAT uses a regularized adsorbate string representation. In each adsorbate string, **the first element must set to the bonded atom (i.e. the closest non-hydrogen atom to the surface). Hydrogen should always follow the element that it bonds to.** For example, water should be written as 'OH2', hydrogen peroxide should be written as 'OHOH', ethanol should be written as 'CH3CH2OH', formyl should be written as 'CHO', hydroxymethylidyne should be written as 'COH', sulfur dioxide can be written either as 'SO2' (S down) or 'O2S' (S up). If the string is not supported by the code, it will return the ase.build.molecule instead, which could result in a weird orientation. If the string is not supported by this code nor ASE, you can make your own molecules in the ``adsorbate_molecule`` function in ``acat.settings``.

  4. There is a bug that causes ``get_neighbor_site_list()`` to not return the correct neighbor site indices with ASE version <= 3.18. This is most likely due to shuffling of indices in some ASE functions, which is solved after the release of ASE 3.19.0.

  5. If the adsorption site identification by ``SlabAdsorptionSites`` is unsatisfactory, it is most likely due to a lattice mismatch of the input surface with the reference surface used for code parameterization. Most of the time this can be resolved by setting ``optimize_surrogate_cell=True``. If the result is still not good enough, you can always use the ``acat.settings.CustomSurface`` class to represent your surface.


pkgId: 9414764b7ea78a2107942d59215b59ecc371bf843adcbf97efcbc722e1022d45
name: python-acb-py
arch: src
version: 1.2.4
epoch: 0
release: 1
summary: Library for reading/extracting ACB files
url: https://github.com/summertriangle-dev/acb.py
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acb-py-1.2.4-1.src.rpm
checksum_type: sha256
description:
  For all your ACB extracting needs. Based on [VGMToolbox](https://sourceforge.net/projects/vgmtoolbox/).

  HCA decryption is based on the 2ch HCA decoder. Thanks also to Headcrabbed who documented the new extra key [here](https://blog.mottomo.moe/categories/Tech/RE/en/2018-10-12-New-HCA-Encryption/).

  Usage:

  ```sh
  pip install acb-py
  python3 -m acb somefile.acb output

  acbextract somefile.acb output
  ```

  You can also pass `--disarm-with=key1,key2` to have the library decrypt (but not decode) files for you. The key format
  `--disarm-with=k1,k2` is equivalent to `hca_decoder -a k1 -b k2`, but you can also combine them into a 64-bit hex integer.
  This also supports AWB embedded keys (see [here](https://github.com/hozuki/libcgss/issues/4)).
  If you use disarm heavily, you should also install the `_acb_speedup` C extension in the `fast_sub`
  directory. It will substantially speed up the decryption process.


pkgId: b8251bf4dccdbec5b13825bba7a108eeb4cee0ecc99fbdf968fd8bf930c039fd
name: python-acc-fwu
arch: src
version: 0.1.3
epoch: 0
release: 1
summary: A tool to update Linode/ACC firewall rules with your current IP address.
url: https://github.com/johnybradshaw/acc-firewall_updater
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acc-fwu-0.1.3-1.src.rpm
checksum_type: sha256
description:
  A tool to automatically update the [Akamai Connected Cloud (ACC) / Linode](https://www.akamai.com/cloud) firewall rules to allow your IP



  `acc-fwu` is a command-line tool to automatically update [Linode](https://www.linode.com)/ACC firewall rules with your current IP address. This is particularly useful for dynamically updating firewall rules to allow access from changing IP addresses, like when you visit the gym or you're sat in an airport.



  You can install the package via `pip`:

  ```bash
  pip install acc-fwu
  ```

  Alternatively, you can install it directly from the source:

  ```bash
  git clone https://github.com/johnybradshaw/acc-firewall_updater.git
  cd acc-firewall_updater
  pip install --use-pep517 .
  ```





  The first time you use `acc-fwu`, you’ll need to provide your Linode/ACC Firewall ID and *optionally* the label for the rule you want to create or update:

  ```bash
  acc-fwu --firewall_id <FIREWALL_ID> --label <RULE_LABEL>
  ```

  For example:

  ```bash
  acc-fwu --firewall_id 123456 --label "Allow-My-Current-IP"
  ```

  This command will do two things:

  1. It will create or update the firewall rule with your current public IP address.
  1. It will save the `firewall_id` and `label` to a configuration file `(~/.acc-fwu-config)` for future use.



  After the initial setup, you can simply run `acc-fwu` without needing to provide the `firewall_id` and `label` again:

  ```bash
  acc-fwu
  ```

  This will:

  1. Load the saved `firewall_id` and `label` from the configuration file.
  1. Update the firewall rule with your current public IP address.



  If you need to change the `firewall_id` or `label`, you can do so by running:

  ```bash
  acc-fwu --firewall_id <NEW_FIREWALL_ID> --label <NEW_RULE_LABEL>
  ```

  This will update the configuration file with the new values.



  You can remove the firewall rule by running:

  ```bash
  acc-fwu --remove
  ```



  The `acc-fwu` tool saves the `firewall_id` and `label` in a configuration file located at `~/.acc-fwu-config`. This file is automatically managed by the tool, so you generally won’t need to edit it manually.





  - **Show IP Address**: Now shows the current public IP address when it is updated.



  - **Fixes**: Fixed issue with updating the firewall rule.



  - **Remove Firewall Rules**: Instructions on how to remove the firewall rule.



  - **First-time Setup**: Instructions on how to set the `firewall_id` and `label` the first time you use the tool.
  - **Subsequent Usage**: Information about running the tool without additional arguments after the initial setup.
  - **Updating the Configuration**: Guidance on how to change the stored `firewall_id` and `label` if needed.
  - **Configuration File**: Brief explanation of the config file and its location.


pkgId: 4cbba6514628a6b3695f85df730ff080aea07ab0897368f11d9c96c936acb5dd
name: python-accasim
arch: src
version: 1.1.3
epoch: 0
release: 1
summary: An HPC Workload Management Simulator
url: http://accasim.readthedocs.io/en/latest/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accasim-1.1.3-1.src.rpm
checksum_type: sha256
description:
  *current version:* |version|
  AccaSim is a Workload management [sim]ulator for [H]PC systems, useful for developing dispatchers and conducting controlled experiments in HPC dispatching research. It is scalable and highly customizable, allowing to carry out large experiments across different workload sources, resource settings, and dispatching methods.
  AccaSim enables users to design novel advanced dispatchers by exploiting information regarding the current system status, which can be extended for including custom behaviors such as power consumption and failures of the resources. The researchers can use AccaSim for instance to mimic any real system by setting up the synthetic resources suitably, develop advanced power-aware, fault-resilient dispatching methods, and test them over a wide range of workloads by generating them synthetically or using real workload traces from HPC users.
  For more information please visit the `webpage of AccaSim <http://accasim.readthedocs.io/en/latest/>`_
  ***************
  What's new?
  ***************
  - 23-06-2018 Major improvements. Additional data is executed during Submission, Dispatching and Completion events (before and after).
  - 15-06-2018 Version 1.0 released.
  - 01-06-2018 New version of the dispatchers. The job requests are verified during the scheduling process.
  - 27-05-2018 New version of the resources and resource manager. All simulation methods were improved. Logger is used instead of printing messages.
  - 21-05-2018 Asyncronous file writing to reduce the IO overhead of the simulations.
  - 06-12-2017 A workload generator is available for generating new workloads from existing workloads.
  - 13-11-2017 Simulating distinct dispatchers under the same system and simulator configuration can be managed under the Experimentation class. It also includes the automatic plot generation.
  - 21-08-2017 Automatic plot generation for comparison of multiple workload schedules and benchmark files: Slowdown, Queue sizes, Load ratio, Efficiency, Scalability, Simulation time, Memory Usage.
  - 19-07-2017 Documentation is moved to `http://accasim.readthedocs.io <http://accasim.readthedocs.io/en/latest/>`_
  - 12-07-2017 First version of the package.


pkgId: eb84c7fd896477a6b3d998fdd302f1bd9b833d0bcb9b397d1fa619ee8daf8267
name: python-accel-brain-base
arch: src
version: 1.1.0
epoch: 0
release: 1
url: https://github.com/accel-brain/accel-brain-code/tree/master/Accel-Brain-Base/
rpm_license: GPL2
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accel-brain-base-1.1.0-1.src.rpm
checksum_type: sha256
summary:
  accel-brain-base is a basic library of the Deep Learning for rapid development at low cost. This library makes it possible to design and implement deep learning, which must be configured as a complex system, by combining a plurality of functionally differentiated modules such as a Deep Boltzmann Machines(DBMs), an Auto-Encoder, an Encoder/Decoder based on Long Short-Term Memory(LSTM), a Convolutional Auto-Encoder(CAE), and Transformer.

description:
  `accel-brain-base` is a basic library of the Deep Learning for rapid development at low cost. This library makes it possible to design and implement deep learning, which must be configured as a complex system or a System of Systems, by combining a plurality of functionally differentiated modules such as a **Restricted Boltzmann Machine(RBM)**, **Deep Boltzmann Machines(DBMs)**, a **Stacked-Auto-Encoder**, an **Encoder/Decoder based on Long Short-Term Memory(LSTM)**, and a **Convolutional Auto-Encoder(CAE)**.

  From the view points of functionally equivalents and structural expansions, this library also prototypes many variants such as energy-based models and Generative models. Typical examples are **Generative Adversarial Networks(GANs)** and **Adversarial Auto-Encoders(AAEs)**.

  It also supports the implementation of **Semi-Supervised Learning** and **Self-Supervised Learning**, which consists of a combination of supervised and unsupervised learning systems. This library dryly considers the various Transformers variants such as **BERT**, **XLNet**, **RoBERTa**, **ALBERT**, etc, are merely applications of **Self-Supervised Learning** or **Self-Supervised Domain Adaptation(SSDA)**. From this point of view, this class builds the Transformers variants as SSDA models.

  In addition, this library provides **Deep Reinforcement Learning** such as **Deep Q-Networks** that applies the neural network described above as a function approximator. In principle, any neural network described above can be implemented as a function approximator.

  See also ...

  - [Automatic Summarization Library: pysummarization](https://github.com/accel-brain/accel-brain-code/tree/master/Automatic-Summarization)
     * If you want to implement the **Sequence-to-Sequence(Seq2Seq) model** for the automatic summarization by using `accel-brain-base` to build the **Encoder/Decoder controllers**, **Attention models**, or **Transformer models**.
  - [Reinforcement Learning Library: pyqlearning](https://github.com/accel-brain/accel-brain-code/tree/master/Reinforcement-Learning)
      * If you want to implement the Deep Reinforcement Learning, especially for **Deep Q-Network** and **Multi-agent Deep Q-Network** by using `accel-brain-base` as a Function Approximator.
  - [Generative Adversarial Networks Library: pygan](https://github.com/accel-brain/accel-brain-code/tree/master/Generative-Adversarial-Networks)
      * If you want to implement **Generative Adversarial Networks(GANs)** and **Adversarial Auto-Encoders(AAEs)** by using `accel-brain-base` as components for Generative models based on the Statistical machine learning problems.
  - [Algorithmic Composition or Automatic Composition Library: pycomposer](https://github.com/accel-brain/accel-brain-code/tree/master/Algorithmic-Composition)
     * If you want to implement the Algorithmic Composer based on **Generative Adversarial Networks(GANs)** by using `accel-brain-base` as components for Generative models based on the Statistical machine learning problems.



  Install using pip:

  ```sh
  pip install accel-brain-base
  ```

  or,

  ```sh
  python setup.py bdist_wheel
  pip install dist/accel_brain_base-*.*.*-py3-*-*.whl
  ```



  The source code is currently hosted on GitHub.

  - [accel-brain-code/Accel-Brain-Base](https://github.com/accel-brain/accel-brain-code/tree/master/Accel-Brain-Base)



  Installers for the latest released version are available at the Python package index.

  - [accel-brain-base : Python Package Index](https://pypi.python.org/pypi/accel-brain-base/)



  - [numpy](https://github.com/numpy/numpy): v1.13.3 or higher.
  - [pandas](https://github.com/pandas-dev/pandas): v0.22.0 or higher.
  - [mxnet](https://github.com/apache/incubator-mxnet) or [mxnet-cu*](https://mxnet.apache.org/api/python/docs/tutorials/getting-started/crash-course/6-use_gpus.html): latest.
    * Only when building a model of this library using [Apache MXNet](https://mxnet.apache.org/).
  - [torch](https://pytorch.org/get-started/locally/)
    * Only when building a model of this library using [PyTorch](https://pytorch.org/).



  In the [Apache MXNet](https://mxnet.apache.org/) version of this library, almost all models inherit [HybridBlock](https://gluon.mxnet.io/chapter07_distributed-learning/hybridize.html) from [mxnet.gluon](https://mxnet.incubator.apache.org/api/python/docs/api/gluon/index.html). Functions for common ML Ops such as saving and loading parameters are provided by [HybridBlock](https://mxnet.apache.org/api/python/docs/api/gluon/hybrid_block.html).

  On the other hand, in [PyTorch](https://pytorch.org/) of this library, almost all models inherit [Module](https://pytorch.org/docs/stable/generated/torch.nn.Module.html) from [torch.nn](https://pytorch.org/docs/stable/nn.html). Check the official documentation for the information you need.



  Full documentation is available on [https://code.accel-brain.com/Accel-Brain-Base/README.html](https://code.accel-brain.com/Accel-Brain-Base/README.html). This document contains information on functionally reusability, functional scalability and functional extensibility.



  How the Research and Development(R&D) on the subject of machine learning including deep learning, after the era of "Democratization of Artificial Intelligence(AI)", can become possible? Simply implementing the models and algorithms provided by standard machine learning libraries and applications like AutoML would reinvent the wheel. If you just copy and paste the demo code from the library and use it, your R&D would fall into dogmatically authoritarian development, or so-called the Hype driven development.

  If you fall in love with the concept of "Democratization of AI," you may forget the reality that the R&D is under the influence of not only democracy but also capitalism. The R&D provides economic value when its R&D artifacts are distinguished from the models and algorithms realized by standard machine learning libraries and applications such as AutoML. In general terms, R&D must provide a differentiator to maximize the scarcity of its implementation artifacts.

  On the other hand, it must be remembered that any R&D builds on the history of the social structure and the semantics of the concepts envisioned by previous studies. Many models and algorithms are variants derived not only from research but also from the relationship with business domains. It is impossible to assume differentiating factors without taking commonality and identity between society and its history.

  Considering many variable parts, structural unions, and *functional equivalents* in the deep learning paradigm, which are variants derived not only from research but also from the relationship with business domains, from perspective of *commonality/variability analysis* in order to practice object-oriented design, this library provides abstract classes that define the skeleton of the deep Learning algorithm in an operation, deferring some steps in concrete variant algorithms such as the **Deep Boltzmann Machines**, **Stacked Auto-Encoder**, **Encoder/Decoder based on LSTM**, and **Convolutional Auto-Encoder** to client subclasses. The abstract classes and the interfaces in this library let subclasses redefine certain steps of the deep Learning algorithm without changing the algorithm's structure.

  These abstract classes can also provide new original models and algorithms such as **Generative Adversarial Networks(GANs)**, **Deep Reinforcement Learning**, or **Neural network language model** by implementing the variable parts of the fluid elements of objects.



  The functions of Deep Learning are already available in many machine learning libraries. Broadly speaking, the deep learning functions provided by each machine learning library can be divided into the following two.

  1. A component that works just by running a batch program or API.
  2. A component that allows you to freely design its functions and algorithms.

  Many of the former have somewhat fixed error functions, initialization strategies, samplers, activation functions, regularization, and deep architecture configurations. That is, the functional extensibility is low. If you just want to run a distributed batch program or demo code, or just run it on a pre-designed interface, you should be fine with these components.

  But, in-house R&D aimed at extending to more accurate and faster algorithms, it is a risk to rely on distributions that are less functionally reusable and less functionally scalable. In addition, many of the "A component that works just by running a batch program or API" tend to be specified with the condition that "if you prepare an appropriate dataset, it will work". The "appropriateness" of the "appropriate dataset" is often undecidable without knowing the inside of the black box obscured by its components.

  On the other hand, in the existing machine learning library, the latter "A component that allows you to freely design its functions and algorithms" is certainly distributed. For example, MxNet/Gluon's `HybridBlock` gives you the freedom to design functions. Similar things can be done with PyTorch's `torch.nn`.

  However, it cannot be said that a single algorithm can be produced in-house simply by making full use of these components. In-house R&D is also an organizational decision-making process. In this procedure, problems that can be solved by machine learning and statistics are first set in order to meet the demands from the business domain. Then, we will design an algorithm that functions as a problem-solving solution to this problem setting.

  However, it cannot be said that there is only one function as a problem solution. Unless we compare several functionally equivalent algorithms that help solve the problem, it remains unclear which algorithm should be the final choice.



  From perspective of *commonality/variability analysis* in order to practice object-oriented design, the concepts and interfaces of Deep Learning paradigms can be organized as follows:

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/accel-brain-base/accel-brain-base_class_interface.png" /></div>

  - `ExtractableData` is an interface responsible for extracting data from local files.
  - `NoiseableData` is an interface that has the function of enhancing robustness by adding noise to the extracted sample.
  - `IteratableData` is an interface that has the function of repeatedly outputting labeled and unlabeled samples by calling a class that implements` ExtractableData`. This function is the heart of iterative learning algorithms such as stochastic gradient descent. Whether or not to put the data in GPU memory can be selected in this subclass.
  - `SamplableData` is a useful interface for introducing neural network learning algorithms into data sampling processing, especially for Generative Adversarial Networks(GANs).
  - `ObservableData` is an interface for implementing neural network models in general. All of these subclasses are designed with the assumption that `IteratableData` will be delegated. You can also observe the mini-batch data extracted by `SamplableData`. Of course, the input / output function is variable depending on the problem setting, but basically it executes inference for the observed data points. The presence or absence of hyperparameters and GPUs can be adjusted in this subclass.
  - `ComputableLoss` is nothing but an interface for error/loss functions. Each subclass is premised on the automatic differentiation function implemented in the machine learning library.
  - `RegularizatableData` is the interface for performing regularization. The amount that the regular term is given as a penalty term can be realized inside the forward propagation method or inside the error/loss function. This interface works when other special regularizations are performed immediately after parameter updates.
  - `ControllableModel` functions as a controller when implementing complex `ObservableData` in combination as a complex system(or System of Systems) such as deep reinforcement learning and hostile generation network.

  Broadly speaking, each subclass that implements these interfaces is considered functionally equivalent and mutually substitutable. For example, the following classes are implemented as subclasses of `ObservableData`.

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/accel-brain-base/accel-brain-base_class_observable_data.png" /></div>

  For example, `Neural Networks` makes it possible to build multi-layer neural networks. And, after inheriting this class, `AutoEncoder` constructed by joining two` NeuralNetworks`s in a stack is placed. There is a similar relationship between `LSTMNetworks` for building LSTM(Long short-term memory) Networks, which is a type of Recurrent Neural Networks, and its subclass `EncoderDecoder`.

  In addition, various subclasses are arranged for `ConvolutionalNeuralNetworks`, which builds convolutional neural networks. Many relatively new learning algorithms, such as **semi-supervised learning** and **self-supervised learning**, have been proposed as extensions of convolutional neural networks. Therefore, when these algorithms are implemented, they are often implemented as a subclass of `ConvolutionalNeuralNetworks`.

  When adopting a functionalism, such a series of interface designs assists in the search for functional equivalents. Since each class that realizes the same interface is designed on the premise of the same interface specifications, it is easy to consider it as a candidate for functional equivalent.

  Furthermore, developers using this library can reduce the burden of functional expansion as well as searching for functional equivalents. In fact, there are functional extensions to this library.

  For example, [Automatic Summarization Library: pysummarization](https://github.com/accel-brain/accel-brain-code/tree/master/Automatic-Summarization), which realizes automatic document summarization by natural language processing and text mining, reuses the Sequence-to-Sequence (Seq2Seq) model realized by [accel-brain-base](https://github.com/accel-brain/accel-brain-code/tree/master/Accel-Brain-Base). This sub-library makes it possilbe to do automatically document summarization and clustering based on the manifold hypothesis.

  On the other hand, in [Reinforcement Learning Library: pyqlearning](https://github.com/accel-brain/accel-brain-code/tree/master/Reinforcement-Learning) and [Generative Adversarial Networks Library: pygan](https://github.com/accel-brain/accel-brain-code/tree/master/Generative-Adversarial-Networks), Reinforcement Learning and various variants of GANs are implemented.



  Let's exemplify the basic deep architecture that this library has already designed. Users can functionally reuse or functionally extend the already implemented architecture.



  The function of this library is building and modeling Restricted Boltzmann Machine(RBM) and Deep Boltzmann Machine(DBM). The models are functionally equivalent to stacked auto-encoder. The basic function is the same as dimensions reduction or pre-learning for so-called transfer learning.



  <div align="center"><table><tr><td><img src="https://storage.googleapis.com/accel-brain-code/accel-brain-base/boltzmann_machine.png" /></td><td><img src="https://storage.googleapis.com/accel-brain-code/accel-brain-base/complete_bipartite_graph.png" /></td></tr><tr><td>Boltzmann Machine</td><td>Restricted Boltzmann Machine</td></tr></table></div>

  According to graph theory, the structure of RBM corresponds to a complete bipartite graph which is a special kind of bipartite graph where every node in the visible layer is connected to every node in the hidden layer. Based on statistical mechanics and thermodynamics(Ackley, D. H., Hinton, G. E., & Sejnowski, T. J. 1985), the state of this structure can be reflected by the energy function:

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/energy_function_of_rbm.png" /></div>

  where <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/b.png" /> is a bias in visible layer, <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/c.png" /> is a bias in hidden layer, <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/v.png" /> is an activity or a state in visible layer, <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/h.png" /> is an activity or a state in hidden layer, and <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/w.png" /> is a weight matrix in visible and hidden layer. The activities can be calculated as the below product, since the link of activations of visible layer and hidden layer are conditionally independent.

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/conditionally_independent.png" /></div>
  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/define_lambda.png" /></div>



  Because of the rules of conditional independence, the learning equations of RBM can be introduced as simple form. The distribution of visible state <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/v.png" /> which is marginalized over the hidden state <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/h.png" /> is as following:

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/distribution_of_visible_state.png" /></div>

  where <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/partition_function.png" /> is a partition function in statistical mechanics or thermodynamics. Let <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/D.png" /> be set of observed data points, then <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/D_defined.png" />. Therefore the gradients on the parameter <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/theta.png" /> of the log-likelihood function are

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/gradients_v_on_the_parameter_theta.png" /></div>
  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/gradients_h_on_the_parameter_theta.png" /></div>
  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/gradients_w_on_the_parameter_theta.png" /></div>

  where <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/expected_value.png" /> is an expected value for <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/p_x_theta.png" />. <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/sig.png" /> is a sigmoid function.

  The learning equations of RBM are introduced by performing control so that those gradients can become zero.

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/learning_equation_of_RBM.png" /></div>



  <div algin="center"><img src="https://storage.googleapis.com/accel-brain-code/accel-brain-base/network_of_RBM.png" /></div>

  In relation to RBM, **Contrastive Divergence**(CD) is a method for approximation of the gradients of the log-likelihood(Hinton, G. E. 2002). The procedure of this method is similar to Markov Chain Monte Carlo method(MCMC). However, unlike MCMC, the visbile variables to be set first in visible layer is not randomly initialized but the observed data points in training dataset are set to the first visbile variables. And, like Gibbs sampler, drawing samples from hidden variables and visible variables is repeated `k` times. Empirically (and surprisingly), `k` is considered to be `1`.



  <div align="center">
  <img src="https://storage.googleapis.com/accel-brain-code/accel-brain-base/network_of_DBN_and_DBM.png" />
  </div>

  As is well known, DBM is composed of layers of RBMs stacked on top of each other(Salakhutdinov, R., & Hinton, G. E. 2009). This model is a structural expansion of Deep Belief Networks(DBN), which is known as one of the earliest models of Deep Learning(Le Roux, N., & Bengio, Y. 2008). Like RBM, DBN places nodes in layers. However, only the uppermost layer is composed of undirected edges, and the other consists of directed edges. DBN with `R` hidden layers is below probabilistic model:

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/dbn_model.png" /></div>

  where `r = 0` points to visible layer. Considerling simultaneous distribution in top two layer,

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/dbn_top_two_layer_joint.png" /></div>

  and conditional distributions in other layers are as follows:

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/dbn_other_layers.png" /></div>

  The pre-learning of DBN engages in a procedure of recursive learning in layer-by-layer. However, as you can see from the difference of graph structure, DBM is slightly different from DBN in the form of pre-learning. For instance, if `r = 1`, the conditional distribution of visible layer is

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/conditional_distribution_of_visible_layer.png" />.</div>

  On the other hand, the conditional distribution in the intermediate layer is

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/dbm_other_hidden_layer.png" /></div>

  where `2` has been introduced considering that the intermediate layer `r` receives input data from Shallower layer
  `r-1` and deeper layer `r+1`. DBM sets these parameters as initial states.



  DBM is functionally equivalent to a **Stacked Auto-Encoder**, which is-a neural network that tries to reconstruct its input. To *encode* the observed data points, the function of DBM is as linear transformation of feature map below

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/dbm_encoder.png" />.</div>

  On the other hand, to *decode* this feature points, the function of DBM is as linear transformation of feature map below

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/latex/dbm_decoder.png" />.</div>

  The reconstruction error should be calculated in relation to problem setting such as the Representation Learning. In default, this library computes Mean Squared Error(MSE) or L2 norm. For instance, my jupyter notebook: [demo/Deep-Boltzmann-Machines-for-Representation-Learning.ipynb](https://github.com/accel-brain/accel-brain-code/blob/master/Accel-Brain-Base/demo/Deep-Boltzmann-Machines-for-Representation-Learning.ipynb) demonstrates that DBM which is a Stacked Auto-Encoder can minimize the reconstruction errors based on the Representation Learning.



  The methodology of *equivalent-functionalism* enables us to introduce more functional equivalents and compare problem solutions structured with different algorithms and models in common problem setting. For example, in dimension reduction problem, the function of **Encoder/Decoder schema** is equivalent to **DBM** as a **Stacked Auto-Encoder**.

  According to the neural networks theory, and in relation to manifold hypothesis, it is well known that multilayer neural networks can learn features of observed data points and have the feature points in hidden layer. High-dimensional data can be converted to low-dimensional codes by training the model such as **Stacked Auto-Encoder** and **Encoder/Decoder** with a small central layer to reconstruct high-dimensional input vectors. This function of dimensionality reduction facilitates feature expressions to calculate similarity of each data point.

  This library provides **Encoder/Decoder based on LSTM**, which is a reconstruction model and makes it possible to extract series features embedded in deeper layers. The LSTM encoder learns a fixed length vector of time-series observed data points and the LSTM decoder uses this representation to reconstruct the time-series using the current hidden state and the value inferenced at the previous time-step.



  One interesting application example is the **Encoder/Decoder for Anomaly Detection (EncDec-AD)** paradigm (Malhotra, P., et al. 2016). This reconstruction model learns to reconstruct *normal* time-series behavior, and thereafter uses reconstruction error to detect anomalies. Malhotra, P., et al. (2016) showed that EncDec-AD paradigm is robust and can detect anomalies from predictable, unpredictable, periodic, aperiodic, and quasi-periodic time-series. Further, they showed that the paradigm is able to detect anomalies from short time-series (length as small as 30) as well as long time-series (length as large as 500).

  As the prototype is exemplified in [demo/Encoder-Decoder-based-on-LSTM-for-Anomaly-Detection.ipynb](https://github.com/accel-brain/accel-brain-code/blob/master/Accel-Brain-Base/demo/Encoder-Decoder-based-on-LSTM-for-Anomaly-Detection.ipynb), this library provides Encoder/Decoder based on LSTM as a EncDec-AD scheme.



  **Convolutional Auto-Encoder**(Masci, J., et al., 2011) is a functionally equivalent of **Stacked Auto-Encoder** in relation to problem settings such as image segmentation, object detection, inpainting and graphics. A stack of Convolutional Auto-Encoder forms a convolutional neural network(CNN), which are among the most successful models for supervised image classification. Each Convolutional Auto-Encoder is trained using conventional on-line gradient descent without additional regularization terms.

  <div align="center">
  <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/horse099.jpg" />
  <p>Image in <a href="https://avaminzhang.wordpress.com/2012/12/07/%E3%80%90dataset%E3%80%91weizmann-horses/" target="_blank">the Weizmann horse dataset</a>.</p>
  </div>
  <div align="center">
  <img src="https://storage.googleapis.com/accel-brain-code/Deep-Learning-by-means-of-Design-Pattern/img/reconstructed_by_CAE.gif" />
  <p>Reconstructed image by <strong>Convolutional Auto-Encoder</strong>.</p>
  </div>

  This library can draw a distinction between **Stacked Auto-Encoder** and **Convolutional Auto-Encoder**, and is able to design and implement respective models. **Stacked Auto-Encoder** ignores the 2 dimentional image structures. In many cases, the rank of observed tensors extracted from image dataset is more than 3. This is not only a problem when dealing with realistically sized inputs, but also introduces redundancy in the parameters, forcing each feature to be global. Like **Shape-BM**, **Convolutional Auto-Encoder** differs from **Stacked Auto-Encoder** as their weights are shared among all locations in the input, preserving spatial locality. Hence, the reconstructed image data is due to a linear combination of basic image patches based on the latent code.

  In this library, **Convolutional Auto-Encoder** is also based on **Encoder/Decoder** scheme. The *encoder* is to the *decoder* what the *Convolution* is to the *Deconvolution*. The Deconvolution also called transposed convolutions "work by swapping the forward and backward passes of a convolution." (Dumoulin, V., & Visin, F. 2016, p20.)

  In relation to the Representation Learning, like DBM, this model also can minimize the reconstruction errors. An example can be found in  [demo/Convolutional-Auto-Encoder-for-Representation-Learning.ipynb](https://github.com/accel-brain/accel-brain-code/blob/master/Accel-Brain-Base/demo/Convolutional-Auto-Encoder-for-Representation-Learning.ipynb).



  This library also provides some functionally equivalents of the Convolutional Auto-Encoder. For instance, **Convolutional Contractive Auto-Encoder(Contractive CAE)** is a Convolutional Auto-Encoder based on the First-Order Contractive Auto-Encoder(Rifai, S., et al., 2011), which executes the representation learning by adding a penalty term to the classical reconstruction cost function. This penalty term corresponds to the Frobenius norm of the Jacobian matrix of the encoder activations with respect to the input and results in a localized space contraction which in turn yields robust features on the activation layer.

  Analogically, the Contractive Convolutional Auto-Encoder calculates the penalty term. But it differs in that the operation of the deconvolution intervenes insted of inner product. The prototype is exemplified in [demo/Contractive-Convolutional-Auto-Encoder-for-Representation-Learning.ipynb](https://github.com/accel-brain/accel-brain-code/blob/master/Accel-Brain-Base/demo/Contractive-Convolutional-Auto-Encoder-for-Representation-Learning.ipynb).



  Auto-Encoders, such as the Encoder/Decoder, the Convolutional Auto-Encoder, and the DBM have in common that these models are Stacked Auto-Encoders or the reconstruction models. On the other hand, the Auto-Encoders and the Encoder/Decoders are not statistical mechanical energy-based models unlike with RBM or DBM.

  However, Auto-Encoders have traditionally been used to represent energy-based models. According to the statistical mechanical theory for **energy-based models**, Auto-Encoders constructed by neural networks can be associated with an energy landscape, akin to negative log-probability in a probabilistic model, which measures how well the Auto-Encoder can represent regions in the input space. The energy landscape has been commonly inferred heuristically, by using a training criterion that relates the Auto-Encoder to a probabilistic model such as a RBM. The energy function is identical to the free energy of the corresponding RBM, showing that Auto-Encoders and RBMs may be viewed as two different ways to derive training criteria for forming the same type of analytically defined energy landscape.

  The view of the Auto-Encoder as a dynamical system allows us to understand how an energy function may be derived for the Auto-Encoder. This makes it possible to assign energies to Auto-Encoders with many different types of activation functions and outputs, and consider minimanization of reconstruction errors as energy minimanization(Kamyshanska, H., & Memisevic, R., 2014).

  When trained with some regularization terms, the Auto-Encoders have the ability to learn an energy manifold without supervision or negative examples(Zhao, J., et al., 2016). This means that even when an energy-based Auto-Encoding model is trained to reconstruct a real sample, the model contributes to discovering the data manifold by itself.

  This library provides energy-based Auto-Encoders such as **Contractive Convolutional Auto-Encoder**(Rifai, S., et al., 2011), **Repelling Convolutional Auto-Encoder**(Zhao, J., et al., 2016), **Denoising Auto-Encoders**(Bengio, Y., et al., 2013), and **Ladder Networks**(Valpola, H., 2015). But it is more usefull to redescribe the Auto-Encoders in the framework of **Generative Adversarial Networks(GANs)**(Goodfellow, I., et al., 2014) to make those models function as not only energy-based models but also Generative models. For instance, theory of an **Adversarial Auto-Encoders(AAEs)**(Makhzani, A., et al., 2015) and **energy-based GANs(EBGANs)**(Zhao, J., et al., 2016) enables us to turn Auto-Encoders into a Generative models which referes energy functions.



  The Generative Adversarial Networks(GANs) (Goodfellow et al., 2014) framework establishes a
  min-max adversarial game between two neural networks – a generative model, `G`, and a discriminative
  model, `D`. The discriminator model, `D(x)`, is a neural network that computes the probability that
  a observed data point `x` in data space is a sample from the data distribution (positive samples) that we are trying to model, rather than a sample from our generative model (negative samples). Concurrently, the generator uses a function `G(z)` that maps samples `z` from the prior `p(z)` to the data space. `G(z)` is trained to maximally confuse the discriminator into believing that samples it generates come from the data distribution. The generator is trained by leveraging the gradient of `D(x)` w.r.t. `x`, and using that to modify its parameters.



  The *Conditional* GANs (or cGANs) is a simple extension of the basic GAN model which allows the model to condition on external information. This makes it possible to engage the learned generative model in different "modes" by providing it with different contextual information (Gauthier, J. 2014).

  This model can be constructed by simply feeding the data, `y`, to condition on to both the generator and discriminator. In an unconditioned generative model, because the maps samples `z` from the prior `p(z)` are drawn from uniform or normal distribution, there is no control on modes of the data being generated. On the other hand, it is possible to direct the data generation process by conditioning the model on additional information (Mirza, M., & Osindero, S. 2014).



  This library also provides the Adversarial Auto-Encoders(AAEs), which is a probabilistic Auto-Encoder that uses GANs to perform variational inference by matching the aggregated posterior of the feature points in hidden layer of the Auto-Encoder with an arbitrary prior distribution(Makhzani, A., et al., 2015). Matching the aggregated posterior to the prior ensures that generating from any part of prior space results in meaningful samples. As a result, the decoder of the Adversarial Auto-Encoder learns a deep generative model that maps the imposed prior to the data distribution.

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/accel-brain-base/network_of_adversarial-autoencoder.png" /></div>



  Reusing the Auto-Encoders, this library introduces the Energy-based Generative Adversarial Network (EBGAN) model(Zhao, J., et al., 2016) which views the discriminator as an energy function that attributes low energies to the regions near the data manifold and higher energies to other regions. THe Auto-Encoders have traditionally been used to represent energy-based models. When trained with some regularization terms, the Auto-Encoders have the ability to learn an energy manifold without supervision or negative examples. This means that even when an energy-based Auto-Encoding model is trained to reconstruct a real sample, the model contributes to discovering the data manifold by itself.

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/accel-brain-base/network_of_EBGAN.png" /></div>



  This library models the **Energy-based Adversarial-Auto-Encoder(EBAAE)** by structural coupling between AAEs and EBGAN. As the prototype is exemplified in [demo/Energy-based-Adversarial-Auto-Encoder-for-Representation-Learning.ipynb](https://github.com/accel-brain/accel-brain-code/blob/master/Accel-Brain-Base/demo/Energy-based-Adversarial-Auto-Encoder-for-Representation-Learning.ipynb), the learning algorithm equivalents an adversarial training of AAEs as a generator and EBGAN as a discriminator.



  In most classification problems, finding and producing labels for the samples is hard. In many cases plenty of unlabeled data existand it seems obvious that using them should improve the results. For instance, there are plenty of unlabeled images available and in most image classification tasks there are vastly more bits of information in the statistical structure of input images than in their labels.

  It is argued here that the reason why unsupervised learning has not been able to improve results is that most current versions are incompatible with supervised learning. The problem is that many un-supervised learning methods try to represent as much information about the original data as possible whereas supervised learning tries to filter out all the information which is irrelevant for the task at hand.



  Ladder network is an Auto-Encoder which can discard information Unsupervised learning needs to toleratediscarding information in order to work well with supervised learning. Many unsupervised learning methods are not good at this but one class of models stands out as an exception: hierarchical latent variable models. Unfortunately their derivation can be quite complicated and often involves approximations which compromise their per-formance.

  <div align="center"><table><tr><td><img src="https://storage.googleapis.com/accel-brain-code/accel-brain-base/network_of_HierarchicalLatentVariableModels.png" /></td><td><img src="https://storage.googleapis.com/accel-brain-code/accel-brain-base/network_of_Auto-Encoder.png" /></td><td><img src="https://storage.googleapis.com/accel-brain-code/accel-brain-base/network_of_LadderNetworks.png" /></td></tr><tr><td>Hierarchical Latent Variable Models</td><td>Auto-Encoder</td><td>Ladder Networks</td></tr></table></div>

  A simpler alternative is offered by Auto-Encoders which also have the benefit of being compatible with standard supervised feedforward networks. They would be a promising candidate for combining supervised and unsupervised learning but unfortunately Auto-Encoders normally correspond to latent variable models with a single layer of stochastic variables, that is, they do not tolerate discarding information.

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/accel-brain-base/network_of_cost_function_LadderNetworks.png" /></div>

  Ladder network makes it possible to solve that problem by settting recursive derivation of the learning rule with a distributed cost function, building denoisng Auto-Encoder recursively. Normally denoising Auto-Encoders have a fixed input but the cost functions on the higher layers can influence their input mappings and this creates a bias towards PCA-type solutions.

  In relation to problem settings such as the Representation Learning, the Ladder Networks is also functionally equivalent of standard CAE as the prototype is exemplified in [demo/Convolutional-Ladder-Networks-for-Representation-Learning.ipynb](https://github.com/accel-brain/accel-brain-code/blob/master/Accel-Brain-Base/demo/Convolutional-Ladder-Networks-for-Representation-Learning.ipynb).



  **Deep Reconstruction-Classification Network(DRCN or DRCNetworks)** is a convolutional network that jointly learns two tasks:

  1. supervised source label prediction.
  2. unsupervised target data reconstruction.

  Ideally, a discriminative representation should model both the label and the structure of the data. Based on that intuition, Ghifary, M., et al.(2016) hypothesize that a domain-adaptive representation should satisfy two criteria:

  1. classify well the source domain labeled data.
  2. reconstruct well the target domain unlabeled data, which can be viewed as an approximate of the ideal discriminative representation.

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/accel-brain-base/network_of_DRCN.png" /></div>

  The encoding parameters of the DRCN are shared across both tasks, while the decoding parameters are sepa-rated. The aim is that the learned label prediction function can perform well onclassifying images in the target domain thus the data reconstruction can beviewed as an auxiliary task to support the adaptation of the label prediction.

  Using this library, for instance, we can extend the Convolutional Auto-Encoder in DRCNetworks to the Convolutional Ladder Networks as mentioned in [demo/DRCNetworks-for-Dataset-Bias-Problem.ipynb](https://github.com/accel-brain/accel-brain-code/blob/master/Accel-Brain-Base/demo/DRCNetworks-for-Dataset-Bias-Problem.ipynb).



  Xu, J., Xiao, L., & López, A. M. (2019) proposed **Self-Supervised Domain Adaptation** framework. This model learns a domain invariant feature representation by incorporating a pretext learning task which can automatically create labels from target domain images. The pretext and main task such as classification problem, object detection problem, or semantic segmentation problem are learned jointly via multi-task learning.

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/accel-brain-base/network_of_Self-Supervised_domain_adaptation.png" /></div>

  While DRCNetworks jointly learns supervised source label prediction and unsupervised target data reconstruction, Self-Supervised Domain Adaptation learns supervised label prediction in source domain and unsupervised pretext-task in target domain. DRCNetworks and Self-Supervised Domain Adaptation are alike in not only network structures but also learning algorithms. Neither is mere supervised learning, nor is it mere unsupervised learning. The learning algorithm of DRCNetworks is a semi-supervised learning, but Self-Supervised Domain Adaptation literally does self-supervised learning.

  Using this library, for instance, we can extend the Self-Supervised Domain Adaptation as mentioned in [demo/Self-Supervised-Domain-Adaptation-for-Classfication-Problem.ipynb](https://github.com/accel-brain/accel-brain-code/blob/master/Accel-Brain-Base/demo/Self-Supervised-Domain-Adaptation-for-Classfication-Problem.ipynb
  ) and [demo/Self-Supervised-Domain-Adaptation-with-Adversarial-training-for-Classfication-Problem.ipynb](https://github.com/accel-brain/accel-brain-code/blob/master/Accel-Brain-Base/demo/Self-Supervised-Domain-Adaptation-with-Adversarial-training-for-Classfication-Problem.ipynb).



  The **Reinforcement learning** theory presents several issues from a perspective of deep learning theory(Mnih, V., et al. 2013). Firstly, deep learning applications have required large amounts of hand-labelled training data. Reinforcement learning algorithms, on the other hand, must be able to learn from a scalar reward signal that is frequently sparse, noisy and delayed.

  The difference between the two theories is not only the type of data but also the timing to be observed. The delay between taking actions and receiving rewards, which can be thousands of timesteps long, seems particularly daunting when compared to the direct association between inputs and targets found in supervised learning.

  Another issue is that deep learning algorithms assume the data samples to be independent, while in reinforcement learning one typically encounters sequences of highly correlated states. Furthermore, in Reinforcement learning, the data distribution changes as the algorithm learns new behaviours, presenting aspects of recursive learning, which can be problematic for deep learning methods that assume a fixed underlying distribution.



  This library considers problem setteing in which an agent interacts with an environment <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/mathcal_E.png" />, in a sequence of actions, observations and rewards. At each time-step the agent selects an action at from the set of possible actions, <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/A_1_K.png" />. The state/action-value function is <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/Q_s_a.png" />.

  The goal of the agent is to interact with the <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/mathcal_E.png" /> by selecting actions in a way that maximises future rewards. We can make the standard assumption that future rewards are discounted by a factor of $\gamma$ per time-step, and define the future discounted return at time <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/t.png" /> as

  <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/r_t_sum_t_t_T_gamma.png" />,

  where <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/Tt.png" /> is the time-step at which the agent will reach the goal. This library defines the optimal state/action-value function <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/Q_ast_s_a.png" /> as the maximum expected return achievable by following any strategy, after seeing some state <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/s.png" /> and then taking some action <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/a.png" />,

  <div align="center">
  <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/Q_ast_s_a_max_pi_E.png" />,
  </div>

  where <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/pi.png" /> is a policy mapping sequences to actions (or distributions over actions).

  The optimal state/action-value function obeys an important identity known as the Bellman equation. This is based on the following *intuition*: if the optimal value <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/Q_ast_s_d_a_d.png" /> of the sequence <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/s_d.png" /> at the next time-step was known for all possible actions <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/a_d.png" />, then the optimal strategy is to select the action <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/a_d.png" /> maximising the expected value of

  <div align="center">
  <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/r_gamma_Q_ast_s_d_a_d.png" />,
  </div>
  <div align="center">
  <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/Q_ast_s_d_a_d_mathbb_E_s_d_sim_mathcal_E.png" />.
  </div>

  The basic idea behind many reinforcement learning algorithms is to estimate the state/action-value function, by using the Bellman equation as an iterative update,

  <div align="center">
  <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/Q_i_1_s_a_mathbb_E_r_gamma_max_a_d.png" />.
  </div>

  Such *value iteration algorithms* converge to the optimal state/action-value function, <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/Q_i_rightarrow_Q_ast.png" /> as <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/i_rightarrow_infty.png" />.

  But increasing the complexity of states/actions is equivalent to increasing the number of combinations of states/actions. If the value function is continuous and granularities of states/actions are extremely fine, the combinatorial explosion will be encountered. In other words, this basic approach is totally impractical, because the state/action-value function is estimated separately for each sequence, without any **generalisation**. Instead, it is common to use a **function approximator** to estimate the state/action-value function,

  <div align="center">
  <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/Q_s_a_theta_approx_Q_ast_s_a.png" />
  </div>

  So the Reduction of complexities is required.



  In this problem setting, the function of nerual network or deep learning is a function approximation with weights <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/theta.png" /> as a Q-Network. A Q-Network can be trained by minimising a loss functions <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/L_i_theta_i.png" /> that changes at each iteration <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/i.png" />,

  <div align="center">
  <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/L_i_theta_i_mathbb_E_s_a_sim_rho_cdot.png" />
  </div>

  where

  <div align="center">
  <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/y_i_mathbb_E_s_d_sim_mathcal_E_r_gamma_max_a_d.png" />
  </div>

  is the target for iteration <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/i.png" /> and <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/rho_cdot.png" /> is a so-called behaviour distribution. This is probability distribution over states and actions. The parameters from the previous iteration <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/theta_i_1.png" /> are held fixed when optimising the loss function <img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/L_i_theta_i.png" />. Differentiating the loss function with respect to the weights we arrive at the following gradient,

  <div align="center"><img src="https://storage.googleapis.com/accel-brain-code/Reinforcement-Learning/img/latex/nabla_theta_i_L_i_theta_i_mathbb_E_s_a_sim_rho_cdot.png" /></div>



  If you pay attention to the calculation speed, it is better to extend the CNN part that is the function approximation to MobileNet. As mentioned in [demo/MobileNet-v2-for-Image-Classification.ipynb](https://github.com/accel-brain/accel-brain-code/blob/master/Accel-Brain-Base/demo/MobileNet-v2-for-Image-Classification.ipynb), this library provides the MobileNet V2(Sandler, M., et al., 2018).



  It is not inevitable to functionally reuse CNN as a function approximator. In the above problem setting of generalisation and Combination explosion, for instance, Long Short-Term Memory(LSTM) networks, which is-a special Reccurent Neural Network(RNN) structure, and CNN as a function approximator are functionally equivalent. In the same problem setting, functional equivalents can be functionally replaced. Considering that the feature space of the rewards has the time-series nature, LSTM will be more useful.



  The basic concepts, theories, and methods behind this library are described in the following books.

  <div align="center"><a href="https://www.amazon.co.jp/dp/B08PV4ZQG5/" target="_blank"><img src="https://storage.googleapis.com/accel-brain-code/Accel-Brain-Books/In-house_R_and_D_in_the_era_of_democratization_of_AI/book_cover.jpg" width="160px" /></a>
    <p>『<a href="https://www.amazon.co.jp/dp/B08PV4ZQG5/ref=sr_1_1?dchild=1&qid=1607343553&s=digital-text&sr=1-1&text=%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BEAccel+Brain" target="_blank">「AIの民主化」時代の企業内研究開発: 深層学習の「実学」としての機能分析</a>』(Japanese)</p></div>

  <br />

  <div align="center"><a href="https://www.amazon.co.jp/dp/B093Z533LK" target="_blank"><img src="https://storage.googleapis.com/accel-brain-code/Accel-Brain-Books/AI_vs_Investors_as_Noise_Traders/book_cover.jpg" width="160px" /></a>
    <p>『<a href="https://www.amazon.co.jp/dp/B093Z533LK" target="_blank">AI vs. ノイズトレーダーとしての投資家たち: 「アルゴリズム戦争」時代の証券投資戦略</a>』(Japanese)</p></div>

  <br />

  <div align="center"><a href="https://www.amazon.co.jp/dp/B0994CH3CM" target="_blank"><img src="https://storage.googleapis.com/accel-brain-code/Accel-Brain-Books/Babel_of_Natural_Language_Processing/book_cover.jpg" width="160px" /></a>
    <p>『<a href="https://www.amazon.co.jp/dp/B0994CH3CM" target="_blank">自然言語処理のバベル: 文書自動要約、文章生成AI、チャットボットの意味論</a>』(Japanese)</p></div>

  <br />

  <div align="center"><a href="https://www.amazon.co.jp/dp/B09C4KYZBX" target="_blank"><img src="https://storage.googleapis.com/accel-brain-code/Accel-Brain-Books/Origin_of_the_statistical_machine_learning/book_cover.jpg" width="160px" /></a>
    <p>『<a href="https://www.amazon.co.jp/dp/B09C4KYZBX" target="_blank">統計的機械学習の根源: 熱力学、量子力学、統計力学における天才物理学者たちの神学的な理念</a>』(Japanese)</p></div>


  Specific references are the following papers and books.



  - Ackley, D. H., Hinton, G. E., & Sejnowski, T. J. (1985). A learning algorithm for Boltzmann machines. Cognitive science, 9(1), 147-169.
  - Boulanger-Lewandowski, N., Bengio, Y., & Vincent, P. (2012). Modeling temporal dependencies in high-dimensional sequences: Application to polyphonic music generation and transcription. arXiv preprint arXiv:1206.6392.
  - Eslami, S. A., Heess, N., Williams, C. K., & Winn, J. (2014). The shape boltzmann machine: a strong model of object shape. International Journal of Computer Vision, 107(2), 155-176.
  - Hinton, G. E. (2002). Training products of experts by minimizing contrastive divergence. Neural computation, 14(8), 1771-1800.
  - Le Roux, N., & Bengio, Y. (2008). Representational power of restricted Boltzmann machines and deep belief networks. Neural computation, 20(6), 1631-1649.
  - Lyu, Q., Wu, Z., Zhu, J., & Meng, H. (2015, June). Modelling High-Dimensional Sequences with LSTM-RTRBM: Application to Polyphonic Music Generation. In IJCAI (pp. 4138-4139).
  - Lyu, Q., Wu, Z., & Zhu, J. (2015, October). Polyphonic music modelling with LSTM-RTRBM. In Proceedings of the 23rd ACM international conference on Multimedia (pp. 991-994). ACM.
  - Salakhutdinov, R., & Hinton, G. E. (2009). Deep boltzmann machines. InInternational conference on artificial intelligence and statistics (pp. 448-455).
  - Sutskever, I., Hinton, G. E., & Taylor, G. W. (2009). The recurrent temporal restricted boltzmann machine. In Advances in Neural Information Processing Systems (pp. 1601-1608).



  - Baccouche, M., Mamalet, F., Wolf, C., Garcia, C., & Baskurt, A. (2012, September). Spatio-Temporal Convolutional Sparse Auto-Encoder for Sequence Classification. In BMVC (pp. 1-12).
  - Bengio, Y., Yao, L., Alain, G., & Vincent, P. (2013). Generalized denoising auto-encoders as generative models. In Advances in neural information processing systems (pp. 899-907).
  - Chong, Y. S., & Tay, Y. H. (2017, June). Abnormal event detection in videos using spatiotemporal autoencoder. In International Symposium on Neural Networks (pp. 189-196). Springer, Cham.
  - Kingma, D. P., & Welling, M. (2014). Auto-encoding variational Bayes, May 2014. arXiv preprint arXiv:1312.6114.
  - Masci, J., Meier, U., Cireşan, D., & Schmidhuber, J. (2011, June). Stacked convolutional auto-encoders for hierarchical feature extraction. In International Conference on Artificial Neural Networks (pp. 52-59). Springer, Berlin, Heidelberg.
  - Patraucean, V., Handa, A., & Cipolla, R. (2015). Spatio-temporal video autoencoder with differentiable memory. arXiv preprint arXiv:1511.06309.
  - Rifai, S., Vincent, P., Muller, X., Glorot, X., & Bengio, Y. (2011, June). Contractive auto-encoders: Explicit invariance during feature extraction. In Proceedings of the 28th International Conference on International Conference on Machine Learning (pp. 833-840). Omnipress.
  - Rifai, S., Mesnil, G., Vincent, P., Muller, X., Bengio, Y., Dauphin, Y., & Glorot, X. (2011, September). Higher order contractive auto-encoder. In Joint European Conference on Machine Learning and Knowledge Discovery in Databases (pp. 645-660). Springer, Berlin, Heidelberg.
  - Seung, H. S. (1998). Learning continuous attractors in recurrent networks. In Advances in neural information processing systems (pp. 654-660).
  - Zhao, J., Mathieu, M., & LeCun, Y. (2016). Energy-based generative adversarial network. arXiv preprint arXiv:1609.03126.



  - Bahdanau, D., Cho, K., & Bengio, Y. (2014). Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473.
  - Cho, K., Van Merriënboer, B., Gulcehre, C., Bahdanau, D., Bougares, F., Schwenk, H., & Bengio, Y. (2014). Learning phrase representations using RNN encoder-decoder for statistical machine translation. arXiv preprint arXiv:1406.1078.
  - Malhotra, P., Ramakrishnan, A., Anand, G., Vig, L., Agarwal, P., & Shroff, G. (2016). LSTM-based encoder-decoder for multi-sensor anomaly detection. arXiv preprint arXiv:1607.00148.
  - Xingjian, S. H. I., Chen, Z., Wang, H., Yeung, D. Y., Wong, W. K., & Woo, W. C. (2015). Convolutional LSTM network: A machine learning approach for precipitation nowcasting. In Advances in neural information processing systems (pp. 802-810).
  - Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., ... & Polosukhin, I. (2017). Attention is all you need. In Advances in Neural Information Processing Systems (pp. 5998-6008).



  - Goodfellow, I., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., ... & Bengio, Y. (2014). Generative adversarial nets. In Advances in neural information processing systems (pp. 2672-2680).
  - Makhzani, A., Shlens, J., Jaitly, N., Goodfellow, I., & Frey, B. (2015). Adversarial autoencoders. arXiv preprint arXiv:1511.05644.
  - Mirza, M., & Osindero, S. (2014). Conditional generative adversarial nets. arXiv preprint arXiv:1411.1784.
  - Zhao, J., Mathieu, M., & LeCun, Y. (2016). Energy-based generative adversarial network. arXiv preprint arXiv:1609.03126.



  - Bengio, Y., Lamblin, P., Popovici, D., & Larochelle, H. (2007). Greedy layer-wise training of deep networks. In Advances in neural information processing systems (pp. 153-160).
  - Erhan, D., Bengio, Y., Courville, A., Manzagol, P. A., Vincent, P., & Bengio, S. (2010). Why does unsupervised pre-training help deep learning?. Journal of Machine Learning Research, 11(Feb), 625-660.



  - Ghifary, M., Kleijn, W. B., Zhang, M., Balduzzi, D., & Li, W. (2016, October). Deep reconstruction-classification networks for unsupervised domain adaptation. In European Conference on Computer Vision (pp. 597-613). Springer, Cham.
  - Rasmus, A., Berglund, M., Honkala, M., Valpola, H., & Raiko, T. (2015). Semi-supervised learning with ladder networks. In Advances in neural information processing systems (pp. 3546-3554).
  - Valpola, H. (2015). From neural PCA to deep unsupervised learning. In Advances in Independent Component Analysis and Learning Machines (pp. 143-171). Academic Press.



  - Jing, L., & Tian, Y. (2020). Self-supervised visual feature learning with deep neural networks: A survey. IEEE Transactions on Pattern Analysis and Machine Intelligence.
  - Xu, J., Xiao, L., & López, A. M. (2019). Self-supervised domain adaptation for computer vision tasks. IEEE Access, 7, 156694-156706.



  - Cho, K., Van Merriënboer, B., Gulcehre, C., Bahdanau, D., Bougares, F., Schwenk, H., & Bengio, Y. (2014). Learning phrase representations using RNN encoder-decoder for statistical machine translation. arXiv preprint arXiv:1406.1078.
  - <a href="https://pdfs.semanticscholar.org/dd98/9d94613f439c05725bad958929357e365084.pdf" target="_blank">Egorov, M. (2016). Multi-agent deep reinforcement learning.</a>
  - Gupta, J. K., Egorov, M., & Kochenderfer, M. (2017, May). Cooperative multi-agent control using deep reinforcement learning. In International Conference on Autonomous Agents and Multiagent Systems (pp. 66-83). Springer, Cham.
  - Malhotra, P., Ramakrishnan, A., Anand, G., Vig, L., Agarwal, P., & Shroff, G. (2016). LSTM-based encoder-decoder for multi-sensor anomaly detection. arXiv preprint arXiv:1607.00148.
  - Mnih, V., Kavukcuoglu, K., Silver, D., Graves, A., Antonoglou, I., Wierstra, D., & Riedmiller, M. (2013). Playing atari with deep reinforcement learning. arXiv preprint arXiv:1312.5602.
  - Sainath, T. N., Vinyals, O., Senior, A., & Sak, H. (2015, April). Convolutional, long short-term memory, fully connected deep neural networks. In Acoustics, Speech and Signal Processing (ICASSP), 2015 IEEE International Conference on (pp. 4580-4584). IEEE.
  - Xingjian, S. H. I., Chen, Z., Wang, H., Yeung, D. Y., Wong, W. K., & Woo, W. C. (2015). Convolutional LSTM network: A machine learning approach for precipitation nowcasting. In Advances in neural information processing systems (pp. 802-810).
  - Zaremba, W., Sutskever, I., & Vinyals, O. (2014). Recurrent neural network regularization. arXiv preprint arXiv:1409.2329.



  - Bahdanau, D., Cho, K., & Bengio, Y. (2014). Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473.
  - Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2018). Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805.
  - Floridi, L., & Chiriatti, M. (2020). GPT-3: Its nature, scope, limits, and consequences. Minds and Machines, 30(4), 681-694.
  - Lan, Z., Chen, M., Goodman, S., Gimpel, K., Sharma, P., & Soricut, R. (2019). Albert: A lite bert for self-supervised learning of language representations. arXiv preprint arXiv:1909.11942.
  - Miller, A., Fisch, A., Dodge, J., Karimi, A. H., Bordes, A., & Weston, J. (2016). Key-value memory networks for directly reading documents. arXiv preprint arXiv:1606.03126.
  - Radford, A., Narasimhan, K., Salimans, T., & Sutskever, I. (2018) Improving Language Understanding by Generative Pre-Training. OpenAI (URL: https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf)
  - Radford, A., Wu, J., Child, R., Luan, D., Amodei, D., & Sutskever, I. (2019). Language models are unsupervised multitask learners. OpenAI blog, 1(8), 9.
  - Song, K., Tan, X., Qin, T., Lu, J., & Liu, T. Y. (2019). Mass: Masked sequence to sequence pre-training for language generation. arXiv preprint arXiv:1905.02450.
  - Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., & Polosukhin, I. (2017). Attention is all you need. arXiv preprint arXiv:1706.03762.



  - Bengio, Y., Boulanger-Lewandowski, N., & Pascanu, R. (2013, May). Advances in optimizing recurrent networks. In 2013 IEEE International Conference on Acoustics, Speech and Signal Processing (pp. 8624-8628). IEEE.
  - Duchi, J., Hazan, E., & Singer, Y. (2011). Adaptive subgradient methods for online learning and stochastic optimization. Journal of Machine Learning Research, 12(Jul), 2121-2159.
  - Dozat, T. (2016). Incorporating nesterov momentum into adam., Workshop track - ICLR 2016.
  - Kingma, D. P., & Ba, J. (2014). Adam: A method for stochastic optimization. arXiv preprint arXiv:1412.6980.



  - Dumoulin, V., & Visin, F. (2016). A guide to convolution arithmetic for deep learning. arXiv preprint arXiv:1603.07285.
  - Erhan, D., Courville, A., & Bengio, Y. (2010). Understanding representations learned in deep architectures. Department dInformatique et Recherche Operationnelle, University of Montreal, QC, Canada, Tech. Rep, 1355, 1.
  - Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep learning (adaptive computation and machine learning series). Adaptive Computation and Machine Learning series, 800.
  - He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 770-778).
  - Ioffe, S., & Szegedy, C. (2015). Batch normalization: Accelerating deep network training by reducing internal covariate shift. arXiv preprint arXiv:1502.03167.
  - Kamyshanska, H., & Memisevic, R. (2014). The potential energy of an autoencoder. IEEE transactions on pattern analysis and machine intelligence, 37(6), 1261-1273.
  - Sandler, M., Howard, A., Zhu, M., Zhmoginov, A., & Chen, L. C. (2018). Mobilenetv2: Inverted residuals and linear bottlenecks. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 4510-4520).
  - Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. (2014). Dropout: a simple way to prevent neural networks from overfitting. The Journal of Machine Learning Research, 15(1), 1929-1958.
  - Zaremba, W., Sutskever, I., & Vinyals, O. (2014). Recurrent neural network regularization. arXiv preprint arXiv:1409.2329.



  - accel-brain



  - https://accel-brain.co.jp/
  - https://accel-brain.com/



  - GNU General Public License v2.0


pkgId: 9cab7885f7859b23b79f598f38841836dff643a7959dde6d1254219a90a947dd
name: python-accelbyte-py-sdk
arch: src
version: 0.70.0
epoch: 0
release: 1
summary: AccelByte Python SDK
url: https://pypi.org/project/accelbyte-py-sdk/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-0.70.0-1.src.rpm
checksum_type: sha256
description:
  ```shell
  python -m accelbyte_py_sdk login client -b 'https://<environment>.accelbyte.io' -c **** -s ****  | jq -r .access_token
  ```
  ```text
  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiQWNjZWwgSm9lIn0.VOnZ863KSLHhgJfupKzuKZq4ACcefUlcQwi1YvxdBlw


pkgId: fb9acf71d62f6158130d9858dd10f1080e801b52ef92c775624e10e838d54202
name: python-accelbyte-py-sdk-all
arch: src
version: 0.7.0
epoch: 0
release: 1
summary: AccelByte Python SDK - All
url: https://pypi.org/project/accelbyte-py-sdk-all/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-all-0.7.0-1.src.rpm
checksum_type: sha256
description:
  To use the `HTTP Retry` feature, set the `HttpClient`'s `retry_policy` and `backoff_policy`.
  ```python
  import accelbyte_py_sdk
  from accelbyte_py_sdk.core import get_http_client

  accelbyte_py_sdk.initialize()

  http_client = get_http_client()


  from accelbyte_py_sdk.core import ConstantHttpBackoffPolicy
  from accelbyte_py_sdk.core import MaxRetriesHttpRetryPolicy
  http_client.retry_policy = MaxRetriesHttpRetryPolicy(3)

  from accelbyte_py_sdk.core import ExponentialHttpBackoffPolicy
  from accelbyte_py_sdk.core import MaxElapsedHttpRetryPolicy
  http_client.backoff_policy = ExponentialHttpBackoffPolicy(initial=1.0, multiplier=2.0)
  http_client.retry_policy = MaxElapsedHttpRetryPolicy(15)

  from datetime import timedelta
  from typing import Optional
  def my_custom_retry_policy(request, response, /, *, retries: int = 0, elapsed: Optional[timedelta] = None, **kwargs) -> float:
      return "Retry-After" in response.headers and retries == 1  # Retry if the 'Retry-After' header exists and we are on the 1st retry (2nd attempt).
  def my_custom_backoff_policy(request, response, /, *, retries: int = 0, elapsed: Optional[timedelta] = None, **kwargs) -> float:
      return response.headers.get("Retry-After", 1)  # Use the value of the 'Retry-After' response header, default to 1.0s.
  http_client.backoff_policy = my_custom_backoff_policy
  http_client.retry_policy = my_custom_retry_policy

  from accelbyte_py_sdk.core import CompositeHttpRetryPolicy
  from accelbyte_py_sdk.core import MaxRetriesHttpRetryPolicy
  from accelbyte_py_sdk.core import StatusCodesHttpRetryPolicy
  http_client.retry_policy = CompositeHttpRetryPolicy(
      StatusCodesHttpRetryPolicy(401, (501, 503)),  # Retry when response status code is 401, 501 to 503 (501, 502, or 503) -- AND
      MaxRetriesHttpRetryPolicy(3)                  #       when number of retries is less than or equal to 3.
  )


pkgId: 5e6f864087c4af0c07a2ee74e23cc2bc78ef92cc361c42157852cf79943a6815
name: python-accelbyte-py-sdk-service-achievement
arch: src
version: 0.16.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Achievement Service
url: https://pypi.org/project/accelbyte-py-sdk-service-achievement/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-achievement-0.16.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Achievement Service
  * Version: 2.23.3
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-achievement
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 301470703ef17adc00c393b667955c17b473ee29a2190b743bdebb8d7f91f6cb
name: python-accelbyte-py-sdk-service-ams
arch: src
version: 0.14.0
epoch: 0
release: 1
summary: AccelByte Python SDK - Fleet Commander
url: https://pypi.org/project/accelbyte-py-sdk-service-ams/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-ams-0.14.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  Fleet Commander
  * Version: 1.30.0
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-ams
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: bfd00c1b1e1e78cc6a09f9402166396752223793b933a5caa99925d1fb25f1ea
name: python-accelbyte-py-sdk-service-basic
arch: src
version: 0.15.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Basic Service
url: https://pypi.org/project/accelbyte-py-sdk-service-basic/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-basic-0.15.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Basic Service
  * Version: 4.0.0
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-basic
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 5d22147c721ce06c4ae49a39f869c69dcae8cf769773f3c0313e765b4142b814
name: python-accelbyte-py-sdk-service-challenge
arch: src
version: 0.8.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Challenge Service
url: https://pypi.org/project/accelbyte-py-sdk-service-challenge/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-challenge-0.8.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Challenge Service
  * Version: 1.0.0
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-challenge
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: bc970c7e1ef4856f123ef2d93836f79aaf77f9ea84fea51c4affc5e45e7249b9
name: python-accelbyte-py-sdk-service-chat
arch: src
version: 0.16.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Chat Service
url: https://pypi.org/project/accelbyte-py-sdk-service-chat/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-chat-0.16.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Chat Service
  * Version: 0.4.36
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-chat
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 58d436598a135bc8efd5329cd9a673472bc0b28b58e66bb2f12c46eaaeb85661
name: python-accelbyte-py-sdk-service-cloudsave
arch: src
version: 0.16.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Cloudsave Service
url: https://pypi.org/project/accelbyte-py-sdk-service-cloudsave/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-cloudsave-0.16.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Cloudsave Service
  * Version: 3.24.0
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-cloudsave
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 6fa7684ea83e5cc0f996408ef5b5388cabb1de22c296093be6499222b1c31b13
name: python-accelbyte-py-sdk-service-dsartifact
arch: src
version: 0.10.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Ds Artifact Manager
url: https://pypi.org/project/accelbyte-py-sdk-service-dsartifact/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-dsartifact-0.10.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Ds Artifact Manager
  * Version: 1.11.5
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-dsartifact
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: de7d457c3e5c8d0729d1f5e381cc6f46599df35bc5d88fb1cb2b71a4eb0d1b46
name: python-accelbyte-py-sdk-service-dslogmanager
arch: src
version: 0.7.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Ds Log Manager Service
url: https://pypi.org/project/accelbyte-py-sdk-service-dslogmanager/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-dslogmanager-0.7.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Ds Log Manager Service
  * Version: 3.7.4
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-dslogmanager
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: eab623d8b7b6e0a8364bf5c71594779cdee91ea619dc8e0f65045f4b8959db33
name: python-accelbyte-py-sdk-service-dsmc
arch: src
version: 0.11.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Dsm Controller Service
url: https://pypi.org/project/accelbyte-py-sdk-service-dsmc/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-dsmc-0.11.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Dsm Controller Service
  * Version: 6.8.2
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-dsmc
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 7a6974164f5a426a3c79ad1f83431e2a73dff18f2c8dfa5d793b9eff78ad264f
name: python-accelbyte-py-sdk-service-eventlog
arch: src
version: 0.7.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Event Log Service
url: https://pypi.org/project/accelbyte-py-sdk-service-eventlog/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-eventlog-0.7.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Event Log Service
  * Version: 2.2.5
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-eventlog
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 4b1a78f9bdf3e201ea42bfdeaecbed95d163c0870d75ae808b48602975ca1b6f
name: python-accelbyte-py-sdk-service-gametelemetry
arch: src
version: 0.11.0
epoch: 0
release: 1
summary: AccelByte Python SDK - Analytics Game Telemetry
url: https://pypi.org/project/accelbyte-py-sdk-service-gametelemetry/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-gametelemetry-0.11.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  Analytics Game Telemetry
  * Version: 1.27.0
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-gametelemetry
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 8611453775188e7cd7a1f8d4fa1f4ea97be0a797e68823a84fa7ccfb6f236d4a
name: python-accelbyte-py-sdk-service-gametelemetry
arch: src
version: 0.12.0
epoch: 0
release: 1
summary: AccelByte Python SDK - Analytics Game Telemetry
url: https://pypi.org/project/accelbyte-py-sdk-service-gametelemetry/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-gametelemetry-0.12.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  Analytics Game Telemetry
  * Version: 1.29.0
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-gametelemetry
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: c5b0a76d64691641177daa06e53c9050e0cbf7614c8f204e20727e8cdeff2a57
name: python-accelbyte-py-sdk-service-gdpr
arch: src
version: 0.14.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Gdpr Service
url: https://pypi.org/project/accelbyte-py-sdk-service-gdpr/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-gdpr-0.14.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Gdpr Service
  * Version: 2.15.0
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-gdpr
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: d343d3a4dce83fc0a6f02b60957c3ea357bd4f4845f2a2711f277f1974a442e6
name: python-accelbyte-py-sdk-service-group
arch: src
version: 0.15.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Group Service
url: https://pypi.org/project/accelbyte-py-sdk-service-group/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-group-0.15.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Group Service
  * Version: 2.21.2
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-group
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: dd176640fb281937dfd08dd20ce694016d97c179de02a44c836377ac4e58f973
name: python-accelbyte-py-sdk-service-iam
arch: src
version: 0.17.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Iam Service
url: https://pypi.org/project/accelbyte-py-sdk-service-iam/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-iam-0.17.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Iam Service
  * Version: 7.24.2
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-iam
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: d5ea1c35d21b6a907172f7771384e9bcac7bbe695644e969427bfe2b954d3c6d
name: python-accelbyte-py-sdk-service-inventory
arch: src
version: 0.10.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Inventory Service
url: https://pypi.org/project/accelbyte-py-sdk-service-inventory/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-inventory-0.10.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Inventory Service
  * Version: 0.2.4
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-inventory
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 2874c3baf5c94e8b8200e60620d008875ea857eba9ebe16cc11874989c73199b
name: python-accelbyte-py-sdk-service-inventory
arch: src
version: 0.11.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Inventory Service
url: https://pypi.org/project/accelbyte-py-sdk-service-inventory/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-inventory-0.11.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Inventory Service
  * Version: 0.2.7
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-inventory
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: a89e331edccc15021f3b22f8dc96c239994027db2058a7b9c98124ae3c1a3f09
name: python-accelbyte-py-sdk-service-leaderboard
arch: src
version: 0.16.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Leaderboard Service
url: https://pypi.org/project/accelbyte-py-sdk-service-leaderboard/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-leaderboard-0.16.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Leaderboard Service
  * Version: 2.31.0
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-leaderboard
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 9cfb6988a7078f5590febdfd00dfe8d5ab456800f89b0011a0792ba00367e06e
name: python-accelbyte-py-sdk-service-legal
arch: src
version: 0.15.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Legal Service
url: https://pypi.org/project/accelbyte-py-sdk-service-legal/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-legal-0.15.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Legal Service
  * Version: 4.0.0
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-legal
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 63c7a9850f6406a646c4cba4faac66f69155523d0a1de1579afc042382aa194b
name: python-accelbyte-py-sdk-service-lobby
arch: src
version: 0.14.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Lobby Server
url: https://pypi.org/project/accelbyte-py-sdk-service-lobby/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-lobby-0.14.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Lobby Server
  * Version: 3.36.5
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-lobby
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 0c746fef5df3d71565431def9705dcd5b42754a1b893cd4cf8aa85def554b649
name: python-accelbyte-py-sdk-service-match2
arch: src
version: 0.14.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Match Service V2
url: https://pypi.org/project/accelbyte-py-sdk-service-match2/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-match2-0.14.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Match Service V2
  * Version: 2.28.0
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-match2
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: ca453ca7c26e4bd9997b94502e01bf16615438cde0521cbed2297235c9b47d69
name: python-accelbyte-py-sdk-service-matchmaking
arch: src
version: 0.15.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Matchmaking Service
url: https://pypi.org/project/accelbyte-py-sdk-service-matchmaking/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-matchmaking-0.15.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Matchmaking Service
  * Version: 2.30.6
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-matchmaking
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: ecc85d63d19c24ac96c5b0240d40acf2322253dbae00fbb6bd1992de8d75c893
name: python-accelbyte-py-sdk-service-platform
arch: src
version: 0.17.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Platform Service
url: https://pypi.org/project/accelbyte-py-sdk-service-platform/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-platform-0.17.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Platform Service
  * Version: 6.0.0
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-platform
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: bbd9e61e6b4e7bfb879e3138803afcab0fab9ec641a56a596dd5ddc855b6975d
name: python-accelbyte-py-sdk-service-qosm
arch: src
version: 0.8.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Qos Manager Service
url: https://pypi.org/project/accelbyte-py-sdk-service-qosm/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-qosm-0.8.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Qos Manager Service
  * Version: 1.19.4
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-qosm
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 1eb4eeba8b15fb4863e1a0bfde72a71809b1fceb56741b001c285653592c0686
name: python-accelbyte-py-sdk-service-reporting
arch: src
version: 0.11.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Reporting Service
url: https://pypi.org/project/accelbyte-py-sdk-service-reporting/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-reporting-0.11.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Reporting Service
  * Version: 0.1.36
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-reporting
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 9b298517407945840aec1e2824b30813c584f63a94c075b4dd39496b9b350cae
name: python-accelbyte-py-sdk-service-reporting
arch: src
version: 0.12.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Reporting Service
url: https://pypi.org/project/accelbyte-py-sdk-service-reporting/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-reporting-0.12.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Reporting Service
  * Version: 0.1.38
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-reporting
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 5a61427a198758334a55b98b2860c8990e7a2c0f33750e0422ecca6f2305ed6d
name: python-accelbyte-py-sdk-service-seasonpass
arch: src
version: 0.17.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Seasonpass Service
url: https://pypi.org/project/accelbyte-py-sdk-service-seasonpass/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-seasonpass-0.17.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Seasonpass Service
  * Version: 1.23.0
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-seasonpass
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: bbb8b3734195b5c2e5a861f2642332c4ffcd7c0cff0c145a9c830f80b8ba5045
name: python-accelbyte-py-sdk-service-session
arch: src
version: 0.17.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Session Service
url: https://pypi.org/project/accelbyte-py-sdk-service-session/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-session-0.17.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Session Service
  * Version: 3.20.0
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-session
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: f33338c188bf2dc9ad56d0b75b226a255e87fd4f5eb1b68575c63264c8cfd0b2
name: python-accelbyte-py-sdk-service-sessionbrowser
arch: src
version: 0.16.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Session Browser Service
url: https://pypi.org/project/accelbyte-py-sdk-service-sessionbrowser/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-sessionbrowser-0.16.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Session Browser Service
  * Version: 1.18.9
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-sessionbrowser
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 43f5221eee0dc6ace22eef6c604fd04fad2653783b4e1a147d6db03a7d30cd65
name: python-accelbyte-py-sdk-service-sessionhistory
arch: src
version: 0.6.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Session History Service
url: https://pypi.org/project/accelbyte-py-sdk-service-sessionhistory/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-sessionhistory-0.6.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Session History Service
  * Version: 1.12.3
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-sessionhistory
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 8bb8a49cae7d5ecdcd5c71ade7cca717e8c5181b0dd74dbd998042339e541ea2
name: python-accelbyte-py-sdk-service-social
arch: src
version: 0.17.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Statistics Service
url: https://pypi.org/project/accelbyte-py-sdk-service-social/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-social-0.17.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Statistics Service
  * Version: 2.18.3
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-social
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 5cd582ef0663952436fca660f2fbe5a32ea76cab12f7fff3397ed952880e5677
name: python-accelbyte-py-sdk-service-ugc
arch: src
version: 0.15.0
epoch: 0
release: 1
summary: AccelByte Python SDK - AccelByte Gaming Services Ugc Service
url: https://pypi.org/project/accelbyte-py-sdk-service-ugc/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelbyte-py-sdk-service-ugc-0.15.0-1.src.rpm
checksum_type: sha256
description:
  [//]: # (Code generated. DO NOT EDIT!)



  This is a service module for the [AccelByte Modular Python SDK](https://github.com/AccelByte/accelbyte-python-modular-sdk) package.

  ```text
  AccelByte Gaming Services Ugc Service
  * Version: 2.23.1
  ```



  This SDK requires Python 3.9 to be installed.



  Install the core package from PyPI

  ```sh
  pip install accelbyte-py-sdk-core
  ```

  install *this* service

  ```sh
  pip install accelbyte-py-sdk-service-ugc
  ```

  and then install any service or feature you want

  ```sh
  pip install accelbyte-py-sdk-service-{ SERVICE }
  ```

  ```sh
  pip install accelbyte-py-sdk-feat-{ FEATURE }
  ```

  or install everything

  ```sh
  pip install accelbyte-py-sdk-all
  ```



  See [README.md](https://github.com/AccelByte/accelbyte-python-modular-sdk/blob/main/README.md)


pkgId: 3b36efe9f77df4618ba9ff3d9aaef5435379c315c79380c775d3b30f4caca716
name: python-acceldata-airflow-sdk
arch: src
version: 3.14.0
epoch: 0
release: 1
url: https://pypi.org/project/acceldata-airflow-sdk/
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acceldata-airflow-sdk-3.14.0-1.src.rpm
checksum_type: sha256
summary:
  ADOC is a complete solution to observe the quality of the data present in your data lake and warehouse. Using ADOC, you can ensure that high-quality data backs your business decisions.


pkgId: b7e95f2fd6ed7714efe43db3f41a6223101e3b5a1570942aa9aa8666e9aa6859
name: python-accelerate
arch: src
version: 0.34.2
epoch: 0
release: 1
summary: Accelerate
url: https://github.com/huggingface/accelerate
rpm_license: Apache
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accelerate-0.34.2-1.src.rpm
checksum_type: sha256
description:
  <!---
  Copyright 2021 The HuggingFace Team. All rights reserved.

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

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

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

  <p align="center">
      <br>
      <img src="https://raw.githubusercontent.com/huggingface/accelerate/main/docs/source/imgs/accelerate_logo.png" width="400"/>
      <br>
  <p>

  <p align="center">
      <!-- Uncomment when CircleCI is set up
      <a href="https://circleci.com/gh/huggingface/accelerate"><img alt="Build" src="https://img.shields.io/circleci/build/github/huggingface/transformers/master"></a>
      -->
      <a href="https://github.com/huggingface/accelerate/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/huggingface/accelerate.svg?color=blue"></a>
      <a href="https://huggingface.co/docs/accelerate/index.html"><img alt="Documentation" src="https://img.shields.io/website/http/huggingface.co/docs/accelerate/index.html.svg?down_color=red&down_message=offline&up_message=online"></a>
      <a href="https://github.com/huggingface/accelerate/releases"><img alt="GitHub release" src="https://img.shields.io/github/release/huggingface/accelerate.svg"></a>
      <a href="https://github.com/huggingface/accelerate/blob/main/CODE_OF_CONDUCT.md"><img alt="Contributor Covenant" src="https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg"></a>
  </p>

  <h3 align="center">
  <p>Run your *raw* PyTorch training script on any kind of device
  </h3>

  <h3 align="center">
      <a href="https://hf.co/course"><img src="https://raw.githubusercontent.com/huggingface/accelerate/main/docs/source/imgs/course_banner.png"></a>
  </h3>



  🤗 Accelerate was created for PyTorch users who like to write the training loop of PyTorch models but are reluctant to write and maintain the boilerplate code needed to use multi-GPUs/TPU/fp16.

  🤗 Accelerate abstracts exactly and only the boilerplate code related to multi-GPUs/TPU/fp16 and leaves the rest of your code unchanged.

  Here is an example:

  ```diff
    import torch
    import torch.nn.functional as F
    from datasets import load_dataset
  + from accelerate import Accelerator

  + accelerator = Accelerator()
  - device = 'cpu'
  + device = accelerator.device

    model = torch.nn.Transformer().to(device)
    optimizer = torch.optim.Adam(model.parameters())

    dataset = load_dataset('my_dataset')
    data = torch.utils.data.DataLoader(dataset, shuffle=True)

  + model, optimizer, data = accelerator.prepare(model, optimizer, data)

    model.train()
    for epoch in range(10):
        for source, targets in data:
            source = source.to(device)
            targets = targets.to(device)

            optimizer.zero_grad()

            output = model(source)
            loss = F.cross_entropy(output, targets)

  -         loss.backward()
  +         accelerator.backward(loss)

            optimizer.step()
  ```

  As you can see in this example, by adding 5-lines to any standard PyTorch training script you can now run on any kind of single or distributed node setting (single CPU, single GPU, multi-GPUs and TPUs) as well as with or without mixed precision (fp8, fp16, bf16).

  In particular, the same code can then be run without modification on your local machine for debugging or your training environment.

  🤗 Accelerate even handles the device placement for you (which requires a few more changes to your code, but is safer in general), so you can even simplify your training loop further:

  ```diff
    import torch
    import torch.nn.functional as F
    from datasets import load_dataset
  + from accelerate import Accelerator

  - device = 'cpu'
  + accelerator = Accelerator()

  - model = torch.nn.Transformer().to(device)
  + model = torch.nn.Transformer()
    optimizer = torch.optim.Adam(model.parameters())

    dataset = load_dataset('my_dataset')
    data = torch.utils.data.DataLoader(dataset, shuffle=True)

  + model, optimizer, data = accelerator.prepare(model, optimizer, data)

    model.train()
    for epoch in range(10):
        for source, targets in data:
  -         source = source.to(device)
  -         targets = targets.to(device)

            optimizer.zero_grad()

            output = model(source)
            loss = F.cross_entropy(output, targets)

  -         loss.backward()
  +         accelerator.backward(loss)

            optimizer.step()
  ```

  Want to learn more? Check out the [documentation](https://huggingface.co/docs/accelerate) or have a look at our [examples](https://github.com/huggingface/accelerate/tree/main/examples).



  🤗 Accelerate also provides an optional CLI tool that allows you to quickly configure and test your training environment before launching the scripts. No need to remember how to use `torch.distributed.run` or to write a specific launcher for TPU training!
  On your machine(s) just run:

  ```bash
  accelerate config
  ```

  and answer the questions asked. This will generate a config file that will be used automatically to properly set the default options when doing

  ```bash
  accelerate launch my_script.py --args_to_my_script
  ```

  For instance, here is how you would run the GLUE example on the MRPC task (from the root of the repo):

  ```bash
  accelerate launch examples/nlp_example.py
  ```

  This CLI tool is **optional**, and you can still use `python my_script.py` or `python -m torchrun my_script.py` at your convenience.

  You can also directly pass in the arguments you would to `torchrun` as arguments to `accelerate launch` if you wish to not run` accelerate config`.

  For example, here is how to launch on two GPUs:

  ```bash
  accelerate launch --multi_gpu --num_processes 2 examples/nlp_example.py
  ```

  To learn more, check the CLI documentation available [here](https://huggingface.co/docs/accelerate/package_reference/cli).

  Or view the configuration zoo [here](https://github.com/huggingface/accelerate/blob/main/examples/config_yaml_templates/)



  🤗 Here is another way to launch multi-CPU run using MPI. You can learn how to install Open MPI on [this page](https://www.open-mpi.org/faq/?category=building#easy-build). You can use Intel MPI or MVAPICH as well.
  Once you have MPI setup on your cluster, just run:
  ```bash
  accelerate config
  ```
  Answer the questions that are asked, selecting to run using multi-CPU, and answer "yes" when asked if you want accelerate to launch mpirun.
  Then, use `accelerate launch` with your script like:
  ```bash
  accelerate launch examples/nlp_example.py
  ```
  Alternatively, you can use mpirun directly, without using the CLI like:
  ```bash
  mpirun -np 2 python examples/nlp_example.py
  ```



  🤗 Accelerate supports training on single/multiple GPUs using DeepSpeed. To use it, you don't need to change anything in your training code; you can set everything using just `accelerate config`. However, if you desire to tweak your DeepSpeed related args from your Python script, we provide you the `DeepSpeedPlugin`.

  ```python
  from accelerate import Accelerator, DeepSpeedPlugin



  deepspeed_plugin = DeepSpeedPlugin(zero_stage=2, gradient_accumulation_steps=2)
  accelerator = Accelerator(mixed_precision='fp16', deepspeed_plugin=deepspeed_plugin)


  accelerator.wait_for_everyone()
  unwrapped_model = accelerator.unwrap_model(model)
  unwrapped_model.save_pretrained(save_dir, save_function=accelerator.save, state_dict=accelerator.get_state_dict(model))
  ```

  Note: DeepSpeed support is experimental for now. In case you get into some problem, please open an issue.



  🤗 Accelerate also provides a `notebook_launcher` function you can use in a notebook to launch a distributed training. This is especially useful for Colab or Kaggle notebooks with a TPU backend. Just define your training loop in a `training_function` then in your last cell, add:

  ```python
  from accelerate import notebook_launcher

  notebook_launcher(training_function)
  ```

  An example can be found in [this notebook](https://github.com/huggingface/notebooks/blob/main/examples/accelerate_examples/simple_nlp_example.ipynb). [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/accelerate_examples/simple_nlp_example.ipynb)



  You should use 🤗 Accelerate when you want to easily run your training scripts in a distributed environment without having to renounce full control over your training loop. This is not a high-level framework above PyTorch, just a thin wrapper so you don't have to learn a new library. In fact, the whole API of 🤗 Accelerate is in one class, the `Accelerator` object.



  You shouldn't use 🤗 Accelerate if you don't want to write a training loop yourself. There are plenty of high-level libraries above PyTorch that will offer you that, 🤗 Accelerate is not one of them.



  If you like the simplicity of 🤗 Accelerate but would prefer a higher-level abstraction around its capabilities, some frameworks and libraries that are built on top of 🤗 Accelerate are listed below:

  * [Amphion](https://github.com/open-mmlab/Amphion) is a toolkit for Audio, Music, and Speech Generation. Its purpose is to support reproducible research and help junior researchers and engineers get started in the field of audio, music, and speech generation research and development.
  * [Animus](https://github.com/Scitator/animus) is a minimalistic framework to run machine learning experiments. Animus highlights common "breakpoints" in ML experiments and provides a unified interface for them within [IExperiment](https://github.com/Scitator/animus/blob/main/animus/core.py#L76).
  * [Catalyst](https://github.com/catalyst-team/catalyst#getting-started) is a PyTorch framework for Deep Learning Research and Development. It focuses on reproducibility, rapid experimentation, and codebase reuse so you can create something new rather than write yet another train loop. Catalyst provides a [Runner](https://catalyst-team.github.io/catalyst/api/core.html#runner) to connect all parts of the experiment: hardware backend, data transformations, model training, and inference logic.
  * [fastai](https://github.com/fastai/fastai#installing) is a PyTorch framework for Deep Learning that simplifies training fast and accurate neural nets using modern best practices. fastai provides a [Learner](https://docs.fast.ai/learner.html#Learner) to handle the training, fine-tuning, and inference of deep learning algorithms.
  * [Finetuner](https://github.com/jina-ai/finetuner) is a service that enables models to create higher-quality embeddings for semantic search, visual similarity search, cross-modal text<->image search, recommendation systems, clustering, duplication detection, anomaly detection, or other uses.
  * [InvokeAI](https://github.com/invoke-ai/InvokeAI) is a creative engine for Stable Diffusion models, offering industry-leading WebUI, terminal usage support, and serves as the foundation for many commercial products.
  * [Kornia](https://kornia.readthedocs.io/en/latest/get-started/introduction.html) is a differentiable library that allows classical computer vision to be integrated into deep learning models. Kornia provides a [Trainer](https://kornia.readthedocs.io/en/latest/x.html#kornia.x.Trainer) with the specific purpose to train and fine-tune the supported deep learning algorithms within the library.
  * [Open Assistant](https://projects.laion.ai/Open-Assistant/) is a chat-based assistant that understands tasks, can interact with their party systems, and retrieve information dynamically to do so.
  * [pytorch-accelerated](https://github.com/Chris-hughes10/pytorch-accelerated) is a lightweight training library, with a streamlined feature set centered around a general-purpose [Trainer](https://pytorch-accelerated.readthedocs.io/en/latest/trainer.html), that places a huge emphasis on simplicity and transparency; enabling users to understand exactly what is going on under the hood, but without having to write and maintain the boilerplate themselves!
  * [Stable Diffusion web UI](https://github.com/AUTOMATIC1111/stable-diffusion-webui) is an open-source browser-based easy-to-use interface based on the Gradio library for Stable Diffusion.
  * [torchkeras](https://github.com/lyhue1991/torchkeras) is a simple tool for training pytorch model just in a keras style, a dynamic and beautiful plot is provided in notebook to monitor your loss or metric.
  * [transformers](https://github.com/huggingface/transformers) as a tool for helping train state-of-the-art machine learning models in PyTorch, Tensorflow, and JAX. (Accelerate is the backend for the PyTorch side).




  This repository is tested on Python 3.8+ and PyTorch 1.10.0+

  You should install 🤗 Accelerate in a [virtual environment](https://docs.python.org/3/library/venv.html). If you're unfamiliar with Python virtual environments, check out the [user guide](https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/).

  First, create a virtual environment with the version of Python you're going to use and activate it.

  Then, you will need to install PyTorch: refer to the [official installation page](https://pytorch.org/get-started/locally/#start-locally) regarding the specific install command for your platform. Then 🤗 Accelerate can be installed using pip as follows:

  ```bash
  pip install accelerate
  ```



  - CPU only
  - multi-CPU on one node (machine)
  - multi-CPU on several nodes (machines)
  - single GPU
  - multi-GPU on one node (machine)
  - multi-GPU on several nodes (machines)
  - TPU
  - FP16/BFloat16 mixed precision
  - FP8 mixed precision with [Transformer Engine](https://github.com/NVIDIA/TransformerEngine) or [MS-AMP](https://github.com/Azure/MS-AMP/)
  - DeepSpeed support (Experimental)
  - PyTorch Fully Sharded Data Parallel (FSDP) support (Experimental)
  - Megatron-LM support (Experimental)



  If you use 🤗 Accelerate in your publication, please cite it by using the following BibTeX entry.

  ```bibtex
  @Misc{accelerate,
    title =        {Accelerate: Training and inference at scale made simple, efficient and adaptable.},
    author =       {Sylvain Gugger and Lysandre Debut and Thomas Wolf and Philipp Schmid and Zachary Mueller and Sourab Mangrulkar and Marc Sun and Benjamin Bossan},
    howpublished = {\url{https://github.com/huggingface/accelerate}},
    year =         {2022}
  }
  ```


pkgId: eac46659a14401bcb80161a5c4de60617d4645f3644303e88d5225791d3168f2
name: python-accentdatabase
arch: src
version: 0.0.19
epoch: 0
release: 1
summary: please add a summary manually as the author left a blank one
url: https://github.com/accentdesign/accentdatabase
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accentdatabase-0.0.19-1.src.rpm
checksum_type: sha256
description:
  [![Test](https://github.com/accentdesign/accentdatabase/actions/workflows/test.yml/badge.svg)](https://github.com/accentdesign/accentdatabase/actions/workflows/test.yml)





  ```bash
  uv sync --all-extras
  ```



  ```bash
  uv run pytest tests
  ```



  ruff:
  ```bash
  uv run ruff format accentdatabase example tests
  ```
  ```bash
  uv run ruff check --fix accentdatabase example tests
  ```



  install dependencies:
  ```bash
  uv tool install hatch
  ```

  build package:
  ```bash
  rm -rf dist && uv build
  ```



  ```bash
  uv publish --token <token>
  ```

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


pkgId: 8c88d8e3bd5ca0bc66f7d5058137fa03f022993ea939b9aff8dc7053afacb6cb
name: python-accentnotifications
arch: src
version: 0.0.14
epoch: 0
release: 1
summary: please add a summary manually as the author left a blank one
url: https://github.com/accentdesign/accentnotifications
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accentnotifications-0.0.14-1.src.rpm
checksum_type: sha256
description:
  [![Test](https://github.com/accentdesign/accentnotifications/actions/workflows/test.yml/badge.svg)](https://github.com/accentdesign/accentnotifications/actions/workflows/test.yml)





  ```bash
  uv sync --all-extras
  ```



  ```bash
  uv run pytest tests
  ```



  ruff:
  ```bash
  uv run ruff format accentnotifications example tests
  ```
  ```bash
  uv run ruff check --fix accentnotifications example tests
  ```



  install dependencies:
  ```bash
  uv tool install hatch
  ```

  build package:
  ```bash
  rm -rf dist && uv build
  ```



  ```bash
  uv publish --token <token>
  ```

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


pkgId: f562176037596a5c610de1f97f3a3ded16547f1a49c50e5fa24aad4d52f754a5
name: python-acceptable
arch: src
version: 0.39
epoch: 0
release: 1
summary: API metadata and schema tool for generating tests and documentation
url: https://github.com/canonical/acceptable
rpm_license: LGPLv3
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acceptable-0.39-1.src.rpm
checksum_type: sha256
description:
  - Tightly couple code, metadata, and documentation to reduce drift and increase DRY.
  - Validation of JSON input and output
  - Provide tools for developers to make safe changes to APIs
  - Make it easy to generate API documentation.
  - Tools for generating testing doubles from the API metadata.


pkgId: 79036cf9905963ae8e9f90681d8a42d89ba9fbbf6f9e416f9a6ceed9996c6f4f
name: python-acceptlang
arch: src
version: 0.0.5
epoch: 0
release: 1
summary: A package for parsing Accept-Language tag received from (untrusted) client context.
url: https://github.com/piotrszyma/acceptlang
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acceptlang-0.0.5-1.src.rpm
checksum_type: sha256
description:
  This package can be used in the server environment to parse the Accept-Language
  header.

  Test cases and code copied from Django source code enhanced with typing.

  Purpose of this code is to be able to use a battle-tested Accept-Language
  parsing logic in Python code without need to install Django package.



  You can install the package via pip:

  ```sh
  pip install acceptlang
  ```



  ```python
  from acceptlang import parse_accept_lang_header

  result = parse_accept_lang_header("en-us,en;q=0.5,de;q=0.3")
  assert result == (('en-us', 1.0), ('en',0.5), ('de',0.3))

  result = parse_accept_lang_header("en-us,*;q=0.5")
  assert result == (('en-us', 1.0), ('*',0.5))
  ```

  Check [tests](tests/test_parse.py) for more examples.



  ```sh
  python3 -m venv venv
  . venv/bin/activate
  python3 -m pip install -r requirements.dev.txt
  ```



  ```sh
  python3 -m build --wheel
  twine check dist/**
  twine upload dist/
  ```


pkgId: d40e97b43548efea765da8d4d087630cca0ae58c2175d28a4ab053534bc5c982
name: python-accepts
arch: src
version: 2020.12.3
epoch: 0
release: 1
summary: @accepts decorator to check arguments types
url: https://github.com/andrewp-as-is/accepts.py
rpm_license: Unlicense
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accepts-2020.12.3-1.src.rpm
checksum_type: sha256
description:
  <!--
  https://readme42.com
  -->


  [![](https://img.shields.io/pypi/v/accepts.svg?maxAge=3600)](https://pypi.org/project/accepts/)
  [![](https://img.shields.io/badge/License-Unlicense-blue.svg?longCache=True)](https://unlicense.org/)


  ```bash
  $ [sudo] pip install accepts
  ```


  *	support **multiple types** argument
  *	support **None** argument
  *	human readable detailed exception message


  ```python
  >>> from accepts import accepts
  >>> @accepts(int)
  def inc(value):
  	return value+1

  >>> inc(1) # ok


  >>> @accepts((int,float))
  >>> inc(1.5) # ok
  >>> inc("string")
  TypeError: inc() argument #0 is not instance of (<class 'int'>, <class 'float'>)


  >>> @accepts((int,float,type(None)))
  ```

  <p align="center">
      <a href="https://readme42.com/">readme42.com</a>
  </p>


pkgId: b7608ceb37647592d915affe6db3f134988484ba88d80eb464d5adde05ecb3d5
name: python-access
arch: src
version: 1.1.9
epoch: 0
release: 1
summary: Calculate spatial accessibility metrics.
url: https://access.readthedocs.io/en/latest/
rpm_license: 3-Clause BSD
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-access-1.1.9-1.src.rpm
checksum_type: sha256
description:
  ![tag](https://img.shields.io/github/v/release/pysal/access?include_prereleases&sort=semver)
  [![Documentation](https://img.shields.io/static/v1.svg?label=docs&message=current&color=9cf)](http://pysal.org/access/)
  [![Continuous Integration](https://github.com/pysal/access/actions/workflows/unittests.yml/badge.svg)](https://github.com/pysal/access/actions/workflows/unittests.yml)

  This package provides classical and novel measures of spatial accessibility to services.

  For full documentation, see [here](https://pysal.org/access/).


pkgId: 61ae5b8948274ab83e367cb52c6e844e684255f7dc1514b931133af1e1d95de0
name: python-access-dict-by-dot
arch: src
version: 0.0.4
epoch: 0
release: 1
summary: Using this packages we can access dictionary values using dot operator
url: https://github.com/ismaan1998/access_dict_by_dot/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-access-dict-by-dot-0.0.4-1.src.rpm
checksum_type: sha256
description:
  Using this package, we can access the items in a dictionary using dot operator instead of writiting dict_name["key"].



  ```python

  from access_dict_by_dot import AccessDictByDot

  dictionary = {
      'key1':'value1',
      'key2':'value2',
      'key3':{
                  'subkey1':'subvalue1',
                  'subkey2':'subvalue2'
              }
  }


  d = AccessDictByDot.load(dictionary)
  print(d.key1)
  print(d.key3.subkey1)


pkgId: 0c463670be2b2ba205f10b6db032c71a6d7caa3a9b80efdc75788ad6cb89f9cf
name: python-access-parser
arch: src
version: 0.0.5
epoch: 0
release: 1
summary: Access database (*.mdb, *.accdb) parser
url: https://github.com/ClarotyICS/access_parser
rpm_license: Apache Software License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-access-parser-0.0.5-1.src.rpm
checksum_type: sha256
description:
  Microsoft Access (.mdb / .accdb) database files parser. The parsing logic is fully written in python and works without any external binary dependencies.


  Use pip: `pip install access-parser`

  Or install manually:
  ```bash
  git clone https://github.com/ClarotyICS/access_parser.git
  cd access_parser
  python3 setup.py install
  ```


  [![asciicast](https://asciinema.org/a/345445.svg)](https://asciinema.org/a/345445)


  ```python
  from access_parser import AccessParser


  db = AccessParser("/path/to/mdb/file.mdb")


  print(db.catalog)


  table = db.parse_table("table_name")


  db.print_database()

  ```


  *

  This library was tested on a limited subset of database files. Due to the differences between database versions and the complexity of the parsing we expect to find more parsing edge-cases.

  To help us resolve issues faster please provide as much data as you can when opening an issue - DB file if possible and full trace including log messages.



  * This library was made possible by the great work by mdb-tools. The logic in this library heavily relies on the excellent documentation they have https://github.com/brianb/mdbtools
  * Huge thanks to Mashav Sapir for the help debugging, CRing and contributing to this project https://github.com/mashavs


pkgId: baf9736c5a342794ef755a63a23fef7f213f023b4268bc71236b750c67589474
name: python-access-sftp-server
arch: src
version: 0.1.0
epoch: 0
release: 1
summary: Access SFTP Server
url: https://pypi.org/project/access-sftp-server/
rpm_license: UNKNOWN
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-access-sftp-server-0.1.0-1.src.rpm
checksum_type: sha256
description:
  This project contains the basic files to up- and download files from a SFTP Server.

  For further information contact [Valentin Baier](mailto:baier@orcacapital.de?subject=Google%20Workspace%20Account).


  The installation can be achieved by using ``pip``:

  ``python -m pip install access_sftp_server``


  To run the application via shell you need to either execute:

  ``python -m cibc_sftp_server.upload_files`` or
  ``python -m cibc_sftp_server.download_files``


  The package can be executed from any computer having the required credentials to the server.


  This project is licensed by a MIT License.


  The current released version is 0.1.0.


pkgId: 17446e910b56c411f266595843ab257127fb4c06abdcbb5e94409cef9ac5804f
name: python-access2theMatrix
arch: src
version: 0.4.4
epoch: 0
release: 1
summary: Scienta Omicron (NanoScience) (NanoTechnology) MATRIX Control System result file accessing tool
url: https://pypi.org/project/access2theMatrix/
rpm_license: BSD License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-access2theMatrix-0.4.4-1.src.rpm
checksum_type: sha256
description:
  access2theMatrix requires the NumPy (http://www.numpy.org) and the six
  (https://pypi.python.org/pypi/six/) library.


pkgId: 0e86a270f608bae9cf9573f584b6eaeeae1cd8e026bc40b5f39f072cc556583b
name: python-accessi
arch: src
version: 0.0.8
epoch: 0
release: 1
summary: Library for Siemens Access-i MR Scanner Interface to integrate and control the MR Scanner.
url: https://gitlab.utwente.nl/s2981416/accessi-library
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accessi-0.0.8-1.src.rpm
checksum_type: sha256
description:
  Library for Siemens Access-i MR Scanner Interface to integrate and control the MR Scanner. Based on Version 1.1.2 for NX (Access-i Developer Guide)


  This is the easiest way to use the install the library, if you do not need to modify it.
  ```
  pip install accessi
  ```


  The library is based on this document:
  [Access-i Dev Guide NX V1.1.2](documentation/Access-i_Dev_Guide_NX_V1.1.2.pdf)


  A sample test suite (tests.py) has been created which demonstrates basic Access-i usage.
  The tests.py requires Access-i simulator to be running on the background, on the same local computer.
  The tests.py demonstrates most of the implemented methods, as well as receiving images over websocket.


  Here are some projects which have used this library:
  - [Martin Reinok Thesis Software GitHub](https://github.com/martinreinok/master-thesis/tree/master/tracking-software)


  ```
  name="UTwente",
  start_date="20231102",
  warn_date="20251002",
  expire_date="20251102",
  system_id="152379",
  hash="uTwo2ohlQvMNHhfrzceCRzfRSLYDAw7zqojGjlP%2BCEmqPq1IxUoyx5hOGYbiO%2FEIyiaA4oFHFB2fwTctDbRWew%3D%3D",
  informal_name="This name shows up on MR computer"
  ```

  The Access-i in TechMed is running on this IP address:
  ```
  10.89.184.9
  Access-i Version: v1
  ```

  Simulator IP:
  ```
  127.0.0.1
  Access-i Version: v2
  ```

  In order to connect, the client must have the following networking settings:
  ```
  Client IP: 192.168.182.20 (Maybe something else works too, have not tried)
  Subnet: 255.255.255.0
  Gateway: 192.168.182.1
  DNS1: 192.168.182.1
  ```

  To be able to use both, Access-i and WAN (external interent) at the same time, some configurations are necessary. These are only compatible with Windows for now.

  Find out what is the interface number, which is connected to Access-i:
  ```
  route print
  ```

  Using the interface number, create a route:
  ```
  route add 10.89.184.0 mask 255.255.255.0 192.168.182.20 if 8 -p
  ```
  Here __if 8__ is the interface number in this particular case, __-p__ means persistant so it will stay after reboot.


  The majority of Access-i functionality is not yet implemented here, if you need more functionality, any additions are accepted.


pkgId: 73adc3e5a45492279edc89e54ee844fc285fc7dddf3858b88dacb4a2ddbe25e5
name: python-accessible-django
arch: src
version: 1.0.0
epoch: 0
release: 1
summary: A Django package for accessibility checks during development.
url: https://pypi.org/project/accessible-django/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accessible-django-1.0.0-1.src.rpm
checksum_type: sha256
description:
  - **Accessibility Checks**:
    Automatically evaluates views and templates for common accessibility issues, such as missing or empty `alt` attributes in `<img>` tags.
  - **Detailed Reports**:
    Generates comprehensive accessibility reports highlighting issues found in your templates and views.
  - **Developer-Friendly Tools**:
    Easily integrate AccessibleDjango into your project and CI pipelines.
  - **Customizable Rules**:


pkgId: 92013d0f5a780955c1975a52d3fffe5ddfa0199d851d12b865c84ac21cc9cc01
name: python-accessible-output2
arch: src
version: 0.17
epoch: 0
release: 1
url: https://pypi.org/project/accessible-output2/
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accessible-output2-0.17-1.src.rpm
checksum_type: sha256
summary:
  Library to provide speech and braille output to a variety of different screen readers and other accessibility solutions.

description:
  Accessible Output 2 is an MIT licensed library for speaking and brailling through multiple screen readers and other accessibility systems.
  Accessible Output 2 makes selection of the appropriate speech and Braille output a snap, and also allows the programmer to select and use a specific output, for instance to force speaking through the Microsoft Speech API even if the user has a screen reader loaded.
      >>> import accessible_output2.outputs.auto
      >>> o = accessible_output2.outputs.auto.Auto()
      >>> o.output("Some text") #attempts to both speak and braille the given text through the first available output
      >>> o.speak("Some other text", interrupt=True) #Speak some text through the output, without brailling it, and interrupt the currently-speaking text if any
  Accessible Output 2 makes it simple to add spoken and brailled notifications to your applications on multiple platforms, facilitating accessibility for the visually impaired and also providing a nice alternative means of providing notifications to a sighted user.


pkgId: 791827950b0ce332c6e9de3930505b3f17ad1ed13f3adbc3c33a42a32e4ef6c8
name: python-accessible-pygments
arch: src
version: 0.0.5
epoch: 0
release: 1
summary: A collection of accessible pygments styles
url: https://github.com/Quansight-Labs/accessible-pygments
rpm_license: BSD-3-Clause
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accessible-pygments-0.0.5-1.src.rpm
checksum_type: sha256
description:
  [![conda version](https://img.shields.io/conda/vn/conda-forge/accessible-pygments?color=0553F2&style=flat.svg)](https://anaconda.org/conda-forge/accessible-pygments)
  [![pip version](https://img.shields.io/pypi/v/accessible-pygments?color=0553F2&flat.svg)](https://pypi.org/project/accessible-pygments/)
  [![conda-forge downloads](https://img.shields.io/conda/dn/conda-forge/accessible-pygments?color=0553F2&label=conda-forge%20downloads%20&flat.svg)](https://anaconda.org/conda-forge/accessible-pygments)
  [![pip downloads](https://img.shields.io/pypi/dm/accessible-pygments?color=0553F2&label=PyPI%20downloads&flat.svg)](https://pypi.org/project/accessible-pygments/)
  [![accessible-pygments demo page](https://img.shields.io/badge/Demo-Click%20this%20badge!%20✨-blueviolet?flat.svg)](https://quansight-labs.github.io/accessible-pygments/)
  [![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://github.com/Quansight-Labs/accessible-pygments/tree/main/./LICENSE)



  - [Accessible pygments themes](https://github.com/Quansight-Labs/accessible-pygments/tree/main/#accessible-pygments-themes)
    - [Table of contents](https://github.com/Quansight-Labs/accessible-pygments/tree/main/#table-of-contents)
    - [Accessibility details ♿️](https://github.com/Quansight-Labs/accessible-pygments/tree/main/#accessibility-details-️)
      - [WCAG 2.1 - AAA compliant](https://github.com/Quansight-Labs/accessible-pygments/tree/main/#wcag-21---aaa-compliant)
      - [WCAG 2.1 - AA compliant](https://github.com/Quansight-Labs/accessible-pygments/tree/main/#wcag-21---aa-compliant)
    - [Documentation 📖](https://github.com/Quansight-Labs/accessible-pygments/tree/main/#documentation-)
      - [Installation 💻](https://github.com/Quansight-Labs/accessible-pygments/tree/main/#installation-)
      - [Using the themes directly in your code or app](https://github.com/Quansight-Labs/accessible-pygments/tree/main/#using-the-themes-directly-in-your-code-or-app)
      - [Using the themes in your Sphinx documentation](https://github.com/Quansight-Labs/accessible-pygments/tree/main/#using-the-themes-in-your-sphinx-documentation)
    - [Development and contribution 🌱](https://github.com/Quansight-Labs/accessible-pygments/tree/main/#development-and-contribution-)
    - [Acknowledgments 🤝](https://github.com/Quansight-Labs/accessible-pygments/tree/main/#acknowledgments-)
    - [License 📑](https://github.com/Quansight-Labs/accessible-pygments/tree/main/#license-)

  This package includes a collection of accessible themes for [pygments](https://pygments.org/) based on multiple open-source syntax highlighting themes. The images below show all the themes side by side.

  ![Display of all the light themes side by side](https://github.com/Quansight-Labs/accessible-pygments/tree/main/./docs/light_themes.png)

  ![Display of all dark themes side by side](https://github.com/Quansight-Labs/accessible-pygments/tree/main/./docs/dark_themes.png)

  :sparkles: To see examples of the themes in action [visit our online demo](https://quansight-labs.github.io/accessible-pygments/) :sparkles:



  > [!Note]
  > What do we mean by accessible? In this context we are specifically referring to themes which meet the [WCAG 2.1 criteria for color contrast](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html).
  > Some themes included are also color-blind friendly.



  The following themes are AAA compliant with [WCAG 2.1 criteria for color contrast](https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html).

  - [`a11y-dark`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/a11y_dark)
  - [`a11y-high-contrast-dark`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/a11y_high_contrast_dark)
  - [`pitaya-smoothie`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/pitaya_smoothie) - Color-blind friendly.
  - [`github-light`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/github_light) - Color-blind friendly.
  - [`github-dark`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/github_dark) - Color-blind friendly.
  - [`github-light-colorblind`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/github_light_colorblind) - Color-blind friendly.
  - [`github-dark-colorblind`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/github_dark_colorblind) - Color-blind friendly.
  - [`github-light-high-contrast`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/github_light_high_contrast) - Color-blind friendly.
  - [`github-dark-high-contrast`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/github_dark_high_contrast) - Color-blind friendly.
  - [`gotthard-dark`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/gotthard_dark) - Color-blind friendly.



  The following themes are AA compliant with [WCAG 2.1 criteria for color contrast](https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html).

  - [`a11y-light`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/a11y_light)
  - [`a11y-high-contrast-light`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/a11y_high_contrast_light)
  - [`gotthard-light`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/gotthard_light) - Color-blind friendly.
  - [`blinds-light`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/blinds_light) - Color-blind friendly.
  - [`blinds-dark`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/blinds_dark) - Color-blind friendly.
  - [`greative`](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/greative) - Accessible to most forms of colorblindness and low light settings.





  `accessible-pygments` is available through pip and conda.

  You can install it through the following commands:

  ```bash
  conda install -c conda-forge accessible-pygments


  mamba install -c conda-forge accessible-pygments
  ```

  ```bash
  pip install accessible-pygments
  ```

  If you prefer to install the themes directly from the source:

  ```bash

  git clone git@github.com:Quansight-Labs/accessible-pygments.git
  cd accessible-pygments

  pip install .
  ```



  If you want to directly use the themes in your code, you can do so by importing the theme and passing it to the `style` argument of the `HtmlFormatter` class.

  ```python
  from pygments.formatters import HtmlFormatter
  HtmlFormatter(style='a11y-light').style
  <class 'accessible-pygments.A11yLight'>
  ```



  1. You will need to add `accessible-pygments` as a dependency to your documentation:

     ```toml
     
     dependencies=["accessible-pygments"]
     ```

  2. Modify your `conf.py` file to specify the `accessible-pygments` style:

     ```python
     "pygments_style": "a11y-light"
     ```

  3. Build your documentation as usual.



  You can find our contribution guides on [CONTRIBUTING.md](https://github.com/Quansight-Labs/accessible-pygments/tree/main/CONTRIBUTING.md).
  We aim to build a safe and inclusive community, so we have a [Code of Conduct](https://github.com/Quansight-Labs/accessible-pygments/tree/main/CODE_OF_CONDUCT.md) that we ask everyone to follow.



  We want to thank the following sources for being the source of inspiration for one or more themes that are available in this repository,

  - [a11y dark and light syntax highlighting](https://github.com/ericwbailey/a11y-syntax-highlighting).
  - [pitaya smoothie VSCode theme](https://github.com/trallard/pitaya_smoothie).
  - [github VSCode themes](https://github.com/primer/github-vscode-theme).
  - [gotthard VSCode themes](https://github.com/janbiasi/vscode-gotthard-theme/).
  - [blinds VSCode themes](https://github.com/orbulant/blinds-theme).
  - [greative VSCode theme](https://github.com/SumanKhdka/Greative-vscode-Theme).



  `accessible-pygments` is licensed under the [OSI BSD-3 Clause license](https://github.com/Quansight-Labs/accessible-pygments/tree/main/./LICENSE).


pkgId: a1588767c5bbe16fd8bd155f999e18b4fc0a6b41d3ad0c5e567ee0b69ffe8521
name: python-accessible-space
arch: src
version: 0.1.5
epoch: 0
release: 1
summary: Implementation of the Dangerous Accessible Space (DAS) passing model for football analytics.
url: https://github.com/jonas-bischofberger/accessible-space
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accessible-space-0.1.5-1.src.rpm
checksum_type: sha256
description:
  This package implements the Dangerous Accessible Space (DAS) model for football analytics.




  ```
  pip install accessible-space
  ```



  ```

  import accessible_space.tests.resources
  df_passes = accessible_space.tests.resources.df_passes
  df_tracking = accessible_space.tests.resources.df_tracking


  df_passes["xc"], df_passes["matrix_index"], simulation_result_xc = accessible_space.get_expected_pass_completion(df_passes, df_tracking)
  print(df_passes)


  df_tracking["AS"], df_tracking["DAS"], df_tracking["matrix_index"], simulation_result_as, simulation_result_das = accessible_space.get_dangerous_accessible_space(df_tracking)
  print(df_tracking)
  ```




  ```
  python -m pytest --doctest-modules path/to/accessible_space/
  ```

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


pkgId: daa58c3fa4d95c085166a1f1025efdd79ad6b4c62e2ac8c825a4585eb0e79a1b
name: python-accessify
arch: src
version: 0.3.1
epoch: 0
release: 1
url: https://github.com/dmytrostriletskyi/accessify
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accessify-0.3.1-1.src.rpm
checksum_type: sha256
summary:
  Python design kit: interfaces, declared exception throws, class members accessibility levels (private and protected methods for humans).

description:
  [![Release](https://img.shields.io/github/release/dmytrostriletskyi/accessify.svg)](https://github.com/dmytrostriletskyi/accessify/releases)
  [![PyPI version shields.io](https://img.shields.io/pypi/v/accessify.svg)](https://pypi.python.org/pypi/accessify/)
  [![Build Status](https://travis-ci.com/dmytrostriletskyi/accessify.svg?branch=develop)](https://travis-ci.com/dmytrostriletskyi/accessify)
  [![codecov](https://codecov.io/gh/dmytrostriletskyi/design-kit/branch/develop/graph/badge.svg)](https://codecov.io/gh/dmytrostriletskyi/design-kit)

  [![Downloads](https://pepy.tech/badge/accessify)](https://pepy.tech/project/accessify)
  [![PyPI license](https://img.shields.io/pypi/l/accessify.svg)](https://pypi.python.org/pypi/accessify/)
  [![PyPI pyversions](https://img.shields.io/pypi/pyversions/accessify.svg)](https://pypi.python.org/pypi/accessify/)

  [![Habrahabr](https://img.shields.io/badge/Post-Habrahabr-brightgreen.svg)](https://habr.com/ru/post/443192/)

    * [Getting started](#getting-started)
      * [What is accessify](#what-is-accessify)
      * [Access modifiers](#getting-started-access-modifiers)
        * [Motivation](#getting-started-access-modifiers-motivation)
      * [Interfaces](#getting-started-interfaces)
        * [Motivation](#getting-started-interfaces-motivation)
      * [How to install](#how-to-install)
    * [Usage](#usage)
      * [Access modifiers](#usage-access-modifiers)
        * [Private](#private)
        * [Protected](#protected)
        * [Other features](#other-features)
      * [Interfaces](#usage-interfaces)
        * [Single interface](#single-interface)
        * [Multiple interfaces](#multiple-interfaces)
        * [Exception throws declaration](#exception-throws-declaration)
    * [Disable checking](#disable-checking)
    * [Contributing](#contributing)
    * [References](#references)





  `accessify` is a `Python` design kit that provides:
  * interfaces,
  * declared exceptions throws,
  * class members accessibility levels.

  that could be combined with each other to make your code slim and this library usage more justified.

  <h3 id="getting-started-access-modifiers">Access modifiers</h3>

  Access level modifiers determine whether other classes can use a particular field or invoke a particular method.
  Accessibility levels are presented from the box in the languages like `C++`, `C#` and `Java`.

  ```csharp
  class Car
  {
      private string StartEngine()
      {
          // Code here.
      }
  }
  ```

  But `Python` does not have this in the same way.

  <h4 id="getting-started-access-modifiers-motivation">Motivation</h4>

  * `We're all consenting adults here` that is the  part of the `Python philosophy` that relies on human factor instead of the interpreter.
  * There is a `Python convention` that is to use an underscore prefix for protected and private members, that is a bit ugly.
  Isn't it? For instance, for the following piece of code that provides class a private member.

  ```python
  class Car:

      def __start_engine(self, *args, **kwargs):
          pass
  ```

  * Moreover, private and protected methods could be easily accessed outside the class. This is really a point to postpone the
  correct design of the system to the backlog, increasing the technical debt.

   ```python
  class Car:

      def _start_engine(self, *args, **kwargs):
          pass

      def __start_engine(self, *args, **kwargs):
          pass


  car = Car()
  car._start_engine()
  car._Car__start_engine()
  ```

  <h3 id="getting-started-interfaces">Interfaces</h3>

  An interface is a contract specifying a set of methods and properties which required to be available on any implementing class.
  If the class implements an interface, but does not realize its method, corresponding errors should be raised. Interfaces are presented from the box in
  the languages like `C++`, `C#` and `Java`.

  ```csharp
  interface HumanInterface
  {
      public string EatFood();
  }

  class Human : HumanInterface
  {
      public string EatFood()
      {
          // Code here.
      }
  }
  ```

  But `Python` does not have this in the same way.

  <h4 id="getting-started-interfaces-motivation">Motivation</h4>

  * The interface makes checks during the implementation creation, but not actually while execution like [abc](https://docs.python.org/3/library/abc.html) module in `Python`.
  * The interface requires that implementation's method arguments match with arguments declared in interfaces, [abc](https://docs.python.org/3/library/abc.html) — not.
  * A lot of libraries that provide interfaces are no longer supported.
  * A lot of libraries that provide interfaces require you to write a lot of code to use its functionality, this library — not.



  Using [pip](https://pypi.org/project/pip) install the package from the [PyPi](https://pypi.org/project/accessify).

  ```bash
  $ pip3 install accessify
  ```



  <h3 id="usage-access-modifiers">Access modifiers</h3>



  * Private members are accessible only within the body of the class.

  In this example, the `Car` class contains a private member named `start_engine`. As a private member, they cannot be accessed
  except by member methods. The private member `start_engine` is accessed only by way of a public method called `run`.

  ```python
  from accessify import private


  class Car:

      @private
      def start_engine(self):
          return 'Engine sound.'

      def run(self):
          return self.start_engine()


  if __name__ == '__main__':
      car = Car()

      assert 'Engine sound.' == car.run()

      car.start_engine()
  ```

  The code above will produce the following traceback.

  ```bash
  Traceback (most recent call last):
    File "examples/access/private.py", line 24, in <module>
      car.start_engine()
    File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/accessify/main.py", line 92, in private_wrapper
      class_name=instance_class.__name__, method_name=method.__name__,
  accessify.errors.InaccessibleDueToItsProtectionLevelException: Car.start_engine() is inaccessible due to its protection level
  ```

  Test it out using the [examples](https://github.com/dmytrostriletskyi/accessify/tree/basic-accessibility-levels/examples).
  Get the example that contains the code above by `curl` and run it by `python3`.

  ```bash
  $ curl -L https://git.io/fhASP > private.py
  $ python3 private.py
  ```

  * Child classes cannot access parent private members.

  In this example, the `Car` class contains a private member named `start_engine`. As a private member, they cannot be accessed
  from the child classes, `Tesla` in our case. So overridden method `run` by `Tesla` class cannot use the parent's `start_engine` member.

  ```python
  from accessify import private


  class Car:

      @private
      def start_engine(self):
          return 'Engine sound.'


  class Tesla(Car):

      def run(self):
          return self.start_engine()


  if __name__ == '__main__':
      tesla = Tesla()
      tesla.run()
  ```

  The code above will produce the following traceback.

  ```bash
  Traceback (most recent call last):
    File "examples/inheritance/private.py", line 23, in <module>
      tesla.run()
    File "examples/inheritance/private.py", line 18, in run
      return self.start_engine()
    File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/accessify/main.py", line 94, in private_wrapper
      class_name=class_contain.__name__, method_name=method.__name__,
  accessify.errors.InaccessibleDueToItsProtectionLevelException: Car.start_engine() is inaccessible due to its protection level
  ```

  Test it out using the [examples](https://github.com/dmytrostriletskyi/accessify/tree/basic-accessibility-levels/examples).
  Get the example that contains the code above by `curl` and run it by `python3`.

  ```bash
  $ curl -L https://git.io/fhASX > inheritence_private.py
  $ python3 inheritence_private.py
  ```



  * A protected member is accessible within its class and by derived class instances.

  In this example, the `Car` class contains a protected member named `start_engine`. As a protected member, they cannot be accessed
  except by member methods. The protected member `start_engine` is accessed only by way of a public method called `run`.

  ```python
  from accessify import protected


  class Car:

      @protected
      def start_engine(self):
          return 'Engine sound.'

      def run(self):
          return self.start_engine()


  if __name__ == '__main__':
      car = Car()

      assert 'Engine sound.' == car.run()

      car.start_engine()
  ```

  The code above will produce the following traceback.

  ```bash
  Traceback (most recent call last):
    File "examples/access/protected.py", line 21, in <module>
      car.start_engine()
    File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/accessify/main.py", line 134, in protected_wrapper
      class_name=instance_class.__name__, method_name=method.__name__,
  accessify.errors.InaccessibleDueToItsProtectionLevelException: Car.start_engine() is inaccessible due to its protection level
  ```

  Test it out using the [examples](https://github.com/dmytrostriletskyi/accessify/tree/basic-accessibility-levels/examples).
  Get the example that contains the code above by `curl` and run it by `python3`.

  ```bash
  $ curl -L https://git.io/fhASM > protected.py
  $ python3 protected.py
  ```

  * Child classes have access to those protected members.

  In this example, the `Car` class contains a protected member named `start_engine`. As a protected member, they can be accessed
  from the child classes, `Tesla` in our case. So overridden method `run` by `Tesla` class can use the parent's `start_engine` member.


  ```python
  from accessify import protected


  class Car:

      @protected
      def start_engine(self):
          return 'Engine sound.'


  class Tesla(Car):

      def run(self):
          return self.start_engine()


  if __name__ == '__main__':
      tesla = Tesla()

      assert 'Engine sound.' == tesla.run()
  ```

  The code will work without errors.

  Test it out using the [examples](https://github.com/dmytrostriletskyi/accessify/tree/basic-accessibility-levels/examples).
  Get the example that contains the code above by `curl` and run it by `python3`.

  ```bash
  $ curl -L https://git.io/fhASD > inheritence_protected.py
  $ python3 inheritence_protected.py
  ```



  * The `accessify` decorator removes private and protected members from class [dir](https://docs.python.org/3/library/functions.html#dir).

  ```python
  from accessify import accessify, private


  @accessify
  class Car:

      @private
      def start_engine(self):
          return 'Engine sound.'

  if __name__ == '__main__':
      car = Car()

      assert 'start_engine' not in dir(car)
  ```

  Test it out using the [examples](https://github.com/dmytrostriletskyi/accessify/tree/basic-accessibility-levels/examples).
  Get the example that contains the code above by `curl` and run it by `python3`.

  ```bash
  $ curl -L https://git.io/fhASy > dir.py
  $ python3 dir.py
  ```

  <h3 id="usage-interfaces">Interfaces</h3>



  * When you declare that class implements an interface, a class should implement **all methods** presented in the interface.

  In this example, there is an interface called `HumanInterface` that contains two methods `love` and `eat`. Also, there is
  a class `Human` that implements the interface but **missed method «eat»**, so the corresponding error should be raised.

  ```python
  from accessify import implements


  class HumanInterface:

      @staticmethod
      def eat(food, *args, allergy=None, **kwargs):
          pass


  if __name__ == '__main__':

      @implements(HumanInterface)
      class Human:

          pass
  ```

  The code above will produce the following traceback.

  ```bash
  Traceback (most recent call last):
    File "examples/interfaces/single.py", line 18, in <module>
      @implements(HumanInterface)
    File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/accessify/interfaces.py", line 66, in decorator
      interface_method_arguments=interface_method.arguments_as_string,
  accessify.errors.InterfaceMemberHasNotBeenImplementedException: class Human does not implement interface member HumanInterface.eat(food, args, allergy, kwargs)
  ```

  Test it out using the [examples](https://github.com/dmytrostriletskyi/accessify/tree/basic-accessibility-levels/examples).
  Get the example that contains the code above by `curl` and run it by `python3`.

  ```bash
  $ curl -L https://git.io/fhh2V > single_method.py
  $ python3 single_method.py
  ```

  * When you declare that class implements an interface, a class should implement all methods that presented in the interface
  including **number, order and naming of the accepting arguments**.

  In this example, there is an interface called `HumanInterface` that contains two methods `love` and `eat`. Also, there is
  a class `Human` that implements the interface but **missed 3 of 4 arguments for method «eat»**, so the corresponding error should be raised.

  ```python
  from accessify import implements


  class HumanInterface:

      @staticmethod
      def eat(food, *args, allergy=None, **kwargs):
          pass


  if __name__ == '__main__':

      @implements(HumanInterface)
      class Human:

          @staticmethod
          def eat(food):
              pass
  ```

  The code above will produce the following traceback.

  ```bash
  Traceback (most recent call last):
    File "examples/interfaces/single_arguments.py", line 16, in <module>
      @implements(HumanInterface)
    File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/accessify/interfaces.py", line 87, in decorator
      interface_method_arguments=interface_method.arguments_as_string,
  accessify.errors.InterfaceMemberHasNotBeenImplementedWithMismatchedArgumentsException: class Human implements interface member HumanInterface.eat(food, args, allergy, kwargs) with mismatched arguments
  ```

  Test it out using the [examples](https://github.com/dmytrostriletskyi/accessify/tree/basic-accessibility-levels/examples).
  Get the example that contains the code above by `curl` and run it by `python3`.

  ```bash
  $ curl -L https://git.io/fhh2w > single_arguments.py
  $ python3 single_arguments.py
  ```

  * When you declare that class implements an interface, a class should implement all methods that presented in the interface
  including number, order and naming of the accepting arguments and **access modifier type**.

  In this example, there is an interface called `HumanInterface` that contains two methods `love` and `eat`. Also, there is
  a class `Human` that implements the interface but **missed private access modifier type for method «eat»**, so the corresponding
  error should be raised.

  ```python
  from accessify import implements, private


  class HumanInterface:

      @private
      @staticmethod
      def eat(food, *args, allergy=None, **kwargs):
          pass


  if __name__ == '__main__':

      @implements(HumanInterface)
      class Human:

          @staticmethod
          def eat(food, *args, allergy=None, **kwargs):
              pass
  ```

  The code above will produce the following traceback.

  ```bash
  Traceback (most recent call last):
    File "examples/interfaces/single_access.py", line 18, in <module>
      @implements(HumanInterface)
    File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/accessify/interfaces.py", line 77, in decorator
      interface_method_name=interface_method.name,
  accessify.errors.ImplementedInterfaceMemberHasIncorrectAccessModifierException: Human.eat(food, args, allergy, kwargs) mismatches HumanInterface.eat() member access modifier.
  ```

  Test it out using the [examples](https://github.com/dmytrostriletskyi/accessify/tree/basic-accessibility-levels/examples).
  Get the example that contains the code above by `curl` and run it by `python3`.

  ```bash
  $ curl -L https://git.io/fhh2r > single_access.py
  $ python3 single_access.py
  ```



  * A class could implement multiple interfaces.
  * When you declare that class that implements a bunch of interfaces, a class should implement all method that presented in
  each interface including number, order and naming of the accepting arguments and access modifier type.

  In this example, there are an interface `HumanSoulInterface` that contains a method called `love` and interface `HumanBasicsInterface` that
  contains a method called `eat`. Also, there is a class `Human` that implements method `love` from the first interface, but
  **missed method «eat»** from the second one, so the corresponding error should be raised.

  ```python
  from accessify import implements


  class HumanSoulInterface:

      def love(self, who, *args, **kwargs):
          pass


  class HumanBasicsInterface:

      @staticmethod
      def eat(food, *args, allergy=None, **kwargs):
          pass


  if __name__ == '__main__':

      @implements(HumanSoulInterface, HumanBasicsInterface)
      class Human:

          def love(self, who, *args, **kwargs):
              pass
  ```

  The code above will produce the following traceback.

  ```bash
  Traceback (most recent call last):
    File "examples/interfaces/multiple.py", line 19, in <module>
      @implements(HumanSoulInterface, HumanBasicsInterface)
    File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/accessify/interfaces.py", line 66, in decorator
      interface_method_arguments=interface_method.arguments_as_string,
  accessify.errors.InterfaceMemberHasNotBeenImplementedException: class Human does not implement interface member HumanBasicsInterface.eat(food, args, allergy, kwargs)
  ```

  Test it out using the [examples](https://github.com/dmytrostriletskyi/accessify/tree/basic-accessibility-levels/examples).
  Get the example that contains the code above by `curl` and run it by `python3`.

  ```bash
  $ curl -L https://git.io/fhh2o > multiple.py
  $ python3 multiple.py
  ```



  * When you declare that interface method throws a particular exception, a class method that implement interface should
  contain code in the body that raise this exception.
  * You can declare that the interface method throws multiple exceptions.

  In this example, exception `HumanDoesNotExistsError` and exception `HumanAlreadyInLoveError` are declared to be raised by
  the `Human` class method called `love` , but method **missed to raise the second exception**, so the corresponding error should be raised.

  ```python
  from accessify import implements, throws


  class HumanDoesNotExistsError(Exception):
      pass


  class HumanAlreadyInLoveError(Exception):
      pass


  class HumanInterface:

      @throws(HumanDoesNotExistsError, HumanAlreadyInLoveError)
      def love(self, who, *args, **kwargs):
          pass


  if __name__ == '__main__':

      @implements(HumanInterface)
      class Human:

          def love(self, who, *args, **kwargs):

              if who is None:
                  raise HumanDoesNotExistsError('Human whom need to love does not exist.')
  ```

  The code above will produce the following traceback.

  ```bash
  Traceback (most recent call last):
    File "examples/interfaces/throws.py", line 21, in <module>
      @implements(HumanInterface)
    File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/accessify/interfaces.py", line 103, in decorator
      class_method_arguments=class_member.arguments_as_string,
  accessify.errors.DeclaredInterfaceExceptionHasNotBeenImplementedException: Declared exception HumanAlreadyInLoveError by HumanInterface.love() member has not been implemented by Human.love(self, who, args, kwargs)
  ```

  Test it out using the [examples](https://github.com/dmytrostriletskyi/accessify/tree/basic-accessibility-levels/examples).
  Get the example that contains the code above by `curl` and run it by `python3`.

  ```bash
  $ curl -L https://git.io/fhh26 > throws.py
  $ python3 throws.py
  ```



  You can disable all `accessify` checks. For instance, in the production, when you shouldn't check it because it already was checked
  in the development. Use the following environment variable then:

  ```bash
  export DISABLE_ACCESSIFY=True
  ```



  Clone the project and install requirements:

  ```bash
  $ git clone git@github.com:dmytrostriletskyi/accessify.git && cd accessify
  $ pip3 install -r requirements-dev.txt
  $ pip3 install -r requirements-tests.txt
  ```

  If you prefer working with the [Docker](https://www.docker.com) and wanna easily change `Python` environments, follow:

  ```bash
  $ git clone git@github.com:dmytrostriletskyi/accessify.git && cd accessify
  $ export ACCESSIFY_PYTHON_VERSION=3.4
  $ docker build --build-arg ACCESSIFY_PYTHON_VERSION=$ACCESSIFY_PYTHON_VERSION -t accessify . -f Dockerfile-python3.x
  $ docker run -v $PWD:/accessify --name accessify accessify
  ```

  Enter the container bash, check `Python` version and run tests:

  ```bash
  $ docker exec -it accessify bash
  $ root@36a8978cf100:/accessify# python --version
  $ root@36a8978cf100:/accessify# pytest -vv tests
  ```

  Clean container and images with the following command:

  ```bash
  $ docker rm $(docker ps -a -q) -f
  $ docker rmi $(docker images -q) -f
  ```

  When you will make changes, ensure your code pass [the checkers](https://github.com/dmytrostriletskyi/accessify/blob/basic-accessibility-levels/.travis.yml#L15)
  and is covered by tests using [pytest](https://docs.pytest.org/en/latest).

  If you are new for the contribution, please read:

  * Read about pull requests — https://help.github.com/en/articles/about-pull-requests
  * Read how to provide pull request — https://help.github.com/en/articles/creating-a-pull-request-from-a-fork
  * Also the useful article about how to contribute — https://akrabat.com/the-beginners-guide-to-contributing-to-a-github-project/



  Check it out to familiarize yourself with class members accessibility levels:

  * C# accessibility levels — https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/accessibility-levels
  * Java accessibility levels — https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
  * Object-oriented programming interfaces — https://www.cs.utah.edu/~germain/PPS/Topics/interfaces.html
  * Interfaces in C# — https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/interface
  * Interfaces in Java — https://docs.oracle.com/javase/tutorial/java/concepts/interface.html


pkgId: 0f543761494fd6db7ee4f1a9f0b3f1f338ebc3330f3032d2ddd76a7ebed67d64
name: python-accipy
arch: src
version: 0.0.12
epoch: 0
release: 1
summary: Application for querying the National Transportation Safety Board (NTSB) investigations database
url: https://pypi.org/project/accipy/
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accipy-0.0.12-1.src.rpm
checksum_type: sha256
description:
  <p align="center">
    <img src="SAFELogoBar.png"/>
  </p>


  This repository contains the AcciPy Programmable Query Application for querying the National Transportation Safety Board (NTSB) investigations database.
  This was developed by Gage Broberg, Wyatt McGinnis, Srihari Menon and Prof Nancy Currie-Gregg from the Systems Analysis & Functional Evaluation Laboratory (SAFELab) at Texas A&M University.
  This tool is open-source and free-to-use. Please reference our publication when you do!


  AcciPy works the same way that querying from the Carol Query web interface does, but is much more robust! When you submit a request to AcciPy via the query() function, AcciPy does the following:
  1. Tries to adapt the request to the requirements of the NTSB servers
  2. Based on the query parameters you give it, AcciPy decides whether the query can be safely downloaded to your machine in one request, or if the query needs to be based to NTSB in smaller chunks.
  3. Passes the revised query to NTSB asynchronously through http requests
  4. Places received data from NTSB in a folder called './output' in the current directory
     1. Data chunks from queries that could not be completed in a single request in folders named with query parameters that generated them, so that you can always tell what data you have
  5. After completing all necessary queries, combines all data received into the file './output/aggregated_data.csv'


  The application is contained in a single python file `AcciPy.py` and can be added using the standard python `import`. The module itself contains the `CAROLQuery` class, which is used by the application to interact with the CAROL database, along with the standard `query` function, which takes in a set of rules to query CAROL with..


  Queries resulting in 3500 accidents or more can take over 60 seconds to return, causing the http request to time out. To avoid this, AcciPy breaks up your large queries into smaller ones that the NTSB servers can handle without error to ensure that you aren't left hanging with a 504 server timeout!

  The application leverages multiprocessing to take advantage of the user's hardware. Because of this, performance is dependent on the number of CPUs on the user's machine. However, it is important to note that the speed of the application is limited by the speed and concurrency level of the NTSB servers. For large queries (yielding over 150000 accidents), please allow up to 1 hour for all data to be transferred. Queries yielding under 3500 datapoints will be completed in under 60 seconds. In general, completion time for queries is proportional to the number of resulting accident datapoints.


  Below is a small script demonstrating different queries that can be processed using the `query` function. For a full list of available queries, take a look at the [query_options](query_options.md) file.

  ```
  import AcciPy


  q1 = ("engine power", "Narrative", "Factual", "contains")
  q2 = ("Factual Narrative", "does not contain", "alcohol")
  q3 = "01/01/2000"
  q4 = ("fire",)



  AcciPy.query(q1)
  AcciPy.query(q3, q4)
  AcciPy.query(q2, q1, q3)
  ```

  The AcciPy library contains the `CAROLQuery` class, the `query` function, and other helper functions used to sort input parameters into their respective fields.


  The `query()` function is the main workhorse of the AcciPy library. It takes an arbritrary number of different arguments and converts them into query rules, which it then uses to create a CAROLQuery object to probe the CAROL database. A single argument is formatted as either a string or a tuple of strings, which are sorted into rules using helper functions. For query fields that are missing from an argument, the application uses the existing elements along with a dictionary of known values to fill in the missing values. If the program cannot decide which fields fit the existing arguments, it raises an exception and halts the program. These arguments can contain key words and dates. For a full list of available queries, take a look at the [query_options](query_options.md) file.


  Date queries can be submitted with just the date. This will search the database for records with a date `on or after` the entered date. Examples of some valid and invalid singular date queries are shown below:
  ```

  q = "September 27, 2023"
  q = "27 Sep 2023"
  q = "09/27/2023" (mm/dd/yyyy)
  q = "27/09/2023" (dd/mm/yyyy)
  q = "2023/09/27" (yyyy/mm/dd)
  q = "9/27/23" (m/d/yy)
  q = "27/9/23" (d/m/yy)
  q = "2023/9/27" (yyyy/m/d)
  q = "2023-09-27"
  q = "2023.09.27"


  q = "today"
  q = datetime.today()
  ```


  All 1 element queries will be considered valid. AcciPy will first attempt to parse the query string as a date (e.g. as shown above). If unable to parse as a date, AcciPy will search the Factual Narrative for the information. Examples of non-date 1 element queries are shown below:
  ```
  q = "engine power"
  q = ("fire",)
  ```


  2 element queries will be considered invalid.
  ```

  q1_2 = ("engine loss", "08/29/2005")
  ```


  Each element in 3 element queries will be checked to see if it matches one of the valid inputs, and AcciPy will attempt to sort it into a rule if possible. The following queries are examples of valid 3 element queries:
  ```
  q = ("Factual narrative", "does not contain", "fuel exhaustion")
  q = ("contains", "student", "analysis narrative")
  ```


  4 element queries provide the most robust querying in AcciPy and are the recommended way to query. Elements can be placed into the query object in any order, and AcciPy will sort the elements into the proper category for you. A list of all valid 4 element queries can be found in the [query_options](query_options.md) file.
  ```
  q = ("03/31/1990", "EventDate", "is after", "Event")
  q = ("false", "AmateurBuilt", "is", "Aircraft")
  q = ('Event', 'ID', 'is less than', '3334')
  ```


  Each distinct query is represented as a single string or a tuple of strings, separated by commas. Combining two queries is done by having separate tuples or strings, not combining the queries into one tuple. Valid and invalid multi-rule queries are shown below. You can combine any number of queries.

  ```

  q1 = "engine loss"
  q2 = ("12/10/2010", "EventDate", "is before", "Event")
  query(q1, q2)


  q1 = "alcohol"
  q2 = "08/29/2005"
  q3 = ("contains", "student", "factual narrative")
  q4 = ("12/10/2015", "EventDate", "is before", "Event")
  q5 = ("false", "AmateurBuilt", "is", "Aircraft")
  query(q1, q2, q3, q4, q5)
  ```


  By default in AcciPy, queries like the above examples will be combined with `and` logic. This means that the query
  ```
  q1 = "engine loss"
  q2 = ("12/10/2010", "EventDate", "is before", "Event")
  query(q1, q2)
  ```
  is equivalent to searching for "engine loss" in the factual narrative `and` an event date that is before 12/10/2010. There is an optional key word argument for combined queries called `require_all`. If you want to search for "engine loss" in the factual narrative `or` an event date that is before 12/10/2010 you would do so as follows:
  ```
  q1 = "engine loss"
  q2 = ("12/10/2010", "EventDate", "is before", "Event")
  query(q1, q2, require_all=False)
  ```


  By default in AcciPy, queried data is not downloaded. However, you can choose to download data on a query-by-query basis by setting the download key word argument to True. This would look like the following:
  ```
  q1 = "engine loss"
  q2 = ("12/10/2010", "EventDate", "is before", "Event")
  query(q1, q2, download=True)
  ```
  Segments of the requested data will be downloaded to ./output/['{query info here}'] until AcciPy has finished downloading all data. Then, all data will be collected in the file ./output/aggregated_data.csv


pkgId: 05c0eba2e0ab4dd22dade25bb6153fdb17d4f1faaa0bfb710cbdfab5e3c7beb4
name: python-accli
arch: src
version: 0.5.7
epoch: 0
release: 1
summary: IIASA Accelerator Client
url: https://github.com/iiasa/accli
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accli-0.5.7-1.src.rpm
checksum_type: sha256
description:
  **Requirements**
  * Python >=3.7.17

  **Installation**

  `pip install accli --user`

  **Usage as module**

  `python -m accli`

  **Usage as executable**

  *You might receive following similar warning during installation*
  ```
   WARNING: The script accli.exe is installed in 'C:\Users\singhr\AppData\Roaming\Python\Python311\Scripts' which is not on PATH.
    Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  ```

  *You could also add executable directory path in PATH environment variable. Please follow following links for instruction on adding executable directory path to PATH environemnt variable.*

  [Updating PATH on windows](https://stackoverflow.com/questions/44272416/how-to-add-a-folder-to-path-environment-variable-in-windows-10-with-screensho)

  [Updating PATH on linux](https://www.geeksforgeeks.org/how-to-set-path-permanantly-in-linux/)

  **Command**

  `accli --help`

  *Output*

  `Usage: accli [OPTIONS] COMMAND [ARGS]...`

  *Note: You may need to prepend the command with either `./`(in linux) or `.\`(in winodws).*



  **General build and upload instructions**
  Please follow [this link.](https://packaging.python.org/en/latest/tutorials/packaging-projects/)

  **Release process**
  1. Commit with right version on accli/_version.py
  2. Run 'python scripts/tag.py'
  3. `python -m build`
  4. `twine upload -r pypi -u __token__ -p <password-or-token> ./dist/*`

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


pkgId: 5dffbfac4012ed5d96532870c0bd232b344e51994b85c7e2ffaa346fc37c86e9
name: python-accmt
arch: src
version: 1.2.5.7
epoch: 0
release: 1
url: https://github.com/ghanvert/AcceleratorModule
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accmt-1.2.5.7-1.src.rpm
checksum_type: sha256
summary:
  Accelerator Module and Trainer based on Accelerate library for simple distributed train processes, inspired by PyTorch Lightning.

description:
  Module based on Accelerate 🤗 for distributed training accross multiple GPUs, with focus on readability and ease to customize experiments. We also integrate modified versions of DataCollators from Transformers library for huggingface standard tokenizers to integrate with different environments.

  NOTE: Some features might not be tested and could cause problems. Feel free to open an issue or send a PR to fix any problem found.

  AcceleratorModule will take care of the heavy lifting of distributed training on many GPUs. Accelerate is quite simple, and it has many adventages over PyTorch Lightning, mainly because it doesn't abstract the low level part of the training loop, so you can customize it however you want. The main idea of this little project is to have a standard way to make distributed training. This module let's you:
  - Define the logic involved for training, validation and test.
  - Define the logic involved to calculate different metrics in a simple and reduced manner.
  - Save checkpoints to recover training progress.
  - Early stopping by evaluating any best average metric.
  - Define the hyperparameters in a simple YAML file or HyperParameters object.
  - Visualize training progress using any supported tracker.
  - Manipulate how often are checkpoints done, evaluations, logging, model saving, etc.
  - Easily set an experimental environment by calling **set_seed** function.
  - Train **transformers** standard models with a few lines of code.
  - And more.


  AcceleratorModule is available via pip:
  ```bash
  pip install accmt
  ```



  Import AcceleratorModule:
  ```python
  from accmt import AcceleratorModule
  ```

  The AcceleratorModule class has 3 main methods:
  - **forward**: Defines the flow of data (completely optional, since you can directly call 'self.model').
  - **training_step**: Defines the training logic up to the loss function.
  - **validation_step**: Defines the validation logic up to the loss function.

  The structure looks like this:
  ```python
  class ExampleModule(AcceleratorModule):
      def __init__(self):
          self.model = ...

      def training_step(self, batch):
          x, y = batch
          
          return train_loss

      def validation_step(self, batch):
          x, y = batch
          
          return val_loss

      
      def test_step(self, batch):
          x, y = batch
          
          predictions = ...
          references = ...

          return {
              "accuracy": (predictions, references),
              "any_other_metric": (predictions, references)
          }
  ```

  More information about module structure [here](https://github.com/ghanvert/AcceleratorModule/blob/main/docs/module_structure.md).

  To train this Module, you need a **Trainer** class:
  ```python
  from accmt import Trainer, HyperParameters

  trainer = Trainer(
      
      hps_config=HyperParameters(epochs=2),
      model_path="checkpoint_folder"
      
  )
  ```

  More information about trainer [here](https://github.com/ghanvert/AcceleratorModule/blob/main/docs/trainer.md).


  This is a YAML file containing hyperparameters for your training. The structure looks like the following:
  ```yaml
  hps:
    epochs: 40
    batch_size: 35
    optim:
      type: AdamW
      lr: 1e-3
      weight_decay: 1e-3
    scheduler:
      type: OneCycleLR
      max_lr: 1e-3
  ```

  An optimizer (**optim**) is necessary, while a **scheduler** is optional (do not specify if you don't want to).

  Available optimizer types are the following:
  |  Optimizer  |  Source      |
  |-------------|--------------|
  |  [Adam](https://pytorch.org/docs/stable/generated/torch.optim.Adam.html) |  PyTorch |
  |  [Adadelta](https://pytorch.org/docs/stable/generated/torch.optim.Adadelta.html#torch.optim.Adadelta) |  PyTorch |
  |  [Adagrad](https://pytorch.org/docs/stable/generated/torch.optim.Adagrad.html#torch.optim.Adagrad) |  PyTorch |
  |  [Adamax](https://pytorch.org/docs/stable/generated/torch.optim.Adamax.html#torch.optim.Adamax) |  PyTorch |
  |  [AdamW](https://pytorch.org/docs/stable/generated/torch.optim.AdamW.html#torch.optim.AdamW) |  PyTorch |
  |  [Adafactor](https://huggingface.co/docs/transformers/main_classes/optimizer_schedules#transformers.Adafactor) |  HuggingFace |
  |  [ASGD](https://pytorch.org/docs/stable/generated/torch.optim.ASGD.html#torch.optim.ASGD) |  PyTorch |
  |  [LBFGS](https://pytorch.org/docs/stable/generated/torch.optim.LBFGS.html#torch.optim.LBFGS) |  PyTorch |
  |  [NAdam](https://pytorch.org/docs/stable/generated/torch.optim.NAdam.html#torch.optim.NAdam) |  PyTorch |
  |  [RAdam](https://pytorch.org/docs/stable/generated/torch.optim.RAdam.html#torch.optim.RAdam) |  PyTorch |
  |  [RMSprop](https://pytorch.org/docs/stable/generated/torch.optim.RMSprop.html#torch.optim.RMSprop) |  PyTorch |
  |  [Rprop](https://pytorch.org/docs/stable/generated/torch.optim.Rprop.html#torch.optim.Rprop) |  PyTorch |
  |  [SGD](https://pytorch.org/docs/stable/generated/torch.optim.SGD.html#torch.optim.SGD) |  PyTorch |
  |  [SparseAdam](https://pytorch.org/docs/stable/generated/torch.optim.SparseAdam.html#torch.optim.SparseAdam) |  PyTorch |


  Available schedulers types are the following:
  |  Scheduler                        |  Source      |
  |-----------------------------------|--------------|
  |  [StepLR](https://pytorch.org/docs/stable/generated/torch.optim.lr_scheduler.LinearLR.html#torch.optim.lr_scheduler.LinearLR) |  PyTorch |
  |  [LinearLR](https://pytorch.org/docs/stable/generated/torch.optim.lr_scheduler.LinearLR.html#torch.optim.lr_scheduler.LinearLR) |  PyTorch |
  |  [ExponentialLR](https://pytorch.org/docs/stable/generated/torch.optim.lr_scheduler.ExponentialLR.html#torch.optim.lr_scheduler.ExponentialLR)|  PyTorch |
  |  [CosineAnnealingLR](https://pytorch.org/docs/stable/generated/torch.optim.lr_scheduler.CosineAnnealingLR.html#torch.optim.lr_scheduler.CosineAnnealingLR)|  PyTorch |
  |  [CyclicLR](https://pytorch.org/docs/stable/generated/torch.optim.lr_scheduler.CyclicLR.html#torch.optim.lr_scheduler.CyclicLR) |  PyTorch |
  |  [OneCycleLR](https://pytorch.org/docs/stable/generated/torch.optim.lr_scheduler.OneCycleLR.html#torch.optim.lr_scheduler.OneCycleLR)                       |  PyTorch |
  |  [CosineAnnealingWarmRestarts](https://pytorch.org/docs/stable/generated/torch.optim.lr_scheduler.CosineAnnealingWarmRestarts.html#torch.optim.lr_scheduler.CosineAnnealingWarmRestarts) |  PyTorch |
  |  [CosineWithWarmup](https://huggingface.co/docs/transformers/main_classes/optimizer_schedules#transformers.get_cosine_schedule_with_warmup) |  HuggingFace |
  |  [Constant](https://huggingface.co/docs/transformers/main_classes/optimizer_schedules#transformers.get_constant_schedule) |  HuggingFace |
  |  [ConstantWithWarmup](https://huggingface.co/docs/transformers/main_classes/optimizer_schedules#transformers.get_constant_schedule_with_warmup) |  HuggingFace |
  |  [CosineWithHardRestartsWithWarmup](https://huggingface.co/docs/transformers/main_classes/optimizer_schedules#transformers.get_cosine_with_hard_restarts_schedule_with_warmup) |  HuggingFace |
  |  [InverseSQRT](https://huggingface.co/docs/transformers/main_classes/optimizer_schedules#transformers.get_inverse_sqrt_schedule) |  HuggingFace |
  |  [LinearWithWarmup](https://huggingface.co/docs/transformers/main_classes/optimizer_schedules#transformers.get_linear_schedule_with_warmup) |  HuggingFace |
  |  [PolynomialDecayWithWarmup](https://huggingface.co/docs/transformers/main_classes/optimizer_schedules#transformers.get_polynomial_decay_schedule_with_warmup) |  HuggingFace |

  Finally, we can train our model by using the **.fit()** function, providing our AcceleratorModule and the train and validation datasets (from PyTorch):
  ```python
  trainer.fit(module, train_dataset, val_dataset)
  ```

  More information about HPS config file [here](https://github.com/ghanvert/AcceleratorModule/blob/main/docs/hps_file_config.md).


  To run training, you can use **accmt** command-line utilities (which is a wrapper around Accelerate 🤗)
  ```bash
  accmt launch train.py -N=8 --strat=deepspeed-2-bf16
  ```
  This will run on 8 GPUs with DeepSpeed zero stage 2, with a mixed precision of bfloat16. If **-N** argument is not specified, **accmt** will launch N numbers of processes, where N will be equal to the number of GPUs detected in your system. Also, if **--strat** is not specified, default strategy will be **DDP** with no mixed precision.

  You can use any Accelerate configuration that you want 🤗 (DDP, FSDP or DeepSpeed). For more strategies, check:
  ```bash
  accmt strats  # --ddp | --fsdp | --deepspeed    <--- optional filters.
  ```

  **NOTE**: You can also use **accelerate** command-line utilities instead.

  More information about command-line utilities [here](https://github.com/ghanvert/accmt-cli).


  Checkpointing is a default process in ACCMT, and it's customizable with some parameters in the Trainer constructor:
  ```python
  trainer = Trainer(
      
      checkpoint_every="2ep", # Checkpoint every N epochs, in this case, every 2 epochs.
      resume=True # Whether you want to resume from checkpoint (True), or start from scratch (False).
      
  )
  ```



  Model saving is an integrated feature of ACCMT. You can enable it by specifying a directory where to save the model.

  You can also save model in 3 different modes:
  - **best_valid_loss**: Saves the model whenever the validation loss is the best.
  - **best_train_loss**: Saves the model whenever the train loss is the best.
  - **always**: Save the model everytime it's possible.

  Or the following format:
  - **best_{METRIC}**: If you're using an specific metric to save the model, specify it after 'best_'. (e.g. 'best_accuracy')

  And you can activate movel saving below or above a specific metric (e.g. if specified **best_valid_loss**, then model will be saved when validation loss is below or above the specified thresholds).

  ```python
  trainer = Trainer(
      
      model_path="model", # Path where to save model.
      model_saving="best_valid_loss", # Model saving mode.
      model_saving_below=0.67 # Save model below this threshold (e.g. below 0.67 validation loss).
      model_saving_above=0.01 # Completely optional.
  )
  ```



  When training big models, size in memory becomes a huge problem. One way to avoid that is to not always step the optimizer, instead accumulate gradients for a certain amount of steps. This is very easy to do, just configure the parameter **grad_accumulation_steps** for the amount of steps you want to accumulate gradients before stepping.



  Logging training progress is set by default in ACCMT, as it is essential to track how good our experiments are, and determine if we're good to pause training.

  There are only 2 paremeters to change for this (in the Trainer constructor):
  - **logging_dir**: Specifies a logging dir (default is "logs"). This can be a directory path or a URL.
  - **log_every**: Log every N number of steps (default is 1).



  You can implement your own collate function by overriding **collate_fn** from AcceleratorModule:
  ```python
  class ExampleModule(AcceleratorModule):
      

      def collate_fn(self, batch: list):
          

          return batch # Output taken in training and validation steps.
  ```

  There is another and simplier way to add collators that I'm going to be building in the future, and that is using a specific **DataCollator** built into this library.

  At the moment, there are 3 collators directly inspired on **transformers** library (with a little bit of modifications):
  - **DataCollatorForSeq2Seq**: Adds efficient padding when dealing with sequence-to-sequence problems.
  - **DataCollatorForLongestSequence**: Adds efficient padding for a batch.
  - **DataCollatorForLanguageModeling**: Implements Masked Language Modeling (MLM) task.

  Example:
  ```python
  from accmt import Trainer, DataCollatorForSeq2Seq

  tokenizer = ... # a tokenizer from 'transformers' library.

  trainer = Trainer(
      hps_config="hps_config.yaml",
      model_path="dummy_model",
      collate_fn=DataCollatorForSeq2Seq(tokenizer)
  )
  ```



  A Teacher-Student approach let's you mimic the behaviour of a bigger model (teacher) in a smaller model (student). This is a method for model distillation, useful to save computational resources and accelerate inference.

  To load teacher and student models, we can do the following in the module constructor:
  ```python
  class TeacherStudentExampleModule(AcceleratorModule):
      def __init__(self):
          self.teacher = ... # teacher model
          self.model = ...   # student model

          self.teacher.eval() # set teacher to evaluation mode
  ```

  During training, the teacher model will only provide outputs, and will not have its parameters updated.

  **NOTE**: In order to successfully load models into hardware, we must use **self.teacher** for teacher model, and **self.model** for student model.

  If using KL Divergence approach for the loss function, our **step** method will look something like this:
  ```python
  import torch
  import torch.nn.functional as F




  def step(self, batch):
      x = batch
      with torch.no_grad(): # no gradients required for teacher model
          teacher_logits = self.teacher(**x).logits

      student_output = self.model(**x)
      student_logits = student_output.logits

      soft_prob = F.log_softmax(student_logits / self.T, dim=-1)
      soft_targets = F.softmax(teacher_logits / self.T, dim=-1)

      kd_loss = F.kl_div(soft_prob, soft_targets, reduction="batchmean") * (self.T**2)
      loss = self.alpha * student_output.loss + (1. - self.alpha) * kd_loss

      return loss
  ```



  I will continue to update this repository to add more features overtime. If you want to contribute to this little project, feel free to make a PR 🤗.


pkgId: a828d216214efc5f5352fa2d0edb041562dac6a3c30bc59940211d783d092d8d
name: python-accmt-cli
arch: src
version: 1.2.0.2
epoch: 0
release: 1
summary: CLI for AcceleratorModule library (accmt).
url: https://github.com/ghanvert/accmt-cli
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accmt-cli-1.2.0.2-1.src.rpm
checksum_type: sha256
description:
  CLI for AcceleratorModule library ([accmt](https://github.com/ghanvert/AcceleratorModule)).

  This is a command-line tool wrapper around Accelerate's command-line utilities ('accelerate').


  **accmt-cli** is automatically installed when installing **accmt** library. You also install it via pip:
  ```bash
  pip install accmt-cli
  ```


  You can launch any distributed training process with the following command:
  ```bash
  accmt launch [-N][-n, --gpus][-O1][--strat] <your_python_script> [...]
  ```

  Where:
  - **-N** (*optional*): Corresponds to the number of processes, or a Python-like slice to take GPUs from a certain index (e.g. '-N=2:', to take GPUs from index 2).
  - **-n** or **--gpus** (*optional*): Corresponds to a list of CUDA devices (e.g. '-n=1,3,5,6', to take GPUs indices 1, 3, 5 and 6).
  - **-O1** (*optional*): Corresponds to the optimization of type 1, which calculates the efficient number for 'OMP_NUM_THREADS', depending on how many processes you will run you training script.
  - **--strat** (*optional*): Corresponds to the specific strategy to implement, or a configuration file path from Accelerate ('accelerate config --config_file=your-config.yaml'). See 'accmt strats' for specific strategies.
  **...** (*optional*): You can add here any additional arguments that your Python script might have.


  You can get a model from any checkpoint using the following command:
  ```bash
  accmt get <checkpoint> --out=<output-model-directory> [--dtype]
  ```

  Where:
  - **--out** or **-O** (*REQUIRED*): Output model directory name where to save the model.
  - **--dtype** (*Optional*): PyTorch data type of model parameters. Default is 'float32'.


  You can check the specific strats included with the following command:
  ```bash
  accmt strats [--ddp][--fsdp][--deepspeed]
  ```

  Where:
  - **--ddp**: To only filter for DDP strategies.
  - **--fsdp**: To only filter for FSDP strategies.
  - **--deepspeed**: To only filter for DeepSpeed strategies.


  Generate an example HPS file config with the following command:
  ```bash
  accmt example
  ```

  This will generate a file on your current directory called 'hps_example.yaml'.


pkgId: cf950969c94c249991e53e43dc496745c898732da64f0384fae8c8f688b6d983
name: python-accord-nlp
arch: src
version: 1.0.0
epoch: 0
release: 1
summary: ACCORD-NLP: Transformer/language model-based information extraction from regulatory text
url: https://github.com/Accord-Project/accord-nlp
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accord-nlp-1.0.0-1.src.rpm
checksum_type: sha256
description:
  ACCORD-NLP is a Natural Language Processing (NLP) framework developed as a part of the Horizon European project for  Automated Compliance Checks for Construction, Renovation or Demolition Works ([ACCORD](https://accordproject.eu/)) to facilitate Automated Compliance Checking (ACC) within the Architecture, Engineering, and Construction (AEC) sector.

  Compliance checking plays a pivotal role in the AEC sector, ensuring the safety, reliability, stability, and usability of building designs. Traditionally, this process relied on manual approaches, which are resource-intensive and time-consuming. Thus, attention has shifted towards automated methods to streamline compliance checks. Automating these processes necessitates the transformation of building regulations written in text aiming domain experts into machine-processable formats. However, this has been challenging, primarily due to the inherent complexities and unstructured nature of natural languages. Moreover, regulatory texts often exhibit domain-specific characteristics, ambiguities, and intricate clausal structures, further complicating the task.

  ACCORD-NLP offers data, AI models and workflows developed using state-of-the-art NLP techniques to extract rules from textual data, supporting ACC.



  As the initial step, Pytorch needs to be installed. The recommended Pytorch version is 2.0.1. Please refer to [PyTorch](https://pytorch.org/get-started/locally/#start-locally)
  installation page for the specific installation command for your platform.

  Once PyTorch has been installed, accord-nlp can be installed either from the source or as a Python package via pip.
  The latter approach is recommended.


  ```
  git clone https://github.com/Accord-Project/accord-nlp.git
  cd accord-nlp
  pip install -r requirements.txt
  ```


  ```
  pip install accord-nlp
  ```


  1. [Data Augmentation](#da)
  2. [Entity Classification](#ner)
  3. [Relation Classification](#re)
  4. [Information Extraction](#ie)



  Data augmentation supports the synthetic oversampling of relation-annotated data within a domain-specific context. It can be used using the following code. The original experiment script is available [here](https://github.com/Accord-Project/accord-nlp/blob/main/experiments/data_augmentation/da_experiment.py).

  ```python
  from accord_nlp.data_augmentation import RelationDA

  entities = ['object', 'property', 'quality', 'value']
  rda = RelationDA(entity_categories=entities)

  relations_path = '<.csv file path to original relation-annotated data>'
  entities_path = '<.csv file path to entity samples per category>'
  output_path = '<.csv file path to save newly created data>'
  rda.replace_entities(relations_path, entities_path, output_path, n=12)
  ```



  The data augmentation approach was applied to the relation-annotated training data in the [CODE-ACCORD](https://github.com/Accord-Project/CODE-ACCORD) corpus. It generated 2,912 synthetic data samples, resulting in a training set of 6,375 relations. Our paper, listed below, provides more details about the data statistics.

  The augmented training dataset can be loaded into a Pandas DataFrame using the following code.

  ```python
  from datasets import Dataset
  from datasets import load_dataset

  data_files = {"augmented_train": "augmented.csv"}
  augmented_train = Dataset.to_pandas(load_dataset("ACCORD-NLP/CODE-ACCORD-Relations", data_files=data_files, split="augmented_train"))
  ```



  We adapted the transformer's sequence labelling architecture to fine-tune the entity classifier, following its remarkable results in the NLP domain. The general transformer architecture was modified by adding individual softmax layers per output token to support entity classification.

  Our paper, listed below, provides more details about the model architecture, fine-tuning process, experiments and evaluations.



  We fine-tuned four pre-trained transformer models (i.e. BERT, ELECTRA, ALBERT and ROBERTA) for entity classification.
  All the fine-tuned models are available in [HuggingFace](https://huggingface.co/ACCORD-NLP), and can be accessed using the following code.

  ```python
  from accord_nlp.text_classification.ner.ner_model import NERModel

  model = NERModel('roberta', 'ACCORD-NLP/ner-roberta-large')
  predictions, raw_outputs = model.predict(['The gradient of the passageway should not exceed five per cent.'])
  print(predictions)
  ```



  Relation classification aims to predict the semantic relationship between two entities within a context. We introduced four special tokens (i.e. \<e1>, \</e1>, \<e2> and \</e2>) to format the input text with an entity pair to facilitate relation classification. Both \<e1> and \</e1> mark the start and end of the first entity in the selected text sequence, while \<e2> and \</e2> mark the start and end of the second entity. The transformer output corresponds to \<e1> and \<e2> were passed through a softmax layer to predict the relation category.

  Our paper, listed below, provides more details about the model architecture, fine-tuning process, experiments and evaluations.



  We fine-tuned three pre-trained transformer models (i.e. BERT, ALBERT and ROBERTA) for relation classification.
  All the fine-tuned models are available in [HuggingFace](https://huggingface.co/ACCORD-NLP), and can be accessed using the following code.

  ```python
  from accord_nlp.text_classification.relation_extraction.re_model import REModel

  model = REModel('roberta', 'ACCORD-NLP/re-roberta-large')
  predictions, raw_outputs = model.predict(['The <e1>gradient<\e1> of the passageway should not exceed <e2>five per cent</e2>.'])
  print(predictions)
  ```



  Our information extraction pipeline aims to transform a regulatory sentence into a machine-processable output (i.e., a knowledge graph of entities and relations). It utilises the entity and relation classifiers mentioned above to sequentially extract information from the text to build the final graph.

  Our paper, listed below, provides more details about the pipeline, including its individual components.


  The default pipeline configurations are set to the best-performed entity and relation classification models, and the
  default pipeline can be accessed using the following code.

  ```python
  from accord_nlp.information_extraction.ie_pipeline import InformationExtractor

  sentence = 'The gradient of the passageway should not exceed five per cent.'

  ie = InformationExtractor()
  ie.sentence_to_graph(sentence)
  ```

  The following code can be used to access the pipeline with different configurations. Please refer to the [ie_pipeline.py](https://github.com/Accord-Project/accord-nlp/blob/main/accord_nlp/information_extraction/ie_pipeline.py)
  for more details about the input parameters.

  ```python
  from accord_nlp.information_extraction.ie_pipeline import InformationExtractor

  sentence = 'The gradient of the passageway should not exceed five per cent.'

  ner_model_info = ('roberta', 'ACCORD-NLP/ner-roberta-large')
  re_model_info = ('roberta', 'ACCORD-NLP/re-roberta-large')
  ie = InformationExtractor(ner_model_info=ner_model_info, re_model_info=re_model_info, debug=True)
  ie.sentence_to_graph(sentence)

  ```

  Also, a live demo of the Information Extractor is available in [HuggingFace](https://huggingface.co/spaces/ACCORD-NLP/information-extractor).




  *Please note that the corresponding paper for this work is currently in progress and will be made available soon. Thank you for your patience and interest.*


pkgId: 72dabd3e6d2cc9e8d3933d4d46c4b7a25e93d49e7953eadada20f34a715a5394
name: python-accounting-sh
arch: src
version: 0.5.0
epoch: 0
release: 1
summary: Accounting API
url: https://accounting.sh
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accounting-sh-0.5.0-1.src.rpm
checksum_type: sha256
description:
  *AccountConnectionsApi* | [**delete_account_connection**](docs/AccountConnectionsApi.md#delete_account_connection) | **DELETE** /accounts/{uuid}/connect | Delete an account&#39;s connection
  *AccountConnectionsApi* | [**list_account_connections**](docs/AccountConnectionsApi.md#list_account_connections) | **GET** /accounts/{uuid}/connect | List account&#39;s connections
  *AccountConnectionsApi* | [**list_banks**](docs/AccountConnectionsApi.md#list_banks) | **GET** /accounts/{uuid}/connect/banks | List available bank connections
  *AccountingCodesApi* | [**add_accounting_code**](docs/AccountingCodesApi.md#add_accounting_code) | **POST** /accounting/codes | Add an accounting code
  *AccountingCodesApi* | [**delete_accounting_code**](docs/AccountingCodesApi.md#delete_accounting_code) | **DELETE** /accounting/codes/{uuid} | Delete an accounting code
  *AccountingCodesApi* | [**get_accounting_code**](docs/AccountingCodesApi.md#get_accounting_code) | **GET** /accounting/codes/{uuid} | Get an accounting code
  *AccountingCodesApi* | [**list_accounting_codes**](docs/AccountingCodesApi.md#list_accounting_codes) | **GET** /accounting/codes | List company&#39;s accounting code
  *AccountingCodesApi* | [**update_accounting_code**](docs/AccountingCodesApi.md#update_accounting_code) | **PUT** /accounting/codes/{uuid} | Update an accounting code
  *AccountsApi* | [**add_account**](docs/AccountsApi.md#add_account) | **POST** /accounts | Add an account
  *AccountsApi* | [**delete_account**](docs/AccountsApi.md#delete_account) | **DELETE** /accounts/{uuid} | Delete an account
  *AccountsApi* | [**get_account**](docs/AccountsApi.md#get_account) | **GET** /accounts/{uuid} | Get an account
  *AccountsApi* | [**list_accounts**](docs/AccountsApi.md#list_accounts) | **GET** /accounts | List company&#39;s accounts
  *AccountsApi* | [**update_account**](docs/AccountsApi.md#update_account) | **PUT** /accounts/{uuid} | Update an account
  *AttachmentsApi* | [**add_attachment**](docs/AttachmentsApi.md#add_attachment) | **POST** /attachments | Add an attachment
  *AttachmentsApi* | [**delete_attachment**](docs/AttachmentsApi.md#delete_attachment) | **DELETE** /attachments/{uuid} | Delete an attachment
  *AttachmentsApi* | [**get_attachment**](docs/AttachmentsApi.md#get_attachment) | **GET** /attachments/{uuid} | Get an attachment
  *AttachmentsApi* | [**list_attachments**](docs/AttachmentsApi.md#list_attachments) | **GET** /attachments | List company&#39;s attachments
  *AttachmentsApi* | [**retrieve_attachments**](docs/AttachmentsApi.md#retrieve_attachments) | **GET** /attachments/resource/{resource} | List company&#39;s attachments link to resource
  *AttachmentsApi* | [**update_attachment**](docs/AttachmentsApi.md#update_attachment) | **PUT** /attachments/{uuid} | Update an attachment
  *BillsApi* | [**add_bill**](docs/BillsApi.md#add_bill) | **POST** /expenses/bills | Add a bill
  *BillsApi* | [**add_bill_payment**](docs/BillsApi.md#add_bill_payment) | **POST** /expenses/bills/{uuid}/payments | Add a bill payment
  *BillsApi* | [**delete_bill**](docs/BillsApi.md#delete_bill) | **DELETE** /expenses/bills/{uuid} | Delete a bill
  *BillsApi* | [**get_bill**](docs/BillsApi.md#get_bill) | **GET** /expenses/bills/{uuid} | Get a bill
  *BillsApi* | [**get_bill_document**](docs/BillsApi.md#get_bill_document) | **GET** /expenses/bills/{uuid}/document | Get a bill in PDF
  *BillsApi* | [**list_bills**](docs/BillsApi.md#list_bills) | **GET** /expenses/bills | List company&#39;s bills
  *BillsApi* | [**update_bill**](docs/BillsApi.md#update_bill) | **PUT** /expenses/bills/{uuid} | Update a bill
  *BillsApi* | [**update_bill_payment**](docs/BillsApi.md#update_bill_payment) | **PUT** /expenses/bills/{uuid}/payments/{payment} | Update a bill payment
  *CategoriesApi* | [**add_category**](docs/CategoriesApi.md#add_category) | **POST** /categories | Add a category
  *CategoriesApi* | [**delete_category**](docs/CategoriesApi.md#delete_category) | **DELETE** /categories/{uuid} | Delete a category
  *CategoriesApi* | [**get_category**](docs/CategoriesApi.md#get_category) | **GET** /categories/{uuid} | Get a category
  *CategoriesApi* | [**list_categories**](docs/CategoriesApi.md#list_categories) | **GET** /categories | List company&#39;s categories
  *CategoriesApi* | [**update_category**](docs/CategoriesApi.md#update_category) | **PUT** /categories/{uuid} | Update a category
  *CompaniesApi* | [**add_company**](docs/CompaniesApi.md#add_company) | **POST** /companies | Add a company
  *CompaniesApi* | [**delete_company**](docs/CompaniesApi.md#delete_company) | **DELETE** /companies/{uuid} | Delete a company
  *CompaniesApi* | [**get_company**](docs/CompaniesApi.md#get_company) | **GET** /companies/{uuid} | Get a company
  *CompaniesApi* | [**get_company_customization**](docs/CompaniesApi.md#get_company_customization) | **GET** /companies/{uuid}/customization | Get a company&#39;s customization parameters
  *CompaniesApi* | [**get_company_feature_set**](docs/CompaniesApi.md#get_company_feature_set) | **GET** /companies/{uuid}/features | List a company&#39;s feature set
  *CompaniesApi* | [**list_companies**](docs/CompaniesApi.md#list_companies) | **GET** /companies | List companies on this instance
  *CompaniesApi* | [**update_company**](docs/CompaniesApi.md#update_company) | **PUT** /companies/{uuid} | Update a company
  *CompanyStatisticsApi* | [**get_statistics**](docs/CompanyStatisticsApi.md#get_statistics) | **GET** /companies/{uuid}/statistics/period | Get company&#39;s statistic
  *ContactsApi* | [**add_contact**](docs/ContactsApi.md#add_contact) | **POST** /contacts | Create a new contact
  *ContactsApi* | [**delete_contact**](docs/ContactsApi.md#delete_contact) | **DELETE** /contacts/{uuid} | Delete a contact
  *ContactsApi* | [**get_contact**](docs/ContactsApi.md#get_contact) | **GET** /contacts/{uuid} | Retrieve a contact
  *ContactsApi* | [**list_contact_bills**](docs/ContactsApi.md#list_contact_bills) | **GET** /contacts/{uuid}/bills | List a contact&#39;s bills
  *ContactsApi* | [**list_contact_invoices**](docs/ContactsApi.md#list_contact_invoices) | **GET** /contacts/{uuid}/invoices | List a contact&#39;s invoices
  *ContactsApi* | [**list_contacts**](docs/ContactsApi.md#list_contacts) | **GET** /contacts | List company&#39;s contacts
  *ContactsApi* | [**update_contact**](docs/ContactsApi.md#update_contact) | **PUT** /contact/{uuid} | Update a contact
  *CountriesApi* | [**get_translated_countries**](docs/CountriesApi.md#get_translated_countries) | **GET** /countries/{lang} | Get translated list of countries
  *CredentialsApi* | [**add_credential**](docs/CredentialsApi.md#add_credential) | **POST** /credentials | Add a credential
  *CredentialsApi* | [**delete_credential**](docs/CredentialsApi.md#delete_credential) | **DELETE** /credentials/{uuid} | Delete a credential
  *CredentialsApi* | [**get_credential**](docs/CredentialsApi.md#get_credential) | **GET** /credentials/{uuid} | Get a credential
  *CredentialsApi* | [**list_credentials**](docs/CredentialsApi.md#list_credentials) | **GET** /credentials | List company&#39;s credentials
  *CredentialsApi* | [**list_permissions**](docs/CredentialsApi.md#list_permissions) | **GET** /credentials/permissions | List available permissions
  *CredentialsApi* | [**me**](docs/CredentialsApi.md#me) | **GET** /me | Get current credential informations
  *CredentialsApi* | [**update_credential**](docs/CredentialsApi.md#update_credential) | **PUT** /credentials/{uuid} | Update a credential
  *CredentialsApi* | [**userveria**](docs/CredentialsApi.md#userveria) | **POST** /userveria | Exchange a my stantabcorp (userveria) token for an Accounting Token
  *CurrencyApi* | [**get_exchange_rate**](docs/CurrencyApi.md#get_exchange_rate) | **GET** /currency/{from}/{to} | Get the latest currency exchange rate
  *DocumentsApi* | [**cancel_review**](docs/DocumentsApi.md#cancel_review) | **DELETE** /documents/{uuid}/review | Cancel document review
  *DocumentsApi* | [**delete_document**](docs/DocumentsApi.md#delete_document) | **DELETE** /documents/{uuid} | Delete a document
  *DocumentsApi* | [**get_document**](docs/DocumentsApi.md#get_document) | **GET** /documents/{uuid} | Get a document
  *DocumentsApi* | [**list_documents**](docs/DocumentsApi.md#list_documents) | **GET** /documents | List company&#39;s documents
  *DocumentsApi* | [**process_document**](docs/DocumentsApi.md#process_document) | **GET** /documents/{uuid}/process | Process a document
  *DocumentsApi* | [**review_url**](docs/DocumentsApi.md#review_url) | **GET** /documents/{uuid}/review | Get url to review a document
  *DocumentsApi* | [**update_document**](docs/DocumentsApi.md#update_document) | **PUT** /documents/{uuid} | Update a document
  *DocumentsApi* | [**upload_document**](docs/DocumentsApi.md#upload_document) | **POST** /documents | Upload a document
  *DocumentsApi* | [**view_document**](docs/DocumentsApi.md#view_document) | **GET** /documents/{uuid}/view | View a document
  *ExpenseReportsApi* | [**add_expense_report**](docs/ExpenseReportsApi.md#add_expense_report) | **POST** /expenses/expense-reports | Add an expense report
  *ExpenseReportsApi* | [**delete_expense_report**](docs/ExpenseReportsApi.md#delete_expense_report) | **DELETE** /expenses/expense-reports/{uuid} | Delete an expense report
  *ExpenseReportsApi* | [**expense_report_o_auth_login**](docs/ExpenseReportsApi.md#expense_report_o_auth_login) | **GET** /expenses/expense-reports/login/{method} | OAuth Login
  *ExpenseReportsApi* | [**get_expense_report**](docs/ExpenseReportsApi.md#get_expense_report) | **GET** /expenses/expense-reports/{uuid} | Get an expense report
  *ExpenseReportsApi* | [**get_expense_report_account**](docs/ExpenseReportsApi.md#get_expense_report_account) | **GET** /expenses/expense-reports/me | Get the currently connected expense report user details
  *ExpenseReportsApi* | [**get_expense_report_user**](docs/ExpenseReportsApi.md#get_expense_report_user) | **GET** /expenses/expense-reports/users/{uuid} | Get an user details
  *ExpenseReportsApi* | [**list_expense_reports**](docs/ExpenseReportsApi.md#list_expense_reports) | **GET** /expenses/expense-reports | List company&#39;s expense reports.
  *ExpenseReportsApi* | [**send_expense_report_login_email**](docs/ExpenseReportsApi.md#send_expense_report_login_email) | **POST** /expenses/expense-reports/login | Request login email
  *ExpenseReportsApi* | [**update_expense_report**](docs/ExpenseReportsApi.md#update_expense_report) | **PUT** /expenses/expense-reports/{uuid} | Update an expense report
  *ExpenseReportsApi* | [**update_expense_report_account**](docs/ExpenseReportsApi.md#update_expense_report_account) | **PUT** /expenses/expense-reports/me | Update the currently connected expense report user
  *ExpenseReportsApi* | [**update_expense_report_settings**](docs/ExpenseReportsApi.md#update_expense_report_settings) | **POST** /expenses/expense-reports/settings | Retrieve company settings for expense reports
  *ExpenseReportsApi* | [**verify_expense_report_settings**](docs/ExpenseReportsApi.md#verify_expense_report_settings) | **POST** /expenses/expense-reports/verify | Verify expense reports settings
  *ExportApi* | [**list_exports**](docs/ExportApi.md#list_exports) | **GET** /export | List company&#39;s exports
  *ExportApi* | [**request_export**](docs/ExportApi.md#request_export) | **POST** /export | Request an export
  *InvoicesApi* | [**add_invoice**](docs/InvoicesApi.md#add_invoice) | **POST** /incomes/invoices | Add an invoice
  *InvoicesApi* | [**add_invoice_payment**](docs/InvoicesApi.md#add_invoice_payment) | **POST** /incomes/invoices/{uuid}/payments | Add an invoice payment
  *InvoicesApi* | [**delete_invoice**](docs/InvoicesApi.md#delete_invoice) | **DELETE** /incomes/invoices/{uuid} | Delete an invoice
  *InvoicesApi* | [**get_invoice**](docs/InvoicesApi.md#get_invoice) | **GET** /incomes/invoices/{uuid} | Get an invoice
  *InvoicesApi* | [**get_invoice_document**](docs/InvoicesApi.md#get_invoice_document) | **GET** /incomes/invoices/{uuid}/document | Get an invoice in PDF
  *InvoicesApi* | [**list_invoices**](docs/InvoicesApi.md#list_invoices) | **GET** /incomes/invoices | List company&#39;s invoices
  *InvoicesApi* | [**list_unpaid_invoices**](docs/InvoicesApi.md#list_unpaid_invoices) | **GET** /incomes/invoices/unpaid | List company&#39;s unpaid invoices
  *InvoicesApi* | [**update_invoice**](docs/InvoicesApi.md#update_invoice) | **PUT** /incomes/invoices/{uuid} | Update an invoice
  *InvoicesApi* | [**update_invoice_payment**](docs/InvoicesApi.md#update_invoice_payment) | **PUT** /incomes/invoices/{uuid}/payments/{payment} | Update an invoice payment
  *LogsApi* | [**logs**](docs/LogsApi.md#logs) | **GET** /logs | List company&#39;s logs
  *NotificationApi* | [**list_notification_preferences**](docs/NotificationApi.md#list_notification_preferences) | **GET** /notifications/preferences/{notification} | List notification preferences
  *NotificationApi* | [**list_notifications**](docs/NotificationApi.md#list_notifications) | **GET** /notifications | List company&#39;s notifications
  *NotificationApi* | [**send_notification**](docs/NotificationApi.md#send_notification) | **POST** /notifications/send | Send a notification
  *NotificationApi* | [**update_notification_preferences**](docs/NotificationApi.md#update_notification_preferences) | **PUT** /notifications/preferences/{notification} | Update notification preferences
  *NotificationTypesApi* | [**add_notification_type**](docs/NotificationTypesApi.md#add_notification_type) | **POST** /notifications/types | Add a notification type
  *NotificationTypesApi* | [**delete_notification_type**](docs/NotificationTypesApi.md#delete_notification_type) | **DELETE** /notifications/types/{uuid} | Delete a notification type
  *NotificationTypesApi* | [**get_notification_type**](docs/NotificationTypesApi.md#get_notification_type) | **GET** /notifications/types/{uuid} | Get a notification type
  *NotificationTypesApi* | [**list_notification_types**](docs/NotificationTypesApi.md#list_notification_types) | **GET** /notifications/types | List company&#39;s notification types
  *NotificationTypesApi* | [**update_notification_type**](docs/NotificationTypesApi.md#update_notification_type) | **PUT** /notifications/types/{uuid} | Update a notification type
  *OAuthConfigApi* | [**add_o_auth_configuration**](docs/OAuthConfigApi.md#add_o_auth_configuration) | **POST** /oauth | Add an OAuth configuration
  *OAuthConfigApi* | [**delete_o_auth_configuration**](docs/OAuthConfigApi.md#delete_o_auth_configuration) | **DELETE** /oauth/{uuid} | Delete an oauth configuration
  *OAuthConfigApi* | [**get_o_auth_configuration**](docs/OAuthConfigApi.md#get_o_auth_configuration) | **GET** /oauth/{uuid} | Get an OAuth configuration
  *OAuthConfigApi* | [**list_o_auth_configurations**](docs/OAuthConfigApi.md#list_o_auth_configurations) | **GET** /oauth | List company&#39;s oauth configurations
  *OAuthConfigApi* | [**list_providers**](docs/OAuthConfigApi.md#list_providers) | **GET** /oauth/providers | List available providers
  *OAuthConfigApi* | [**update_o_auth_configuration**](docs/OAuthConfigApi.md#update_o_auth_configuration) | **PUT** /oauth/{uuid} | Update an oauth configuration
  *PaymentsApi* | [**add_payment**](docs/PaymentsApi.md#add_payment) | **POST** /expenses/payments | Add a payment
  *PaymentsApi* | [**delete_payment**](docs/PaymentsApi.md#delete_payment) | **DELETE** /expenses/payments/{uuid} | Delete a payment
  *PaymentsApi* | [**get_payment**](docs/PaymentsApi.md#get_payment) | **GET** /expenses/payments/{uuid} | Get a payment
  *PaymentsApi* | [**list_payments**](docs/PaymentsApi.md#list_payments) | **GET** /expenses/payments | List company&#39;s payments
  *PaymentsApi* | [**update_payment**](docs/PaymentsApi.md#update_payment) | **PUT** /expenses/payments/{uuid} | Update a payment
  *QuotesApi* | [**add_quote**](docs/QuotesApi.md#add_quote) | **POST** /quotes | Add a quote
  *QuotesApi* | [**delete_quote**](docs/QuotesApi.md#delete_quote) | **DELETE** /quotes/{uuid} | Delete a quote
  *QuotesApi* | [**get_quote**](docs/QuotesApi.md#get_quote) | **GET** /quotes/{uuid} | Get a quote
  *QuotesApi* | [**get_quote_document**](docs/QuotesApi.md#get_quote_document) | **GET** /quotes/{uuid}/document | Get a quote in PDF
  *QuotesApi* | [**list_quotes**](docs/QuotesApi.md#list_quotes) | **GET** /quotes | List company&#39;s quotes
  *QuotesApi* | [**update_quote**](docs/QuotesApi.md#update_quote) | **PUT** /quotes/{uuid} | Update a quote
  *ReceiptsApi* | [**add_receipt**](docs/ReceiptsApi.md#add_receipt) | **POST** /receipts | Add a receipt
  *ReceiptsApi* | [**delete_receipt**](docs/ReceiptsApi.md#delete_receipt) | **DELETE** /receipts/{uuid} | Delete a receipt
  *ReceiptsApi* | [**get_receipt**](docs/ReceiptsApi.md#get_receipt) | **GET** /receipts/{uuid} | Get a receipt
  *ReceiptsApi* | [**get_receipt_document**](docs/ReceiptsApi.md#get_receipt_document) | **GET** /receipts/{uuid}/document | Get a receipt in PDF
  *ReceiptsApi* | [**list_receipts**](docs/ReceiptsApi.md#list_receipts) | **GET** /receipts | List company&#39;s receipts
  *ReceiptsApi* | [**update_receipt**](docs/ReceiptsApi.md#update_receipt) | **PUT** /receipts/{uuid} | Update a receipt
  *RevenuesApi* | [**add_revenue**](docs/RevenuesApi.md#add_revenue) | **POST** /incomes/revenues | Add a revenue
  *RevenuesApi* | [**delete_revenue**](docs/RevenuesApi.md#delete_revenue) | **DELETE** /incomes/revenues/{uuid} | Delete a revenue
  *RevenuesApi* | [**get_revenue**](docs/RevenuesApi.md#get_revenue) | **GET** /incomes/revenues/{uuid} | Get a revenue
  *RevenuesApi* | [**list_revenues**](docs/RevenuesApi.md#list_revenues) | **GET** /incomes/revenues | List company&#39;s revenues
  *RevenuesApi* | [**update_revenue**](docs/RevenuesApi.md#update_revenue) | **PUT** /incomes/revenues/{uuid} | Update a revenue
  *RossumApi* | [**list_reviews**](docs/RossumApi.md#list_reviews) | **GET** /external/rossum/reviews | List documents to be reviewes
  *SearchApi* | [**search**](docs/SearchApi.md#search) | **GET** /search | Search
  *SettingsApi* | [**get_settings**](docs/SettingsApi.md#get_settings) | **GET** /companies/{uuid}/settings/{key} | Get a company&#39;s settings
  *SettingsApi* | [**list_settings**](docs/SettingsApi.md#list_settings) | **GET** /companies/{uuid}/settings | List company&#39;s settings
  *SettingsApi* | [**update_settings**](docs/SettingsApi.md#update_settings) | **PUT** /companies/{uuid}/settings/{key} | Update a company&#39;s settings
  *TagsApi* | [**add_tag**](docs/TagsApi.md#add_tag) | **POST** /tags | Add a tag
  *TagsApi* | [**delete_tag**](docs/TagsApi.md#delete_tag) | **DELETE** /tags/{uuid} | Delete a tag
  *TagsApi* | [**get_tag**](docs/TagsApi.md#get_tag) | **GET** /tags/{uuid} | Get a tag
  *TagsApi* | [**list_tags**](docs/TagsApi.md#list_tags) | **GET** /tags | List company&#39;s tags
  *TagsApi* | [**list_tags_by_resource**](docs/TagsApi.md#list_tags_by_resource) | **GET** /tags/attachments/{resource} | List company&#39;s tags by resource attachment
  *TagsApi* | [**update_tag**](docs/TagsApi.md#update_tag) | **PUT** /tags/{uuid} | Update a tag
  *TaxApi* | [**get_tax_rate**](docs/TaxApi.md#get_tax_rate) | **GET** /tax/{country} | Get the latest tax rate for a country
  *TaxApi* | [**verify_vat_id**](docs/TaxApi.md#verify_vat_id) | **GET** /vat/verify/{number} | Verify a VAT ID
  *TransactionsApi* | [**add_transaction**](docs/TransactionsApi.md#add_transaction) | **POST** /transactions | Add a transaction
  *TransactionsApi* | [**add_transaction_code**](docs/TransactionsApi.md#add_transaction_code) | **POST** /transactions/{uuid}/codes | Add a transaction&#39;s code
  *TransactionsApi* | [**delete_transaction**](docs/TransactionsApi.md#delete_transaction) | **DELETE** /transactions/{uuid} | Delete a transaction
  *TransactionsApi* | [**delete_transaction_code**](docs/TransactionsApi.md#delete_transaction_code) | **DELETE** /transactions/{uuid}/codes/{code} | Delete a transaction&#39;s code
  *TransactionsApi* | [**get_transaction**](docs/TransactionsApi.md#get_transaction) | **GET** /transactions/{uuid} | Get a transaction
  *TransactionsApi* | [**import_transactions**](docs/TransactionsApi.md#import_transactions) | **POST** /transactions/import | Import transactions - INTERNAL
  *TransactionsApi* | [**list_transaction_codes**](docs/TransactionsApi.md#list_transaction_codes) | **GET** /transactions/{uuid}/codes | List transaction&#39;s codes
  *TransactionsApi* | [**list_transactions**](docs/TransactionsApi.md#list_transactions) | **GET** /transactions | List company&#39;s transactions
  *TransactionsApi* | [**update_transaction**](docs/TransactionsApi.md#update_transaction) | **PUT** /transactions/{uuid} | Update a transaction
  *TransactionsApi* | [**update_transaction_code**](docs/TransactionsApi.md#update_transaction_code) | **PUT** /transactions/{uuid}/codes | Update a transaction&#39;s code
  *TransfersApi* | [**add_transfer**](docs/TransfersApi.md#add_transfer) | **POST** /transfers | Add a transfer
  *TransfersApi* | [**delete_transfer**](docs/TransfersApi.md#delete_transfer) | **DELETE** /transfers/{uuid} | Delete a transfer
  *TransfersApi* | [**get_transfer**](docs/TransfersApi.md#get_transfer) | **GET** /transfers/{uuid} | Get a transfer
  *TransfersApi* | [**list_transfers**](docs/TransfersApi.md#list_transfers) | **GET** /transfers | List company&#39;s transfers
  *TransfersApi* | [**update_transfer**](docs/TransfersApi.md#update_transfer) | **PUT** /transfers/{uuid} | Update a transfer
  *VATIDApi* | [**add_company_vat_id**](docs/VATIDApi.md#add_company_vat_id) | **POST** /companies/{uuid}/vat | Add a company&#39;s Vat Id
  *VATIDApi* | [**delete_company_vat_id**](docs/VATIDApi.md#delete_company_vat_id) | **DELETE** /companies/{uuid}/vat/{key} | Delete a company&#39;s Vat Id
  *VATIDApi* | [**get_company_vat_id**](docs/VATIDApi.md#get_company_vat_id) | **GET** /companies/{uuid}/vat/{key} | Get a company&#39;s Vat Id
  *VATIDApi* | [**list_company_vat_id**](docs/VATIDApi.md#list_company_vat_id) | **GET** /companies/{uuid}/vat | List company&#39;s Vat Id
  *VATIDApi* | [**update_company_vat_id**](docs/VATIDApi.md#update_company_vat_id) | **PUT** /companies/{uuid}/vat/{key} | Update a company&#39;s Vat Id
  *WebhooksApi* | [**add_webhook**](docs/WebhooksApi.md#add_webhook) | **POST** /webhooks | Add a webhook
  *WebhooksApi* | [**delete_webhook**](docs/WebhooksApi.md#delete_webhook) | **DELETE** /webhooks/{uuid} | Delete a webhook
  *WebhooksApi* | [**get_webhook**](docs/WebhooksApi.md#get_webhook) | **GET** /webhooks/{uuid} | Get a webhook
  *WebhooksApi* | [**get_webhook_history**](docs/WebhooksApi.md#get_webhook_history) | **GET** /webhooks/{uuid}/history | Get webhook&#39;s history
  *WebhooksApi* | [**list_webhook_events**](docs/WebhooksApi.md#list_webhook_events) | **GET** /webhooks/events | List available webhook events
  *WebhooksApi* | [**list_webhooks**](docs/WebhooksApi.md#list_webhooks) | **GET** /webhooks | List company&#39;s webhooks
  *WebhooksApi* | [**update_webhook**](docs/WebhooksApi.md#update_webhook) | **PUT** /webhooks/{uuid} | Update a webhook
  <a id="documentation-for-authorization"></a>

  Authentication schemes defined for the API:
  <a id="bearer"></a>

  - **Type**: API key
  - **API key parameter name**: Authorization
  - **Location**: HTTP header

rpm_license:
[cell repeats an earlier one in this file: 10254 characters]


pkgId: 6a0ba82be2e79f052ba8d9d6286d1aedbb3acf175ff0990b092eb6f0221d97b0
name: python-accounting-sh
arch: src
version: 0.5.1
epoch: 0
release: 1
summary: Accounting API
url: https://accounting.sh
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accounting-sh-0.5.1-1.src.rpm
checksum_type: sha256
description:
  *AccountConnectionsApi* | [**delete_account_connection**](docs/AccountConnectionsApi.md#delete_account_connection) | **DELETE** /accounts/{uuid}/connect | Delete an account&#39;s connection
  *AccountConnectionsApi* | [**list_account_connections**](docs/AccountConnectionsApi.md#list_account_connections) | **GET** /accounts/{uuid}/connect | List account&#39;s connections
  *AccountConnectionsApi* | [**list_banks**](docs/AccountConnectionsApi.md#list_banks) | **GET** /accounts/{uuid}/connect/banks | List available bank connections
  *AccountingCodesApi* | [**add_accounting_code**](docs/AccountingCodesApi.md#add_accounting_code) | **POST** /accounting/codes | Add an accounting code
  *AccountingCodesApi* | [**delete_accounting_code**](docs/AccountingCodesApi.md#delete_accounting_code) | **DELETE** /accounting/codes/{uuid} | Delete an accounting code
  *AccountingCodesApi* | [**get_accounting_code**](docs/AccountingCodesApi.md#get_accounting_code) | **GET** /accounting/codes/{uuid} | Get an accounting code
  *AccountingCodesApi* | [**list_accounting_codes**](docs/AccountingCodesApi.md#list_accounting_codes) | **GET** /accounting/codes | List company&#39;s accounting code
  *AccountingCodesApi* | [**update_accounting_code**](docs/AccountingCodesApi.md#update_accounting_code) | **PUT** /accounting/codes/{uuid} | Update an accounting code
  *AccountsApi* | [**add_account**](docs/AccountsApi.md#add_account) | **POST** /accounts | Add an account
  *AccountsApi* | [**delete_account**](docs/AccountsApi.md#delete_account) | **DELETE** /accounts/{uuid} | Delete an account
  *AccountsApi* | [**get_account**](docs/AccountsApi.md#get_account) | **GET** /accounts/{uuid} | Get an account
  *AccountsApi* | [**list_accounts**](docs/AccountsApi.md#list_accounts) | **GET** /accounts | List company&#39;s accounts
  *AccountsApi* | [**update_account**](docs/AccountsApi.md#update_account) | **PUT** /accounts/{uuid} | Update an account
  *AttachmentsApi* | [**add_attachment**](docs/AttachmentsApi.md#add_attachment) | **POST** /attachments | Add an attachment
  *AttachmentsApi* | [**delete_attachment**](docs/AttachmentsApi.md#delete_attachment) | **DELETE** /attachments/{uuid} | Delete an attachment
  *AttachmentsApi* | [**get_attachment**](docs/AttachmentsApi.md#get_attachment) | **GET** /attachments/{uuid} | Get an attachment
  *AttachmentsApi* | [**list_attachments**](docs/AttachmentsApi.md#list_attachments) | **GET** /attachments | List company&#39;s attachments
  *AttachmentsApi* | [**retrieve_attachments**](docs/AttachmentsApi.md#retrieve_attachments) | **GET** /attachments/resource/{resource} | List company&#39;s attachments link to resource
  *AttachmentsApi* | [**update_attachment**](docs/AttachmentsApi.md#update_attachment) | **PUT** /attachments/{uuid} | Update an attachment
  *BillsApi* | [**add_bill**](docs/BillsApi.md#add_bill) | **POST** /expenses/bills | Add a bill
  *BillsApi* | [**add_bill_payment**](docs/BillsApi.md#add_bill_payment) | **POST** /expenses/bills/{uuid}/payments | Add a bill payment
  *BillsApi* | [**delete_bill**](docs/BillsApi.md#delete_bill) | **DELETE** /expenses/bills/{uuid} | Delete a bill
  *BillsApi* | [**get_bill**](docs/BillsApi.md#get_bill) | **GET** /expenses/bills/{uuid} | Get a bill
  *BillsApi* | [**get_bill_document**](docs/BillsApi.md#get_bill_document) | **GET** /expenses/bills/{uuid}/document | Get a bill in PDF
  *BillsApi* | [**list_bills**](docs/BillsApi.md#list_bills) | **GET** /expenses/bills | List company&#39;s bills
  *BillsApi* | [**update_bill**](docs/BillsApi.md#update_bill) | **PUT** /expenses/bills/{uuid} | Update a bill
  *BillsApi* | [**update_bill_payment**](docs/BillsApi.md#update_bill_payment) | **PUT** /expenses/bills/{uuid}/payments/{payment} | Update a bill payment
  *CategoriesApi* | [**add_category**](docs/CategoriesApi.md#add_category) | **POST** /categories | Add a category
  *CategoriesApi* | [**delete_category**](docs/CategoriesApi.md#delete_category) | **DELETE** /categories/{uuid} | Delete a category
  *CategoriesApi* | [**get_category**](docs/CategoriesApi.md#get_category) | **GET** /categories/{uuid} | Get a category
  *CategoriesApi* | [**list_categories**](docs/CategoriesApi.md#list_categories) | **GET** /categories | List company&#39;s categories
  *CategoriesApi* | [**update_category**](docs/CategoriesApi.md#update_category) | **PUT** /categories/{uuid} | Update a category
  *CompaniesApi* | [**add_company**](docs/CompaniesApi.md#add_company) | **POST** /companies | Add a company
  *CompaniesApi* | [**delete_company**](docs/CompaniesApi.md#delete_company) | **DELETE** /companies/{uuid} | Delete a company
  *CompaniesApi* | [**get_company**](docs/CompaniesApi.md#get_company) | **GET** /companies/{uuid} | Get a company
  *CompaniesApi* | [**get_company_customization**](docs/CompaniesApi.md#get_company_customization) | **GET** /companies/{uuid}/customization | Get a company&#39;s customization parameters
  *CompaniesApi* | [**get_company_feature_set**](docs/CompaniesApi.md#get_company_feature_set) | **GET** /companies/{uuid}/features | List a company&#39;s feature set
  *CompaniesApi* | [**list_companies**](docs/CompaniesApi.md#list_companies) | **GET** /companies | List companies on this instance
  *CompaniesApi* | [**update_company**](docs/CompaniesApi.md#update_company) | **PUT** /companies/{uuid} | Update a company
  *CompanyStatisticsApi* | [**get_statistics**](docs/CompanyStatisticsApi.md#get_statistics) | **GET** /companies/{uuid}/statistics/period | Get company&#39;s statistic
  *ContactsApi* | [**add_contact**](docs/ContactsApi.md#add_contact) | **POST** /contacts | Create a new contact
  *ContactsApi* | [**delete_contact**](docs/ContactsApi.md#delete_contact) | **DELETE** /contacts/{uuid} | Delete a contact
  *ContactsApi* | [**get_contact**](docs/ContactsApi.md#get_contact) | **GET** /contacts/{uuid} | Retrieve a contact
  *ContactsApi* | [**list_contact_bills**](docs/ContactsApi.md#list_contact_bills) | **GET** /contacts/{uuid}/bills | List a contact&#39;s bills
  *ContactsApi* | [**list_contact_invoices**](docs/ContactsApi.md#list_contact_invoices) | **GET** /contacts/{uuid}/invoices | List a contact&#39;s invoices
  *ContactsApi* | [**list_contacts**](docs/ContactsApi.md#list_contacts) | **GET** /contacts | List company&#39;s contacts
  *ContactsApi* | [**update_contact**](docs/ContactsApi.md#update_contact) | **PUT** /contacts/{uuid} | Update a contact
  *CountriesApi* | [**get_translated_countries**](docs/CountriesApi.md#get_translated_countries) | **GET** /countries/{lang} | Get translated list of countries
  *CredentialsApi* | [**add_credential**](docs/CredentialsApi.md#add_credential) | **POST** /credentials | Add a credential
  *CredentialsApi* | [**delete_credential**](docs/CredentialsApi.md#delete_credential) | **DELETE** /credentials/{uuid} | Delete a credential
  *CredentialsApi* | [**get_credential**](docs/CredentialsApi.md#get_credential) | **GET** /credentials/{uuid} | Get a credential
  *CredentialsApi* | [**list_credentials**](docs/CredentialsApi.md#list_credentials) | **GET** /credentials | List company&#39;s credentials
  *CredentialsApi* | [**list_permissions**](docs/CredentialsApi.md#list_permissions) | **GET** /credentials/permissions | List available permissions
  *CredentialsApi* | [**me**](docs/CredentialsApi.md#me) | **GET** /me | Get current credential informations
  *CredentialsApi* | [**update_credential**](docs/CredentialsApi.md#update_credential) | **PUT** /credentials/{uuid} | Update a credential
  *CredentialsApi* | [**userveria**](docs/CredentialsApi.md#userveria) | **POST** /userveria | Exchange a my stantabcorp (userveria) token for an Accounting Token
  *CurrencyApi* | [**get_exchange_rate**](docs/CurrencyApi.md#get_exchange_rate) | **GET** /currency/{from}/{to} | Get the latest currency exchange rate
  *DocumentsApi* | [**cancel_review**](docs/DocumentsApi.md#cancel_review) | **DELETE** /documents/{uuid}/review | Cancel document review
  *DocumentsApi* | [**delete_document**](docs/DocumentsApi.md#delete_document) | **DELETE** /documents/{uuid} | Delete a document
  *DocumentsApi* | [**get_document**](docs/DocumentsApi.md#get_document) | **GET** /documents/{uuid} | Get a document
  *DocumentsApi* | [**list_documents**](docs/DocumentsApi.md#list_documents) | **GET** /documents | List company&#39;s documents
  *DocumentsApi* | [**process_document**](docs/DocumentsApi.md#process_document) | **GET** /documents/{uuid}/process | Process a document
  *DocumentsApi* | [**review_url**](docs/DocumentsApi.md#review_url) | **GET** /documents/{uuid}/review | Get url to review a document
  *DocumentsApi* | [**update_document**](docs/DocumentsApi.md#update_document) | **PUT** /documents/{uuid} | Update a document
  *DocumentsApi* | [**upload_document**](docs/DocumentsApi.md#upload_document) | **POST** /documents | Upload a document
  *DocumentsApi* | [**view_document**](docs/DocumentsApi.md#view_document) | **GET** /documents/{uuid}/view | View a document
  *ExpenseReportsApi* | [**add_expense_report**](docs/ExpenseReportsApi.md#add_expense_report) | **POST** /expenses/expense-reports | Add an expense report
  *ExpenseReportsApi* | [**delete_expense_report**](docs/ExpenseReportsApi.md#delete_expense_report) | **DELETE** /expenses/expense-reports/{uuid} | Delete an expense report
  *ExpenseReportsApi* | [**expense_report_o_auth_login**](docs/ExpenseReportsApi.md#expense_report_o_auth_login) | **GET** /expenses/expense-reports/login/{method} | OAuth Login
  *ExpenseReportsApi* | [**get_expense_report**](docs/ExpenseReportsApi.md#get_expense_report) | **GET** /expenses/expense-reports/{uuid} | Get an expense report
  *ExpenseReportsApi* | [**get_expense_report_account**](docs/ExpenseReportsApi.md#get_expense_report_account) | **GET** /expenses/expense-reports/me | Get the currently connected expense report user details
  *ExpenseReportsApi* | [**get_expense_report_user**](docs/ExpenseReportsApi.md#get_expense_report_user) | **GET** /expenses/expense-reports/users/{uuid} | Get an user details
  *ExpenseReportsApi* | [**list_expense_reports**](docs/ExpenseReportsApi.md#list_expense_reports) | **GET** /expenses/expense-reports | List company&#39;s expense reports.
  *ExpenseReportsApi* | [**send_expense_report_login_email**](docs/ExpenseReportsApi.md#send_expense_report_login_email) | **POST** /expenses/expense-reports/login | Request login email
  *ExpenseReportsApi* | [**update_expense_report**](docs/ExpenseReportsApi.md#update_expense_report) | **PUT** /expenses/expense-reports/{uuid} | Update an expense report
  *ExpenseReportsApi* | [**update_expense_report_account**](docs/ExpenseReportsApi.md#update_expense_report_account) | **PUT** /expenses/expense-reports/me | Update the currently connected expense report user
  *ExpenseReportsApi* | [**update_expense_report_settings**](docs/ExpenseReportsApi.md#update_expense_report_settings) | **POST** /expenses/expense-reports/settings | Retrieve company settings for expense reports
  *ExpenseReportsApi* | [**verify_expense_report_settings**](docs/ExpenseReportsApi.md#verify_expense_report_settings) | **POST** /expenses/expense-reports/verify | Verify expense reports settings
  *ExportApi* | [**list_exports**](docs/ExportApi.md#list_exports) | **GET** /export | List company&#39;s exports
  *ExportApi* | [**request_export**](docs/ExportApi.md#request_export) | **POST** /export | Request an export
  *InvoicesApi* | [**add_invoice**](docs/InvoicesApi.md#add_invoice) | **POST** /incomes/invoices | Add an invoice
  *InvoicesApi* | [**add_invoice_payment**](docs/InvoicesApi.md#add_invoice_payment) | **POST** /incomes/invoices/{uuid}/payments | Add an invoice payment
  *InvoicesApi* | [**delete_invoice**](docs/InvoicesApi.md#delete_invoice) | **DELETE** /incomes/invoices/{uuid} | Delete an invoice
  *InvoicesApi* | [**get_invoice**](docs/InvoicesApi.md#get_invoice) | **GET** /incomes/invoices/{uuid} | Get an invoice
  *InvoicesApi* | [**get_invoice_document**](docs/InvoicesApi.md#get_invoice_document) | **GET** /incomes/invoices/{uuid}/document | Get an invoice in PDF
  *InvoicesApi* | [**list_invoices**](docs/InvoicesApi.md#list_invoices) | **GET** /incomes/invoices | List company&#39;s invoices
  *InvoicesApi* | [**list_unpaid_invoices**](docs/InvoicesApi.md#list_unpaid_invoices) | **GET** /incomes/invoices/unpaid | List company&#39;s unpaid invoices
  *InvoicesApi* | [**update_invoice**](docs/InvoicesApi.md#update_invoice) | **PUT** /incomes/invoices/{uuid} | Update an invoice
  *InvoicesApi* | [**update_invoice_payment**](docs/InvoicesApi.md#update_invoice_payment) | **PUT** /incomes/invoices/{uuid}/payments/{payment} | Update an invoice payment
  *LogsApi* | [**logs**](docs/LogsApi.md#logs) | **GET** /logs | List company&#39;s logs
  *NotificationApi* | [**list_notification_preferences**](docs/NotificationApi.md#list_notification_preferences) | **GET** /notifications/preferences/{notification} | List notification preferences
  *NotificationApi* | [**list_notifications**](docs/NotificationApi.md#list_notifications) | **GET** /notifications | List company&#39;s notifications
  *NotificationApi* | [**send_notification**](docs/NotificationApi.md#send_notification) | **POST** /notifications/send | Send a notification
  *NotificationApi* | [**update_notification_preferences**](docs/NotificationApi.md#update_notification_preferences) | **PUT** /notifications/preferences/{notification} | Update notification preferences
  *NotificationTypesApi* | [**add_notification_type**](docs/NotificationTypesApi.md#add_notification_type) | **POST** /notifications/types | Add a notification type
  *NotificationTypesApi* | [**delete_notification_type**](docs/NotificationTypesApi.md#delete_notification_type) | **DELETE** /notifications/types/{uuid} | Delete a notification type
  *NotificationTypesApi* | [**get_notification_type**](docs/NotificationTypesApi.md#get_notification_type) | **GET** /notifications/types/{uuid} | Get a notification type
  *NotificationTypesApi* | [**list_notification_types**](docs/NotificationTypesApi.md#list_notification_types) | **GET** /notifications/types | List company&#39;s notification types
  *NotificationTypesApi* | [**update_notification_type**](docs/NotificationTypesApi.md#update_notification_type) | **PUT** /notifications/types/{uuid} | Update a notification type
  *OAuthConfigApi* | [**add_o_auth_configuration**](docs/OAuthConfigApi.md#add_o_auth_configuration) | **POST** /oauth | Add an OAuth configuration
  *OAuthConfigApi* | [**delete_o_auth_configuration**](docs/OAuthConfigApi.md#delete_o_auth_configuration) | **DELETE** /oauth/{uuid} | Delete an oauth configuration
  *OAuthConfigApi* | [**get_o_auth_configuration**](docs/OAuthConfigApi.md#get_o_auth_configuration) | **GET** /oauth/{uuid} | Get an OAuth configuration
  *OAuthConfigApi* | [**list_o_auth_configurations**](docs/OAuthConfigApi.md#list_o_auth_configurations) | **GET** /oauth | List company&#39;s oauth configurations
  *OAuthConfigApi* | [**list_providers**](docs/OAuthConfigApi.md#list_providers) | **GET** /oauth/providers | List available providers
  *OAuthConfigApi* | [**update_o_auth_configuration**](docs/OAuthConfigApi.md#update_o_auth_configuration) | **PUT** /oauth/{uuid} | Update an oauth configuration
  *PaymentsApi* | [**add_payment**](docs/PaymentsApi.md#add_payment) | **POST** /expenses/payments | Add a payment
  *PaymentsApi* | [**delete_payment**](docs/PaymentsApi.md#delete_payment) | **DELETE** /expenses/payments/{uuid} | Delete a payment
  *PaymentsApi* | [**get_payment**](docs/PaymentsApi.md#get_payment) | **GET** /expenses/payments/{uuid} | Get a payment
  *PaymentsApi* | [**list_payments**](docs/PaymentsApi.md#list_payments) | **GET** /expenses/payments | List company&#39;s payments
  *PaymentsApi* | [**update_payment**](docs/PaymentsApi.md#update_payment) | **PUT** /expenses/payments/{uuid} | Update a payment
  *QuotesApi* | [**add_quote**](docs/QuotesApi.md#add_quote) | **POST** /quotes | Add a quote
  *QuotesApi* | [**delete_quote**](docs/QuotesApi.md#delete_quote) | **DELETE** /quotes/{uuid} | Delete a quote
  *QuotesApi* | [**get_quote**](docs/QuotesApi.md#get_quote) | **GET** /quotes/{uuid} | Get a quote
  *QuotesApi* | [**get_quote_document**](docs/QuotesApi.md#get_quote_document) | **GET** /quotes/{uuid}/document | Get a quote in PDF
  *QuotesApi* | [**list_quotes**](docs/QuotesApi.md#list_quotes) | **GET** /quotes | List company&#39;s quotes
  *QuotesApi* | [**update_quote**](docs/QuotesApi.md#update_quote) | **PUT** /quotes/{uuid} | Update a quote
  *ReceiptsApi* | [**add_receipt**](docs/ReceiptsApi.md#add_receipt) | **POST** /receipts | Add a receipt
  *ReceiptsApi* | [**delete_receipt**](docs/ReceiptsApi.md#delete_receipt) | **DELETE** /receipts/{uuid} | Delete a receipt
  *ReceiptsApi* | [**get_receipt**](docs/ReceiptsApi.md#get_receipt) | **GET** /receipts/{uuid} | Get a receipt
  *ReceiptsApi* | [**get_receipt_document**](docs/ReceiptsApi.md#get_receipt_document) | **GET** /receipts/{uuid}/document | Get a receipt in PDF
  *ReceiptsApi* | [**list_receipts**](docs/ReceiptsApi.md#list_receipts) | **GET** /receipts | List company&#39;s receipts
  *ReceiptsApi* | [**update_receipt**](docs/ReceiptsApi.md#update_receipt) | **PUT** /receipts/{uuid} | Update a receipt
  *RevenuesApi* | [**add_revenue**](docs/RevenuesApi.md#add_revenue) | **POST** /incomes/revenues | Add a revenue
  *RevenuesApi* | [**delete_revenue**](docs/RevenuesApi.md#delete_revenue) | **DELETE** /incomes/revenues/{uuid} | Delete a revenue
  *RevenuesApi* | [**get_revenue**](docs/RevenuesApi.md#get_revenue) | **GET** /incomes/revenues/{uuid} | Get a revenue
  *RevenuesApi* | [**list_revenues**](docs/RevenuesApi.md#list_revenues) | **GET** /incomes/revenues | List company&#39;s revenues
  *RevenuesApi* | [**update_revenue**](docs/RevenuesApi.md#update_revenue) | **PUT** /incomes/revenues/{uuid} | Update a revenue
  *RossumApi* | [**list_reviews**](docs/RossumApi.md#list_reviews) | **GET** /external/rossum/reviews | List documents to be reviewes
  *SearchApi* | [**search**](docs/SearchApi.md#search) | **GET** /search | Search
  *SettingsApi* | [**get_settings**](docs/SettingsApi.md#get_settings) | **GET** /companies/{uuid}/settings/{key} | Get a company&#39;s settings
  *SettingsApi* | [**list_settings**](docs/SettingsApi.md#list_settings) | **GET** /companies/{uuid}/settings | List company&#39;s settings
  *SettingsApi* | [**update_settings**](docs/SettingsApi.md#update_settings) | **PUT** /companies/{uuid}/settings/{key} | Update a company&#39;s settings
  *TagsApi* | [**add_tag**](docs/TagsApi.md#add_tag) | **POST** /tags | Add a tag
  *TagsApi* | [**delete_tag**](docs/TagsApi.md#delete_tag) | **DELETE** /tags/{uuid} | Delete a tag
  *TagsApi* | [**get_tag**](docs/TagsApi.md#get_tag) | **GET** /tags/{uuid} | Get a tag
  *TagsApi* | [**list_tags**](docs/TagsApi.md#list_tags) | **GET** /tags | List company&#39;s tags
  *TagsApi* | [**list_tags_by_resource**](docs/TagsApi.md#list_tags_by_resource) | **GET** /tags/attachments/{resource} | List company&#39;s tags by resource attachment
  *TagsApi* | [**update_tag**](docs/TagsApi.md#update_tag) | **PUT** /tags/{uuid} | Update a tag
  *TaxApi* | [**get_tax_rate**](docs/TaxApi.md#get_tax_rate) | **GET** /tax/{country} | Get the latest tax rate for a country
  *TaxApi* | [**verify_vat_id**](docs/TaxApi.md#verify_vat_id) | **GET** /vat/verify/{number} | Verify a VAT ID
  *TransactionsApi* | [**add_transaction**](docs/TransactionsApi.md#add_transaction) | **POST** /transactions | Add a transaction
  *TransactionsApi* | [**add_transaction_code**](docs/TransactionsApi.md#add_transaction_code) | **POST** /transactions/{uuid}/codes | Add a transaction&#39;s code
  *TransactionsApi* | [**delete_transaction**](docs/TransactionsApi.md#delete_transaction) | **DELETE** /transactions/{uuid} | Delete a transaction
  *TransactionsApi* | [**delete_transaction_code**](docs/TransactionsApi.md#delete_transaction_code) | **DELETE** /transactions/{uuid}/codes/{code} | Delete a transaction&#39;s code
  *TransactionsApi* | [**get_transaction**](docs/TransactionsApi.md#get_transaction) | **GET** /transactions/{uuid} | Get a transaction
  *TransactionsApi* | [**import_transactions**](docs/TransactionsApi.md#import_transactions) | **POST** /transactions/import | Import transactions - INTERNAL
  *TransactionsApi* | [**list_transaction_codes**](docs/TransactionsApi.md#list_transaction_codes) | **GET** /transactions/{uuid}/codes | List transaction&#39;s codes
  *TransactionsApi* | [**list_transactions**](docs/TransactionsApi.md#list_transactions) | **GET** /transactions | List company&#39;s transactions
  *TransactionsApi* | [**update_transaction**](docs/TransactionsApi.md#update_transaction) | **PUT** /transactions/{uuid} | Update a transaction
  *TransactionsApi* | [**update_transaction_code**](docs/TransactionsApi.md#update_transaction_code) | **PUT** /transactions/{uuid}/codes | Update a transaction&#39;s code
  *TransfersApi* | [**add_transfer**](docs/TransfersApi.md#add_transfer) | **POST** /transfers | Add a transfer
  *TransfersApi* | [**delete_transfer**](docs/TransfersApi.md#delete_transfer) | **DELETE** /transfers/{uuid} | Delete a transfer
  *TransfersApi* | [**get_transfer**](docs/TransfersApi.md#get_transfer) | **GET** /transfers/{uuid} | Get a transfer
  *TransfersApi* | [**list_transfers**](docs/TransfersApi.md#list_transfers) | **GET** /transfers | List company&#39;s transfers
  *TransfersApi* | [**update_transfer**](docs/TransfersApi.md#update_transfer) | **PUT** /transfers/{uuid} | Update a transfer
  *VATIDApi* | [**add_company_vat_id**](docs/VATIDApi.md#add_company_vat_id) | **POST** /companies/{uuid}/vat | Add a company&#39;s Vat Id
  *VATIDApi* | [**delete_company_vat_id**](docs/VATIDApi.md#delete_company_vat_id) | **DELETE** /companies/{uuid}/vat/{key} | Delete a company&#39;s Vat Id
  *VATIDApi* | [**get_company_vat_id**](docs/VATIDApi.md#get_company_vat_id) | **GET** /companies/{uuid}/vat/{key} | Get a company&#39;s Vat Id
  *VATIDApi* | [**list_company_vat_id**](docs/VATIDApi.md#list_company_vat_id) | **GET** /companies/{uuid}/vat | List company&#39;s Vat Id
  *VATIDApi* | [**update_company_vat_id**](docs/VATIDApi.md#update_company_vat_id) | **PUT** /companies/{uuid}/vat/{key} | Update a company&#39;s Vat Id
  *WebhooksApi* | [**add_webhook**](docs/WebhooksApi.md#add_webhook) | **POST** /webhooks | Add a webhook
  *WebhooksApi* | [**delete_webhook**](docs/WebhooksApi.md#delete_webhook) | **DELETE** /webhooks/{uuid} | Delete a webhook
  *WebhooksApi* | [**get_webhook**](docs/WebhooksApi.md#get_webhook) | **GET** /webhooks/{uuid} | Get a webhook
  *WebhooksApi* | [**get_webhook_history**](docs/WebhooksApi.md#get_webhook_history) | **GET** /webhooks/{uuid}/history | Get webhook&#39;s history
  *WebhooksApi* | [**list_webhook_events**](docs/WebhooksApi.md#list_webhook_events) | **GET** /webhooks/events | List available webhook events
  *WebhooksApi* | [**list_webhooks**](docs/WebhooksApi.md#list_webhooks) | **GET** /webhooks | List company&#39;s webhooks
  *WebhooksApi* | [**update_webhook**](docs/WebhooksApi.md#update_webhook) | **PUT** /webhooks/{uuid} | Update a webhook
  <a id="documentation-for-authorization"></a>

  Authentication schemes defined for the API:
  <a id="bearer"></a>

  - **Type**: API key
  - **API key parameter name**: Authorization
  - **Location**: HTTP header

rpm_license:
[cell repeats an earlier one in this file: 10254 characters]


pkgId: 58ad30e41eb0379c73c4e235c997cd9350e8f3047488706ecddfe9396ef7988b
name: python-accrete
arch: src
version: 0.0.104
epoch: 0
release: 1
summary: Django Shared Schema Multi Tenant
url: https://pypi.org/project/accrete/
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accrete-0.0.104-1.src.rpm
checksum_type: sha256
description:
  Each user can be a member of multiple Tenants, just add them to tenant.members.
  This is necessary when using the Mixins and Middleware provided by this app.


  This Middleware adds the Tenant(request.tenant) and
  Member(request.member) objects as attributes to the request
  object and sets a cookie with the tenant_id.
  If the user is a member of multiple tenants, the request is parsed for a
  tenant_id in this order.
  - The "tenant" parameter in the POST data
  - The Header X-TENANT-ID
  - The "tenant_id" URL Parameter in the GET data
  - The "tenant_id" cookie previously set by the Middleware
  If no tenant could be assigned the two attributes are set to None.
  Additionally, the user is checked for membership of the found tenant.
  Adds the tenant to the POST data.
  The Middleware must be added
  to the MIDDLEWARE setting after your authentication Middleware as it needs
  access to request.user.is_authenticated().



  Adds tenant and optionally access right checks to the dispatch method.
  This Mixin is meant as a substitute to
  django.contrib.auth.mixins.LoginRequiredMixin as TenantRequiredMixin inherits
  LoginRequiredMixin.
  Adds the member_access_groups attribute to the view. This attribute can be a
  list of codes from the tenant.models.AccessGroup model. If present, the
  member must be part of one of the listed groups to access the view.
  Failing checks are handled in a similar way as in LoginRequiredMixin.


  Substitute for django.contrib.auth.decorators.login_required
  Checks if a tenant is set on the request and redirects to the
  TENANT_MISSING_URL specified in the settings.
  The decorator itself is wrapped by login_required and can pass the arguments
  redirect_field_name and login_url to login_required.


  Form class that adds the tenant as a field and filters the queryset of every
  field that has a queryset attribute.

  Same behaviour as tenant.forms.Form.

  Custom settings
  - TENANT_MISSING_URL
  Redirect to this URL when no tenant could be set for an authenticated user.
  - TENANT_MEMBER_NOT_AUTHORIZED_URL
  Redirect to this URL when a member tries to access a URL without having the
  needed access rights.

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


pkgId: 96e2819c8581ed35eac8190df840d5e99dcfb9611dcbc3cf46588b2a5d5a771c
name: python-accretive
arch: src
version: 2.1
epoch: 0
release: 1
summary: Accretive data structures.
url: https://github.com/emcd/python-accretive
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accretive-2.1-1.src.rpm
checksum_type: sha256
description:
  * 📖 **Accretive Dictionary**: Like a regular `dict
    <https://docs.python.org/3/library/stdtypes.html#dict>`_, but entries cannot
    be modified or removed once added. Also has variants with defaults and
    validation.
  * 🗃️ **Accretive Namespace**: Similar to `SimpleNamespace
    <https://docs.python.org/3/library/types.html#types.SimpleNamespace>`_, but
    attributes become immutable after assignment.
  * 🧱 **Additional Types**: Classes (including abstract base classes), modules,
    and objects with accretive behavior.
  * 🏗️ **Flexible Initialization**: Support for unprotected attributes during
    initialization; useful for compatibility with class decorators, such as
    `dataclasses
    <https://docs.python.org/3/library/dataclasses.html#dataclasses.dataclass>`_.


pkgId: 52bc361386f076e81d3e94a444745bca9abf92310e7e68ae55909a96f99d2b4f
name: python-acctf
arch: src
version: 0.5.1
epoch: 0
release: 1
summary: library that scrapes the data from an account such as securities, bank
url: https://github.com/hirano00o/acctf
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acctf-0.5.1-1.src.rpm
checksum_type: sha256
description:
  acctfは、銀行や証券会社をスクレイピングして入出金履歴、株や投信の保有数や取得価額、現在価格を取得するライブラリです。

  下記の銀行や証券会社等に対応しています。

  * SBI証券
    * 円建て
      * 株式
        * 株式(現物)
      * 投信
        * 投資信託（金額/特定預り）
        * 投資信託（金額/NISA預り（つみたて投資枠））
        * 投資信託（金額/旧つみたてNISA預り）
    * 外貨建て(USのみ)
      * 株式
        * 株式(現物)


  * みずほ銀行(円のみ)
    * 預金
    * 入出金履歴
  * 住信SBIネット銀行
    * 預金(ハイブリッド含む)(円のみ)
    * 入出金履歴
      * 代表口座
      * ハイブリッド預金口座
      * 目的別口座


  * WealthNavi(円表示のみ)
    * 各資産クラス





  ```console
  pip install acctf
  ```





  ```python
  from acctf.securities.sbi import SBI
  from selenium import webdriver
  from selenium.webdriver.chrome.options import Options

  options = Options()
  options.add_argument('--headless')
  options.add_argument('--no-sandbox')
  driver = webdriver.Chrome(options=options)

  sbi = SBI(driver=driver).login("<ユーザID>", "<パスワード>")
  stocks = sbi.get_stock_specific()
  print("銘柄, 数量, 取得単価, 現在値")
  for s in stocks:
    print(f"{s.name}, {s.amount}, {s.acquisition_value}, {s.current_value}")

  sbi.logout()
  sbi.close()
  ```

  ```console
  銘柄, 数量, 取得単価, 現在値
  0000 銘柄1, 1000, 1234, 2345
  1111 銘柄2, 1500, 789, 987
  2222 銘柄3, 2000, 3450, 3456
  ```





  ```python
  from acctf.bank.mizuho import Mizuho
  from selenium import webdriver
  from selenium.webdriver.chrome.options import Options

  options = Options()
  options.add_argument('--headless')
  options.add_argument('--no-sandbox')
  driver = webdriver.Chrome(options=options)

  mizuho = Mizuho(driver=driver).login("<ユーザID>", "<パスワード>")
  b = mizuho.get_balance("7654321")
  print(f"口座番号, 店舗, 残高, 口座タイプ")
  print(f"{b[0].account_number}, {b[0].branch_name}, {b[0].value}, {b[0].deposit_type}")

  mizuho.logout()
  mizuho.close()
  ```

  ```console
  口座番号, 店舗, 残高, 口座タイプ
  7654321, 本店, 1234567.0, DepositType.ordinary
  ```



  下記はみずほ銀行の例です。

  ```python
  from acctf.bank.mizuho import Mizuho
  from selenium import webdriver
  from selenium.webdriver.chrome.options import Options

  options = Options()
  options.add_argument('--headless')
  options.add_argument('--no-sandbox')
  driver = webdriver.Chrome(options=options)

  mizuho = Mizuho(driver=driver).login("<ユーザID>", "<パスワード>")
  hist = mizuho.get_transaction_history("7654321")


  print(f"日付, 取引内容, 金額")
  for h in hist:
    print(f"{h.date}, {h.content}, {h.value}")

  mizuho.logout()
  mizuho.close()
  ```

  ```console
  日付, 取引内容, 金額
  2023-12-01, ＡＴＭ引き出し, -10000.0
  2024-12-20, 給与, 200000.0
  ```

  住信SBIネット銀行はUIの変更に伴い、履歴のCSVをダウンロードしてデータを取得する方式に変更しました。そのため、ドライバの設定時にダウンロードディレクトリを指定してください。
  また、ダウンロードしたCSVファイルはデータ取得後に削除されます。

  ```python
  from pathlib import Path

  from acctf.bank.sbi import SBI
  from selenium import webdriver
  from selenium.webdriver.chrome.options import Options
  from datetime import date

  from acctf.bank.sbi import AccountName
  from acctf.bank import CurrencyType

  download_directory = str(Path.cwd()) + "/tmp"
  options = Options()
  options.add_argument('--headless')
  options.add_argument('--no-sandbox')
  options.add_experimental_option("prefs", {
    "download.default_directory": download_directory,
  })
  driver = webdriver.Chrome(options=options)









  sbi = SBI(driver=driver).login("<ユーザID>", "<パスワード>")
  hist = sbi.get_transaction_history(
    "7654321",
    date(2023, 12, 1),
    date(2023, 12, 31),
    download_directory=download_directory,
    currency=CurrencyType.jpy,
    account_name=AccountName.Representative # 代表口座
  )
  hist += sbi.get_transaction_history(
    "7654321",
    date(2023, 12, 1),
    date(2023, 12, 31),
    download_directory=download_directory,
    currency=CurrencyType.jpy,
    account_name=AccountName.Hybrid # ハイブリッド預金口座
  )

  print(f"日付, 取引内容, 金額")
  for h in hist:
    print(f"{h.date}, {h.content}, {h.value}")

  sbi.logout()
  sbi.close()
  ```





  ```python
  from acctf.other.wealthnavi import WealthNavi
  from selenium import webdriver
  from selenium.webdriver.chrome.options import Options

  options = Options()
  options.add_argument('--headless')
  options.add_argument('--no-sandbox')
  driver = webdriver.Chrome(options=options)

  w = WealthNavi(driver=driver).login("<ユーザID>", "<パスワード>", "<TOTP>")


  print("資産クラス, 現在価格, 損益")
  for h in w.get_valuation():
    print(f"{h.name}, {h.value}, {h.pl_value}")

  w.logout()
  w.close()
  ```

  ```console
  資産クラス, 現在価格, 損益
  米国株(VTI), 123456.0, 12345.0
  日欧株(VEA), 123456.0, 12345.0
  新興国株(VWO), 123456.0, 12345.0
  債券(AGG), 123456.0, 12345.0
  金(GLD), 123456.0, 12345.0
  金(IAU), 123456.0, 12345.0
  不動産(IYR), 123456.0, 12345.0
  現金, 123456.0, 0.0
  ```


pkgId: 1278ed30d117c3ea032d655577a32338c606009b411ad81a04807f74533569a6
name: python-accurate-timed-loop
arch: src
version: 0.0.20
epoch: 0
release: 1
summary: accurate timed loop
url: https://pypi.org/project/accurate-timed-loop/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accurate-timed-loop-0.0.20-1.src.rpm
checksum_type: sha256
description:
  * website: <https://arrizza.com/python-accurate-timed-loop>
  * installation: see <https://arrizza.com/setup-common>



  This is a python module that provides a way to have an accurate timed loop.

  For example if you need to do an activity every 250ms +/-10ms, this loop will do that.



  see sample.py for a full example

  ```python
  import accurate_timed_loop

  loop_delay = 0.250  # seconds
  total_wait = 25.0  # seconds
  for elapsed, start_time in accurate_timed_loop.accurate_wait(total_wait, loop_delay):
      
      pass
  ```



  * See [Quick Start](https://arrizza.com/user-guide-quick-start) for information on using scripts.
  * See [xplat-utils submodule](https://arrizza.com/xplat-utils) for information on the submodule.



  The sample.py does testing and shows that on Windows MSYS2 the std deviation error is roughly
  4mS in a 250mS loop. This means that 95% of loops will be +/-8 mS of the requested loop_delay.

  ```text
        expected    elapsed  diff1(ms)  actual(s)  diff2(ms)
    1   0.000000   0.000000      0.000   0.000000      0.000
    2   0.250000   0.257294      7.294   0.257294      7.294
  <snip>
  100  24.750000  24.764093     14.093  24.764093     14.093
  101  25.000000  25.015579     15.579  25.015579     15.579


  Stats:
  loop count     : 101 loops
  Error Range    : 0.000 to 24.406 mS
  Error Stddev   :      5.009 mS
  Error Average  :      8.863 mS
  Recommended adj: 0.012200
       sample rc=0
       doit overall rc=0
  ```

  This value is specific to Windows and to the PC that it is running on.

  To make it more accurate for your PC and OS use the fixed_adjustment parameter.
  Set it so the minimum and maximum are roughly symmetrical around 0.
  The Stdev and Average error values at that point should be minimal.

  ```python
  import accurate_timed_loop

  loop_delay = 0.250  # seconds
  total_wait = 25.0  # seconds
  adj = 0.009228  # macOS
  for elapsed, start_time in accurate_timed_loop.accurate_wait(total_wait, loop_delay, fixed_adjustment=adj):
      
      pass
  ```

  Notes:

  * Re-run this several times, and tweak the fixed adjustment.
  * The sample.py reports a "Recommended adj" that usually results in better accuracy.
  * macOS and Ubuntu tend to be less variant than Windows

  This report shows that std deviation is much better.

  ```text
        expected    elapsed  diff1(ms)  actual(s)  diff2(ms)
    1   0.000000   0.000000      0.000   0.000000      0.000
    2   0.250000   0.251537      1.537   0.251537      1.537
  <snip>
  101  25.000000  24.989502    -10.498  24.989502    -10.498
  102  25.250000  25.241386     -8.614  25.241386     -8.614


  Stats:
  loop count     : 102 loops
  Error Range    : -9.228 to 5.864 mS
  Error Stddev   :      1.238 mS
  Error Average  :      4.953 mS
  Recommended adj: 0.009228
       sample rc=0
       doit overall rc=0
  ```

  Limitations:

  * there is NO guarantee that the average error will always be that low or that consistent
  * the following runs were on a macOS

  ```text

  Stats:
  loop count     : 102 loops
  Error Range    : -9.486 to 4.613 mS
  Error Stddev   :      1.962 mS
  Error Average  :      5.775 mS
  Recommended adj: 0.009486


  Stats:
  loop count     : 102 loops
  Error Range    : -9.587 to 3.287 mS
  Error Stddev   :      2.163 mS
  Error Average  :      6.745 mS
  Recommended adj: 0.009587


  Stats:
  loop count     : 102 loops
  Error Range    : -9.472 to 6.782 mS
  Error Stddev   :      1.546 mS
  Error Average  :      5.597 mS
  Recommended adj: 0.009472


  Stats:
  loop count     : 101 loops
  Error Range    : -9.518 to 10.365 mS
  Error Stddev   :      1.865 mS
  Error Average  :      5.410 mS
  Recommended adj: 0.009518


  Stats:
  loop count     : 101 loops
  Error Range    : -9.369 to 13.726 mS
  Error Stddev   :      2.196 mS
  Error Average  :      5.614 mS
  Recommended adj: 0.009369
  ```

  * if you use the adj parameter the incoming "elapsed" parameter will not be after your expected delay.
    For example these two came in:
      * at 24.749 seconds instead of the expected 24.750 seconds
      * at 24.999 seconds instead of the expected 25.000 seconds

  ```text
        expected    elapsed  diff1(ms)  actual(s)  diff2(ms)
  100  24.750000  24.749573     -0.427  24.749573     -0.427
  101  25.000000  24.999601     -0.399  24.999601     -0.399
  ```


pkgId: 1bf6b6c3c81657ec993f388fcf1537c3438c0fb4f987f0b51b9611b54579295f
name: python-accuweather
arch: src
version: 3.0.0
epoch: 0
release: 1
summary: Python wrapper for getting weather data from AccuWeather API.
url: https://github.com/bieniu/accuweather
rpm_license: Apache-2.0 License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accuweather-3.0.0-1.src.rpm
checksum_type: sha256
description:
  [![GitHub Release][releases-shield]][releases]
  [![PyPI][pypi-releases-shield]][pypi-releases]
  [![PyPI - Downloads][pypi-downloads]][pypi-statistics]
  [![Buy me a coffee][buy-me-a-coffee-shield]][buy-me-a-coffee]
  [![PayPal_Me][paypal-me-shield]][paypal-me]



  Python wrapper for getting weather data from AccuWeather API.




  To generate API key go to https://developer.accuweather.com/user/register and after registration create an app.



  ```python
  """Example of usage."""
  import asyncio
  import logging

  from aiohttp import ClientError, ClientSession

  from accuweather import (
      AccuWeather,
      ApiError,
      InvalidApiKeyError,
      InvalidCoordinatesError,
      RequestsExceededError,
  )

  LATITUDE = 52.0677904
  LONGITUDE = 19.4795644
  API_KEY = "xxxxx"

  logging.basicConfig(level=logging.DEBUG)


  async def main():
      """Run main function."""
      async with ClientSession() as websession:
          try:
              accuweather = AccuWeather(
                  API_KEY,
                  websession,
                  latitude=LATITUDE,
                  longitude=LONGITUDE,
                  language="pl",
              )
              current_conditions = await accuweather.async_get_current_conditions()
              forecast_daily = await accuweather.async_get_daily_forecast(
                  days=5, metric=True
              )
              forecast_hourly = await accuweather.async_get_hourly_forecast(
                  hours=12, metric=True
              )
          except (
              ApiError,
              InvalidApiKeyError,
              InvalidCoordinatesError,
              ClientError,
              RequestsExceededError,
          ) as error:
              print(f"Error: {error}")
          else:
              print(f"Location: {accuweather.location_name} ({accuweather.location_key})")
              print(f"Requests remaining: {accuweather.requests_remaining}")
              print(f"Current: {current_conditions}")
              print(f"Forecast: {forecast_daily}")
              print(f"Forecast hourly: {forecast_hourly}")


  loop = asyncio.new_event_loop()
  loop.run_until_complete(main())
  loop.close()
  ```

  [releases]: https://github.com/bieniu/accuweather/releases
  [releases-shield]: https://img.shields.io/github/release/bieniu/accuweather.svg?style=popout
  [pypi-releases]: https://pypi.org/project/accuweather/
  [pypi-statistics]: https://pepy.tech/project/accuweather
  [pypi-releases-shield]: https://img.shields.io/pypi/v/accuweather
  [pypi-downloads]: https://pepy.tech/badge/accuweather/month
  [buy-me-a-coffee-shield]: https://img.shields.io/static/v1.svg?label=%20&message=Buy%20me%20a%20coffee&color=6f4e37&logo=buy%20me%20a%20coffee&logoColor=white
  [buy-me-a-coffee]: https://www.buymeacoffee.com/QnLdxeaqO
  [paypal-me-shield]: https://img.shields.io/static/v1.svg?label=%20&message=PayPal.Me&logo=paypal
  [paypal-me]: https://www.paypal.me/bieniu79


pkgId: 5c364289df3b9abd251b231298b0a92ab3109f2d3ca0953ce7b021bcce2e2658
name: python-accuweather-client
arch: src
version: 1.0.0
epoch: 0
release: 1
summary: The goal of this project is to create a user-friendly api client for AccuWeather api.
url: https://pypi.org/project/accuweather-client/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-accuweather-client-1.0.0-1.src.rpm
checksum_type: sha256
description:
  A python library to interact with the accuweather api.


  The functionality that makes this package unique is the integration of the
  location client within the weather client. Specifying location by city name
  (and country optionally) is a more user-friendly way to interact with the api.


  You need to create an api token on the AccuWeather website
  (https://developer.accuweather.com).


  ```python
  """"Some code to show the functionality of the package"""

  from accuweather_client.clients import WeatherClient
  from constants import API_KEY


  weather = WeatherClient(token=API_KEY, city="sydney")

  weather.location




  weather = WeatherClient(token=API_KEY, city="sydney", country="canada")
  weather.location


  weather = WeatherClient(token=API_KEY, poi="Eiffel tower")
  weather.location


  weather = WeatherClient(token=API_KEY, lat=51.988, lon=-4.88)
  weather.location


  forecast = weather.get_5day_forecast()

  forecast.forecast_tomorrow

  forecast_df = forecast.to_pandas_df()


  forecast_hourly = weather.get_hourly_forecast_12h()


  conditions = weather.get_current_conditions()

  conditions.current_conditions


pkgId: 7fc94ff6c5ce3901f66413d70f323e3d0c45d7b9fae5b34cecfa25720c65ac26
name: python-acdc-nn
arch: src
version: 0.0.17
epoch: 0
release: 1
summary: A deep learning predictor of protein stability change upon mutation
url: https://github.com/compbiomed-unito/acdc-nn
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acdc-nn-0.0.17-1.src.rpm
checksum_type: sha256
description:
  ACDC-NN is a novel antisymmetric neural network to predict proteins free energy changes upon point variations along the amino acid sequence.
  The ACDC-NN model was built so that it can be used to make predictions in two different ways:

  1. when both the wild-type and variant structure are available, these are respectively used as direct and inverse inputs so that the network can provide a prediction that, by construction, is perfectly antisymmetric;

  2. when only the wild-type structure is available, as usual, the input for the inverse substitution is created starting from the direct one by inverting the variation encoding but preserving the same structure.

  For further information about the ACDC-NN architecture and properties, please see the related paper https://doi.org/10.1088/1361-6463/abedfb

  ACDC-NN Seq is a sequence-based version of ACDC-NN that does not require the structure of the protein, further information is available in the paper: https://doi.org/10.3390/genes12060911



  Here you can find the instructions to easily install ACDC-NN on your computer using pip (see commands below).
  In this version, ACDC-NN was trained using all datasets available in the literature without correcting for sequence similarity.
  In case you want to replicate our paper results you will find a jupyter notebook inside the 'results_replication' folder.
  There ACDC-NN was trained using a 10-fold cross-validation taking into account sequence similarity to avoid overfitting.



  We recommend using pip:
  ```
  pip install acdc-nn
  ```

  Requirements:
  <table>
    <tr><th>Requirement</th><th>Minimum tested version</th></tr>
    <tr><td>python</td><td>3.6</td></tr>
    <tr><td>tensorflow</td><td>2.3.1</td></tr>
    <tr><td>Biopython</td><td>1.78</td></tr>
    <tr><td>numpy</td><td>1.19.5</td></tr>
    <tr><td>pandas</td><td>1.1.5</td></tr>
    <tr><td>silence_tensorflow</td><td>1.1.1</td></tr>
  </table>


  To predict the change of the folding free energy (DDG) due to a point substitution in a protein sequence, ACDC-NN needs both evolutionary and structural information about the protein itself. The structural information is from a PDB file. The evolutionary information is from a profile file, simple tab-separated table of the frequencies of each residue in each position in homologous proteins. Positive DDG values are stabilizing.

  When no structural information is available, the sequence-based ACDC-NN Seq network must be used:
  ```
  acdc-nn seq SUB PROFILE
  ```

  When information is available only for the wild-type protein, the predictor can be run as:
  ```
  acdc-nn struct SUB PROFILE PDB CHAIN
  ```
  where SUB is the point substitution, PROFILE and PDB are the paths to the profile and PDB files, and CHAIN is the PDB chain where the substitution occurs. SUB is in the form XNY where X is the wild-type residue, N is the position of the substitution, and Y is the mutated residue. X and Y are given as a one-letter amino acid code and N is 1-based and referred to the PDB numbering of the relevant chain, and not the position in the sequence. Both PDB and profile files are automatically decompressed when they have a ".gz" extension.

  When information is available also for the mutated protein, a better prediction can be got as:
  ```
  acdc-nn istruct SUB WT-PROFILE WT-PDB WT-CHAIN INV-SUB MT-PROFILE MT-PDB MT-CHAIN
  ```

  To predict more than a few substitutions, we provide a batch mode:
  ```
  acdc-nn batch SUBS
  ```
  where SUBS is the path to a tab-separated table with a row for each substitution to be predicted.
  For substitutuion where no structural information is available the row format is:
  ```
  SUB PROFILE
  ```
  For substitutions where only the wild-type protein data is available, the row format is:
  ```
  SUB PROFILE PDB CHAIN
  ```
  For substitutions where also the mutated protein data is available, the row format is:
  ```
  SUB WT-PROFILE WT-PDB WT-CHAIN INV-SUB MT-PROFILE MT-PDB MT-CHAIN
  ```
  The three formats can be mixed arbitrarily in the same file.


  These examples use the data in the tests directory of the github repository.
  No structure available:
  ```
  > acdc-nn seq Q104H tests/profiles/2ocjA.prof.gz

  0.06451824
  ```

  Single substitution:
  ```
  > acdc-nn struct Q104H tests/profiles/2ocjA.prof.gz tests/structures/2ocj.pdb.gz A

  0.15008962
  ```
  Single substitution with the structure of the mutated protein
  ```
  > acdc-nn istruct V51I tests/profiles/1bsaA.prof.gz tests/structures/1bsa.pdb.gz A I51V tests/profiles/1bniA.prof.gz tests/structures/1bni.pdb.gz A

  0.48577148

  > acdc-nn istruct I51V tests/profiles/1bniA.prof.gz tests/structures/1bni.pdb.gz A V51I tests/profiles/1bsaA.prof.gz tests/structures/1bsa.pdb.gz A

  -0.48577148
  ```

  NB: In the above example we have specifically chosen two homologous proteins that have similar structure.


pkgId: cb52d745ed4dd29d52430bc977b8559a1b61488405323a413f2809d84c0b2928
name: python-acdh-arche-assets
arch: src
version: 3.20.0
epoch: 0
release: 1
summary: A set of static assets used (mainly) for ARCHE data preprocessing
url: https://github.com/acdh-oeaw/arche-assets
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acdh-arche-assets-3.20.0-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/acdh-arche-assets.svg)](https://badge.fury.io/py/acdh-arche-assets)
  [![codecov](https://codecov.io/gh/acdh-oeaw/arche-assets/branch/master/graph/badge.svg?token=RFOH77TBV1)](https://codecov.io/gh/acdh-oeaw/arche-assets)
  [![Test](https://github.com/acdh-oeaw/arche-assets/actions/workflows/pytest.yml/badge.svg)](https://github.com/acdh-oeaw/arche-assets/actions/workflows/pytest.yml)
  [![flake8 Lint](https://github.com/acdh-oeaw/arche-assets/actions/workflows/pylint.yml/badge.svg)](https://github.com/acdh-oeaw/arche-assets/actions/workflows/pylint.yml)
  [![Latest Stable Version](https://poser.pugx.org/acdh-oeaw/arche-assets/v/stable)](https://packagist.org/packages/acdh-oeaw/arche-assets)
  [![phpunit](https://github.com/acdh-oeaw/arche-assets/actions/workflows/php.yml/badge.svg)](https://github.com/acdh-oeaw/arche-assets/actions/workflows/php.yml)
  [![License](https://poser.pugx.org/acdh-oeaw/arche-assets/license)](https://packagist.org/packages/acdh-oeaw/arche-assets)

  Set of static assets used (mainly) for ARCHE data preprocessing or ARCHE information pages:
  * URI normalization rules used within the [ACDH-CH](https://www.oeaw.ac.at/acdh/).\
    (stored in `AcdhArcheAssets/uriNormRules.json`)
  * Description of input data formats accepted by [ARCHE](https://arche.acdh.oeaw.ac.at).\
    (stored in `AcdhArcheAssets/formats.json`)

  The repository provides also Python 3 and PHP bindings for accessing those assets.





  * Install using pip3:
    ```bash
    pip3 install acdh-arche-assets
    ```
  * Use with
    ```Python
    from AcdhArcheAssets.uri_norm_rules import get_rules, get_normalized_uri, get_norm_id
    print(f"{get_rules()}")

    wrong_id = "http://sws.geonames.org/1232324343/linz.html"

    good_id = get_normalized_uri(wrong_id)
    print(good_id)
    

    
    norm_id = get_norm_id("http://sws.geonames.org/1232324343/linz.html")
    print(norm_id)
    


    from AcdhArcheAssets.file_formats import get_formats, get_by_mtype, get_by_extension

    formats = get_formats()
    matching_mapping = get_by_mtype('image/png')
    matching_mapping = get_by_extension('png')

    ```



  * Install using using [composer](https://getcomposer.org/doc/00-intro.md):
    ```bash
    composer require acdh-oeaw/arche-assets
    ```
  * Usage with
    ```php
    require_once 'vendor/autoload.php';

    print_r(acdhOeaw\UriNormRules::getRules());
    print_r(acdhOeaw\UriNormRules::getRules(['viaf', 'gnd']));

    print_r(acdhOeaw\ArcheFileFormats::getAll();
    print_r(acdhOeaw\ArcheFileFormats::getByMime('application/json');
    print_r(acdhOeaw\ArcheFileFormats::getByExtension('application/json');
    ```





  Each rule consists of five properties:

  * `name`: a rule name
  * `match`: a regular expression matching a given URI namespace
  * `replace`: a regular expression replace expression normalizing an URI in a given namespace
  * `resolve`: a regular expression replace expression transforming an URI in a given namespace to an URL fetching an RDF data
  * `format`: a RDF serialization format to be requested while resolving the URL produced using the `resolve` field



  A curated and growing list of file extensions. For each file extension mappings to the respective [ARCHE Resource Type Category]( 	https://vocabs.acdh.oeaw.ac.at/archecategory/Schema) (stored in `acdh:hasCategory`) and [Media Type (MIME type)](https://www.iana.org/assignments/media-types/media-types.xhtml) (stored in `acdh:hasFormat`) are given. The indicated Media Type should only be used as a fallback; it is best practice to rely on automated Media Type detection based on file signatures.

  Further information is provided as well.

  * fileExtension: File extension to be mapped.
  * name: Name(s) the format is known
  * archeCategory: The corresponding URI of the [ARCHE Resource Type Category Vocabulary](https://vocabs.acdh.oeaw.ac.at/archecategory/Schema)
  * dataType: A broad category to group formats in; mainly intended for visualisation purposes.
  * pronomID: ID(s) assigned by [PRONOM](http://www.nationalarchives.gov.uk/PRONOM/Default.aspx)
  * mimeType: Official Media Type(s) (formerly known as MIME types) registered at [IANA](https://www.iana.org/assignments/media-types/media-types.xhtml).
  * informalMimeType: Other MIME types kown for the format
  * magicNumber: A constant numerical or text value used to identify a file format, e.g. [Wikipedia list of file signatures](https://en.wikipedia.org/wiki/List_of_file_signatures)
  * ianaTemplate: Link to template at IANA
  * reference: Link(s) to format specifications referenced by IANA and others
  * longTerm: Indicates if a format is suitable for long-term preservation.\
    Possible values and their meaning
     * yes - long-term format
     * no - not suitable, another format should be used
     * restricted - can be used for long-term preservation in some cases (see comment)
     * unsure - status remains to be evaluated
  * archeDocs: Link to a place with more information for the format.
  * comment: Any other noteworthy information not stated elsewhere.



  install needed developement packages `pip install requirements_dev.txt`



  * to run the test: `tox`
  * check coverage and create report: `coverage run setup.py test` and `coverage html`
  * check linting `flake8`


pkgId: e0e4beb7c2b6373e2f07716d4a9e19128179d8f4dbe5737cd1939dd21475fc6e
name: python-acdh-cfts-pyutils
arch: src
version: 0.2
epoch: 0
release: 1
summary: Python Package to interact with a dedicated Typesense Server and Collection
url: https://github.com/acdh-oeaw/acdh-cfts-pyutils
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acdh-cfts-pyutils-0.2-1.src.rpm
checksum_type: sha256
description:
  [![Test](https://github.com/acdh-oeaw/acdh-cfts-pyutils/actions/workflows/test.yml/badge.svg)](https://github.com/acdh-oeaw/acdh-cfts-pyutils/actions/workflows/test.yml)
  [![codecov](https://codecov.io/gh/acdh-oeaw/acdh-cfts-pyutils/branch/master/graph/badge.svg?token=JF7T9ID1MM)](https://codecov.io/gh/acdh-oeaw/acdh-cfts-pyutils)
  [![flake8 Lint](https://github.com/acdh-oeaw/acdh-cfts-pyutils/actions/workflows/lint.yml/badge.svg)](https://github.com/acdh-oeaw/acdh-cfts-pyutils/actions/workflows/lint.yml)



  Python Package to interact with a dedicated Typesense Server and Collection

  * This package exposes some constants to interact with a dedicated Typesense Server and Collection through other Python scripts.
  * Also this package is inteded to be the one and only place to modifiy the schema of the given centralised collection



  * run `pip install acdh-cfts-pyutils`
  * adapt/modifiy environmet variables to fit you needs. See `env.default` for example. If you use this package to populate the ACDH-CH central fulltext search collection running on ACDH-CH's own Typesense-Server, you'll only need to set `TYPESENSE_API_KEY` via an environment varibale.


pkgId: 34ea1f564232494ba238a29939bbcbdbe56673ed8ca4c79064e8729f19d5e483
name: python-acdh-cidoc-pyutils
arch: src
version: 0.25
epoch: 0
release: 1
summary: Helper functions for the generation of CIDOC CRMish RDF (from XML/TEI data)
url: https://github.com/acdh-oeaw/acdh-cidoc-pyutils
rpm_license: MIT license
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acdh-cidoc-pyutils-0.25-1.src.rpm
checksum_type: sha256
description:
  [![flake8 Lint](https://github.com/acdh-oeaw/acdh-cidoc-pyutils/actions/workflows/lint.yml/badge.svg)](https://github.com/acdh-oeaw/acdh-cidoc-pyutils/actions/workflows/lint.yml)
  [![Test](https://github.com/acdh-oeaw/acdh-cidoc-pyutils/actions/workflows/test.yml/badge.svg)](https://github.com/acdh-oeaw/acdh-cidoc-pyutils/actions/workflows/test.yml)
  [![codecov](https://codecov.io/gh/acdh-oeaw/acdh-cidoc-pyutils/branch/main/graph/badge.svg?token=XRF7ANN1TM)](https://codecov.io/gh/acdh-oeaw/acdh-cidoc-pyutils)
  [![PyPI version](https://badge.fury.io/py/acdh-cidoc-pyutils.svg)](https://badge.fury.io/py/acdh-cidoc-pyutils)


  Helper functions for the generation of CIDOC CRMish RDF (from XML/TEI data)



  * install via `pip install acdh-cidoc-pyutils`



  * For 'real-world-examples' see e.g. [semantic-kraus project](https://github.com/semantic-kraus/lk-data/blob/main/scripts/make_rdf.py)
  * also take a look into [test_cidoc_pyutils.py](https://github.com/acdh-oeaw/acdh-cidoc-pyutils/blob/main/tests/test_cidoc_pyutils.py)


  ```python
  import lxml.etree as ET
  from rdflib import URIRef
  rom acdh_cidoc_pyutils import make_occupations, NSMAP
  sample = """
  <TEI xmlns="http://www.tei-c.org/ns/1.0">
      <person xml:id="DWpers0091" sortKey="Gulbransson_Olaf_Leonhard">
          <persName type="pref">Gulbransson, Olaf</persName>
          <occupation notBefore="1900-12" notAfter="2000" key="#hansi" xml:lang="it">Bürgermeister</occupation>
          <occupation from="1233-02-03" key="#sumsi">Tischlermeister/Fleischhauer</occupation>
          <occupation key="franzi">Sängerin</occupation>
          <occupation>Bäckerin</occupation>
      </person>
  </TEI>"""
  g, uris = make_occupations(subj, x, "https://foo.bar", id_xpath="@key")
  print(g.serialize())

  ```
  ```ttl
  @prefix ns1: <http://www.cidoc-crm.org/cidoc-crm/> .
  @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
  @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

  <https://foo/bar/DWpers0091> ns1:P14i_performed <https://foo/bar/DWpers0091/occupation/3>,
          <https://foo/bar/DWpers0091/occupation/franzi>,
          <https://foo/bar/DWpers0091/occupation/hansi>,
          <https://foo/bar/DWpers0091/occupation/sumsi> .

  <https://foo/bar/DWpers0091/occupation/3> a <http://iflastandards.info/ns/fr/frbr/frbroo#F51> ;
      rdfs:label "Bäckerin"@de .

  <https://foo/bar/DWpers0091/occupation/franzi> a <http://iflastandards.info/ns/fr/frbr/frbroo#F51> ;
      rdfs:label "Sängerin"@de .

  <https://foo/bar/DWpers0091/occupation/hansi> a <http://iflastandards.info/ns/fr/frbr/frbroo#F51> ;
      rdfs:label "Bürgermeister"@it ;
      ns1:P4_has_time-span <https://foo/bar/DWpers0091/occupation/hansi/time-span> .

  <https://foo/bar/DWpers0091/occupation/hansi/time-span> a ns1:E52_Time-Span ;
      rdfs:label "1900-12 - 2000"^^xsd:string ;
      ns1:P82a_begin_of_the_begin "1900-12"^^xsd:gYearMonth ;
      ns1:P82b_end_of_the_end "2000"^^xsd:gYear .

  <https://foo/bar/DWpers0091/occupation/sumsi> a <http://iflastandards.info/ns/fr/frbr/frbroo#F51> ;
      rdfs:label "Tischlermeister/Fleischhauer"@de ;
      ns1:P4_has_time-span <https://foo/bar/DWpers0091/occupation/sumsi/time-span> .

  <https://foo/bar/DWpers0091/occupation/sumsi/time-span> a ns1:E52_Time-Span ;
      rdfs:label "1233-02-03 - 1233-02-03"^^xsd:string ;
      ns1:P82a_begin_of_the_begin "1233-02-03"^^xsd:date ;
      ns1:P82b_end_of_the_end "1233-02-03"^^xsd:date .
  ```



  ```python
  import lxml.etree as ET
  from rdflib import URIRef
  from acdh_cidoc_pyutils import make_birth_death_entities, NSMAP

  sample = """
  <TEI xmlns="http://www.tei-c.org/ns/1.0">
      <person xml:id="DWpers0091" sortKey="Gulbransson_Olaf_Leonhard">
          <persName type="pref">Gulbransson, Olaf</persName>
          <birth when="1873-05-26">
              26. 5. 1873<placeName key="#DWplace00139">Christiania (Oslo)</placeName>
          </birth>
          <death>
              <date notBefore-iso="1905-07-04" when="1955" to="2000">04.07.1905</date>
              <settlement key="pmb50">
                  <placeName type="pref">Wien</placeName>
                  <location><geo>48.2066 16.37341</geo></location>
              </settlement>
          </death>
      </person>
  </TEI>"""

  doc = ET.fromstring(sample)
  x = doc.xpath(".//tei:person[1]", namespaces=NSMAP)[0]
  xml_id = x.attrib["{http://www.w3.org/XML/1998/namespace}id"].lower()
  item_id = f"https://foo/bar/{xml_id}"
  subj = URIRef(item_id)
  event_graph, birth_uri, birth_timestamp = make_birth_death_entities(
      subj, x, place_id_xpath="//tei:placeName[1]/@key
  )
  event_graph, birth_uri, birth_timestamp = make_birth_death_entities(
      subj, x, event_type="death", verbose=True, date_node_xpath="/tei:date[1]",
      place_id_xpath="//tei:settlement[1]/@key"
  )
  event_graph.serialize(format="turtle")

  ```
  ```ttl
  @prefix ns1: <http://www.cidoc-crm.org/cidoc-crm/> .
  @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .



  <https://foo/bar/dwpers0091/birth> a ns1:E67_Birth ;
      rdfs:label "Geburt von Gulbransson, Olaf Leonhard"@fr ;
      ns1:P4_has_time-span <https://foo/bar/dwpers0091/birth/time-span> ;
      ns1:P7_took_place_at <https://foo/bar/DWplace00139> ;
      ns1:P98_brought_into_life <https://foo/bar/dwpers0091> .

  <https://foo/bar/dwpers0091/birth/time-span> a ns1:E52_Time-Span ;
      rdfs:label "1873-05-26 - 1873-05-26"^^xsd:string ;
      ns1:P82a_begin_of_the_begin "1873-05-26"^^xsd:date ;
      ns1:P82b_end_of_the_end "1873-05-26"^^xsd:date .



  <https://foo/bar/dwpers0091/death> a ns1:E69_Death ;
      rdfs:label "Geburt von Gulbransson, Olaf Leonhard"@fr ;
      ns1:P100_was_death_of <https://foo/bar/dwpers0091> ;
      ns1:P7_took_place_at <https://foo/bar/pmb50>
      ns1:P4_has_time-span <https://foo/bar/dwpers0091/death/time-span> .

  <https://foo/bar/dwpers0091/death/time-span> a ns1:E52_Time-Span ;
      rdfs:label "1905-07-04 - 2000"^^xsd:string ;
      ns1:P82a_begin_of_the_begin "1905-07-04"^^xsd:date ;
      ns1:P82b_end_of_the_end "2000"^^xsd:gYear .
  ```



  ```python
  import lxml.etree as ET
  from rdflib import Graph, URIRef, RDF
  from acdh_cidoc_pyutils import coordinates_to_p168, NSMAP, CIDOC
  sample = """
  <TEI xmlns="http://www.tei-c.org/ns/1.0">
      <place xml:id="DWplace00092">
          <placeName type="orig_name">Reval (Tallinn)</placeName>
          <location><geo>123 456</geo></location>
      </place>
  </TEI>"""

  doc = ET.fromstring(sample)
  g = Graph()
  for x in doc.xpath(".//tei:place", namespaces=NSMAP):
      xml_id = x.attrib["{http://www.w3.org/XML/1998/namespace}id"].lower()
      item_id = f"https://foo/bar/{xml_id}"
      subj = URIRef(item_id)
      g.add((subj, RDF.type, CIDOC["E53_Place"]))
      g += coordinates_to_p168(subj, x)
  print(g.serialize())

  ```
  ```ttl
  ...
      ns1:P168_place_is_defined_by "Point(456 123)"^^<geo:wktLiteral> .
  ...
  ```
  * Function parameter `verbose` prints information in case the given xpath does not return expected results which is a text node with two numbers separated by a given separator (default value is `separator=" "`)
  * Function parameter `inverse` (default: `inverse=False`) changes the order of the coordinates.





  ```python
  from acdh_cidoc_pyutils import date_to_literal d
  dates = [
      "1900",
      "1900-01",
      "1901-01-01",
      "foo",
  ]
  for x in dates:
      date_literal = date_to_literal(x)
      print((date_literal.datatype))






  ```



  ```python
  from acdh_cidoc_pyutils import make_uri

  domain = "https://hansi4ever.com/"
  version = "1"
  prefix = "sumsi"
  uri = make_uri(domain=domain, version=version, prefix=prefix)
  print(uri)


  uri = make_uri(domain=domain)
  print(uri)

  ```



  ```python
  from acdh_cidoc_pyutils import create_e52, make_uri
  uri = make_uri()
  e52 = create_e52(uri, begin_of_begin="1800-12-12", end_of_end="1900-01")
  print(e52.serialize())

  ```
  ```ttl








  ```


  takes a tei:person|place|org node, extracts their `@xml:id` and all `tei:idno` elements, derives `idoc:E42_Identifier` triples and relates them to a passed in subject via `cidoc:P1_is_identified_by`

  ```python
  import lxml.etree as ET
  from rdflib import Graph, URIRef, RDF
  from acdh_cidoc_pyutils import make_e42_identifiers, NSMAP, CIDOC
  sample = """
  <TEI xmlns="http://www.tei-c.org/ns/1.0">
      <place xml:id="DWplace00092">
          <placeName type="orig_name">Reval (Tallinn)</placeName>
          <placeName xml:lang="de" type="simple_name">Reval</placeName>
          <placeName xml:lang="und" type="alt_label">Tallinn</placeName>
          <idno type="pmb">https://pmb.acdh.oeaw.ac.at/entity/42085/</idno>
          <idno type="URI" subtype="geonames">https://www.geonames.org/588409</idno>
          <idno subtype="foobarid">12345</idno>
      </place>
  </TEI>"""

  doc = ET.fromstring(sample)
  g = Graph()
  for x in doc.xpath(".//tei:place|tei:org|tei:person|tei:bibl", namespaces=NSMAP):
      xml_id = x.attrib["{http://www.w3.org/XML/1998/namespace}id"].lower()
      item_id = f"https://foo/bar/{xml_id}"
      subj = URIRef(item_id)
      g.add((subj, RDF.type, CIDOC["E53_Place"]))
      g += make_e42_identifiers(
          subj, x, type_domain="http://hansi/4/ever", default_lang="it",
      )
  print(g.serialize(format="turtle"))

  ```
  ```ttl
  @prefix ns1: <http://www.cidoc-crm.org/cidoc-crm/> .
  @prefix owl: <http://www.w3.org/2002/07/owl#> .
  @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

  <https://foo/bar/dwplace00092> a ns1:E53_Place ;
      ns1:P1_is_identified_by <https://foo/bar/dwplace00092/identifier/DWplace00092>,
          <https://foo/bar/dwplace00092/identifier/idno/0>,
          <https://foo/bar/dwplace00092/identifier/idno/1>,
          <https://foo/bar/dwplace00092/identifier/idno/2> ;
      owl:sameAs <https://pmb.acdh.oeaw.ac.at/entity/42085/>,
          <https://www.geonames.org/588409> .

  <http://hansi/4/ever/idno/URI/geonames> a ns1:E55_Type .

  <http://hansi/4/ever/idno/foobarid> a ns1:E55_Type .

  <http://hansi/4/ever/idno/pmb> a ns1:E55_Type .

  <http://hansi/4/ever/xml-id> a ns1:E55_Type .

  <https://foo/bar/dwplace00092/identifier/DWplace00092> a ns1:E42_Identifier ;
      rdfs:label "Identifier: DWplace00092"@it ;
      rdf:value "DWplace00092";
      ns1:P2_has_type <http://hansi/4/ever/xml-id> .

  <https://foo/bar/dwplace00092/identifier/idno/0> a ns1:E42_Identifier ;
      rdfs:label "Identifier: https://pmb.acdh.oeaw.ac.at/entity/42085/"@it ;
      rdf:value "https://pmb.acdh.oeaw.ac.at/entity/42085/";
      ns1:P2_has_type <http://hansi/4/ever/idno/pmb> .

  <https://foo/bar/dwplace00092/identifier/idno/1> a ns1:E42_Identifier ;
      rdfs:label "Identifier: https://www.geonames.org/588409"@it ;
      rdf:value "https://www.geonames.org/588409"
      ns1:P2_has_type <http://hansi/4/ever/idno/URI/geonames> .

  <https://foo/bar/dwplace00092/identifier/idno/2> a ns1:E42_Identifier ;
      rdfs:label "Identifier: 12345"@it ;
      rdf:value "12345";
      ns1:P2_has_type <http://hansi/4/ever/idno/foobarid> .
  ```



  takes a tei:person|place|org node, extracts `persName, placeName and orgName` texts, `@xml:lang` and custom type values and returns `cidoc:E33_41` and `cidoc:E55` nodes linked via `cidoc:P1_is_identified_by` and `cidoc:P2_has_type`

  ```python
  import lxml.etree as ET
  from rdflib import Graph, URIRef, RDF
  from acdh_cidoc_pyutils import make_appellations, NSMAP, CIDOC

  sample = """
  <TEI xmlns="http://www.tei-c.org/ns/1.0">
      <place xml:id="DWplace00092">
          <placeName type="orig_name">Reval (Tallinn)</placeName>
          <placeName xml:lang="de" type="simple_name">Reval</placeName>
          <placeName xml:lang="und" type="alt_label">Tallinn</placeName>
          <idno type="pmb">https://pmb.acdh.oeaw.ac.at/entity/42085/</idno>
      </place>
  </TEI>"""

  doc = ET.fromstring(sample)
  g = Graph()
  for x in doc.xpath(".//tei:place|tei:org|tei:person|tei:bibl", namespaces=NSMAP):
      xml_id = x.attrib["{http://www.w3.org/XML/1998/namespace}id"].lower()
      item_id = f"https://foo/bar/{xml_id}"
      subj = URIRef(item_id)
      g.add((subj, RDF.type, CIDOC["E53_Place"]))
      g += make_appellations(
          subj, x, type_domain="http://hansi/4/ever", default_lang="it"
      )

  g.serialize(format="ttl")

  ```
  ```ttl
  @prefix ns1: <http://www.cidoc-crm.org/cidoc-crm/> .
  @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

  <https://foo/bar/dwplace00092> a ns1:E53_Place ;
      ns1:P1_is_identified_by <https://foo/bar/dwplace00092/appellation/0>,
          <https://foo/bar/dwplace00092/appellation/1>,
          <https://foo/bar/dwplace00092/appellation/2> .

  <http://hansi/4/ever/alt-label> a ns1:E55_Type ;
      rdfs:label "alt_label" .

  <http://hansi/4/ever/orig-name> a ns1:E55_Type ;
      rdfs:label "orig_name" .

  <http://hansi/4/ever/simple-name> a ns1:E55_Type ;
      rdfs:label "simple_name" .

  <https://foo/bar/dwplace00092/appellation/0> a ns1:E33_E41_Linguistic_Appellation ;
      rdfs:label "Reval (Tallinn)"@it ;
      ns1:P2_has_type <http://hansi/4/ever/orig-name> .

  <https://foo/bar/dwplace00092/appellation/1> a ns1:E33_E41_Linguistic_Appellation ;
      rdfs:label "Reval"@de ;
      ns1:P2_has_type <http://hansi/4/ever/simple-name> .

  <https://foo/bar/dwplace00092/appellation/2> a ns1:E33_E41_Linguistic_Appellation ;
      rdfs:label "Tallinn"@und ;
      ns1:P2_has_type <http://hansi/4/ever/alt-label> .
  ```


  ```python
  from acdh_cidoc_pyutils import normalize_string
  string = """\n\nhallo
  mein schatz ich liebe    dich
      du bist         die einzige für mich
          """
  print(normalize_string(string))


  ```



  expects typical TEI date attributes like `@when, @when-iso, @notBefore, @notAfter, @from, @to, ...` and returns a tuple containg start- and enddate values. If only `@when or @when-iso` or only `@notBefore or @notAfter` are provided, the returned values are the same, unless the default parameter `fill_missing` is set to `False`.

  ```python
  from lxml.etree import Element
  from acdh_cidoc_pyutils import extract_begin_end

  date_string = "1900-12-12"
  date_object = Element("{http://www.tei-c.org/ns/1.0}tei")
  date_object.attrib["when-iso"] = date_string
  print(extract_begin_end(date_object))




  date_string = "1900-12-12"
  date_object = Element("{http://www.tei-c.org/ns/1.0}tei")
  date_object.attrib["when-iso"] = date_string
  print(extract_begin_end(date_object, fill_missing=False))




  date_object = Element("{http://www.tei-c.org/ns/1.0}tei")
  date_object.attrib["notAfter"] = "1900-12-12"
  date_object.attrib["notBefore"] = "1800"
  print(extract_begin_end(date_object))



  ```



  * `pip install -r requirements_dev.txt`
  * `flake8` -> linting
  * `coveage run -m pytest` -> runs tests and creates coverage stats


pkgId: 1b892a7a00225ae474d81737ec4a7e27545605db248cabba6a570b2725ed891f
name: python-acdh-django-browsing
arch: src
version: 3.1
epoch: 0
release: 1
summary: Django-App providing some useful things to create browsing views
url: https://github.com/acdh-oeaw/acdh-django-browsing
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acdh-django-browsing-3.1-1.src.rpm
checksum_type: sha256
description:
  [![flake8 Lint](https://github.com/acdh-oeaw/acdh-django-browsing/actions/workflows/lint.yml/badge.svg)](https://github.com/acdh-oeaw/acdh-django-browsing/actions/workflows/lint.yml)
  [![Test](https://github.com/acdh-oeaw/acdh-django-browsing/actions/workflows/test.yml/badge.svg)](https://github.com/acdh-oeaw/acdh-django-browsing/actions/workflows/test.yml)
  [![PyPI version](https://badge.fury.io/py/acdh-django-browsing.svg)](https://badge.fury.io/py/acdh-django-browsing)

  Django-App providing some useful things to create browsing views


  see the example project in this repo to check out how to use the package and what it does


  Install acdh-django-browsing:

  `pip install acdh-django-browsing`

  Add it to your `INSTALLED_APPS`:

  ```python
  INSTALLED_APPS = (
      ...
      'browsing',
      ...
  )
  ```




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


  ```bash
  python manage.py migrate
  python manage.py loaddata data.json
  python manage.py runserver
  ```


  ```bash
  coverage run manage.py test -v 2
  ```


  ```bash
  python -m build
  ```


pkgId: d06fa89aca32104271bbbf6652280b4f02b4ad4e73872f928a31d8ffe1359d27
name: python-acdh-django-transkribus
arch: src
version: 1.1.0
epoch: 0
release: 1
summary: django app for interacting with the Transkribus-API
url: https://github.com/acdh-oeaw/acdh-django-transkribus
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acdh-django-transkribus-1.1.0-1.src.rpm
checksum_type: sha256
description:
  A django app for interacting with the [Transkribus-API](https://transkribus.eu/wiki/index.php/REST_Interface) to search and read documents hosted and processed by [Transkribus](https://transkribus.eu/Transkribus/)


pkgId: 50c23f99626b5e85f565fd7c5aeb187ef0f6bbb49821655b7a7286e590bf75f4
name: python-acdh-id-reconciler
arch: src
version: 0.7.1
epoch: 0
release: 1
summary: Python package to reconcile GND, GeoNames IDs via WikiData
url: https://github.com/acdh-oeaw/acdh-id-reconciler
rpm_license: MIT license
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-acdh-id-reconciler-0.7.1-1.src.rpm
checksum_type: sha256
description:
  [![Test](https://github.com/acdh-oeaw/acdh-id-reconciler/actions/workflows/test.yml/badge.svg)](https://github.com/acdh-oeaw/acdh-id-reconciler/actions/workflows/test.yml)
  [![PyPI version](https://badge.fury.io/py/acdh-id-reconciler.svg)](https://badge.fury.io/py/acdh-id-reconciler)
  [![codecov](https://codecov.io/gh/acdh-oeaw/acdh-id-reconciler/branch/main/graph/badge.svg?token=WY0Q1GRIG1)](https://codecov.io/gh/acdh-oeaw/acdh-id-reconciler)
  [![flake8 Lint](https://github.com/acdh-oeaw/acdh-id-reconciler/actions/workflows/lint.yml/badge.svg)](https://github.com/acdh-oeaw/acdh-id-reconciler/actions/workflows/lint.yml)


  python package to reconcile GND and GeoNames IDs via WikiData.




  `pip install acdh-id-reconciler`





  ```python
  from acdh_id_reconciler import gnd_to_geonames

  test = "https://d-nb.info/gnd/4010858-2"
  results = gnd_to_geonames(test)
  print(results)

  ```



  ```python
  from acdh_id_reconciler import gnd_to_wikidata

  test = "https://d-nb.info/gnd/4074255-6"
  results = gnd_to_wikidata(test)
  print(results)

  ```



     ```python
  from acdh_id_reconciler import gnd_to_wikidata_custom

  test = "https://d-nb.info/gnd/118634712"
  custom = "P6194" # https://www.wikidata.org/wiki/Property:P6194
  results = gnd_to_wikidata_custom(test, custom)
  print(results)

  ```



  ```python
  from acdh_id_reconciler import geonames_to_wikidata

  test = "https://www.geonames.org/2761369"
  results = geonames_to_wikidata(test)
  print(results)

  ```



  ```python
  from acdh_id_reconciler import geonames_to_gnd

  test = "https://www.geonames.org/2761369"
  results = geonames_to_gnd(test)
  print(results)

  ```



  ```python
  from acdh_id_reconciler import wikidata_to_wikipedia

  test = "https://www.wikidata.org/wiki/Q1186567/"
  result = wikidata_to_wikipedia(test)
  print(result)



  result = wikidata_to_wikipedia(test, wiki_lang='enwiki')
  print(result)


