# packages

pkgId: fe0736d47782c400151dfafea935f2387cb8c2a554e960711f4d70a8be807f7c
name: python-alibabacloud-sls20201230-py2
arch: src
version: 5.1.0
epoch: 0
release: 1
summary: Alibaba Cloud Log Service (20201230) SDK Library for Python2
url: https://github.com/aliyun/alibabacloud-python2-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-sls20201230-py2-5.1.0-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 2.6



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_sls20201230_py2
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python2-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 67915391a4a92d902673cc974d1000f2f2a78d0a0b9642d5dc44829a73348f3d
name: python-alibabacloud-swas-open20200601
arch: src
version: 3.0.1
epoch: 0
release: 1
summary: Alibaba Cloud SWAS-OPEN (20200601) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-swas-open20200601-3.0.1-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.7



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_swas_open20200601
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/swas-open-20200601/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: c1044ce74a9943e4e58e3830b384819b23cabe2f1c107867a4bec9a8aef33e18
name: python-alibabacloud-tea
arch: src
version: 0.3.9
epoch: 0
release: 1
summary: The tea module of alibabaCloud Python SDK.
url: https://github.com/aliyun/tea-python
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-tea-0.3.9-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)



  [![PyPI version](https://badge.fury.io/py/alibabacloud-tea.svg)](https://badge.fury.io/py/alibabacloud-tea)
  [![Python Test](https://github.com/aliyun/tea-python/actions/workflows/testPython.yml/badge.svg)](https://github.com/aliyun/tea-python/actions/workflows/testPython.yml)
  [![python](https://img.shields.io/pypi/pyversions/alibabacloud-tea.svg)](https://img.shields.io/pypi/pyversions/alibabacloud-tea.svg)


  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud-tea
  ```


  [Opening an Issue](https://github.com/aliyun/tea-python/issues/new), Issues not conforming to the guidelines may be closed immediately.


  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).


  * [Latest Release](https://github.com/aliyun/tea-python/tree/master/python)


  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 5f2804ae9765a20c26fc52c6b28f8dbb6407aab6e9d4a31890b4670ce3a73baf
name: python-alibabacloud-tea
arch: src
version: 0.4.0
epoch: 0
release: 1
summary: The tea module of alibabaCloud Python SDK.
url: https://github.com/aliyun/tea-python
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-tea-0.4.0-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)

  ![Alibaba Cloud](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)



  [![PyPI version](https://badge.fury.io/py/alibabacloud-tea.svg)](https://badge.fury.io/py/alibabacloud-tea)
  [![Python Test](https://github.com/aliyun/tea-python/actions/workflows/ci.yml/badge.svg)](https://github.com/aliyun/tea-python/actions/workflows/ci.yml)
  [![codecov](https://codecov.io/gh/aliyun/tea-python/graph/badge.svg?token=FN19OMRTVY)](https://codecov.io/gh/aliyun/tea-python)
  [![python](https://img.shields.io/pypi/pyversions/alibabacloud-tea.svg)](https://img.shields.io/pypi/pyversions/alibabacloud-tea.svg)



  - Starting from version 0.4.0, the package `alibabacloud-tea` only supports Python 3.7 and above.



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud-tea
  ```



  [Opening an Issue](https://github.com/aliyun/tea-python/issues/new), Issues not conforming to the guidelines may be closed immediately.



  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/tea-python/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 2efe9e7a0f4332a063f5bce69b3d5e59968695c59941c44c6ca548989ba8d751
name: python-alibabacloud-tea-console
arch: src
version: 0.0.1
epoch: 0
release: 1
summary: The tea-console module of alibabaCloud Python SDK.
url: https://github.com/aliyun/tea-console/tree/master/python
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-tea-console-0.0.1-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)




  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_tea_console
  ```


  [Opening an Issue](https://github.com/aliyun/tea-console/issues/new), Issues not conforming to the guidelines may be closed immediately.


  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).


  * [Latest Release](https://github.com/aliyun/tea-console/tree/master/python)


  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 1e81e4a9e0106d57fc05201c22b063a044da8e637c412ab63c4f189ea879c66d
name: python-alibabacloud-tea-fileform
arch: src
version: 0.0.5
epoch: 0
release: 1
summary: The tea-fileform module of alibabaCloud Python SDK.
url: https://github.com/aliyun/tea-fileform/tree/master/python
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-tea-fileform-0.0.5-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)




  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_tea_fileform
  ```


  [Opening an Issue](https://github.com/aliyun/tea-fileform/issues/new), Issues not conforming to the guidelines may be closed immediately.


  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).


  * [Latest Release](https://github.com/aliyun/tea-fileform/tree/master/python)


  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 99b37c358484180337d6ae3f9ee9d3b2e1e57ae0eb5377715e51a9e789899190
name: python-alibabacloud-tea-openapi
arch: src
version: 0.3.11
epoch: 0
release: 1
summary: Alibaba Cloud openapi SDK Library for Python
url: https://github.com/aliyun/darabonba-openapi
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-tea-openapi-0.3.11-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)




  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_tea_openapi
  ```



  [Opening an Issue](https://github.com/aliyun/darabonba-openapi/issues/new), Issues not conforming to the guidelines may be closed immediately.


  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).


  * [Latest Release](https://github.com/aliyun/darabonba-openapi)


  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 82a782f5184eee886041b448467e883ccfe549b3df7d29c94132e034aed0b9c1
name: python-alibabacloud-tea-openapi-py2
arch: src
version: 0.1.8
epoch: 0
release: 1
summary: Alibaba Cloud openapi SDK Library for Python2
url: https://github.com/aliyun/darabonba-openapi
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-tea-openapi-py2-0.1.8-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)




  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_tea_openapi_py2
  ```



  [Opening an Issue](https://github.com/aliyun/darabonba-openapi/issues/new), Issues not conforming to the guidelines may be closed immediately.


  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).


  * [Latest Release](https://github.com/aliyun/darabonba-openapi)


  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 21e0b3395ae54a93cd353a953826a9ccd979a8b14334e0cf0c859d4f6ed03f81
name: python-alibabacloud-tea-util
arch: src
version: 0.3.13
epoch: 0
release: 1
summary: The tea-util module of alibabaCloud Python SDK.
url: https://github.com/aliyun/tea-util/tree/master/python
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-tea-util-0.3.13-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)




  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/?spm=5176.doc53090.2.7.zHDiNV "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_tea_util
  ```


  [Opening an Issue](https://github.com/aliyun/tea-util/issues/new), Issues not conforming to the guidelines may be closed immediately.


  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).


  * [Latest Release](https://github.com/aliyun/tea-util/tree/master/python)


  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: c4f6ad3ac30a1245f8101158d905467bfc2735a1cacea48aabbb3a5723096656
name: python-alibabacloud-tea-xml
arch: src
version: 0.0.2
epoch: 0
release: 1
summary: The tea-xml module of alibabaCloud Python SDK.
url: https://github.com/aliyun/tea-xml/tree/master/python
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-tea-xml-0.0.2-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)




  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/?spm=5176.doc53090.2.7.zHDiNV "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud-tea-xml
  ```


  [Opening an Issue](https://github.com/aliyun/tea-xml/issues/new), Issues not conforming to the guidelines may be closed immediately.


  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).


  * [Latest Release](https://github.com/aliyun/tea-xml/tree/master/python)


  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: ce3d7ec463489174b91f5d11d2f00ce82e929d3cf7a3c73f420754af23947feb
name: python-alibabacloud-tingwu20230930
arch: src
version: 2.0.18
epoch: 0
release: 1
summary: Alibaba Cloud tingwu (20230930) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-tingwu20230930-2.0.18-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.7



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_tingwu20230930
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/tingwu-20230930/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 585f6296c62008573947e50cbc6938de1d8d9309d0284fc2389ed83caec349e7
name: python-alibabacloud-tingwu20230930-py2
arch: src
version: 2.0.8
epoch: 0
release: 1
summary: Alibaba Cloud tingwu (20230930) SDK Library for Python2
url: https://github.com/aliyun/alibabacloud-python2-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-tingwu20230930-py2-2.0.8-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 2.6



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_tingwu20230930_py2
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python2-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: a4a5c529663bff7fe8d5e15338bf14612392f993aa45d78e0e5c1acf407b6978
name: python-alibabacloud-trafficfxopen20240815
arch: src
version: 1.2.1
epoch: 0
release: 1
summary: Alibaba Cloud TrafficFxOpen (20240815) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-trafficfxopen20240815-1.2.1-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.6



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_trafficfxopen20240815
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/trafficfxopen-20240815/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: e1617f4887852feab4ec3cf5d1de98ac86d0c9844c936b01a0751c7520755d92
name: python-alibabacloud-umeng-apm20220214
arch: src
version: 1.2.0
epoch: 0
release: 1
summary: Alibaba Cloud umeng-apm (20220214) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-umeng-apm20220214-1.2.0-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.6



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_umeng_apm20220214
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/umeng-apm-20220214/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 06c4cf8316b728993adbf4d3004b854c6009c56fe5da58b18b91041767169b36
name: python-alibabacloud-umeng-push20220225
arch: src
version: 1.0.11
epoch: 0
release: 1
summary: Alibaba Cloud umeng-push (20220225) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-umeng-push20220225-1.0.11-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.7



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_umeng_push20220225
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/umeng-push-20220225/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 2f30be743c459263a3159cc82ed1187f75acfa246dbc0dd92f7001840083f8ea
name: python-alibabacloud-url
arch: src
version: 0.0.1
epoch: 0
release: 1
summary: Alibaba Cloud Tea url Library for Python
url: https://github.com/aliyun/tea-url
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-url-0.0.1-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)




  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_url
  ```


  [Opening an Issue](https://github.com/aliyun/darabonba-url/issues/new), Issues not conforming to the guidelines may be closed immediately.


  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).


  * [Latest Release](https://github.com/aliyun/darabonba-url)


  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 9c45d63bca02c1e8cbc413794193f6f4290ffbbff467221176296916ff09769c
name: python-alibabacloud-ververica20220718
arch: src
version: 1.6.1
epoch: 0
release: 1
summary: Alibaba Cloud ververica (20220718) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-ververica20220718-1.6.1-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.6



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_ververica20220718
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/ververica-20220718/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: ab897b8138eb37f57495ab75ff7eb10388c4e3e41862eabbce1f612d5e34f0cd
name: python-alibabacloud-ververica20220718
arch: src
version: 1.6.2
epoch: 0
release: 1
summary: Alibaba Cloud ververica (20220718) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-ververica20220718-1.6.2-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.7



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_ververica20220718
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/ververica-20220718/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 84a06b341b75f2c59786b875deaac1c3144e53d7b652b93958a9befc5c4b6868
name: python-alibabacloud-videorecog20200320
arch: src
version: 3.0.7
epoch: 0
release: 1
summary: Alibaba Cloud videorecog (20200320) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-videorecog20200320-3.0.7-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.6



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_videorecog20200320
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 72c28e0145a3fee74e1c7fbd2b7015a1f5c0603258c66abe3f58414181bae607
name: python-alibabacloud-vod20170321
arch: src
version: 3.3.0
epoch: 0
release: 1
summary: Alibaba Cloud ApsaraVideo for VOD (20170321) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-vod20170321-3.3.0-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.7



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_vod20170321
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/vod-20170321/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 1a13eb9142f40426900d756fbf1ff401eacf30448acd03d62981b5112792e5a7
name: python-alibabacloud-vod20170321-py2
arch: src
version: 1.7.0
epoch: 0
release: 1
summary: Alibaba Cloud ApsaraVideo for VOD (20170321) SDK Library for Python2
url: https://github.com/aliyun/alibabacloud-python2-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-vod20170321-py2-1.7.0-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 2.6



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_vod20170321_py2
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python2-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: ba5b8e9b2ae3b0a36094a8873413ab97669640f0b6030812abbefbba6a0c7b36
name: python-alibabacloud-vpc20160428
arch: src
version: 6.9.3
epoch: 0
release: 1
summary: Alibaba Cloud Virtual Private Cloud (20160428) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-vpc20160428-6.9.3-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.6



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_vpc20160428
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/vpc-20160428/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 459f01c377c9093efcc29c7e626f6752a223c34ed5b0c1de4a070baa01ed63a5
name: python-alibabacloud-vpc20160428
arch: src
version: 6.9.4
epoch: 0
release: 1
summary: Alibaba Cloud Virtual Private Cloud (20160428) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-vpc20160428-6.9.4-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.7



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_vpc20160428
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/vpc-20160428/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 010600b994ca81d02715fbec3301fba8a0cb68e77888deab81870d376c905fb5
name: python-alibabacloud-vpc20160428-py2
arch: src
version: 5.7.3
epoch: 0
release: 1
summary: Alibaba Cloud Virtual Private Cloud (20160428) SDK Library for Python2
url: https://github.com/aliyun/alibabacloud-python2-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-vpc20160428-py2-5.7.3-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 2.6



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_vpc20160428_py2
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python2-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 33f58261d7392265ec7d5dea2fd324a36921a61efc4876321f340830d6ada801
name: python-alibabacloud-vpcpeer20220101
arch: src
version: 2.0.3
epoch: 0
release: 1
summary: Alibaba Cloud VpcPeer (20220101) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-vpcpeer20220101-2.0.3-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.7



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_vpcpeer20220101
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/vpcpeer-20220101/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: bdaf8eb7460dba88302f4ddc6b420bd0ea36f4fccd4b86d5e17843fc3fb58739
name: python-alibabacloud-waf-openapi20190910
arch: src
version: 1.2.1
epoch: 0
release: 1
summary: Alibaba Cloud waf-openapi (20190910) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-waf-openapi20190910-1.2.1-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.6



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_waf_openapi20190910
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/waf-openapi-20190910/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: e6717c5e726d0b89e72fc0c5eef8314109baceef7bb143e24f0ce5f7d8819324
name: python-alibabacloud-waf-openapi20211001
arch: src
version: 4.6.0
epoch: 0
release: 1
summary: Alibaba Cloud waf-openapi (20211001) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-waf-openapi20211001-4.6.0-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.6



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_waf_openapi20211001
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/waf-openapi-20211001/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 30389620b10b28d1038f1283ee0301796a4970679e3be3228316eb13506f5c54
name: python-alibabacloud-waf-openapi20211001
arch: src
version: 5.0.0
epoch: 0
release: 1
summary: Alibaba Cloud waf-openapi (20211001) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-waf-openapi20211001-5.0.0-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.7



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_waf_openapi20211001
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/waf-openapi-20211001/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 6a6d779d1f7a4234cb373f7de22a6863d5277fef31b0f840543ec16be6eb5c49
name: python-alibabacloud-waf-openapi20211001-py2
arch: src
version: 3.4.0
epoch: 0
release: 1
summary: Alibaba Cloud waf-openapi (20211001) SDK Library for Python2
url: https://github.com/aliyun/alibabacloud-python2-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-waf-openapi20211001-py2-3.4.0-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 2.6



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_waf_openapi20211001_py2
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python2-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 31f4eec694dd4430d3cf07278cc2aaeca300ed9e7707dd717569e96ce2d03b61
name: python-alibabacloud-xrengine20230313-py2
arch: src
version: 1.3.3
epoch: 0
release: 1
summary: Alibaba Cloud xrEngine (20230313) SDK Library for Python2
url: https://github.com/aliyun/alibabacloud-python2-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-xrengine20230313-py2-1.3.3-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 2.6



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_xrengine20230313_py2
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python2-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](./ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 78cd8efac7b5ad0d7522a22cad6d725b518e9a048f9f4bb66d49eb9295dbc9c0
name: python-alibabacloud-yuqing20220301
arch: src
version: 1.2.4
epoch: 0
release: 1
summary: Alibaba Cloud Yuqing (20220301) SDK Library for Python
url: https://github.com/aliyun/alibabacloud-python-sdk
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibabacloud-yuqing20220301-1.2.4-1.src.rpm
checksum_type: sha256
description:
  English | [简体中文](README-CN.md)
  ![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)





  - Python >= 3.7



  - **Install with pip**

  Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.

  ```bash

  pip install alibabacloud_yuqing20220301
  ```



  [Opening an Issue](https://github.com/aliyun/alibabacloud-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.



  [Quick Examples](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/docs/0-Usage-EN.md#quick-examples)



  Detailed changes for each release are documented in the [release notes](https://github.com/aliyun/alibabacloud-python-sdk/blob/master/yuqing-20220301/ChangeLog.md).



  - [Latest Release](https://github.com/aliyun/alibabacloud-sdk/tree/master/python)



  [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

  Copyright (c) 2009-present, Alibaba Cloud All rights reserved.


pkgId: 2151ff77beee71c2c4d5fa3f0acbafde22d9a86c1728964a6a49dc4d0c7bd397
name: python-alibi
arch: src
version: 0.9.6
epoch: 0
release: 1
summary: Algorithms for monitoring and explaining machine learning models
url: https://github.com/SeldonIO/alibi
rpm_license: Business Source License 1.1
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibi-0.9.6-1.src.rpm
checksum_type: sha256
description:
  [Alibi](https://docs.seldon.io/projects/alibi) is a Python library aimed at machine learning model inspection and interpretation.
  The focus of the library is to provide high-quality implementations of black-box, white-box, local and global
  explanation methods for classification and regression models.
  *  [Documentation](https://docs.seldon.io/projects/alibi/en/stable/)
  If you're interested in outlier detection, concept drift or adversarial instance detection, check out our sister project [alibi-detect](https://github.com/SeldonIO/alibi-detect).
  <table>
    <tr valign="top">
      <td width="50%" >
          <a href="https://docs.seldon.io/projects/alibi/en/stable/examples/anchor_image_imagenet.html">
              <br>
              <b>Anchor explanations for images</b>
              <br>
              <br>
              <img src="https://github.com/SeldonIO/alibi/raw/master/doc/source/_static/anchor_image.png">
          </a>
      </td>
      <td width="50%">
          <a href="https://docs.seldon.io/projects/alibi/en/stable/examples/integrated_gradients_imdb.html">
              <br>
              <b>Integrated Gradients for text</b>
              <br>
              <br>
              <img src="https://github.com/SeldonIO/alibi/raw/master/doc/source/_static/ig_text.png">
          </a>
      </td>
    </tr>
    <tr valign="top">
      <td width="50%">
          <a href="https://docs.seldon.io/projects/alibi/en/stable/methods/CFProto.html">
              <br>
              <b>Counterfactual examples</b>
              <br>
              <br>
              <img src="https://github.com/SeldonIO/alibi/raw/master/doc/source/_static/cf.png">
          </a>
      </td>
      <td width="50%">
          <a href="https://docs.seldon.io/projects/alibi/en/stable/methods/ALE.html">
              <br>
              <b>Accumulated Local Effects</b>
              <br>
              <br>
              <img src="https://github.com/SeldonIO/alibi/raw/master/doc/source/_static/ale.png">
          </a>
      </td>
    </tr>
  </table>

  * [Installation and Usage](#installation-and-usage)
  * [Supported Methods](#supported-methods)
    * [Model Explanations](#model-explanations)
    * [Model Confidence](#model-confidence)
    * [Prototypes](#prototypes)
    * [References and Examples](#references-and-examples)
  * [Citations](#citations)

  Alibi can be installed from:
  - PyPI or GitHub source (with `pip`)
  - Anaconda (with `conda`/`mamba`)

  - Alibi can be installed from [PyPI](https://pypi.org/project/alibi):
    ```bash
    pip install alibi
    ```
  - Alternatively, the development version can be installed:
    ```bash
    pip install git+https://github.com/SeldonIO/alibi.git
    ```
  - To take advantage of distributed computation of explanations, install `alibi` with `ray`:
    ```bash
    pip install alibi[ray]
    ```
  - For SHAP support, install `alibi` as follows:
    ```bash
    pip install alibi[shap]
    ```

  To install from [conda-forge](https://conda-forge.org/) it is recommended to use [mamba](https://mamba.readthedocs.io/en/stable/),
  which can be installed to the *base* conda enviroment with:
  ```bash
  conda install mamba -n base -c conda-forge
  ```
  - For the standard Alibi install:
    ```bash
    mamba install -c conda-forge alibi
    ```
  - For distributed computing support:
    ```bash
    mamba install -c conda-forge alibi ray
    ```
  - For SHAP support:
    ```bash
    mamba install -c conda-forge alibi shap
    ```

  The alibi explanation API takes inspiration from `scikit-learn`, consisting of distinct initialize,
  fit and explain steps. We will use the [AnchorTabular](https://docs.seldon.io/projects/alibi/en/stable/methods/Anchors.html)
  explainer to illustrate the API:
  ```python
  from alibi.explainers import AnchorTabular

  explainer = AnchorTabular(predict_fn, feature_names=feature_names, category_map=category_map)
  explainer.fit(X_train)

  explanation = explainer.explain(x)
  ```
  The explanation returned is an `Explanation` object with attributes `meta` and `data`. `meta` is a dictionary
  containing the explainer metadata and any hyperparameters and `data` is a dictionary containing everything
  related to the computed explanation. For example, for the Anchor algorithm the explanation can be accessed
  via `explanation.data['anchor']` (or `explanation.anchor`). The exact details of available fields varies
  from method to method so we encourage the reader to become familiar with the
  [types of methods supported](https://docs.seldon.io/projects/alibi/en/stable/overview/algorithms.html).

  The following tables summarize the possible use cases for each method.

  | Method                                                                                                       |    Models    |     Explanations      | Classification | Regression | Tabular | Text | Images | Categorical features | Train set required | Distributed |
  |:-------------------------------------------------------------------------------------------------------------|:------------:|:---------------------:|:--------------:|:----------:|:-------:|:----:|:------:|:--------------------:|:------------------:|:-----------:|
  | [ALE](https://docs.seldon.io/projects/alibi/en/stable/methods/ALE.html)                                      |      BB      |        global         |       ✔        |     ✔      |    ✔    |      |        |                      |                    |             |
  | [Partial Dependence](https://docs.seldon.io/projects/alibi/en/stable/methods/PartialDependence.html)         |    BB WB     |        global         |       ✔        |     ✔      |    ✔    |      |        |          ✔           |                    |             |
  | [PD Variance](https://docs.seldon.io/projects/alibi/en/stable/methods/PartialDependenceVariance.html)        |    BB WB     |        global         |       ✔        |     ✔      |    ✔    |      |        |          ✔           |                    |             |
  | [Permutation Importance](https://docs.seldon.io/projects/alibi/en/stable/methods/PermutationImportance.html) |      BB      |        global         |       ✔        |     ✔      |    ✔    |      |        |          ✔           |                    |             |
  | [Anchors](https://docs.seldon.io/projects/alibi/en/stable/methods/Anchors.html)                              |      BB      |         local         |       ✔        |            |    ✔    |  ✔   |   ✔    |          ✔           |    For Tabular     |             |
  | [CEM](https://docs.seldon.io/projects/alibi/en/stable/methods/CEM.html)                                      | BB* TF/Keras |         local         |       ✔        |            |    ✔    |      |   ✔    |                      |      Optional      |             |
  | [Counterfactuals](https://docs.seldon.io/projects/alibi/en/stable/methods/CF.html)                           | BB* TF/Keras |         local         |       ✔        |            |    ✔    |      |   ✔    |                      |         No         |             |
  | [Prototype Counterfactuals](https://docs.seldon.io/projects/alibi/en/stable/methods/CFProto.html)            | BB* TF/Keras |         local         |       ✔        |            |    ✔    |      |   ✔    |          ✔           |      Optional      |             |
  | [Counterfactuals with RL](https://docs.seldon.io/projects/alibi/en/stable/methods/CFRL.html)                 |      BB      |         local         |       ✔        |            |    ✔    |      |   ✔    |          ✔           |         ✔          |             |
  | [Integrated Gradients](https://docs.seldon.io/projects/alibi/en/stable/methods/IntegratedGradients.html)     |   TF/Keras   |         local         |       ✔        |     ✔      |    ✔    |  ✔   |   ✔    |          ✔           |      Optional      |             |
  | [Kernel SHAP](https://docs.seldon.io/projects/alibi/en/stable/methods/KernelSHAP.html)                       |      BB      | local <br></br>global |       ✔        |     ✔      |    ✔    |      |        |          ✔           |         ✔          |      ✔      |
  | [Tree SHAP](https://docs.seldon.io/projects/alibi/en/stable/methods/TreeSHAP.html)                           |      WB      | local <br></br>global |       ✔        |     ✔      |    ✔    |      |        |          ✔           |      Optional      |             |
  | [Similarity explanations](https://docs.seldon.io/projects/alibi/en/stable/methods/Similarity.html)           |      WB      |         local         |       ✔        |     ✔      |    ✔    |  ✔   |   ✔    |          ✔           |         ✔          |             |

  These algorithms provide **instance-specific** scores measuring the model confidence for making a
  particular prediction.
  |Method|Models|Classification|Regression|Tabular|Text|Images|Categorical Features|Train set required|
  |:---|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---|
  |[Trust Scores](https://docs.seldon.io/projects/alibi/en/stable/methods/TrustScores.html)|BB|✔| |✔|✔(1)|✔(2)| |Yes|
  |[Linearity Measure](https://docs.seldon.io/projects/alibi/en/stable/methods/LinearityMeasure.html)|BB|✔|✔|✔| |✔| |Optional|
  Key:
   - **BB** - black-box (only require a prediction function)
   - **BB\*** - black-box but assume model is differentiable
   - **WB** - requires white-box model access. There may be limitations on models supported
   - **TF/Keras** - TensorFlow models via the Keras API
   - **Local** - instance specific explanation, why was this prediction made?
   - **Global** - explains the model with respect to a set of instances
   - **(1)** -  depending on model
   - **(2)** -  may require dimensionality reduction

  These algorithms provide a **distilled** view of the dataset and help construct a 1-KNN **interpretable** classifier.
  |Method|Classification|Regression|Tabular|Text|Images|Categorical Features|Train set labels|
  |:-----|:-------------|:---------|:------|:---|:-----|:-------------------|:---------------|
  |[ProtoSelect](https://docs.seldon.io/projects/alibi/en/latest/methods/ProtoSelect.html)|✔| |✔|✔|✔|✔| Optional       |

  - Accumulated Local Effects (ALE, [Apley and Zhu, 2016](https://arxiv.org/abs/1612.08468))
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/ALE.html)
    - Examples:
      [California housing dataset](https://docs.seldon.io/projects/alibi/en/stable/examples/ale_regression_california.html),
      [Iris dataset](https://docs.seldon.io/projects/alibi/en/stable/examples/ale_classification.html)
  - Partial Dependence ([J.H. Friedman, 2001](https://projecteuclid.org/journals/annals-of-statistics/volume-29/issue-5/Greedy-function-approximation-A-gradient-boostingmachine/10.1214/aos/1013203451.full))
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/PartialDependence.html)
    - Examples:
      [Bike rental](https://docs.seldon.io/projects/alibi/en/stable/examples/pdp_regression_bike.html)
  - Partial Dependence Variance([Greenwell et al., 2018](https://arxiv.org/abs/1805.04755))
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/PartialDependenceVariance.html)
    - Examples:
      [Friedman’s regression problem](https://docs.seldon.io/projects/alibi/en/stable/examples/pd_variance_regression_friedman.html)
  - Permutation Importance([Breiman, 2001](https://link.springer.com/article/10.1023/A:1010933404324); [Fisher et al., 2018](https://arxiv.org/abs/1801.01489))
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/PermutationImportance.html)
    - Examples:
      [Who's Going to Leave Next?](https://docs.seldon.io/projects/alibi/en/stable/examples/permutation_importance_classification_leave.html)
  - Anchor explanations ([Ribeiro et al., 2018](https://homes.cs.washington.edu/~marcotcr/aaai18.pdf))
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/Anchors.html)
    - Examples:
      [income prediction](https://docs.seldon.io/projects/alibi/en/stable/examples/anchor_tabular_adult.html),
      [Iris dataset](https://docs.seldon.io/projects/alibi/en/stable/examples/anchor_tabular_iris.html),
      [movie sentiment classification](https://docs.seldon.io/projects/alibi/en/stable/examples/anchor_text_movie.html),
      [ImageNet](https://docs.seldon.io/projects/alibi/en/stable/examples/anchor_image_imagenet.html),
      [fashion MNIST](https://docs.seldon.io/projects/alibi/en/stable/examples/anchor_image_fashion_mnist.html)
  - Contrastive Explanation Method (CEM, [Dhurandhar et al., 2018](https://papers.nips.cc/paper/7340-explanations-based-on-the-missing-towards-contrastive-explanations-with-pertinent-negatives))
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/CEM.html)
    - Examples: [MNIST](https://docs.seldon.io/projects/alibi/en/stable/examples/cem_mnist.html),
      [Iris dataset](https://docs.seldon.io/projects/alibi/en/stable/examples/cem_iris.html)
  - Counterfactual Explanations (extension of
    [Wachter et al., 2017](https://arxiv.org/abs/1711.00399))
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/CF.html)
    - Examples:
      [MNIST](https://docs.seldon.io/projects/alibi/en/stable/examples/cf_mnist.html)
  - Counterfactual Explanations Guided by Prototypes ([Van Looveren and Klaise, 2019](https://arxiv.org/abs/1907.02584))
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/CFProto.html)
    - Examples:
      [MNIST](https://docs.seldon.io/projects/alibi/en/stable/examples/cfproto_mnist.html),
      [California housing dataset](https://docs.seldon.io/projects/alibi/en/stable/examples/cfproto_housing.html),
      [Adult income (one-hot)](https://docs.seldon.io/projects/alibi/en/stable/examples/cfproto_cat_adult_ohe.html),
      [Adult income (ordinal)](https://docs.seldon.io/projects/alibi/en/stable/examples/cfproto_cat_adult_ord.html)
  - Model-agnostic Counterfactual Explanations via RL([Samoilescu et al., 2021](https://arxiv.org/abs/2106.02597))
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/CFRL.html)
    - Examples:
      [MNIST](https://docs.seldon.io/projects/alibi/en/stable/examples/cfrl_mnist.html),
      [Adult income](https://docs.seldon.io/projects/alibi/en/stable/examples/cfrl_adult.html)
  - Integrated Gradients ([Sundararajan et al., 2017](https://arxiv.org/abs/1703.01365))
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/IntegratedGradients.html),
    - Examples:
      [MNIST example](https://docs.seldon.io/projects/alibi/en/stable/examples/integrated_gradients_mnist.html),
      [Imagenet example](https://docs.seldon.io/projects/alibi/en/stable/examples/integrated_gradients_imagenet.html),
      [IMDB example](https://docs.seldon.io/projects/alibi/en/stable/examples/integrated_gradients_imdb.html).
  - Kernel Shapley Additive Explanations ([Lundberg et al., 2017](https://papers.nips.cc/paper/7062-a-unified-approach-to-interpreting-model-predictions))
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/KernelSHAP.html)
    - Examples:
      [SVM with continuous data](https://docs.seldon.io/projects/alibi/en/stable/examples/kernel_shap_wine_intro.html),
      [multinomial logistic regression with continous data](https://docs.seldon.io/projects/alibi/en/stable/examples/kernel_shap_wine_lr.html),
      [handling categorical variables](https://docs.seldon.io/projects/alibi/en/stable/examples/kernel_shap_adult_lr.html)
  - Tree Shapley Additive Explanations ([Lundberg et al., 2020](https://www.nature.com/articles/s42256-019-0138-9))
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/TreeSHAP.html)
    - Examples:
      [Interventional (adult income, xgboost)](https://docs.seldon.io/projects/alibi/en/stable/examples/interventional_tree_shap_adult_xgb.html),
      [Path-dependent (adult income, xgboost)](https://docs.seldon.io/projects/alibi/en/stable/examples/path_dependent_tree_shap_adult_xgb.html)
  - Trust Scores ([Jiang et al., 2018](https://arxiv.org/abs/1805.11783))
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/TrustScores.html)
    - Examples:
      [MNIST](https://docs.seldon.io/projects/alibi/en/stable/examples/trustscore_mnist.html),
      [Iris dataset](https://docs.seldon.io/projects/alibi/en/stable/examples/trustscore_mnist.html)
  - Linearity Measure
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/LinearityMeasure.html)
    - Examples:
      [Iris dataset](https://docs.seldon.io/projects/alibi/en/stable/examples/linearity_measure_iris.html),
      [fashion MNIST](https://docs.seldon.io/projects/alibi/en/stable/examples/linearity_measure_fashion_mnist.html)
  - ProtoSelect
    - [Documentation](https://docs.seldon.io/projects/alibi/en/latest/methods/ProtoSelect.html)
    - Examples:
      [Adult Census & CIFAR10](https://docs.seldon.io/projects/alibi/en/latest/examples/protoselect_adult_cifar10.html)
  - Similarity explanations
    - [Documentation](https://docs.seldon.io/projects/alibi/en/stable/methods/Similarity.html)
    - Examples:
      [20 news groups dataset](https://docs.seldon.io/projects/alibi/en/stable/examples/similarity_explanations_20ng.html),
      [ImageNet dataset](https://docs.seldon.io/projects/alibi/en/stable/examples/similarity_explanations_imagenet.html),
      [MNIST dataset](https://docs.seldon.io/projects/alibi/en/stable/examples/similarity_explanations_mnist.html)

  If you use alibi in your research, please consider citing it.
  BibTeX entry:
  ```
  @article{JMLR:v22:21-0017,
    author  = {Janis Klaise and Arnaud Van Looveren and Giovanni Vacanti and Alexandru Coca},
    title   = {Alibi Explain: Algorithms for Explaining Machine Learning Models},
    journal = {Journal of Machine Learning Research},
    year    = {2021},
    volume  = {22},
    number  = {181},
    pages   = {1-7},
    url     = {http://jmlr.org/papers/v22/21-0017.html}
  }
  ```


pkgId: 7749f9b8bd3f4082449909530c39df4f1daf7dcfa63bb05cb2d4d8a646a68e26
name: python-alibi-detect
arch: src
version: 0.12.0
epoch: 0
release: 1
summary: Algorithms for outlier detection, concept drift and metrics.
url: https://github.com/SeldonIO/alibi-detect
rpm_license: Business Source License 1.1
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibi-detect-0.12.0-1.src.rpm
checksum_type: sha256
description:
  [Alibi Detect](https://github.com/SeldonIO/alibi-detect) is a Python library focused on **outlier**, **adversarial** and **drift** detection. The package aims to cover both online and offline detectors for tabular data, text, images and time series. Both **TensorFlow** and **PyTorch** backends are supported for drift detection.
  *  [Documentation](https://docs.seldon.io/projects/alibi-detect/en/stable/)
  For more background on the importance of monitoring outliers and distributions in a production setting, check out [this talk](https://slideslive.com/38931758/monitoring-and-explainability-of-models-in-production?ref=speaker-37384-latest) from the *Challenges in Deploying and Monitoring Machine Learning Systems* ICML 2020 workshop, based on the paper [Monitoring and explainability of models in production](https://arxiv.org/abs/2007.06299) and referencing Alibi Detect.
  For a thorough introduction to drift detection, check out [Protecting Your Machine Learning Against Drift: An Introduction](https://youtu.be/tL5sEaQha5o). The talk covers what drift is and why it pays to detect it, the different types of drift, how it can be detected in a principled manner and also describes the anatomy of a drift detector.

  - [Installation and Usage](#installation-and-usage)
    - [With pip](#with-pip)
    - [With conda](#with-conda)
    - [Usage](#usage)
  - [Supported Algorithms](#supported-algorithms)
    - [Outlier Detection](#outlier-detection)
    - [Adversarial Detection](#adversarial-detection)
    - [Drift Detection](#drift-detection)
      - [TensorFlow and PyTorch support](#tensorflow-and-pytorch-support)
      - [Built-in preprocessing steps](#built-in-preprocessing-steps)
    - [Reference List](#reference-list)
      - [Outlier Detection](#outlier-detection-1)
      - [Adversarial Detection](#adversarial-detection-1)
      - [Drift Detection](#drift-detection-1)
  - [Datasets](#datasets)
    - [Sequential Data and Time Series](#sequential-data-and-time-series)
    - [Images](#images)
    - [Tabular](#tabular)
  - [Models](#models)
  - [Integrations](#integrations)
  - [Citations](#citations)

  The package, `alibi-detect` can be installed from:
  - PyPI or GitHub source (with `pip`)
  - Anaconda (with `conda`/`mamba`)

  - alibi-detect can be installed from [PyPI](https://pypi.org/project/alibi-detect):
     ```bash
     pip install alibi-detect
     ```
  - Alternatively, the development version can be installed:
     ```bash
     pip install git+https://github.com/SeldonIO/alibi-detect.git
     ```
  - To install with the TensorFlow backend:
    ```bash
    pip install alibi-detect[tensorflow]
    ```
  - To install with the PyTorch backend:
    ```bash
    pip install alibi-detect[torch]
    ```
  - To install with the KeOps backend:
    ```bash
    pip install alibi-detect[keops]
    ```
  - To use the `Prophet` time series outlier detector:
     ```bash
     pip install alibi-detect[prophet]
     ```

  To install from [conda-forge](https://conda-forge.org/) it is recommended to use [mamba](https://mamba.readthedocs.io/en/stable/),
  which can be installed to the *base* conda enviroment with:
  ```bash
  conda install mamba -n base -c conda-forge
  ```
  To install alibi-detect:
  ```bash
  mamba install -c conda-forge alibi-detect
  ```

  We will use the [VAE outlier detector](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/vae.html) to illustrate the API.
  ```python
  from alibi_detect.od import OutlierVAE
  from alibi_detect.saving import save_detector, load_detector

  od = OutlierVAE(threshold=0.1, encoder_net=encoder_net, decoder_net=decoder_net, latent_dim=1024)
  od.fit(x_train)

  preds = od.predict(x_test)

  filepath = './my_detector/'
  save_detector(od, filepath)
  od = load_detector(filepath)
  ```
  The predictions are returned in a dictionary with as keys `meta` and `data`. `meta` contains the detector's metadata while `data` is in itself a dictionary with the actual predictions. It contains the outlier, adversarial or drift scores and thresholds as well as the predictions whether instances are e.g. outliers or not. The exact details can vary slightly from method to method, so we encourage the reader to become familiar with the [types of algorithms supported](https://docs.seldon.io/projects/alibi-detect/en/stable/overview/algorithms.html).

  The following tables show the advised use cases for each algorithm. The column *Feature Level* indicates whether the detection can be done at the feature level, e.g. per pixel for an image. Check the [algorithm reference list](#reference-list) for more information with links to the documentation and original papers as well as examples for each of the detectors.

  | Detector             | Tabular | Image | Time Series | Text | Categorical Features | Online | Feature Level |
  |:---------------------|:-------:|:-----:|:-----------:|:----:|:--------------------:|:------:|:-------------:|
  | Isolation Forest     |    ✔    |       |             |      |          ✔           |        |               |
  | Mahalanobis Distance |    ✔    |       |             |      |          ✔           |   ✔    |               |
  | AE                   |    ✔    |   ✔   |             |      |                      |        |       ✔       |
  | VAE                  |    ✔    |   ✔   |             |      |                      |        |       ✔       |
  | AEGMM                |    ✔    |   ✔   |             |      |                      |        |               |
  | VAEGMM               |    ✔    |   ✔   |             |      |                      |        |               |
  | Likelihood Ratios    |    ✔    |   ✔   |      ✔      |      |          ✔           |        |       ✔       |
  | Prophet              |         |       |      ✔      |      |                      |        |               |
  | Spectral Residual    |         |       |      ✔      |      |                      |   ✔    |       ✔       |
  | Seq2Seq              |         |       |      ✔      |      |                      |        |       ✔       |

  | Detector           | Tabular | Image | Time Series | Text | Categorical Features | Online | Feature Level |
  | :---               |  :---:  | :---: |:-----------:|:----:|:--------------------:|:------:|:-------------:|
  | Adversarial AE     | ✔       | ✔     |             |      |                      |        |               |
  | Model distillation | ✔       | ✔     |      ✔      |  ✔   |          ✔           |        |               |

  | Detector                         | Tabular | Image | Time Series | Text  | Categorical Features | Online | Feature Level |
  |:---------------------------------|  :---:  | :---: |   :---:     | :---: |   :---:              | :---:  | :---:         |
  | Kolmogorov-Smirnov               | ✔       | ✔     |             | ✔     | ✔                    |        | ✔             |
  | Cramér-von Mises                 | ✔       | ✔     |             |       |                      | ✔      | ✔             |
  | Fisher's Exact Test              | ✔       |       |             |       | ✔                    | ✔      | ✔             |
  | Maximum Mean Discrepancy (MMD)   | ✔       | ✔     |             | ✔     | ✔                    | ✔      |               |
  | Learned Kernel MMD               | ✔       | ✔     |             | ✔     | ✔                    |        |               |
  | Context-aware MMD                | ✔       | ✔     |  ✔          | ✔     | ✔                    |        |               |
  | Least-Squares Density Difference | ✔       | ✔     |             | ✔     | ✔                    | ✔      |               |
  | Chi-Squared                      | ✔       |       |             |       | ✔                    |        | ✔             |
  | Mixed-type tabular data          | ✔       |       |             |       | ✔                    |        | ✔             |
  | Classifier                       | ✔       | ✔     |  ✔          | ✔     | ✔                    |        |               |
  | Spot-the-diff                    | ✔       | ✔     |  ✔          | ✔     | ✔                    |        | ✔             |
  | Classifier Uncertainty           | ✔       | ✔     |  ✔          | ✔     | ✔                    |        |               |
  | Regressor Uncertainty            | ✔       | ✔     |  ✔          | ✔     | ✔                    |        |               |

  The drift detectors support TensorFlow, PyTorch and (where applicable) [KeOps](https://www.kernel-operations.io/keops/index.html) backends.
  However, Alibi Detect does not install these by default. See the [installation options](#installation-and-usage) for more details.
  ```python
  from alibi_detect.cd import MMDDrift
  cd = MMDDrift(x_ref, backend='tensorflow', p_val=.05)
  preds = cd.predict(x)
  ```
  The same detector in PyTorch:
  ```python
  cd = MMDDrift(x_ref, backend='pytorch', p_val=.05)
  preds = cd.predict(x)
  ```
  Or in KeOps:
  ```python
  cd = MMDDrift(x_ref, backend='keops', p_val=.05)
  preds = cd.predict(x)
  ```

  Alibi Detect also comes with various preprocessing steps such as randomly initialized encoders, pretrained text
  embeddings to detect drift on using the [transformers](https://github.com/huggingface/transformers) library and
  extraction of hidden layers from machine learning models. This allows to detect different types of drift such as
  **covariate and predicted distribution shift**. The preprocessing steps are again supported in TensorFlow and PyTorch.
  ```python
  from alibi_detect.cd.tensorflow import HiddenOutput, preprocess_drift
  model = # TensorFlow model; tf.keras.Model or tf.keras.Sequential
  preprocess_fn = partial(preprocess_drift, model=HiddenOutput(model, layer=-1), batch_size=128)
  cd = MMDDrift(x_ref, backend='tensorflow', p_val=.05, preprocess_fn=preprocess_fn)
  preds = cd.predict(x)
  ```
  Check the example notebooks (e.g. [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mmd_cifar10.html), [movie reviews](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_imdb.html)) for more details.


  - [Isolation Forest](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/iforest.html) ([FT Liu et al., 2008](https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/icdm08b.pdf))
     - Example: [Network Intrusion](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_if_kddcup.html)
  - [Mahalanobis Distance](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/mahalanobis.html) ([Mahalanobis, 1936](https://insa.nic.in/writereaddata/UpLoadedFiles/PINSA/Vol02_1936_1_Art05.pdf))
     - Example: [Network Intrusion](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_mahalanobis_kddcup.html)
  - [Auto-Encoder (AE)](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/ae.html)
     - Example: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_ae_cifar10.html)
  - [Variational Auto-Encoder (VAE)](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/vae.html) ([Kingma et al., 2013](https://arxiv.org/abs/1312.6114))
     - Examples: [Network Intrusion](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_vae_kddcup.html), [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_vae_cifar10.html)
  - [Auto-Encoding Gaussian Mixture Model (AEGMM)](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/aegmm.html) ([Zong et al., 2018](https://openreview.net/forum?id=BJJLHbb0-))
     - Example: [Network Intrusion](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_aegmm_kddcup.html)
  - [Variational Auto-Encoding Gaussian Mixture Model (VAEGMM)](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/vaegmm.html)
     - Example: [Network Intrusion](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_aegmm_kddcup.html)
  - [Likelihood Ratios](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/llr.html) ([Ren et al., 2019](https://arxiv.org/abs/1906.02845))
     - Examples: [Genome](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_llr_genome.html), [Fashion-MNIST vs. MNIST](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_llr_mnist.html)
  - [Prophet Time Series Outlier Detector](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/prophet.html) ([Taylor et al., 2018](https://peerj.com/preprints/3190/))
     - Example: [Weather Forecast](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_prophet_weather.html)
  - [Spectral Residual Time Series Outlier Detector](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/sr.html) ([Ren et al., 2019](https://arxiv.org/abs/1906.03821))
     - Example: [Synthetic Dataset](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_sr_synth.html)
  - [Sequence-to-Sequence (Seq2Seq) Outlier Detector](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/seq2seq.html) ([Sutskever et al., 2014](https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf); [Park et al., 2017](https://arxiv.org/pdf/1711.00614.pdf))
     - Examples: [ECG](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_seq2seq_ecg.html), [Synthetic Dataset](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_seq2seq_synth.html)

  - [Adversarial Auto-Encoder](https://docs.seldon.io/projects/alibi-detect/en/stable/ad/methods/adversarialae.html) ([Vacanti and Van Looveren, 2020](https://arxiv.org/abs/2002.09364))
     - Example: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/ad_ae_cifar10.html)
  - [Model distillation](https://docs.seldon.io/projects/alibi-detect/en/stable/ad/methods/modeldistillation.html)
     - Example: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_distillation_cifar10.html)

  - [Kolmogorov-Smirnov](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/ksdrift.html)
     - Example: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_ks_cifar10.html), [molecular graphs](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mol.html), [movie reviews](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_imdb.html)
  - [Cramér-von Mises](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/cvmdrift.html)
    - Example: [Penguins](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_supervised_penguins.html)
  - [Fisher's Exact Test](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/fetdrift.html)
    - Example: [Penguins](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_supervised_penguins.html)
  - [Least-Squares Density Difference](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/lsdddrift.html) ([Bu et al, 2016](https://alippi.faculty.polimi.it/articoli/A%20Pdf%20free%20Change%20Detection%20Test%20Based%20on%20Density%20Difference%20Estimation.pdf))
  - [Maximum Mean Discrepancy](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/mmddrift.html) ([Gretton et al, 2012](http://jmlr.csail.mit.edu/papers/v13/gretton12a.html))
     - Example: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mmd_cifar10.html), [molecular graphs](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mol.html), [movie reviews](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_imdb.html), [Amazon reviews](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_amazon.html)
  - [Learned Kernel MMD](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/learnedkerneldrift.html) ([Liu et al, 2020](https://arxiv.org/abs/2002.09116))
    - Example: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_clf_cifar10.html)
  - [Context-aware MMD](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/contextmmddrift.html) ([Cobb and Van Looveren, 2022](https://arxiv.org/abs/2203.08644))
    - Example: [ECG](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_context_ecg.html), [news topics](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_context_20newsgroup.html)
  - [Chi-Squared](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/chisquaredrift.html)
     - Example: [Income Prediction](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_chi2ks_adult.html)
  - [Mixed-type tabular data](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/tabulardrift.html)
     - Example: [Income Prediction](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_chi2ks_adult.html)
  - [Classifier](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/classifierdrift.html) ([Lopez-Paz and Oquab, 2017](https://openreview.net/forum?id=SJkXfE5xx))
     - Example: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_clf_cifar10.html), [Amazon reviews](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_amazon.html)
  - [Spot-the-diff](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/spotthediffdrift.html) (adaptation of [Jitkrittum et al, 2016](https://arxiv.org/abs/1605.06796))
    - Example [MNIST and Wine quality](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/spot_the_diff_mnist_win.html)
  - [Classifier and Regressor Uncertainty](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/modeluncdrift.html)
     - Example: [CIFAR10 and Wine](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_model_unc_cifar10_wine.html), [molecular graphs](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mol.html)
  - [Online Maximum Mean Discrepancy](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/onlinemmddrift.html)
    - Example: [Wine Quality](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_online_wine.html), [Camelyon medical imaging](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_online_camelyon.html)
  - [Online Least-Squares Density Difference](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/onlinemmddrift.html) ([Bu et al, 2017](https://ieeexplore.ieee.org/abstract/document/7890493))
    - Example: [Wine Quality](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_online_wine.html)

  The package also contains functionality in `alibi_detect.datasets` to easily fetch a number of datasets for different modalities. For each dataset either the data and labels or a *Bunch* object with the data, labels and optional metadata are returned. Example:
  ```python
  from alibi_detect.datasets import fetch_ecg
  (X_train, y_train), (X_test, y_test) = fetch_ecg(return_X_y=True)
  ```

  - **Genome Dataset**: `fetch_genome`
    - Bacteria genomics dataset for out-of-distribution detection, released as part of [Likelihood Ratios for Out-of-Distribution Detection](https://arxiv.org/abs/1906.02845). From the original *TL;DR*: *The dataset contains genomic sequences of 250 base pairs from 10 in-distribution bacteria classes for training, 60 OOD bacteria classes for validation, and another 60 different OOD bacteria classes for test*. There are respectively 1, 7 and again 7 million sequences in the training, validation and test sets. For detailed info on the dataset check the [README](https://storage.cloud.google.com/seldon-datasets/genome/readme.docx?organizationId=156002945562).
    ```python
    from alibi_detect.datasets import fetch_genome
    (X_train, y_train), (X_val, y_val), (X_test, y_test) = fetch_genome(return_X_y=True)
    ```
  - **ECG 5000**: `fetch_ecg`
    - 5000 ECG's, originally obtained from [Physionet](https://archive.physionet.org/cgi-bin/atm/ATM).
  - **NAB**: `fetch_nab`
    - Any univariate time series in a DataFrame from the [Numenta Anomaly Benchmark](https://github.com/numenta/NAB). A list with the available time series can be retrieved using `alibi_detect.datasets.get_list_nab()`.

  - **CIFAR-10-C**: `fetch_cifar10c`
    - CIFAR-10-C ([Hendrycks & Dietterich, 2019](https://arxiv.org/abs/1903.12261)) contains the test set of CIFAR-10, but corrupted and perturbed by various types of noise, blur, brightness etc. at different levels of severity, leading to a gradual decline in a classification model's performance trained on CIFAR-10. `fetch_cifar10c` allows you to pick any severity level or corruption type. The list with available corruption types can be retrieved with `alibi_detect.datasets.corruption_types_cifar10c()`. The dataset can be used in research on robustness and drift. The original data can be found [here](https://zenodo.org/record/2535967#.XnAM2nX7RNw). Example:
    ```python
    from alibi_detect.datasets import fetch_cifar10c
    corruption = ['gaussian_noise', 'motion_blur', 'brightness', 'pixelate']
    X, y = fetch_cifar10c(corruption=corruption, severity=5, return_X_y=True)
    ```
  - **Adversarial CIFAR-10**: `fetch_attack`
    - Load adversarial instances on a ResNet-56 classifier trained on CIFAR-10. Available attacks: [Carlini-Wagner](https://arxiv.org/abs/1608.04644) ('cw') and [SLIDE](https://arxiv.org/abs/1904.13000) ('slide'). Example:
    ```python
    from alibi_detect.datasets import fetch_attack
    (X_train, y_train), (X_test, y_test) = fetch_attack('cifar10', 'resnet56', 'cw', return_X_y=True)
    ```

  - **KDD Cup '99**: `fetch_kdd`
    - Dataset with different types of computer network intrusions. `fetch_kdd` allows you to select a subset of network intrusions as targets or pick only specified features. The original data can be found [here](http://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html).

  Models and/or building blocks that can be useful outside of outlier, adversarial or drift detection can be found under `alibi_detect.models`. Main implementations:
  - [PixelCNN++](https://arxiv.org/abs/1701.05517): `alibi_detect.models.pixelcnn.PixelCNN`
  - Variational Autoencoder: `alibi_detect.models.autoencoder.VAE`
  - Sequence-to-sequence model: `alibi_detect.models.autoencoder.Seq2Seq`
  - ResNet: `alibi_detect.models.resnet`
    - Pre-trained ResNet-20/32/44 models on CIFAR-10 can be found on our [Google Cloud Bucket](https://console.cloud.google.com/storage/browser/seldon-models/alibi-detect/classifier/cifar10/?organizationId=156002945562&project=seldon-pub) and can be fetched as follows:
    ```python
    from alibi_detect.utils.fetching import fetch_tf_model
    model = fetch_tf_model('cifar10', 'resnet32')
    ```

  Alibi-detect is integrated in the machine learning model deployment platform [Seldon Core](https://docs.seldon.io/projects/seldon-core/en/stable/index.html) and model serving framework [KFServing](https://github.com/kubeflow/kfserving).
  - **Seldon Core**: [outlier](https://docs.seldon.io/projects/seldon-core/en/stable/analytics/outlier_detection.html) and [drift](https://docs.seldon.io/projects/seldon-core/en/stable/analytics/drift_detection.html) detection worked examples.
  - **KFServing**: [outlier](https://github.com/kubeflow/kfserving/tree/master/docs/samples/outlier-detection/alibi-detect/cifar10) and [drift](https://github.com/kubeflow/kfserving/tree/master/docs/samples/drift-detection/alibi-detect/cifar10) detection examples.

  If you use alibi-detect in your research, please consider citing it.
  BibTeX entry:
  ```
  @software{alibi-detect,
    title = {Alibi Detect: Algorithms for outlier, adversarial and drift detection},
    author = {Van Looveren, Arnaud and Klaise, Janis and Vacanti, Giovanni and Cobb, Oliver and Scillitoe, Ashley and Samoilescu, Robert and Athorne, Alex},
    url = {https://github.com/SeldonIO/alibi-detect},
    version = {0.12.0},
    date = {2024-04-17},
    year = {2019}
  }
  ```


pkgId: 8df6b95e07bef21af77e0b1f45aa5974d82d6d1401d589397c9b58086e514574
name: python-alibuild
arch: src
version: 1.17.11
epoch: 0
release: 1
summary: ALICE Build Tool
url: https://alisw.github.io/alibuild
rpm_license: GPL
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alibuild-1.17.11-1.src.rpm
checksum_type: sha256
description:
  A simple build tool for ALICE experiment software and its externals. Recipes
  for the externals and ALICE software are stored in
  `alidist <https://github.com/alisw/alidist>`_.
  Instant gratification with::
      pip install alibuild
      git clone https://github.com/alisw/alidist.git
      aliBuild build AliRoot
      alienv enter AliRoot/latest
      aliroot -b
  Full documentation at:
  https://alisw.github.io/alibuild


pkgId: 5e9d446a8137bb78c43a172def8b4e0a5ac2dda770c32f6255ecfefd4da3e54a
name: python-alicat
arch: src
version: 0.7.0
epoch: 0
release: 1
summary: Python driver for Alicat mass flow controllers.
url: https://github.com/alexrudd2/alicat
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alicat-0.7.0-1.src.rpm
checksum_type: sha256
description:
  TCP/Serial driver and command line tool for
  [Alicat Laminar DP mass flow controllers](https://www.alicat.com/gas-products/laminar-dp-mass-flow-meters-and-controllers/).
  <p align="center">
    <img src="https://www.alicat.com/wp-content/uploads/2024/05/M_MC_Pair.webp" height="400" />
  </p>
  *If you are using Analyt-MTC flow controllers, go to [this repository](https://github.com/schlenzmeister/AnalytMTC/wiki) for more info.*
  *This driver does not currently support CODA or BASIS controllers.*


pkgId: ea8ba634264961bcb521625b6d8a85fb25926fb5912e8813e16d9c8a4edcc753
name: python-alice-blue
arch: src
version: 2.0.4
epoch: 0
release: 1
summary: Official Python library for Alice Blue APIs
url: https://github.com/krishnavelu/alice_blue
rpm_license: UNKNOWN
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alice-blue-2.0.4-1.src.rpm
checksum_type: sha256
description:
  The Official Python library for communicating with the Alice Blue APIs.

  Alice Blue Python library provides an easy to use wrapper over the HTTPS APIs.

  The HTTP calls have been converted to methods and JSON responses are wrapped into Python-compatible objects.

  Websocket connections are handled automatically within the library.

  * __Author: [krishnavelu](https://github.com/krishnavelu/)__
  * [Unofficed](https://www.unofficed.com/) is strategic partner of Alice Blue responsible for this git.
  * Alice Blue API trading is free for [Unofficed](https://www.unofficed.com/) members. Follow [this](https://unofficed.com/alice-blue/) to get API free.



  This module is installed via pip:

  ```
  pip install alice_blue
  ```

  To force upgrade existing installations:
  ```
  pip uninstall alice_blue
  pip --no-cache-dir install --upgrade alice_blue
  ```




  There is only one class in the whole library: `AliceBlue`. The `login_and_get_sessionID()` static method is used to retrieve session ID from alice blue server. A session ID is valid for 24 hours.
  With session ID, you can instantiate an AliceBlue object. Ideally you only need to create a session ID once every day. Once the session ID is created new, it'll be stored in a temporary location. Next time, the same session ID will be used.


  The original REST API documentation is available [here](https://v2api.aliceblueonline.com/).




  The whole library is equipped with python's `logging` module for debugging. If more debug information is needed, enable logging using the following code.

  ```python
  import logging
  logging.basicConfig(level=logging.DEBUG)
  ```


  api_secret is unique for each and every account. You need to enable api trading and get api_secret from alice blue.
  1. Login to [developer console](http://developers.aliceblueonline.com).
  1. Click on 'Create New App'.
  1. Enter 'App Name' as you like. Enter 'Redirect URL' and 'Post Back URL' as `https://ant.aliceblueonline.com/plugin/callback`.
  1. Click on 'Save'.
  1. Copy the 'App Code' and 'App Secret'. You will need these to generate a session ID.


  1. Import alice_blue
  ```python
  from alice_blue import *
  ```

  2. Create `session_id` using `login_and_get_sessionID()` function  with your `username`, `password`, `2FA (2fa is now year of birth)`, `app_id` and `api_secret`.
  ```python
  session_id = AliceBlue.login_and_get_sessionID(   username    = "username",
                                                      password    = "password",
                                                      twoFA       = "1993",
                                                      app_id      = "app_id",
                                                      api_secret  = "api_secret")
  ```


  If you are facing problem getting access token, make sure the following are correct.
  1. username.
  1. password.
  1. 2FA.
  1. api secret.
  1. app id.

  Even after verifying all these, if you are facing problem, contact alice customer care. They should enable the API access in their end. Don't create a new issue in this library for OAuth Error.


  Once you have your `session_id`, you can create an AliceBlue object with your `session_id` and `username`.
  ```python
  alice = AliceBlue(username = "username", session_id = session_id)
  ```

  You can run these commands to check your newly created alice blue object.
  1. [Get Balance](#get-balance)
  1. [Get Profile](#get-profile)
  1. [Get Daywise positions](#get-daywise-positions)
  1. [Get Netwise positions](#get-netwise-positions)
  1. [Get Holding positions](#get-holding-positions)


  Code:
  ```python
  print(alice.get_balance()) # get balance / margin limits
  ```
  Sample response
  ```
  [{'symbol': 'ALL', 'cncMarginUsed': '0', 'spanmargin': '159440.00', 'branchAdhoc': '0.000000', 'adhocMargin': '0.000000', 'payoutamount': '0.00', 'cdsSpreadBenefit': '0', 'adhocscripmargin': '0.00', 'exposuremargin': '7774.30', 'scripbasketmargin': '0.00', 'credits': '114028.29', 'segment': 'ALL', 'net': '95012.20', 'turnover': '0.00', 'grossexposurevalue': '0.00', 'mfssAmountUsed': '0.00', 'realizedMtomPrsnt': '-6075.80', 'product': 'ALL', 'stat': 'Ok', 'cncSellCrditPrsnt': '0', 'debits': '243846.09', 'varmargin': '0.00', 'multiplier': '10.00', 'elm': '0.00', 'mfamount': '0.00', 'cashmarginavailable': '119428.29', 'brokeragePrsnt': '355.990260', 'cncRealizedMtomPrsnt': '0', 'notionalCash': '0.000000', 'directcollateralvalue': '0.00', 'cncBrokeragePrsnt': '0', 'valueindelivery': '0', 'nfoSpreadBenefit': '0', 'losslimit': '0', 'subtotal': '243846.09', 'rmsPayInAmnt': '0', 'unrealizedMtomPrsnt': '-0.00', 'coverOrderMarginPrsnt': '0', 'exchange': 'ALL', 'category': 'ABFS-COMMON', 'collateralvalue': '0.00', 'rmsIpoAmnt': '0', 'cncUnrealizedMtomPrsnt': '0', 'premiumPrsnt': '0'}, {'symbol': 'ALL', 'cncMarginUsed': '0', 'spanmargin': '0.00', 'branchAdhoc': '0.000000', 'adhocMargin': '0.000000', 'payoutamount': '0.00', 'cdsSpreadBenefit': '0', 'adhocscripmargin': '0.00', 'exposuremargin': '0.00', 'scripbasketmargin': '0.00', 'credits': '0.00', 'segment': 'COM', 'net': '0.00', 'turnover': '0.00', 'grossexposurevalue': '0.00', 'mfssAmountUsed': '0.00', 'realizedMtomPrsnt': '-0.00', 'product': 'ALL', 'stat': 'Ok', 'cncSellCrditPrsnt': '0', 'debits': '0.00', 'varmargin': '0.00', 'multiplier': '1.00', 'elm': '0.00', 'mfamount': '0.00', 'cashmarginavailable': '0.00', 'brokeragePrsnt': '0', 'cncRealizedMtomPrsnt': '0', 'notionalCash': '0.000000', 'directcollateralvalue': '0.00', 'cncBrokeragePrsnt': '0', 'valueindelivery': '0', 'nfoSpreadBenefit': '0', 'losslimit': '0', 'subtotal': '0.00', 'rmsPayInAmnt': '0', 'unrealizedMtomPrsnt': '-0.00', 'coverOrderMarginPrsnt': '0', 'exchange': 'ALL', 'category': 'NO_VAL', 'collateralvalue': '0.00', 'rmsIpoAmnt': '0', 'cncUnrealizedMtomPrsnt': '0', 'premiumPrsnt': '0'}]
  ```


  Code
  ```python
  print(alice.get_profile()) # get profile
  ```
  Sample response
  ```
  {'accountStatus': 'Activated', 'dpType': 'CDSL', 'accountId': 'SP220xx', 'sBrokerName': 'ALICEBLUE', 'product': ['NRML', 'MIS', 'CNC', 'CO', 'BO'], 'accountName': 'xxxx xxxx', 'cellAddr': 'xxxxxxxxxx', 'emailAddr': 'xxxxxx@xxx.com', 'exchEnabled': 'bcs_fo|mcx_fo|nse_cm|bse_cm|nse_fo'}
  ```


  Code
  ```python
  print(alice.get_daywise_positions()) # get daywise positions
  ```
  Sample response
  ```
  [{'realisedprofitloss': '-7,217.50', 'Fillsellamt': '292,062.50', 'Netqty': '0', 'Symbol': 'EICHERMOT', 'Instname': 'NA', 'Expdate': 'NA', 'LTP': '3,355.10', 'Opttype': 'XX', 'BLQty': 1.0, 'Token': '910', 'Fillbuyamt': '299,280.00', 'Fillsellqty': '87', 'Tsym': 'EICHERMOT-EQ', 'sSqrflg': 'Y', 'unrealisedprofitloss': '0.00', 'Buyavgprc': '3,440.00', 'MtoM': '-7,217.50', 'stat': 'Ok', 's_NetQtyPosConv': 'N', 'Sqty': '87', 'Sellavgprc': '3,357.04', 'PriceDenomenator': '1', 'PriceNumerator': '1', 'actid': 'SP220xx', 'posflag': 'true', 'Pcode': 'MIS', 'Stikeprc': '0', 'Bqty': '87', 'BEP': '0.00', 'Exchange': 'NSE', 'Series': 'EQ', 'GeneralDenomenator': '1', 'Type': 'DAY1', 'Netamt': '-7,217.50', 'companyname': 'EICHER MOTORS LTD', 'Fillbuyqty': '87', 'GeneralNumerator': '1', 'Exchangeseg': 'nse_cm', 'discQty': '10'}, {'realisedprofitloss': '1,141.70', 'Fillsellamt': '298,216.70', 'Netqty': '0', 'Symbol': 'M&M', 'Instname': 'NA', 'Expdate': 'NA', 'LTP': '1,274.65', 'Opttype': 'XX', 'BLQty': 1.0, 'Token': '2031', 'Fillbuyamt': '297,075.00', 'Fillsellqty': '233', 'Tsym': 'M&M-EQ', 'sSqrflg': 'Y', 'unrealisedprofitloss': '0.00', 'Buyavgprc': '1,275.00', 'MtoM': '1,141.70', 'stat': 'Ok', 's_NetQtyPosConv': 'N', 'Sqty': '233', 'Sellavgprc': '1,279.90', 'PriceDenomenator': '1', 'PriceNumerator': '1', 'actid': 'SP220xx', 'posflag': 'true', 'Pcode': 'MIS', 'Stikeprc': '0', 'Bqty': '233', 'BEP': '0.00', 'Exchange': 'NSE', 'Series': 'EQ', 'GeneralDenomenator': '1', 'Type': 'DAY1', 'Netamt': '1,141.70', 'companyname': 'MAHINDRA & MAHINDRA LTD', 'Fillbuyqty': '233', 'GeneralNumerator': '1', 'Exchangeseg': 'nse_cm', 'discQty': '10'}]
  ```


  Code
  ```python
  print(alice.get_netwise_positions()) # get netwise positions
  ```
  Sample response
  ```
  [{'Instname': 'NA', 'Expdate': 'NA', 'CFsellqty': '0', 'Opttype': 'XX', 'Token': '910', 'CFSellavgprc': '0.00', 'sSqrflg': 'Y', 'unrealisedprofitloss': '0.00', 's_NetQtyPosConv': 'N', 'FillbuyamtCF': '0.00', 'Sqty': '87', 'Sellavgprc': '3,357.04', 'actid': 'SP220xx', 'netbuyamt': '299,280.00', 'Pcode': 'MIS', 'Bqty': '87', 'NetBuyavgprc': '3440.0', 'Exchange': 'NSE', 'companyname': 'EICHER MOTORS LTD', 'netbuyqty': '87', 'realisedprofitloss': '-7,217.50', 'Fillsellamt': '292,062.50', 'Netqty': '0', 'Symbol': 'EICHERMOT', 'LTP': '3,355.10', 'BLQty': 1.0, 'Fillbuyamt': '299,280.00', 'Fillsellqty': '87', 'Tsym': 'EICHERMOT-EQ', 'CFbuyqty': '0', 'Buyavgprc': '3,440.00', 'netSellamt': '292,062.50', 'MtoM': '-7,217.50', 'stat': 'Ok', 'FillsellamtCF': '0.00', 'PriceDenomenator': '1', 'netsellqty': '87', 'PriceNumerator': '1', 'posflag': 'true', 'Stikeprc': '0', 'BEP': '0.00', 'Series': 'EQ', 'GeneralDenomenator': '1', 'Type': 'DAY1', 'Netamt': '-7,217.50', 'NetSellavgprc': '3357.04', 'CFBuyavgprc': '0.00', 'Fillbuyqty': '87', 'GeneralNumerator': '1', 'Exchangeseg': 'nse_cm', 'discQty': '10'}, {'Instname': 'NA', 'Expdate': 'NA', 'CFsellqty': '0', 'Opttype': 'XX', 'Token': '2031', 'CFSellavgprc': '0.00', 'sSqrflg': 'Y', 'unrealisedprofitloss': '0.00', 's_NetQtyPosConv': 'N', 'FillbuyamtCF': '0.00', 'Sqty': '233', 'Sellavgprc': '1,279.90', 'actid': 'SP220xx', 'netbuyamt': '297,075.00', 'Pcode': 'MIS', 'Bqty': '233', 'NetBuyavgprc': '1275.0', 'Exchange': 'NSE', 'companyname': 'MAHINDRA & MAHINDRA LTD', 'netbuyqty': '233', 'realisedprofitloss': '1,141.70', 'Fillsellamt': '298,216.70', 'Netqty': '0', 'Symbol': 'M&M', 'LTP': '1,274.65', 'BLQty': 1.0, 'Fillbuyamt': '297,075.00', 'Fillsellqty': '233', 'Tsym': 'M&M-EQ', 'CFbuyqty': '0', 'Buyavgprc': '1,275.00', 'netSellamt': '298,216.70', 'MtoM': '1,141.70', 'stat': 'Ok', 'FillsellamtCF': '0.00', 'PriceDenomenator': '1', 'netsellqty': '233', 'PriceNumerator': '1', 'posflag': 'true', 'Stikeprc': '0', 'BEP': '0.00', 'Series': 'EQ', 'GeneralDenomenator': '1', 'Type': 'DAY1', 'Netamt': '1,141.70', 'NetSellavgprc': '1279.9', 'CFBuyavgprc': '0.00', 'Fillbuyqty': '233', 'GeneralNumerator': '1', 'Exchangeseg': 'nse_cm', 'discQty': '10'}, {'Instname': 'OPTIDX', 'Expdate': '1 Sep, 2022', 'CFsellqty': '0', 'Opttype': 'CE', 'Token': '51698', 'CFSellavgprc': '0.00', 'sSqrflg': 'Y', 'unrealisedprofitloss': '555.00', 's_NetQtyPosConv': 'N', 'FillbuyamtCF': '18,570.00', 'Sqty': '0', 'Sellavgprc': '0.00', 'actid': 'SP220xx', 'netbuyamt': '18,570.00', 'Pcode': 'NRML', 'Bqty': '0', 'NetBuyavgprc': '441.0', 'Exchange': 'NFO', 'companyname': '', 'netbuyqty': '50', 'realisedprofitloss': '0.00', 'Fillsellamt': '0.00', 'Netqty': '50', 'Symbol': 'BANKNIFTY', 'LTP': '382.50', 'BLQty': 25.0, 'Fillbuyamt': '0.00', 'Fillsellqty': '0', 'Tsym': 'BANKNIFTY2290139100CE', 'CFbuyqty': '50', 'Buyavgprc': '0.00', 'netSellamt': '0.00', 'MtoM': '555.00', 'stat': 'Ok', 'FillsellamtCF': '0.00', 'PriceDenomenator': '1', 'netsellqty': '0', 'PriceNumerator': '1', 'posflag': 'false', 'Stikeprc': '39100.0', 'BEP': '371.40', 'Series': 'XX', 'GeneralDenomenator': '1', 'Type': 'NET1', 'Netamt': '-18,570.00', 'NetSellavgprc': '0.00', 'CFBuyavgprc': '441.0', 'Fillbuyqty': '0', 'GeneralNumerator': '1', 'Exchangeseg': 'nse_fo', 'discQty': 'NA'}, {'Instname': 'OPTIDX', 'Expdate': '1 Sep, 2022', 'CFsellqty': '100', 'Opttype': 'CE', 'Token': '51731', 'CFSellavgprc': '128.45', 'sSqrflg': 'Y', 'unrealisedprofitloss': '-150.00', 's_NetQtyPosConv': 'N', 'FillbuyamtCF': '0.00', 'Sqty': '0', 'Sellavgprc': '0.00', 'actid': 'SP220xx', 'netbuyamt': '0.00', 'Pcode': 'NRML', 'Bqty': '0', 'NetBuyavgprc': '0.00', 'Exchange': 'NFO', 'companyname': '', 'netbuyqty': '0', 'realisedprofitloss': '0.00', 'Fillsellamt': '0.00', 'Netqty': '-100', 'Symbol': 'BANKNIFTY', 'LTP': '96.00', 'BLQty': 25.0, 'Fillbuyamt': '0.00', 'Fillsellqty': '0', 'Tsym': 'BANKNIFTY2290139900CE', 'CFbuyqty': '0', 'Buyavgprc': '0.00', 'netSellamt': '9,450.00', 'MtoM': '-150.00', 'stat': 'Ok', 'FillsellamtCF': '9,450.00', 'PriceDenomenator': '1', 'netsellqty': '100', 'PriceNumerator': '1', 'posflag': 'false', 'Stikeprc': '39900.0', 'BEP': '94.50', 'Series': 'XX', 'GeneralDenomenator': '1', 'Type': 'NET1', 'Netamt': '9,450.00', 'NetSellavgprc': '128.45', 'CFBuyavgprc': '0.00', 'Fillbuyqty': '0', 'GeneralNumerator': '1', 'Exchangeseg': 'nse_fo', 'discQty': 'NA'}]
  ```


  Code
  ```python
  print(alice.get_holding_positions()) # get holding positions
  ```
  Sample response
  ```
  {'stat': 'Ok', 'HoldingVal': [{'WCqty': '0', 'BSEHOldingValue': '25700.00', 'hsflag': 'Y', 'Series1': 'A', 'HUqty': '200', 'authQty': '0', 'YSXHOldingValue': '0.00', 'CSEHOldingValue': '0.00', 'Ttrind': 'N', 'DaysMTM': '0', 'csflag': 'Y', 'WHqty': '0', 'Pcode': 'CNC', 'Price': '102.78', 'Exch4': '0', 'BuyQty': '0', 'Bsetsym': 'BANKBARODA', 'Exch5': '0', 'LTcse': '0.00', 'MCXHOldingValue': '0.00', 'Holdqty': '0', 'Exch1': 'nse_cm', 'Exch2': 'bse_cm', 'Exch3': '0', 'LTysx': '0.00', 'Haircut': '0.00', 'Scripcode': '532134', 'LTPValuation': '0', 'NSEHOldingValue': '25660.00', 'Ysxtsym': '0', 'Ltp': '128.50', 'Coltype': '--', 'Btst': '0', 'LTmcxsxcm': '0.00', 'Usedqty': '0', 'poaStatus': 'Y', 'Token5': '0', 'Nsetsym': 'BANKBARODA-EQ', 'CUqty': '0', 'Token2': '532134', 'Token1': '4668', 'Token4': '0', 'Token3': '0', 'SellableQty': '200', 'Mcxsxcmsym': '0', 'Csetsym': '0', 'authFlag': True, 'LTnse': '128.30', 'pdc': '125.9', 'Series': 'EQ', 'Colqty': '0', 'ExchSeg5': None, 'ExchSeg2': 'BSE', 'ExchSeg1': 'NSE', 'LTbse': '128.50', 'ExchSeg4': None, 'ExchSeg3': None, 'isin': 'INE028A01039', 'Tprod': 'NA'}, {'WCqty': '0', 'BSEHOldingValue': '772832.75', 'hsflag': 'Y', 'Series1': 'X', 'HUqty': '19345', 'authQty': '0', 'YSXHOldingValue': '0.00', 'CSEHOldingValue': '0.00', 'Ttrind': 'N', 'DaysMTM': '0', 'csflag': 'Y', 'WHqty': '0', 'Pcode': 'CNC', 'Price': '44.60', 'Exch4': '0', 'BuyQty': '0', 'Bsetsym': 'SMIFS', 'Exch5': '0', 'LTcse': '0.00', 'MCXHOldingValue': '0.00', 'Holdqty': '0', 'Exch1': '0', 'Exch2': 'bse_cm', 'Exch3': '0', 'LTysx': '0.00', 'Haircut': '0.00', 'Scripcode': '508905', 'LTPValuation': '0', 'NSEHOldingValue': '0.00', 'Ysxtsym': '0', 'Ltp': '39.95', 'Coltype': '--', 'Btst': '0', 'LTmcxsxcm': '0.00', 'Usedqty': '0', 'poaStatus': 'Y', 'Token5': '0', 'Nsetsym': '0', 'CUqty': '0', 'Token2': '508905', 'Token1': '0', 'Token4': '0', 'Token3': '0', 'SellableQty': '19345', 'Mcxsxcmsym': '0', 'Csetsym': '0', 'authFlag': True, 'LTnse': '0.00', 'pdc': '41.95', 'Series': '---', 'Colqty': '0', 'ExchSeg5': None, 'ExchSeg2': 'BSE', 'ExchSeg1': None, 'LTbse': '39.95', 'ExchSeg4': None, 'ExchSeg3': None, 'isin': 'INE641A01013', 'Tprod': 'NA'}], 'clientid': 'WBK293', 'Totalval': {'TotalMCXHoldingValue': '0.00', 'TotalCSEHoldingValue': '0.00', 'TotalNSEHoldingValue': '25660.00', 'TotalYSXHoldingValue': '0.00', 'TotalBSEHoldingValue': '798532.75'}}
  ```


  Getting master contracts allow you to search for instruments by symbol name and place orders.
  Master contracts are stored as an OrderedDict by token number and by symbol name in a local file. Whenever you get a trade update, order update, or quote update, the library will check if master contracts are loaded. If they are, it will attach the instrument object directly to the update. By default all master contracts of all enabled exchanges in your personal profile will be downloaded. i.e. If your profile contains the following as enabled exchanges `['NSE', 'BSE', 'MCX', NFO']` all contract notes of all exchanges will be downloaded by default. If you feel it takes too much time to download all exchange, or if you don't need all exchanges to be downloaded, you can specify which exchange to download contract notes while creating the AliceBlue object. Master contracts once downloaded is stored in temp location and reused the subsequent times. Master contracts are downloaded newly once a day (because new master contracts are updated everyday around 8:00am).

  Code
  ```python
  alice = AliceBlue(username = "username", session_id = session_id, master_contracts_to_download=['NSE', 'BSE'])
  ```
  This will reduce a few seconds in object creation time of AliceBlue object.


  Get Scrip info from alice server (this is different from instrument object).
  ```python
  print(alice.get_scrip_info(alice.get_instrument_by_symbol("NSE", "INFY-EQ")))
  ```
  ```
  {'optiontype': 'XX', 'SQty': 55, 'vwapAveragePrice': '1499.38', 'LTQ': '40', 'Ltp': '1511.65', 'LTP': '1511.65', 'DecimalPrecision': 2, 'openPrice': '1488.00', 'BRate': '00.00', 'defmktproval': '3', 'BQty': 0, 'symbolname': 'INFY', 'noMktPro': '0', 'LTT': '09/09/2022 15:59:32', 'mktpro': '1', 'TickSize': '5', 'Multiplier': 1, 'strikeprice': '00.00', 'TotalSell': '55', 'High': '1520.00', 'stat': 'Ok', 'BodLotQty': 1, 'yearlyHighPrice': '1953.90', 'yearlyLowPrice': '1367.15', 'exchFeedTime': '09-Sep-2022 16:18:43', 'PrvClose': '1511.65', 'SRate': '1511.65', 'Change': '00.00', 'Series': 'EQ', 'TotalBuy': 'NA', 'Low': '1480.00', 'UniqueKey': 'INFY', 'PerChange': '00.00', 'companyname': 'INFOSYS LIMITED', 'TradeVolume': '4816910', 'TSymbl': 'INFY-EQ', 'Exp': 'NA', 'LTD': 'NA'}
  ```

  Instruments are represented by instrument objects. These are named-tuples that are created while getting the master contracts. They are used when placing an order and subscribing to a symbol. The structure of an instrument tuple is as follows:

  ```python
  Instrument = namedtuple('Instrument', ['exchange', 'token', 'symbol',
                                        'name', 'expiry', 'lot_size'])
  ```

  All instruments have the fields mentioned above. Wherever a field is not applicable for an instrument (for example, equity instruments don't have strike prices), that value will be `None`.


  Symbols can be retrieved in multiple ways. Once you have the master contract loaded for an exchange, you can get an instrument in many ways.


  Code
  ```python
  tatasteel_nse_eq = alice.get_instrument_by_symbol('NSE', 'TATASTEEL-EQ')
  reliance_nse_eq = alice.get_instrument_by_symbol('NSE', 'RELIANCE-EQ')
  ongc_bse_eq = alice.get_instrument_by_symbol('BSE', 'ONGC-EQ')
  india_vix_nse_index = alice.get_instrument_by_symbol('NSE', 'India VIX')
  sensex_nse_index = alice.get_instrument_by_symbol('BSE', 'SENSEX')
  nifty50_nse_index = alice.get_instrument_by_symbol('NSE', 'NIFTY 50')
  banknifty_nse_index = alice.get_instrument_by_symbol('NSE', 'NIFTY Bank')
  ```


  Code
  ```python
  ongc_bse_eq = alice.get_instrument_by_token('BSE', 500312)
  reliance_bse_eq = alice.get_instrument_by_token('BSE', 500325)
  acc_nse_eq = alice.get_instrument_by_token('NSE', 22)
  ```


  Code
  ```python
  bn_fut = alice.get_instrument_for_fno(symbol = 'BANKNIFTY', expiry_date=datetime.date(2019, 6, 27), is_fut=True, strike=None, is_CE = False)
  bn_call = alice.get_instrument_for_fno(symbol = 'BANKNIFTY', expiry_date=datetime.date(2019, 6, 27), is_fut=False, strike=30000, is_CE = True)
  bn_put = alice.get_instrument_for_fno(symbol = 'BANKNIFTY', expiry_date=datetime.date(2019, 6, 27), is_fut=False, strike=30000, is_CE = False)
  ```


  Search for multiple instruments by matching the name. This works case insensitive and returns all instrument which has the name in its symbol.
  Code
  ```python
  all_sensex_scrips = alice.search_instruments('BSE', 'sEnSeX')
  print(all_sensex_scrips)
  ```
  The above code results multiple symbol which has 'sensex' in its symbol.
  Sample response
  ```
  [Instrument(exchange='BSE', token=532985, symbol='KTKSENSEX', name='KOTAK MAHINDRA MUTUAL FUND', expiry=None, lot_size='1'), Instrument(exchange='BSE', token=535276, symbol='SBISENSEX', name='SBI MUTUAL FUND - SBI ETF SENS', expiry=None, lot_size='1'), Instrument(exchange='BSE', token=538683, symbol='SENSEXBEES', name='NIPPON INDIA ETF SENSEX', expiry=None, lot_size='1'), Instrument(exchange='BSE', token=540154, symbol='IDFSENSEXE', name='IDFC Mutual Fund', expiry=None, lot_size='1'), Instrument(exchange='BSE', token=199040, symbol='SENSEXBINAV', name='INAV NIPPO INDIA ETF SENSE', expiry=None, lot_size='1')]
  ```


  Code
  ```python
  multiple_underlying = ["INFY", "SBIN", "BHEL"]
  all_scripts = alice.search_instruments('NFO', multiple_underlying)
  print(all_scripts)
  ```


  Once you have master contracts loaded & a tradable instrument, you can easily subscribe to market feedd/depth data.


  You can subscribe any one type of live data for a given scrip. Using the `LiveFeedType` enum, you can specify what type of live feed you need.
  * `LiveFeedType.TICK_DATA`
  * `LiveFeedType.DEPTH_DATA`

  Please refer to the original documentation [here](https://v2api.aliceblueonline.com/websocket) for more details of different types of live feeds.


  Code
  ```python
  alice.subscribe(alice.get_instrument_by_symbol('NSE', 'TATASTEEL-EQ'), LiveFeedType.TICK_DATA)
  alice.subscribe(alice.get_instrument_by_symbol('BSE', 'RELIANCE-EQ'), LiveFeedType.DEPTH_DATA)
  ```

  Code
  ```python
  alice.subscribe([alice.get_instrument_by_symbol('NSE', 'TATASTEEL-EQ'), alice.get_instrument_by_symbol('NSE', 'ACC-EQ')], LiveFeedType.TICK_DATA)
  ```


  Code
  ```python
  def event_handler_quote_update(message):
      print(f"quote update {message}")

  alice.start_websocket(subscribe_callback=event_handler_quote_update)

  alice.subscribe(alice.get_instrument_by_symbol('NSE', 'ONGC-EQ'), LiveFeedType.TICK_DATA)
  sleep(10)
  ```


  Unsubscribe to an existing live feed.

  Code
  ```python
  alice.unsubscribe(alice.get_instrument_by_symbol('NSE', 'TATASTEEL-EQ'), LiveFeedType.TICK_DATA)
  alice.unsubscribe(alice.get_instrument_by_symbol('BSE', 'RELIANCE-EQ'), LiveFeedType.DEPTH_DATA)
  ```

  Code
  ```python
  alice.unsubscribe([alice.get_instrument_by_symbol('NSE', 'TATASTEEL-EQ'), alice.get_instrument_by_symbol('NSE', 'ACC-EQ')], LiveFeedType.TICK_DATA)
  ```


  Code
  ```python
  alice.get_all_subscriptions() # All
  ```


  Subscribe to market status & Exchange messages coming soon.


  Code
  ```python
  alice.subscribe_market_status_messages()
  ```


  Code
  ```python
  print(alice.get_market_status_messages())
  ```

  Sample Response of `get_market_status_messages()`
  ```
  [{'exchange': 'NSE', 'length_of_market_type': 6, 'market_type': b'NORMAL', 'length_of_status': 31, 'status': b'The Closing Session has closed.'}, {'exchange': 'NFO', 'length_of_market_type': 6, 'market_type': b'NORMAL', 'length_of_status': 45, 'status': b'The Normal market has closed for 22 MAY 2020.'}, {'exchange': 'CDS', 'length_of_market_type': 6, 'market_type': b'NORMAL', 'length_of_status': 45, 'status': b'The Normal market has closed for 22 MAY 2020.'}, {'exchange': 'BSE', 'length_of_market_type': 13, 'market_type': b'OTHER SESSION', 'length_of_status': 0, 'status': b''}]
  ```


  Code
  ```python
  alice.subscribe_exchange_messages()
  ```


  Code
  ```python
  print(alice.get_exchange_messages())
  ```

  Sample Response of `get_exchange_messages()`
  ```
  [{'exchange': 'NSE', 'length': 32, 'message': b'DS : Bulk upload can be started.', 'exchange_time_stamp': 1590148595}, {'exchange': 'NFO', 'length': 200, 'message': b'MARKET WIDE LIMIT FOR VEDL IS 183919959. OPEN POSITIONS IN VEDL HAVE REACHED 84 PERCENT OF THE MARKET WIDE LIMIT.                                                                                       ', 'exchange_time_stamp': 1590146132}, {'exchange': 'CDS', 'length': 54, 'message': b'DS : Regular segment Bhav copy broadcast successfully.', 'exchange_time_stamp': 1590148932}, {'exchange': 'MCX', 'length': 7, 'message': b'.......', 'exchange_time_stamp': 1590196159}]
  ```


  Code
  ```python
  socket_opened = False
  def market_status_messages(message):
      print(f"market status messages {message}")

  def exchange_messages(message):
      print(f"exchange messages {message}")

  alice.start_websocket(market_status_messages_callback=market_status_messages,
                        exchange_messages_callback=exchange_messages)
  alice.subscribe_market_status_messages()
  alice.subscribe_exchange_messages()
  sleep(10)
  ```


  You can place following types of order through this API.
  1. [Limit](#limit-order-intraday-buy)
  1. [Market](#market-order-delivery-sell)
  1. [Stop Loss Limit](#stop-loss-limit-order)
  1. [Stop Loss Market](#stop-loss-market-order)
  1. [Bracket Order](#bracket-order)
  1. [AMO](#after-market-order)


  Code
  ```python
  print(alice.place_order(transaction_type = TransactionType.Buy,
                          instrument = alice.get_instrument_by_symbol("NSE", "INFY-EQ"),
                          quantity = 1,
                          order_type = OrderType.Limit,
                          product_type = ProductType.Intraday,
                          price = 500.0))
  ```
  Sample reponse of place order
  ```python
  [{'stat': 'Ok', 'NOrdNo': '220909000171482'}]
  ```


  ```python
  print(alice.place_order(transaction_type = TransactionType.Sell,
                          instrument = alice.get_instrument_by_symbol("NSE", "INFY-EQ"),
                          quantity = 0,
                          order_type = OrderType.Market,
                          product_type = ProductType.Delivery))
  ```


  ```python
  print(alice.place_order(transaction_type = TransactionType.Sell,
                          instrument = alice.get_instrument_by_symbol("NSE", "INFY-EQ"),
                          quantity = 1,
                          order_type = OrderType.StopLossLimit,
                          product_type = ProductType.Intraday,
                          price = 500.0,
                          trigger_price = 490.0))
  ```

  ```python
  print(alice.place_order(transaction_type = TransactionType.Sell,
                          instrument = alice.get_instrument_by_symbol("NSE", "INFY-EQ"),
                          quantity = 1,
                          order_type = OrderType.StopLossMarket,
                          product_type = ProductType.Intraday,
                          trigger_price = 490.0))
  ```

  ```python
  print(alice.place_order(transaction_type = TransactionType.Sell,
                          instrument = alice.get_instrument_by_symbol("NSE", "INFY-EQ"),
                          quantity = 1,
                          order_type = OrderType.StopLossLimit,
                          product_type = ProductType.Intraday,
                          price = 1464.0,
                          trigger_price = 1466.0,
                          stop_loss = 1450.0,
                          target = 1480.0,
                          trailing_sl = 1.0))
  ```

  Code
  ```python
  print(alice.place_order(transaction_type = TransactionType.Buy,
                          instrument = alice.get_instrument_by_symbol("NSE", "INFY-EQ"),
                          quantity = 1,
                          order_type = OrderType.AfterMarketOrder,
                          product_type = ProductType.Delivery,
                          price = 500.0))
  ```
  Sample reponse of AMO order
  ```
  [{'stat': 'Ok', 'NOrdNo': '220909000171690-after market order req received'}]
  ```

  ```python
  print(alice.modify_order(   order_id = order_id,
                              transaction_type = TransactionType.Buy,
                              instrument = alice.get_instrument_by_symbol("NSE", "INFY-EQ"),
                              quantity = 2,
                              order_type = OrderType.AfterMarketOrder,
                              product_type = ProductType.Delivery,
                              price = 600.0))
  ```
  Sample response of modify order
  ```
  {'stat': 'Ok', 'Result': ' NEST Order Number :220909000171761'}
  ```


  ```python
  order_id = 220909000171761
  print(alice.cancel_order(order_id = order_id))
  ```
  Sample response of cancel order
  ```
  {'stat': 'Ok', 'Result': ' NEST Order Number :220909000171761'}
  ```




  ```python
  print(alice.get_order_history())
  ```
  ```
  [{'Prc': '600.00', 'RequestID': '1', 'Cancelqty': 0, 'discQtyPerc': '10', 'customText': 'NA', 'Mktpro': 'NA', 'defmktproval': '3', 'optionType': 'XX', 'usecs': '078218', 'mpro': '1', 'Qty': 2, 'ordergenerationtype': 'AMO', 'Unfilledsize': 0, 'orderAuthStatus': '', 'Usercomments': 'NA', 'ticksize': '5', 'Prctype': 'AMO', 'Status': 'cancelled after market order', 'Minqty': 0, 'orderCriteria': 'NA', 'Exseg': 'nse_cm', 'Sym': 'INFY', 'multiplier': '1', 'ExchOrdID': 'NA', 'ExchConfrmtime': '--', 'Pcode': 'CNC', 'SyomOrderId': '', 'Dscqty': 0, 'Exchange': 'NSE', 'Ordvaldate': 'NA', 'accountId': 'SP220xx', 'exchangeuserinfo': '111111111111130', 'Avgprc': '00.00', 'Trgprc': '00.00', 'Trantype': 'B', 'bqty': '1', 'Trsym': 'INFY-EQ', 'Fillshares': 0, 'AlgoCategory': 'NA', 'sipindicator': 'N', 'strikePrice': '00.00', 'reporttype': 'NA', 'AlgoID': 'NA', 'noMktPro': '0', 'BrokerClient': '--', 'OrderUserMessage': '', 'decprec': '2', 'ExpDate': 'NA', 'COPercentage': 0.0, 'marketprotectionpercentage': '--', 'Nstordno': '220909000171761', 'ExpSsbDate': 'NA', 'OrderedTime': '09/09/2022 15:47:11', 'RejReason': '--', 'modifiedBy': 'SP220xx', 'Scripname': 'INFOSYS LIMITED', 'stat': 'Ok', 'orderentrytime': '', 'PriceDenomenator': '1', 'panNo': 'NA', 'RefLmtPrice': 0.0, 'PriceNumerator': '1', 'token': '1594', 'ordersource': 'NEST_REST_WEB', 'Validity': None, 'GeneralDenomenator': '1', 'series': 'EQ', 'InstName': '', 'GeneralNumerator': '1', 'user': 'SP220xx', 'remarks': '--', 'iSinceBOE': 1662718631}, {'Prc': '378.50', 'RequestID': '1', 'Cancelqty': 0, 'discQtyPerc': '10', 'customText': 'NA', 'Mktpro': 'NA', 'defmktproval': '3', 'optionType': 'XX', 'usecs': '428162', 'mpro': '1', 'Qty': 704, 'ordergenerationtype': '--', 'Unfilledsize': 0, 'orderAuthStatus': '', 'Usercomments': 'NA', 'ticksize': '5', 'Prctype': 'L', 'Status': 'complete', 'Minqty': 0, 'orderCriteria': 'NA', 'Exseg': 'nse_cm', 'Sym': 'HINDALCO', 'multiplier': '1', 'ExchOrdID': '1100000000211421', 'ExchConfrmtime': '09-Sep-2022 09:07:03', 'Pcode': 'MIS', 'SyomOrderId': '', 'Dscqty': 0, 'Exchange': 'NSE', 'Ordvaldate': 'NA', 'accountId': 'SP220xx', 'exchangeuserinfo': '333333333333100', 'Avgprc': '426.00', 'Trgprc': '00.00', 'Trantype': 'S', 'bqty': '1', 'Trsym': 'HINDALCO-EQ', 'Fillshares': 704, 'AlgoCategory': 'NA', 'sipindicator': 'N', 'strikePrice': '00.00', 'reporttype': 'fill', 'AlgoID': 'NA', 'noMktPro': '0', 'BrokerClient': '--', 'OrderUserMessage': '', 'decprec': '2', 'ExpDate': 'NA', 'COPercentage': 0.0, 'marketprotectionpercentage': '--', 'Nstordno': '220909000001363', 'ExpSsbDate': 'NA', 'OrderedTime': '09/09/2022 09:07:03', 'RejReason': '--', 'modifiedBy': '--', 'Scripname': 'HINDALCO  INDUSTRIES  LTD', 'stat': 'Ok', 'orderentrytime': 'Sep 09 2022 09:06:59', 'PriceDenomenator': '1', 'panNo': 'xxxxx', 'RefLmtPrice': 0.0, 'PriceNumerator': '1', 'token': '1363', 'ordersource': 'NEST_REST_TLAPI', 'Validity': 'DAY', 'GeneralDenomenator': '1', 'series': 'EQ', 'InstName': '', 'GeneralNumerator': '1', 'user': 'SP220xx', 'remarks': '--', 'iSinceBOE': 1662694623}]
  ```


  ```python
  print(alice.get_order_history(220909000171761))
  ```
  Sample Response
  ```
  [{'Prc': '600.00', 'Action': 'B', 'productcode': 'CNC', 'reporttype': 'NA', 'triggerprice': '0.0', 'filledShares': 0, 'disclosedqty': '0', 'exchangetimestamp': '--', 'ExchTimeStamp': '09/09/2022 15:47:11', 'symbolname': 'INFY', 'nestordernumber': '220909000171761', 'duration': None, 'OrderUserMessage': '', 'averageprice': '0.0', 'Qty': 2, 'ordergenerationtype': 'AMO', 'modifiedBy': 'SP220xx', 'filldateandtime': '-- --', 'Status': 'cancelled after market order', 'rejectionreason': '--', 'stat': 'Ok', 'PriceDenomenator': '1', 'exchangeorderid': None, 'PriceNumerator': '1', 'legorderindicator': '', 'customerfirm': 'C', 'ordersource': 'NEST_REST_WEB', 'GeneralDenomenator': '1', 'nestreqid': '1', 'Ordtype': 'AMO', 'unfilledSize': 0, 'scripname': 'INFOSYS LIMITED', 'GeneralNumerator': '1', 'bqty': 1, 'exchange': 'NSE', 'Trsym': 'INFY-EQ'}, {'Prc': '600.00', 'Action': 'B', 'productcode': 'CNC', 'reporttype': 'NA', 'triggerprice': '0.0', 'filledShares': 0, 'disclosedqty': '0', 'exchangetimestamp': '--', 'ExchTimeStamp': '09/09/2022 15:47:10', 'symbolname': 'INFY', 'nestordernumber': '220909000171761', 'duration': None, 'OrderUserMessage': '', 'averageprice': '0.0', 'Qty': 2, 'ordergenerationtype': 'AMO', 'modifiedBy': 'SP220xx', 'filldateandtime': '-- --', 'Status': 'modify after market order req received', 'rejectionreason': '--', 'stat': 'Ok', 'PriceDenomenator': '1', 'exchangeorderid': None, 'PriceNumerator': '1', 'legorderindicator': '', 'customerfirm': 'C', 'ordersource': 'NEST_REST_WEB', 'GeneralDenomenator': '1', 'nestreqid': '1', 'Ordtype': 'AMO', 'unfilledSize': 2, 'scripname': 'INFOSYS LIMITED', 'GeneralNumerator': '1', 'bqty': 1, 'exchange': 'NSE', 'Trsym': 'INFY-EQ'}, {'Prc': '500.00', 'Action': 'B', 'productcode': 'CNC', 'reporttype': 'NA', 'triggerprice': '0.0', 'filledShares': 0, 'disclosedqty': '1', 'exchangetimestamp': '--', 'ExchTimeStamp': '09/09/2022 15:47:09', 'symbolname': 'INFY', 'nestordernumber': '220909000171761', 'duration': 'DAY', 'OrderUserMessage': '', 'averageprice': '0.0', 'Qty': 1, 'ordergenerationtype': 'AMO', 'modifiedBy': '--', 'filldateandtime': '-- --', 'Status': 'after market order req received', 'rejectionreason': '--', 'stat': 'Ok', 'PriceDenomenator': '1', 'exchangeorderid': None, 'PriceNumerator': '1', 'legorderindicator': '', 'customerfirm': 'C', 'ordersource': 'NEST_REST_WEB', 'GeneralDenomenator': '1', 'nestreqid': '1', 'Ordtype': 'AMO', 'unfilledSize': 1, 'scripname': 'INFOSYS LIMITED', 'GeneralNumerator': '1', 'bqty': 1, 'exchange': 'NSE', 'Trsym': 'INFY-EQ'}]
  ```


  ```python
  print(alice.get_trade_book())
  ```
  Sample Response
  ```
  [{'Filltime': '15:10:00', 'usecs': '836064', 'Ordduration': 'DAY', 'ExchordID': '1100000022855645', 'Qty': 201, 'ordergenerationtype': '--', 'strikeprice': '00.00', 'AvgPrice': '1499.52', 'Prctype': 'MKT', 'Minqty': 0, 'Exchseg': 'nse_cm', 'Pcode': 'MIS', 'FillLeg': 1, 'Exchange': 'NSE', 'accountId': 'SP220xx', 'Price': '1499.40', 'Trantype': 'S', 'companyname': 'HDFC BANK LTD', 'Exchtime': '09-Sep-2022 15:10:00', 'bqty': 1, 'Filldate': '09-Sep-2022', 'AlgoCategory': 'NA', 'Custofrm': 'C', 'expdate': 'NA', 'optiontype': 'XX', 'AlgoID': 'NA', 'Symbol': '1333', 'Filledqty': 201, 'Time': '09/09/2022 15:10:00', 'symbolname': 'HDFCBANK', 'BrokerClient': '--', 'NOReqID': '1', 'Tsym': 'HDFCBANK-EQ', 'Nstordno': '220909000161876', 'ReportType': 'fill', 'Expiry': 'NA', 'stat': 'Ok', 'PriceDenomenator': '1', 'panNo': 'xxxxxxxxx', 'PriceNumerator': '1', 'posflag': 'false', 'GeneralDenomenator': '1', 'FillId': '29599427', 'Fillqty': 29, 'series': 'EQ', 'GeneralNumerator': '1', 'user': 'SP220xx', 'remarks': '--', 'iSinceBOE': 1662716400}, {'Filltime': '15:10:00', 'usecs': '835977', 'Ordduration': 'DAY', 'ExchordID': '1100000022855645', 'Qty': 201, 'ordergenerationtype': '--', 'strikeprice': '00.00', 'AvgPrice': '1499.55', 'Prctype': 'MKT', 'Minqty': 0, 'Exchseg': 'nse_cm', 'Pcode': 'MIS', 'FillLeg': 1, 'Exchange': 'NSE', 'accountId': 'SP220xx', 'Price': '1499.55', 'Trantype': 'S', 'companyname': 'HDFC BANK LTD', 'Exchtime': '09-Sep-2022 15:10:00', 'bqty': 1, 'Filldate': '09-Sep-2022', 'AlgoCategory': 'NA', 'Custofrm': 'C', 'expdate': 'NA', 'optiontype': 'XX', 'AlgoID': 'NA', 'Symbol': '1333', 'Filledqty': 162, 'Time': '09/09/2022 15:10:00', 'symbolname': 'HDFCBANK', 'BrokerClient': '--', 'NOReqID': '1', 'Tsym': 'HDFCBANK-EQ', 'Nstordno': '220909000161876', 'ReportType': 'fill', 'Expiry': 'NA', 'stat': 'Ok', 'PriceDenomenator': '1', 'panNo': 'xxxxxxxxx', 'PriceNumerator': '1', 'posflag': 'false', 'GeneralDenomenator': '1', 'FillId': '29599425', 'Fillqty': 162, 'series': 'EQ', 'GeneralNumerator': '1', 'user': 'SP220xx', 'remarks': '--', 'iSinceBOE': 1662716400}, {'Filltime': '15:10:00', 'usecs': '836021', 'Ordduration': 'DAY', 'ExchordID': '1100000022855645', 'Qty': 201, 'ordergenerationtype': '--', 'strikeprice': '00.00', 'AvgPrice': '1499.54', 'Prctype': 'MKT', 'Minqty': 0, 'Exchseg': 'nse_cm', 'Pcode': 'MIS', 'FillLeg': 1, 'Exchange': 'NSE', 'accountId': 'SP220xx', 'Price': '1499.45', 'Trantype': 'S', 'companyname': 'HDFC BANK LTD', 'Exchtime': '09-Sep-2022 15:10:00', 'bqty': 1, 'Filldate': '09-Sep-2022', 'AlgoCategory': 'NA', 'Custofrm': 'C', 'expdate': 'NA', 'optiontype': 'XX', 'AlgoID': 'NA', 'Symbol': '1333', 'Filledqty': 172, 'Time': '09/09/2022 15:10:00', 'symbolname': 'HDFCBANK', 'BrokerClient': '--', 'NOReqID': '1', 'Tsym': 'HDFCBANK-EQ', 'Nstordno': '220909000161876', 'ReportType': 'fill', 'Expiry': 'NA', 'stat': 'Ok', 'PriceDenomenator': '1', 'panNo': 'xxxxxxxxx', 'PriceNumerator': '1', 'posflag': 'false', 'GeneralDenomenator': '1', 'FillId': '29599426', 'Fillqty': 10, 'series': 'EQ', 'GeneralNumerator': '1', 'user': 'SP220xx', 'remarks': '--', 'iSinceBOE': 1662716400}]
  ```


  Order properties such as TransactionType, OrderType, and others have been safely classified as enums so you don't have to write them out as strings.


  Transaction types indicate whether you want to buy or sell. Valid transaction types are of the following:

  * `TransactionType.Buy` - buy
  * `TransactionType.Sell` - sell


  Order type specifies the type of order you want to send. Valid order types include:

  * `OrderType.Market` - Place the order with a market price
  * `OrderType.Limit` - Place the order with a limit price (limit price parameter is mandatory)
  * `OrderType.StopLossLimit` - Place as a stop loss limit order
  * `OrderType.StopLossMarket` - Place as a stop loss market order
  * `OrderType.BracketOrder` - Place as a bracket order
  * `OrderType.AfterMarketOrder` - Place as a after market order


  Product types indicate the complexity of the order you want to place. Valid product types are:

  * `ProductType.Intraday` - Intraday order that will get squared off before market close
  * `ProductType.Delivery` - Delivery order that will be held with you after market close


  [Here](https://gist.github.com/krishnavelu/e0df312ccf5f022edb1823461ff4230e) is an example moving average strategy using alice blue API.
  This strategy generates a buy signal when 5-EMA > 20-EMA (golden cross) or a sell signal when 5-EMA < 20-EMA (death cross).


  Alice Blue now supports downloading historical data for back testing.
  1. Historical data API will be available from 5:30 PM (evening) to 8 AM (Next day morning) on weekdays (Monday to Friday). Historical data will not be available during market hours
  1. Historical data API will be available fully during weekends and holidays.
  1. For NSE segment, 2 years of historical data will be provided.
  1. For NFO, CDS and MCX segments, current expiry data will be provided.

  Code
  ```python
  print(alice.historical_data(alice.get_instrument_by_symbol("NSE", "INFY-EQ"),
                              datetime.datetime.now(),
                              datetime.datetime.now(),
                              HistoricalDataType.Minute))
  ```
  Sample Reponse
  ```
  {'stat': 'Ok', 'result': [{'volume': 130792.0, 'high': 1489.8, 'low': 1483.1, 'time': '2022-09-09 09:15:00', 'close': 1488.8, 'open': 1488.0}, {'volume': 33730.0, 'high': 1488.95, 'low': 1485.35, 'time': '2022-09-09 09:16:00', 'close': 1486.0, 'open': 1488.05}, {'volume': 28446.0, 'high': 1486.5, 'low': 1484.0, 'time': '2022-09-09 09:17:00', 'close': 1484.8, 'open': 1485.65}, {'volume': 33256.0, 'high': 1486.0, 'low': 1484.55, 'time': '2022-09-09 09:18:00', 'close': 1485.45, 'open': 1484.9}], 'message': None}
  ```

  Before creating an issue in this library, please follow the following steps.

  1. Search the problem you are facing is already asked by someone else. There might be some issues already there, either solved/unsolved related to your problem. Go to [issues](https://github.com/krishnavelu/alice_blue/issues) page, use `is:issue` as filter and search your problem. ![image](https://user-images.githubusercontent.com/38440742/85207058-376ee400-b2f4-11ea-91ad-c8fd8a682a12.png)
  2. If you feel your problem is not asked by anyone or no issues are related to your problem, then create a new issue.
  3. Describe your problem in detail while creating the issue. If you don't have time to detail/describe the problem you are facing, assume that I also won't be having time to respond to your problem.
  4. Post a sample code of the problem you are facing. If I copy paste the code directly from issue, I should be able to reproduce the problem you are facing.
  5. Before posting the sample code, test your sample code yourself once. Only sample code should be tested, no other addition should be there while you are testing.
  6. Have some print() function calls to display the values of some variables related to your problem.
  7. Post the results of print() functions also in the issue.
  8. Use the insert code feature of github to inset code and print outputs, so that the code is displayed neat. ![image](https://user-images.githubusercontent.com/38440742/85207234-4dc96f80-b2f5-11ea-990c-df013dd69cf2.png)
  9. If you have multiple lines of code, use triple grave accent ( ``` ) to insert multiple lines of code. [Example:](https://docs.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks) ![image](https://user-images.githubusercontent.com/38440742/89105781-343a3e00-d3f2-11ea-9f86-92dda88aa5bf.png)
  10. [Here](https://github.com/krishnavelu/alice_blue/issues/134#issuecomment-647016659) is an example of what I'm expecting while you are creating an issue.


pkgId: b868b3e16320d5dde82f07ef8e79470de68baf2f2a762b3c007fd166e6c1ce27
name: python-alice-ci
arch: src
version: 0.0.14
epoch: 0
release: 1
summary: Alice CI framework
url: https://git.gyulai.cloud/gyulaid/alice
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alice-ci-0.0.14-1.src.rpm
checksum_type: sha256
description:
  Continous Integration framework with the goal of using the exact same code in CI and local env. Steps can be defined in yaml files, for syntax see the docs. Runs on LInux and Windows, Mac should work too, but not yet tested.



  Install with pip:
  ```
  pythom3 -m pip install alice-ci
  ```

  To run:

  ```
  pythom3 -m alice [-i <ci.yaml>] STEPS
  ```


pkgId: 0b37598c38b055e0e2317da903b0b2f54b8eec56348009a6abad8daab1db4374
name: python-alice-ml
arch: src
version: 0.3.9
epoch: 0
release: 1
summary: ALICE - Automated Labeling of Independent Components for EEG
url: https://github.com/ALICE-EEG/alice-eeg-ml
rpm_license: UNKNOWN
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alice-ml-0.3.9-1.src.rpm
checksum_type: sha256
description:
  The project aims to develop a sustainable algorithm for EEG IC artifact removal and collect a publically available dataset.

  Read about out project in the recent [publication](https://www.frontiersin.org/articles/10.3389/fninf.2021.720229/full)

  `alice-ml` library contains pretrained ML models to label IC. It's compatible with [MNE](https://mne.tools/stable/index.html) library.



  * Python >= 3.7



  Currently only pip installation is supported

  ```
  pip install alice-ml
  ```


pkgId: 6734447d073fa01d7b334cd004849aada3cec0fe2055c4b4aea013e54ffeeac9
name: python-alicebot
arch: src
version: 0.11.0
epoch: 0
release: 1
summary: A simply asynchronous python chatbot framework.
url: https://docs.alicebot.dev/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alicebot-0.11.0-1.src.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://docs.alicebot.dev/"><img src="https://raw.githubusercontent.com/AliceBotProject/alicebot/master/docs/public/logo.png" width="200" height="200" alt="logo"></a>



  **简单的 Python 异步多后端机器人框架**

  </div>

  <div align="center">
    <a href="https://raw.githubusercontent.com/AliceBotProject/alicebot/master/LICENSE">
      <img src="https://img.shields.io/github/license/AliceBotProject/alicebot" alt="license">
    </a>
    <a href="https://pypi.python.org/pypi/alicebot">
      <img src="https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fgithub.com%2FAliceBotProject%2Falicebot%2Fraw%2Fmaster%2Fpyproject.toml" alt="pypi">
    </a>
    <a href="https://pypi.python.org/pypi/alicebot">
      <img src="https://img.shields.io/pypi/v/alicebot" alt="pypi">
    </a>
    <a href="https://github.com/AliceBotProject/alicebot/">
      <img src="https://img.shields.io/github/stars/AliceBotProject/alicebot?style=social" alt="github">
    </a>
    <br />
    <a href="https://github.com/psf/black">
      <img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="black">
    </a>
    <a href="https://github.com/astral-sh/ruff">
      <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" alt="ruff">
    </a>
    <a href="https://github.com/pylint-dev/pylint">
      <img src="https://img.shields.io/badge/linting-pylint-blue" alt="pylint">
    </a>
    <a href="https://github.com/Microsoft/pyright">
      <img src="https://img.shields.io/badge/type%20checker-pyright-yellowgreen" alt="pyright">
    </a>
    <a href="https://github.com/python/mypy">
      <img src="https://img.shields.io/badge/type%20checker-mypy-blue" alt="mypy">
    </a>
    <br />
    <a href="https://codecov.io/gh/AliceBotProject/alicebot">
      <img src="https://codecov.io/gh/AliceBotProject/alicebot/graph/badge.svg?token=3H6ZU6NN0J" alt="codecov">
    </a>
    <a href="https://github.com/AliceBotProject/alicebot/actions/workflows/test.yml">
      <img src="https://github.com/AliceBotProject/alicebot/actions/workflows/test.yml/badge.svg?branch=master&event=push" alt="github">
    </a>
    <a href="https://github.com/AliceBotProject/alicebot/actions/workflows/lint.yml">
      <img src="https://github.com/AliceBotProject/alicebot/actions/workflows/lint.yml/badge.svg?branch=master&event=push" alt="github">
    </a>
    <a href="https://github.com/AliceBotProject/alicebot/actions/workflows/docs.yml">
      <img src="https://github.com/AliceBotProject/alicebot/actions/workflows/docs.yml/badge.svg?branch=master&event=push" alt="github">
    </a>
    <br />
    <a href="https://jq.qq.com/?_wv=1027&k=ZbE3p6tq">
      <img src="https://img.shields.io/badge/QQ%E7%BE%A4-674802046-orange" alt="qq-group">
    </a>
  </div>

  <p align="center">
    <a href="https://docs.alicebot.dev/">文档</a>
    ·
    <a href="https://docs.alicebot.dev/guide/">指南</a>
    ·
    <a href="https://docs.alicebot.dev/guide/">API 参考</a>
    ·
    <a href="https://github.com/AliceBotProject/alicebot-example">示例</a>
  </p>



  AliceBot 是一个简单的 Python 异步多后端机器人框架，支持多种协议适配，可以轻松地编写易于学习和使用的插件来拓展其功能。

  本项目受到了 [NoneBot](https://github.com/nonebot/nonebot2/) 项目的启发，您可以在[对比](#对比)小节中查看这两个项目的异同，以便您选择更适合自己的机器人框架。



  - **简单**：AliceBot 使用了非常灵活且易于使用的插件编写方式，您只需要编写两个方法即可实现一个功能强大的插件。
  - **灵活**：AliceBot 的适配协议并不与任何一种库或网络协议绑定，您可以自由选择或编写适合您的适配器。
  - **高效**：AliceBot 基于 Python 的异步 I/O，轻松处理大量请求。较少的封装，在保持易用的同时追求最好的性能。

  目前 AliceBot 官方维护了以下协议适配：

  - [OneBot (CQHTTP) 协议](https://github.com/botuniverse/onebot-11) (支持 QQ 等) [ws](https://github.com/botuniverse/onebot-11/blob/master/communication/ws.md) 和 [ws-reverse](https://github.com/botuniverse/onebot-11/blob/master/communication/ws-reverse.md) 连接方式
  - [OneBot v12 协议](https://12.onebot.dev/) 的 [ws](https://12.onebot.dev/connect/communication/websocket/) 和 [ws-reverse](https://12.onebot.dev/connect/communication/websocket-reverse/) 连接方式
  - [mirai-api-http 协议](https://github.com/project-mirai/mirai-api-http) 2.0+ [ws](https://github.com/project-mirai/mirai-api-http/blob/master/docs/adapter/WebsocketAdapter.md) 和 [reverse-ws](https://github.com/project-mirai/mirai-api-http/blob/master/docs/adapter/ReverseWebsocketAdapter.md) 连接方式
  - [钉钉](https://developers.dingtalk.com/document/robots/robot-overview)企业机器人的 outgoing (回调) 连接方式
  - [Telegram](https://core.telegram.org/bots) 机器人的 polling 和 webhook 连接方式

  更多协议正在适配中 ...

  更多信息：[简介 - AliceBot 文档](https://docs.alicebot.dev/guide/)



  1. 安装：

     ```bash
     pip install alicebot[all]
     ```

  2. 第一个 AliceBot 项目：

     ```python
     from alicebot import Bot

     bot = Bot()
     bot.load_adapters("alicebot.adapter.cqhttp")

     bot.run()
     ```

  3. 第一个 AliceBot 插件：

     ```python
     from alicebot import Plugin


     class Echo(Plugin):
         async def handle(self) -> None:
             await self.event.reply(self.event.message.replace("echo ", ""))

         async def rule(self) -> bool:
             if self.event.adapter.name != "cqhttp":
                 return False
             if self.event.type != "message":
                 return False
             return self.event.message.startswith("echo ")
     ```

  更多信息请参阅 AliceBot [文档](https://docs.alicebot.dev/)。



  本项目受到了 [NoneBot](https://github.com/nonebot/nonebot2) 项目的启发，以下简单介绍两者的异同。

  相同点：

  - 两者都是使用 Python 编写的，使用了协程异步的高性能机器人框架。
  - 两者都支持多种协议。
  - 两者都会对机器人收到的事件进行解析和处理，并按优先级分发给插件 (事件响应器) 来完成具体的功能。
  - 两者都基于 MIT 协议开源，这意味着您可以在遵循协议的前提下任意使用本项目。

  不同点：

  - 总的来说，NoneBot 是一个较为全面的机器人框架，而 AliceBot 是一个小巧简洁的机器人框架，它不包含一些复杂的高级特性，但更加灵活且易于学习。
  - AliceBot 的插件编写风格和 NoneBot 不同，相对而言，AliceBot 更加注重于易于入门和“渐进式框架”，这意味着 AliceBot 大部分的功能都是可选的，您只需要了解很少的知识即可开始使用，随着项目规模的扩大和复杂性的增加，您可以继续深入需要的特性，而不需要一开始就掌握全部的特性。“它是一个可以与你共同成长、适应你不同需求的框架。”
  - NoneBot 在实现上与 HTTP / WebSocket 通讯协议深度绑定，它需要一个支持 ASGI 服务器协议的“驱动器”，而 AliceBot 并不与任何协议绑定，它甚至可以用来驱动您的树莓派智能音箱。当然，如果您只需要一个支持常见网络聊天工具的机器人框架的话，它们并没有什么区别。
  - NoneBot 拥有相对庞大的用户基数和社区规模，也拥有数量众多的插件，而 AliceBot 则是一个新生项目，这意味着如果您使用 NoneBot 您可能会更加容易找到已经编写完毕的您感兴趣的插件，并且您当您遇到问题时也能够更快地查找到相关资料或者获得解答。

  总而言之，两者有着各自的特点，您可以根据需要选用。



  AliceBot 采用 MIT 许可证开放源代码。

  本项目的图标由**迷糊小梦神**绘制，作为本项目的一部分，使用与本项目相同的许可证开放使用。


pkgId: cabb8ba6f5ce57010f5fae957185ac95138ce81bb673aaefc1852fc471b0bdf1
name: python-alicebot-adapter-apscheduler
arch: src
version: 0.11.0
epoch: 0
release: 1
summary: APScheduler adapter for AliceBot.
url: https://docs.alicebot.dev/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alicebot-adapter-apscheduler-0.11.0-1.src.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://docs.alicebot.dev/"><img src="https://raw.githubusercontent.com/AliceBotProject/alicebot/master/docs/public/logo.png" width="200" height="200" alt="logo"></a>



  **APScheduler 定时任务**

  </div>


pkgId: 5b442c358cfe7bf72ae3a20e539d779cb673430d8b9012fe703fae6f1378fbc9
name: python-alicebot-adapter-cqhttp
arch: src
version: 0.11.0
epoch: 0
release: 1
summary: OneBot(CQHTTP) adapter for AliceBot.
url: https://docs.alicebot.dev/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alicebot-adapter-cqhttp-0.11.0-1.src.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://docs.alicebot.dev/"><img src="https://raw.githubusercontent.com/AliceBotProject/alicebot/master/docs/public/logo.png" width="200" height="200" alt="logo"></a>



  **OneBot(CQHTTP) 协议适配**

  </div>


pkgId: 8244dc3763cb9c2cd3242968e2c45b114cecf6fee675952411670de1a3fe08db
name: python-alicebot-adapter-dingtalk
arch: src
version: 0.11.0
epoch: 0
release: 1
summary: DingTalk adapter for AliceBot.
url: https://docs.alicebot.dev/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alicebot-adapter-dingtalk-0.11.0-1.src.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://docs.alicebot.dev/"><img src="https://raw.githubusercontent.com/AliceBotProject/alicebot/master/docs/public/logo.png" width="200" height="200" alt="logo"></a>



  **钉钉协议适配**

  </div>


pkgId: b210a50cec99837fb178fce77b8346eb5e16da2c973f8177bddce6977a9488d7
name: python-aliendev-cdk
arch: src
version: 0.1.39
epoch: 0
release: 1
summary: please add a summary manually as the author left a blank one
url: https://pypi.org/project/aliendev-cdk/
rpm_license: UNKNOWN
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aliendev-cdk-0.1.39-1.src.rpm
checksum_type: sha256
description:
  The CDK (Cloud Development Kit) module is a critical component of the serverless API, allowing clients to manage the deployment and configuration of the infrastructure required for the API's operation. It provides a simple and intuitive way to define and configure the necessary resources, such as AWS Lambda functions, API Gateway, and IAM roles, that are needed to run the API effectively.

  By leveraging the power of the CDK, clients can easily define and deploy their serverless API infrastructure using familiar programming languages like TypeScript or Python. The CDK abstracts the underlying cloud infrastructure, providing a more user-friendly way to manage and maintain the API's components.

  Some of the key features of the CDK module include:

  - Easy-to-use APIs for defining and deploying infrastructure resources
  - Built-in support for popular AWS services like Lambda, API Gateway, and IAM
  - Comprehensive documentation and examples to get started quickly
  - Automatic dependency management and resource tracking to simplify maintenance and updates

  Using the CDK module, clients can quickly and easily deploy their serverless API with confidence, knowing that the underlying infrastructure is well-defined and optimized for performance and scalability.

  To get started with the CDK module, refer to the documentation and examples provided in the cdk directory of this repository. From there, you can explore the APIs and learn how to define and deploy your serverless API infrastructure with ease.




  ```pip install aliendev-cdk```





  - Create project base template ```aliendev-cdk init```
  and enter your project name
  - For Register aliendev account ```aliendev-cdk register```
  - Login into your account ```aliendev-cdk login```
  - Sign Out using ```aliendev-cdk logout```


  ```aliendev-cdk deploy```


pkgId: d78db9423f28547321b1bea854944d495805f3f2e569ab34bb5b9ce2ec6cab84
name: python-alienpy
arch: src
version: 1.6.3
epoch: 0
release: 1
summary: Websocket based cli interface for ALICE experiment GRID infrastructure
url: https://gitlab.cern.ch/jalien/xjalienfs
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alienpy-1.6.3-1.src.rpm
checksum_type: sha256
description:
  For debugging purposes there are a few environment toggles :
  * ALIENPY_JSON - print the unprocessed json message from the server


pkgId: 0a607b7ebcec1a002b22f638fd360ca52f207251148194dcc274d9bac01e95a1
name: python-alifedata-phyloinformatics-convert
arch: src
version: 0.16.3
epoch: 0
release: 1
url: https://github.com/mmore500/alifedata-phyloinformatics-convert
rpm_license: MIT license
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alifedata-phyloinformatics-convert-0.16.3-1.src.rpm
checksum_type: sha256
summary:
  alifedata-phyloinformatics-convert helps apply traditional phyloinformatics software to alife standardized data


pkgId: 9a83b9218b79fb63ebd405c60ed2b68824210d2a0c4cba4ecf5ecb12d2c8db38
name: python-align-phonemes
arch: src
version: 0.12
epoch: 0
release: 1
summary: Phoneme Aligner
url: https://github.itap.purdue.edu/kumar603/align_phonemes
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-align-phonemes-0.12-1.src.rpm
checksum_type: sha256
description:
  This package was designed to intake human data from Makin Lab (.txt and .wav file from the block needed phoneme alignment) and ouput a JSON file with the mike-on and mike-off times and the alignments (start time, transcription method, production 1, phoneme list 1, production 2, phoneme list 2).



  These instructions will give you a copy of the project up and running on
  your local machine for development and testing purposes.



  This is a pip installable package. Therefore, run the following command:
  ____________________________________________________




    input: block txt path, block wav path, output transcription json path, transcription method, critical error threshold, verbose
    functionality:
      - determine which transcript will be used based on transcription method input (Critical Error, Wav2Vec, Original)
      - run Montreal Forced aligner (input trials directory and verbose and returns text grid)
      - demarcate JSON
      - clean directories
     ____________________________________________________


    input: trial directory, block path, text grid directory, output json file path
    functionality:
    - read textgrid
    - use ER-demarcation Algorithm to denote phoneme split
    - use ER-demarcation to denote transcript split
    - write to Phoneme Json (see output format)
    ____________________________________________________


    input: list of temp directories created
    functionality: clean and remove directory
    ____________________________________________________


    input: wav file path, txt file path, trials directory, verbose
    functionality:
    - create a Trial Directory (same name as the label): each trial is a .wav and a .txt
    - Trial Directory:
  	Trials dir:
  		trial.wav
  		trial.txt
  		...
  	Trial transcription method .json

    TranscriptionMethod.json format:
    {
      trial start-time (float): method ('wav2vec' or 'original'),
      ...
    }
    ____________________________________________________


  For a more in depth explanation in the methods used in this package, as well as the reasoning behind, refer back to the paper.



    - **James Willian Stonebridge**
    - **Herbert Alexander de Bruyn**
    - **Tyler Dierckman**



  This project is licensed under the MIT License.



    - Varun implemented the original code for Wav2Vec2 based transcription used in this package.


pkgId: afa5b94fc81cc0b5bfe8b01991e964163182beb972d65ae6bfd687dbb1f9ab20
name: python-alignai
arch: src
version: 0.3.2
epoch: 0
release: 1
summary: Python SDK for Align AI
url: https://pypi.org/project/alignai/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alignai-0.3.2-1.src.rpm
checksum_type: sha256
description:
  ![PyPI Version](https://img.shields.io/pypi/v/alignai)
  ![Supported Python Version](https://img.shields.io/pypi/pyversions/alignai)
  ![License](https://img.shields.io/github/license/coxwave/alignai-sdk-python)

  This is the official server-side Python SDK for Align AI. This library allows you to easily send your data to Align AI.

  Visit the [full documentation](https://docs.tryalign.ai/python-sdk.html) to see the detailed usage.



  Install the Python SDK with pip:

  ```bash
  pip install alignai
  ```



  If you have any issues with the SDK, feel free to open Github issues and we'll get to it as soon as possible.

  We welcome your contributions and suggestions!


pkgId: 9e01a2455dbd0ba5a8137868688a6b37c2deb6121bb26189f1030f130240aa88
name: python-aligned_textgrid
arch: src
version: 0.7.4
epoch: 0
release: 1
summary: Classes for defining sequential information from TextGrids
url: https://forced-alignment-and-vowel-extraction.github.io/alignedTextGrid/
rpm_license: GPL-3.0-or-later
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aligned_textgrid-0.7.4-1.src.rpm
checksum_type: sha256
description:
  ![PyPI](https://img.shields.io/pypi/v/aligned-textgrid.png)
  [![Build](https://github.com/Forced-Alignment-and-Vowel-Extraction/alignedTextGrid/actions/workflows/test_and_run.yml/badge.svg)](https://github.com/Forced-Alignment-and-Vowel-Extraction/alignedTextGrid/actions/workflows/test_and_run.yml)
  [![codecov](https://codecov.io/gh/Forced-Alignment-and-Vowel-Extraction/alignedTextGrid/branch/dev/graph/badge.svg?token=27YSOQ5ZEL)](https://codecov.io/gh/Forced-Alignment-and-Vowel-Extraction/alignedTextGrid)
  [![Maintainability](https://api.codeclimate.com/v1/badges/2387cd247bd8f1211323/maintainability.png)](https://codeclimate.com/github/Forced-Alignment-and-Vowel-Extraction/alignedTextGrid/maintainability)
  [![Build
  Docs](https://github.com/Forced-Alignment-and-Vowel-Extraction/alignedTextGrid/actions/workflows/build-docs.yml/badge.svg)](https://forced-alignment-and-vowel-extraction.github.io/alignedTextGrid/)
  [![DOI](https://zenodo.org/badge/552633207.svg)](https://zenodo.org/badge/latestdoi/552633207)

  The aligned-textgrid package provides a python interface for
  representing and operating on TextGrids produced by forced aligners like
  [FAVE](https://github.com/JoFrhwld/FAVE) or the [Montreal Forced
  Aligner](https://montreal-forced-aligner.readthedocs.io/en/latest/).
  Classes provided by aligned-textgrid represent hierarchical and
  precedence relationships among data stored in TextGrid formats allowing
  for simplified and more accessible analysis of aligned speech data.



  - You want to quickly loop through the Phone tier of a Textgrid, and
    *also* access information about the word it is a part of.
  - You want to quickly loop over the Word tier of a Textgrid and quickly
    count how many phones it has.
  - You want to programmatically merge together adjacent Textgrid
    intervals.

  For examples on how to use the pacakge, see the [Usage](https://forced-alignment-and-vowel-extraction.github.io/alignedTextGrid/usage) pages.



  <!-- TODO: documnet other package managers like conda -CB 14 March 2023 -->

  To install aligned-textgrid using pip, run the following command in your
  terminal:

  ``` bash
  pip install aligned-textgrid
  ```



  There are several other packages that parse Praat Textgrids, including

  - [praatio](http://timmahrt.github.io/praatIO/praatio.html)
  - [textgrid](https://github.com/kylebgorman/textgrid)

  `aligned-textgrid`’s goal is to capture hierarchical and sequential
  relationships represented in many TextGrids, and to make them easilly
  accessible to users via an intuitive interface. The goal is that from
  any arbitrary location within a TextGrid, users can easilly access
  information with minimally defensive coding.

  ![](doc_src/usage/resources/diagrams/hierarchy_precedence.svg)



  As an example, we’ll read in a textgrid produced with forced alignment
  that contains a single speaker with a word and phone tier.

  ``` python
  from aligned_textgrid import AlignedTextGrid, Word, Phone
  tg = AlignedTextGrid(
      textgrid_path='doc_src/usage/resources/josef-fruehwald_speaker.TextGrid',
      entry_classes=[Word, Phone]
      )
  ```

  Then, we can access an arbitrary phone interval.

  ``` python
  arbitrary_interval = tg[0].Phone[20]
  ```

  From this aribitrary interval, we can access information about the
  intervals preceding and following with the `.prev` and `.fol`
  attributes.

  ``` python
  print(arbitrary_interval.prev.label)
  print(arbitrary_interval.label)
  print(arbitrary_interval.fol.label)
  ```

      R
      EY1
      N

  We can also access information about the word this interval is nested
  within with the `.inword` attribute.

  ``` python
  print(arbitrary_interval.inword.label)
  ```

      raindrops

  The object returned by `.inword` is just another interval, meaning we
  can access informaton about *it’s* context with the `.prev` and `.fol`
  attributes as well.

  ``` python
  print(arbitrary_interval.inword.prev.label)
  print(arbitrary_interval.inword.label)
  print(arbitrary_interval.inword.fol.label)
  ```

      strikes
      raindrops
      in



  - To start jumping in, check out [the
    quickstart](https://forced-alignment-and-vowel-extraction.github.io/alignedTextGrid/usage/)
  - To learn more about navigating TextGrids and intervals, check out the
    usage pages on [navigating
    TextGrids](https://forced-alignment-and-vowel-extraction.github.io/alignedTextGrid/usage/01_TextGrids/01_tg-nav.html)
    and [navgiating
    sequences](https://forced-alignment-and-vowel-extraction.github.io/alignedTextGrid/usage/02_Sequences/00_sequence_structure.html)
  - To learn more about the attributes you can access from textgrids and
    sequences, see the usage pages on [TextGrid
    attributes](https://forced-alignment-and-vowel-extraction.github.io/alignedTextGrid/usage/01_TextGrids/02_tg-info.html)
    and [interval
    attributes](https://forced-alignment-and-vowel-extraction.github.io/alignedTextGrid/usage/02_Sequences/02_sequence_properties.html)

  You can also directly read up on [the function and class
  references](https://forced-alignment-and-vowel-extraction.github.io/alignedTextGrid/reference/).


pkgId: 72a35c460d13facedb535563ce6e2da605d943f725c04cf342b38460f5495e50
name: python-alignmentrs
arch: src
version: 0.9.0
epoch: 0
release: 1
summary: Quickly read and manipulate multiple sequence alignments in Python
url: https://github.com/kentwait/alignmentrs
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alignmentrs-0.9.0-1.src.rpm
checksum_type: sha256
description:
  Quickly read and manipulate multiple sequence alignments in Python



      pip install alignmentrs




  ```python
  >>> import alignmentrs as rs
  >>> aln = rs.Alignment.from_fasta('hiv.fna', 'HIV_alignment')
  >>> aln
  Alignment(nsamples=10, nsites=120, nmarkers=0)
  >>> aln.sample_ids
  ['sample01', 'sample02', 'sample03', 'sample04', 'sample05', 'sample06'
   'sample07', 'sample08', 'sample09', 'sample10']
  ```


  ```python
  >>> sites_to_remove = [i for i in range(120) if (i-2) % 3 != 0]  # remove 1st and 2nd position in codon triplet
  >>> aln.remove_sites(sites_to_remove, copy=False)  # manipulate inplace, copy=True returns a new copy
  Alignment(nsamples=10, nsites=40, nmarkers=0)
  ```


  ```python
  >>> sites_to_retain = list(range(2, 3, 120))  # third position in codon triplet
  >>> aln.retain_sites(sites_to_retain, copy=False)  # manipulate inplace, copy=True returns a new copy
  Alignment(nsamples=10, nsites=40, nmarkers=0)
  ```


  ```python
  >>> sub_aln = aln.subset(samples=['sample01', 'sample03', 'sample05'], sites=list(range(2, 3, 120)))
  >>> sub_aln
  Alignment(nsamples=3, nsites=40, nmarkers=0)
  ```



  [MIT License](https://github.com/kentwait/alignmentrs/blob/master/LICENSE)


pkgId: 95ae87dd220f0929fb2d4955ed1803e45902f76c0df5a6dabcaaea9f9fc18264
name: python-alignn
arch: src
version: 2024.10.30
epoch: 0
release: 1
summary: alignn
url: https://github.com/usnistgov/alignn
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alignn-2024.10.30-1.src.rpm
checksum_type: sha256
description:
  First create a conda environment:
  Install miniconda environment from https://conda.io/miniconda.html
  Based on your system requirements, you'll get a file something like 'Miniconda3-latest-XYZ'.
  Now,
  ```
  bash Miniconda3-latest-Linux-x86_64.sh (for linux)
  bash Miniconda3-latest-MacOSX-x86_64.sh (for Mac)
  ```
  Download 32/64 bit python 3.10 miniconda exe and install (for windows)

  Now, let's make a conda environment, say "my_alignn", choose other name as you like::
  ```
  conda create --name my_alignn python=3.10 -y
  conda activate my_alignn
  conda install dgl=2.1.0 pytorch torchvision torchaudio pytorch-cuda -c pytorch -c nvidia
  conda install alignn -y
  ```

  You can laso install a development version of alignn by cloning the repository and installing in place with pip:
  ```
  conda create --name my_alignn python=3.10 -y
  conda activate my_alignn
  conda install dgl=2.1.0 pytorch torchvision torchaudio pytorch-cuda -c pytorch -c nvidia
  git clone https://github.com/usnistgov/alignn
  cd alignn
  python -m pip install -e .
  ```

  As an alternate method, ALIGNN can also be installed using `pip`. Note, we have received several messages regarding dgl installation issues. You can look into dgl installation [here](https://www.dgl.ai/pages/start.html). Example for PyTorch 2.1+CUDA 12.1+Pip(Stable)+Windows:
  ```
  pip install  -q dgl -f https://data.dgl.ai/wheels/torch-2.1/cu121/repo.html
  pip install alignn
  ```
  With no GPU/CUDA:
  ```
  pip install -q dgl -f https://data.dgl.ai/wheels/torch-2.1/repo.html
  pip install alignn
  ```
  You can find out installation examples in Google Colab notebooks below
  <a name="example"></a>


pkgId: 4fa5e51a991368747d63c72828445c8d4627538136f55af7b2c31456dcc5110b
name: python-alignn
arch: src
version: 2024.8.30
epoch: 0
release: 1
summary: alignn
url: https://github.com/usnistgov/alignn
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alignn-2024.8.30-1.src.rpm
checksum_type: sha256
description:
  First create a conda environment:
  Install miniconda environment from https://conda.io/miniconda.html
  Based on your system requirements, you'll get a file something like 'Miniconda3-latest-XYZ'.
  Now,
  ```
  bash Miniconda3-latest-Linux-x86_64.sh (for linux)
  bash Miniconda3-latest-MacOSX-x86_64.sh (for Mac)
  ```
  Download 32/64 bit python 3.10 miniconda exe and install (for windows)

  Now, let's make a conda environment, say "my_alignn", choose other name as you like::
  ```
  conda create --name my_alignn python=3.10
  conda activate my_alignn
  conda install alignn -y
  ```

  If you need CUDA support, it's best to install PyTorch and DGL before installing alignn to ensure that you get a CUDA-enabled version of DGL.
  ```
  conda install dgl=2.1.0 pytorch torchvision torchaudio pytorch-cuda -c pytorch -c nvidia
  ```

  You can laso install a development version of alignn by cloning the repository and installing in place with pip:
  ```
  git clone https://github.com/usnistgov/alignn
  cd alignn
  python -m pip install -e .
  ```

  As an alternate method, ALIGNN can also be installed using `pip` command as follows:
  ```
  pip install alignn
  pip install  dgl -f https://data.dgl.ai/wheels/torch-2.1/cu121/repo.html
  ```
  <a name="example"></a>


pkgId: 35f21f48ec71908c835cbe485141444dd3e8630091ba9df595981eb06ad38077
name: python-aligo
arch: src
version: 6.2.4
epoch: 0
release: 1
summary: aliyun drive sdk
url: https://github.com/foyoux/aligo
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aligo-6.2.4-1.src.rpm
checksum_type: sha256
description:
  <table align="center">
      <thead align="center">
      <tr>
          <td><h2>❤️‍🔥欢迎加入🤝🏼</h2></td>
      </tr>
      </thead>
      <tbody align="center">
      <tr>
          <td><img src="http://110.42.175.98/github/aligo/wechat.jpg#qrcode" alt="aligo反馈交流群"/></td>
      </tr>
      </tbody>
      <tfoot align="center">
      <tr>
          <td>😃 添加时，请附上留言消息 “aligo” 😜</td>
      </tr>
      </tfoot>
  </table>
  > 本来是群二维码，但是加进来发广告的太多了，所以改成了个人二维码。


pkgId: c9f61ad0ada541a7ca5e14b600300a3d7c9875e07bd8cdcc72e1c62832b3defc
name: python-alipai
arch: src
version: 0.4.11
epoch: 0
release: 1
summary: Alibaba Cloud PAI Python SDK
url: https://www.aliyun.com/product/bigdata/product/learn
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alipai-0.4.11-1.src.rpm
checksum_type: sha256
description:
  [English](./README_CN.md) \| 简体中文

  PAI Python SDK是阿里云 [机器学习平台 PAI(Platform for Artificial Intelligence)](https://www.aliyun.com/product/bigdata/learn) 提供的Python SDK，提供了更易用的HighLevel API，支持机器学习工程师简单地使用Python在PAI完成模型训练和部署，串联机器学习的流程。



  使用以下命令安装PAI Python SDK（支持Python版本 \>= 3.8）：

  ```shell
  python -m pip install pai
  ```



  请通过访问 [PAI Python SDK文档](https://pai.readthedocs.io/) 或是查看 [docs](./docs) 目录下的文件获取SDK的详细文档，包括用户指南和API文档。



  - 提交自定义训练任务

  以下代码演示了如何通过SDK提交一个自定义的训练作业:

  ```python
  from pai.estimator import Estimator
  from pai.image import retrieve

  est = Estimator(
      
      image_uri=retrieve(
          framework_name="PyTorch", framework_version="latest"
      ).image_uri,
      command="echo hello",
      
      
      instance_type="ecs.c6.large",
  )

  est.fit()
  print(est.model_data())

  ```

  - 部署大语言模型

  PAI提供了大量预训练模型，可以使用PAI Python SDK轻松部署：

  ```python
  from pai.model import RegisteredModel


  qwen_model = RegisteredModel("qwen1.5-7b-chat", model_provider="pai")


  p = qwen_model.deploy(service_name="qwen_service")


  p.predict(
      data={
          "prompt": "What is the purpose of life?",
          "system_prompt": "You are helpful assistant.",
          "temperature": 0.8,
      }
  )


  openai_client = p.openai()
  res = openai_client.chat.completions.create(
      model="default",
      max_tokens=1024,
      messages=[
          {"role": "system", "content": "You are a helpful assistant."},
          {"role": "user", "content": "What is the purpose of life?"}
      ]
  )
  print(res.choices[0].message.content)

  ```

  - 微调预训练模型

  通过PAI提供的微调脚本，提交一个模型微调任务

  ```python

  from pai.model import ModelTrainingRecipe

  training_recipe = ModelTrainingRecipe(
      model_name="qwen2-0.5b-instruct",
      model_provider="pai",
      instance_type="ecs.gn6e-c12g1.3xlarge",
  )

  training_recipe.train(
      inputs={
          
          "train": "<YourTrainingDataPath>"
      }
  )


  ```

  通过访问PAI提供的示例仓库，可以了解更多使用示例：[pai-examples](https://github.com/aliyun/pai-examples/tree/master/pai-python-sdk)



  我们欢迎为PAI Python SDK贡献代码。请阅读 [CONTRIBUTING](./CONTRIBUTING.md) 文件了解如何为本项目贡献代码。



  PAI Python SDK是由阿里云开发，并根据Apache许可证（版本2.0）授权使用。



  如需支持或咨询，请在GitHub仓库中提交issue，或通过钉钉群联系我们：

  <img src="./assets/dingtalk-group.png" alt="DingTalkGroup" width="500"/>


pkgId: 4b7e0fbc40ce7c875d4b1c5b8eab034f4d8295da9ccc2843c3b5afa3f9c6b60d
name: python-alipy
arch: src
version: 1.2.5
epoch: 0
release: 1
summary: Active Learning in Python
url: https://github.com/NUAA-AL/ALiPy
rpm_license: UNKNOWN
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alipy-1.2.5-1.src.rpm
checksum_type: sha256
description:
  Authors: Ying-Peng Tang, Guo-Xiang Li, [Sheng-Jun Huang](http://parnec.nuaa.edu.cn/huangsj)

  Online document: [http://parnec.nuaa.edu.cn/huangsj/alipy/](http://parnec.nuaa.edu.cn/huangsj/alipy/)



  ALiPy是一个基于Python实现的主动学习工具包，内置20余种主动学习算法，并提供包括数据处理、结果可视化等工具。ALiPy根据主动学习框架的不同部件提供了若干独立的工具类，这样一方面可以方便地支持不同主动学习场景，另一方面可以使用户自由地组织自己的项目，用户可以不必继承任何接口来实现自己的算法与替换项目中的部件。此外，ALiPy不仅支持多种不同的主动学习场景，如标注代价敏感，噪声标注者，多标记查询等。详细的介绍与文档请参考工具包的[官方网站](http://parnec.nuaa.edu.cn/huangsj/alipy/)。

  ALiPy provides a module based implementation of active learning framework, which allows users to conveniently evaluate, compare and analyze the performance of active learning methods. It implementations more than 20 algorithms and also supports users to easily implement their own approaches under different settings.

  Features of alipy include:

  * Model independent
  	- There is no limitation to the classification model. One can use SVM in sklearn or deep model in tensorflow as you need.

  * Module independent
  	- One can freely modify one or more modules of the toolbox without affection to the others.

  * Implement your own algorithm without inheriting anything
  	- There are few limitations of the user-defined functions, such as the parameters or names.

  * Variant Settings supported
  	- Noisy oracles, Multi-label, Cost effective, Feature querying, etc.

  * Powerful tools
  	- Save intermediate results of each iteration AND recover the program from any breakpoints.
  	- Parallel the k-folds experiment.
  	- Gathering, process and visualize the experiment results.
  	- Provide 25 algorithms.
  	- Support 7 different settings.

  For more detailed introduction and tutorial, please refer to the [website of alipy](http://parnec.nuaa.edu.cn/huangsj/alipy).



  You can get alipy simply by:

  ```
  pip install alipy
  ```

  Or clone alipy source code to your local directory and build from source:

  ```
  cd ALiPy
  python setup.py install
  ```

  The dependencies of alipy are:
  1. Python dependency

  ```
  python >= 3.4
  ```

  2. Basic Dependencies

  ```
  numpy
  scipy
  scikit-learn
  matplotlib
  prettytable
  ```

  3. Optional dependencies

  ```
  cvxpy
  ```

  Note that, the basic dependencies must be installed, and the optional dependencies are required only if users need to involke KDD'13 BMDR and AAAI'19 SPAL methods in alipy. (cvxpy will not be installed through `pip install alipy`.)



  The tool classes provided by alipy cover as many components in active learning as possible. It aims to support experiment implementation with miscellaneous tool functions. These tools are designed in a low coupling way in order to let users to program the experiment project at their own customs.

  * Using `alipy.data_manipulate` to preprocess and split your data sets for experiments.

  * Using `alipy.query_strategy` to invoke traditional and state-of-the-art methods.

  * Using `alipy.index.IndexCollection` to manage your labeled indexes and unlabeled indexes.

  * Using `alipy.metric` to calculate your model performances.

  * Using `alipy.experiment.state` and `alipy.experiment.state_io` to save the intermediate results after each query and recover the program from the breakpoints.

  * Using `alipy.experiment.stopping_criteria` to get some example stopping criteria.

  * Using `alipy.experiment.experiment_analyser` to gathering, process and visualize your experiment results.

  * Using `alipy.oracle` to implement clean, noisy, cost-sensitive oracles.

  * Using `alipy.utils.multi_thread` to parallel your k-fold experiment.



  ALiPy provide several commonly used strategies for now, and new algorithms will continue to be added in subsequent updates.

  * AL with Instance Selection: Uncertainty (SIGIR 1994), Graph Density (CVPR 2012), QUIRE (TPAMI 2014), SPAL (AAAI 2019), Query By Committee (ICML 1998), Random, BMDR (KDD 2013), LAL (NIPS 2017), Expected Error Reduction (ICML 2001)

  * AL for Multi-Label Data: AUDI (ICDM 2013) , QUIRE (TPAMI 2014) , Random, MMC (KDD 2009), Adaptive (IJCAI 2013)

  * AL by Querying Features: AFASMC (KDD 2018) , Stability (ICDM 2013) , Random

  * AL with Different Costs: HALC (IJCAI 2018) , Random , Cost performance

  * AL with Noisy Oracles: CEAL (IJCAI 2017) , IEthresh (KDD 2009) , All, Random

  * AL with Novel Query Types: AURO (IJCAI 2015)

  * AL for Large Scale Tasks: Subsampling



  In alipy, there is no limitation for your implementation. All you need is ensure the returned selected index is a subset of unlabeled indexes.

  ```
  select_ind = my_query(unlab_ind, **my_parameters)
  assert set(select_ind) < set(unlab_ind)
  ```



  There are 2 ways to use alipy. For a high-level encapsulation, you can use alipy.experiment.AlExperiment class. Note that, AlExperiment only support the most commonly used scenario - query all labels of an instance. You can run the experiments with only a few lines of codes by this class. All you need is to specify the various options, the query process will be run in multi-threaded. Note that, if you want to implement your own algorithm with this class, there are some constraints have to be satisfied, please see api reference for this class.

  ```
  from sklearn.datasets import load_iris
  from alipy.experiment.al_experiment import AlExperiment

  X, y = load_iris(return_X_y=True)
  al = AlExperiment(X, y, stopping_criteria='num_of_queries', stopping_value=50,)
  al.split_AL()
  al.set_query_strategy(strategy="QueryInstanceUncertainty", measure='least_confident')
  al.set_performance_metric('accuracy_score')
  al.start_query(multi_thread=True)
  al.plot_learning_curve()
  ```

  To customize your own active learning experiment, it is recommended to follow the examples provided in the ALiPy/examples and tutorial in [alipy main page](http://parnec.nuaa.edu.cn/huangsj/alipy), pick the tools according to your usage. In this way, on one hand, the logic of your program is absolutely clear to you and thus easy to debug. On the other hand, some parts in your active learning process can be substituted by your own implementation for special usage.

  ```
  import copy
  from sklearn.datasets import load_iris
  from alipy import ToolBox

  X, y = load_iris(return_X_y=True)
  alibox = ToolBox(X=X, y=y, query_type='AllLabels', saving_path='.')


  alibox.split_AL(test_ratio=0.3, initial_label_rate=0.1, split_count=10)


  model = alibox.get_default_model()


  stopping_criterion = alibox.get_stopping_criterion('num_of_queries', 50)


  QBCStrategy = alibox.get_query_strategy(strategy_name='QueryInstanceQBC')
  QBC_result = []

  for round in range(10):
      
      train_idx, test_idx, label_ind, unlab_ind = alibox.get_split(round)
      
      saver = alibox.get_stateio(round)

      while not stopping_criterion.is_stop():
          
          
          select_ind = QBCStrategy.select(label_ind, unlab_ind, model=None, batch_size=1)
          label_ind.update(select_ind)
          unlab_ind.difference_update(select_ind)

          
          model.fit(X=X[label_ind.index, :], y=y[label_ind.index])
          pred = model.predict(X[test_idx, :])
          accuracy = alibox.calc_performance_metric(y_true=y[test_idx],
                                                    y_pred=pred,
                                                    performance_metric='accuracy_score')

          
          st = alibox.State(select_index=select_ind, performance=accuracy)
          saver.add_state(st)
          saver.save()

          
          stopping_criterion.update_information(saver)
      
      stopping_criterion.reset()
      QBC_result.append(copy.deepcopy(saver))

  analyser = alibox.get_experiment_analyser(x_axis='num_of_queries')
  analyser.add_method(method_name='QBC', method_results=QBC_result)
  print(analyser)
  analyser.plot_learning_curves(title='Example of AL', std_area=True)
  ```



  Please cite our work:

  ```
  Tang, Y.-P.; Li, G.-X.; and Huang, S.-J. 2019. ALiPy: Active learning in python.
  Technical report, Nanjing University of Aeronautics and Astronautics.
  available as arXiv preprint https://arxiv.org/abs/1901.03802.
  ```

  ```
  @techreport{TLHalipy,
    author = {Ying-Peng Tang and Guo-Xiang Li and Sheng-Jun Huang},
    title = {{ALiPy}: Active Learning in Python},
    institution = {Nanjing University of Aeronautics and Astronautics},
    url = {https://github.com/NUAA-AL/ALiPy},
    note = {available as arXiv preprint \url{https://arxiv.org/abs/1901.03802}},
    month = jan,
    year = 2019
  }
  ```


pkgId: 0c183427d45f36bddce69ae793bc0e618bf670c43bad68e65ca9340c74314d21
name: python-aliros
arch: src
version: 1.5.0
epoch: 0
release: 1
summary: A command-line tool to organize resources by Resource Orchestration Service for Alibaba Cloud.
url: https://github.com/garrett-he/aliros
rpm_license: GPL-3.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aliros-1.5.0-1.src.rpm
checksum_type: sha256
description:
  ![License](https://img.shields.io/github/license/garrett-he/aliros)
  ![GitHub Workflow](https://img.shields.io/github/actions/workflow/status/garrett-he/aliros/ubuntu-jammy.yml)
  ![Version](https://img.shields.io/pypi/v/aliros)
  ![Python Versions](https://img.shields.io/pypi/pyversions/aliros)
  ![Downloads](https://img.shields.io/pypi/dm/aliros)

  A command-line tool to organize resources by [Resource Orchestration Service][1]
  for [Alibaba Cloud][2].



  ```
  Usage: aliros [OPTIONS] COMMAND [ARGS]...

    A command-line tool to organize resources by Resource Orchestration Service
    for Alibaba Cloud.

  Options:
    --version       Show version information.
    --region TEXT   Target region to use
    --profile TEXT  Name of profile to use
    --help          Show this message and exit.

  Commands:
    abandon-stack                   Abandon the specified stack.
    create-stack                    Create a new stack.
    delete-stack                    Delete the specified stack.
    describe-resource-type          Describe resource type.
    describe-resource-type-template Describe resource type template.
    describe-stack                  Describe the specified stack.
    describe-stack-resource         Describe the specified resource in stack.
    describe-stack-template         Describe template of the specified stack.
    list-regions                    List available regions.
    list-resource-types             List available resource types.
    list-stack-events               List events of the specified stack.
    list-stack-resources            List resources of the specified stack.
    list-stacks                     List stacks.
    preview-stack                   Preview of creating stack.
    update-stack                    Update the specified stack.
    validate-template               Validate the specified template.

  ```



  Copyright (C) 2024 Garrett HE <garrett.he@outlook.com>

  The GNU General Public License (GPL) version 3, see [COPYING](./COPYING).

  [1]: https://www.alibabacloud.com/help/doc-detail/28852.html

  [2]: https://www.alibabacloud.com


pkgId: 84cd5c7602f2a9ca9312656e0533e92a67031965b86d2a6c7a0fcac4abdacf16
name: python-alist-mikananirss
arch: src
version: 0.1.6
epoch: 0
release: 1
url: https://pypi.org/project/alist-mikananirss/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alist-mikananirss-0.1.6-1.src.rpm
checksum_type: sha256
summary:
  Automatically fetch anime updates from the Mikan Project's RSS feed and offline download them to the cloud drive through Alist.

description:
  [使用文档](https://github.com/TwooSix/Alist-MikananiRss/wiki/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B) | [开发指南](https://github.com/TwooSix/Alist-MikananiRss/wiki/%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97)

  - 自动获取番剧更新并下载至对应网盘
  - 通过PushPlus, Telegram等渠道发送更新通知
  - 自动重命名为emby可识别格式

  1. 请自行参照[Alist](https://github.com/alist-org/alist)项目文档部署Alist（版本须>=3.29.0），并搭建好Aria2/qBittorrent离线下载
  2. 自行注册蜜柑计划账户，订阅番剧，获取订阅链接

  1. 请确保你的python版本在3.11以上
  2. 使用pip安装: `pip install alist-mikananirss`
  3. 在目录下新建一个`config.yaml`配置文件，并填写配置文件如下(完整功能示例详解见[配置说明](https://github.com/TwooSix/Alist-MikananiRss/wiki/%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E))
     ```yaml
     common:
       interval_time: 300
     alist:
       base_url: https://example.com # 修改为你的alist访问地址
       token: alist-xxx # 修改为你的alist token；可在"管理员后台->设置->其他"中找到
       downloader: qBittorrent # 或者 aria2
       download_path: Onedrive/Anime # 修改为你的下载路径，相对于alist根目录
     mikan:
       subscribe_url:
         - https://mikanani.me/RSS/MyBangumi?token=xxx # 修改为你的蜜柑订阅地址
     filters:
       - 非合集
     ```
  4. 运行代码：`python -m alist_mikananirss --config /path/to/config.yaml`
  5. Enjoy
  更多的运行方法详见[使用文档](https://github.com/TwooSix/Alist-MikananiRss/wiki/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B)

  <div align=center>
  <img src="https://github.com/TwooSix/Alist-MikananiRss/blob/master/imgs/show_pic1.png"/>
  </div>


pkgId: 508a5b61cdc15234c24605258adf6048233dfab8fb6d6e2474592da0f66e5ba5
name: python-alist-sdk
arch: src
version: 0.37.15
epoch: 0
release: 1
summary: Alist API 简单封装.
url: https://github.com/lee-cq/alist-sdk
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alist-sdk-0.37.15-1.src.rpm
checksum_type: sha256
description:
  [![Alist SDK - Test](https://github.com/lee-cq/alist-sdk/actions/workflows/CI.yaml/badge.svg)](https://github.com/lee-cq/alist-sdk/actions/workflows/CI.yaml)

  Alist API 简单封装





  从PyPI安装最新release版本
  `pip install alist-sdk`

  从GitHub安装dev版本
  `pip install git+https://github.com/lee-cq/alist-sdk.git`



  客户端或异步客户端方法签名于API基本一致。

  ```python

  from alist_sdk import Client

  client = Client(
      base_url='http://localhost:5244',
      username="",
      password="",
      token="",  # 与 Username Password 二选一
  )

  client.me()
  client.mkdir("/local/test")
  ```

  ```python

  import asyncio
  from alist_sdk import AsyncClient

  client = AsyncClient(
      base_url='http://localhost:5244',
      username="",
      password="",
      token="",  # 与 Username Password 二选一
  )

  asyncio.run(client.me())
  ```

  像使用pathlib一样操作Alist上的文件。
  但是需要注意的是，AlistPath全部使用的同步方法（与Pathlib API保持一致）。
  如果需要异步操作，可以使用`asyncio.to_thread`将同步方法转为异步方法。

  ```python
  from alist_sdk.path_lib import login_server, AlistPath


  login_server("http://localhost:5244", username='admin', password='123456')
  path = AlistPath('http://localhost:5244/test')


  path = AlistPath('http://localhost:5244/test', username='admin', password='123456')

  path.stat()
  path.is_dir()
  path.read_text()
  path.iterdir()
  ```



  Alist SDK 提供了2个命令行工具，可以方便的操作Alist。

  1. `alist-cli`：命令行工具，可以快速的操作Alist。
  2. `alist-fs`：(`alist-cli fs` 的别名)文件相关操作，包括上传、下载、删除、查看文件信息等。

  ```
  Usage: alist-cli [OPTIONS] COMMAND [ARGS]...
  Options:
  │ --install-completion          Install completion for the current shell.                                                                                                                                                            │
  │ --show-completion             Show completion for the current shell, to copy it or customize the installation.                                                                                                                     │
  │ --help

  Commands:
  │ admin   管理命令                                                                                                                                                                                                                   │
  │ auth    Authentication commands.                                                                                                                                                                                                   │
  │ fs      文件系统相关操作
  ```


pkgId: 403a6ac7da7b183ef6c618a7760c5b8bee9f7559dc411d4a0f3a69e08bc80c4b
name: python-alist_proxy
arch: src
version: 0.0.9.1
epoch: 0
release: 1
summary: Python alist proxy and monitor.
url: https://github.com/ChenyangGao/web-mount-packs/tree/main/python-alist-proxy
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alist_proxy-0.0.9.1-1.src.rpm
checksum_type: sha256
description:
  你可以从 [pypi](https://pypi.org/project/alist_proxy/) 安装

  ```console
  pip install -U alist_proxy
  ```





  ```python
  >>> import alist_proxy
  >>> help(alist_proxy)
  Help on package alist_proxy:

  NAME
      alist_proxy - # encoding: utf-8

  PACKAGE CONTENTS
      __main__

  FUNCTIONS
      make_application(base_url: str = 'http://localhost:5244', collect: None | collections.abc.Callable[[dict], typing.Any] = None, project: None | collections.abc.Callable[[dict], typing.Any] = None, methods: list[str] = ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH', 'MKCOL', 'COPY', 'MOVE', 'PROPFIND', 'PROPPATCH', 'LOCK', 'UNLOCK', 'REPORT', 'ACL'], threaded: bool = False) -> blacksheep.server.application.Application
          创建一个 blacksheep 应用，用于反向代理 alist，并持续收集每个请求事件的消息

          :param alist_token: alist 的 token，提供此参数可在 115 网盘遭受 405 风控时自动扫码刷新 cookies
          :param base_url: alist 的 base_url
          :param collect: 调用以收集 alist 请求事件的消息（在 project 调用之后），如果为 None，则输出到日志
          :param webhooks: 一组 webhook 的链接，事件会用 POST 请求发送给每一个链接，响应头为 {"Content-type": "application/json; charset=utf-8"}
          :param project: 调用以对请求事件的消息进行映射处理，如果结果为 None，则丢弃此消息
          :param methods: 需要监听的 HTTP 方法集
          :param threaded: collect 和 project，如果不是 async 函数，就放到单独的线程中运行

          :return: 一个 blacksheep 应用，你可以二次扩展，并用 uvicorn 运行

      make_application_with_fs_event_stream(alist_token: str, base_url: str = 'http://localhost:5244', db_uri: str = 'sqlite')
          只收集和文件系统操作有关的事件，存储到 redis streams，并且可以通过 websocket 拉取

          :param alist_token: alist 的 token，用来追踪后台任务列表（若不提供，则不追踪任务列表）
          :param base_url: alist 的 base_url
          :param db_uri: 数据库连接的 URI，格式为 "{dbtype}://{host}:{port}/{path}

              - dbtype: 数据库类型，目前仅支持 "sqlite"、"mongodb" 和 "redis"
              - host: （非 "sqlite"）ip 或 hostname，如果忽略，则用 "localhost"
              - port: （非 "sqlite"）端口号，如果忽略，则自动使用此数据库的默认端口号
              - path: （限 "sqlite"）文件路径，如果忽略，则为 ""（会使用一个临时文件）

              如果你只输入 dbtype 的名字，则视为 "{dbtype}://"
              如果你输入了值，但不能被视为 dbtype，则自动视为 path，即 "sqlite:///{path}"
          :param webhooks: 一组 webhook 的链接，事件会用 POST 请求发送给每一个链接，响应头为 {"Content-type": "application/json; charset=utf-8"}

          :return: 一个 blacksheep 应用，你可以二次扩展，并用 uvicorn 运行

      make_application_with_fs_events(alist_token: str, base_url: str = 'http://localhost:5244', collect: None | collections.abc.Callable[[dict], typing.Any] = None, threaded: bool = False) -> blacksheep.server.application.Application
          只收集和文件系统操作有关的事件

          :param alist_token: alist 的 token，用来追踪后台任务列表（若不提供，则不追踪任务列表）
          :param base_url: alist 的 base_url
          :param collect: 调用以收集 alist 请求事件的消息（在 project 调用之后），如果为 None，则输出到日志
          :param webhooks: 一组 webhook 的链接，事件会用 POST 请求发送给每一个链接，响应头为 {"Content-type": "application/json; charset=utf-8"}
          :param threaded: collect 如果不是 async 函数，就放到单独的线程中运行

          :return: 一个 blacksheep 应用，你可以二次扩展，并用 uvicorn 运行

  DATA
      __all__ = ['make_application', 'make_application_with_fs_events', 'make_application_with_fs_event_stream']

  VERSION
      (0, 0, 8)

  AUTHOR
      ChenyangGao <https://chenyanggao.github.io>
  ```



  ```console
  $ alist-proxy -h
  usage: alist-proxy [-h] [-H HOST] [-P PORT] [-b BASE_URL] [-t TOKEN] [-u DB_URI] [-d] [-v]

  		🌍🚢 alist 网络代理抓包 🕷️🕸️

  options:
    -h, --help            show this help message and exit
    -H HOST, --host HOST  ip 或 hostname，默认值：'0.0.0.0'
    -P PORT, --port PORT  端口号，默认值：5245
    -b BASE_URL, --base-url BASE_URL
                          被代理的 alist 服务的 base_url，默认值：'http://localhost:5244'
    -t TOKEN, --token TOKEN
                          alist 的 token，用来追踪后台任务列表（若不提供，则不追踪任务列表）
    -u DB_URI, --db-uri DB_URI
                          数据库连接的 URI，格式为 "{dbtype}://{host}:{port}/{path}"
                              - dbtype: 数据库类型，目前仅支持 "sqlite"、"mongodb" 和 "redis"
                              - host: （非 "sqlite"）ip 或 hostname，如果忽略，则用 "localhost"
                              - port: （非 "sqlite"）端口号，如果忽略，则自动使用此数据库的默认端口号
                              - path: （限 "sqlite"）文件路径，如果忽略，则为 ""（会使用一个临时文件）
                          如果你只输入 dbtype 的名字，则视为 "{dbtype}://"
                          如果你输入了值，但不能被视为 dbtype，则自动视为 path，即 "sqlite:///{path}"
    -w [webhook ...], --webhooks [webhook ...]
                          一组 webhook 的链接，事件会用 POST 请求发送给每一个链接，响应头为 {"Content-type": "application/json; charset=utf-8"}
    -d, --debug           启用 debug 模式（会输出更详细的信息）
    -v, --version         输出版本号

  $ alist-proxy
  INFO:     Started server process [64373]
  INFO:     Waiting for application startup.
  INFO:     Application startup complete.
  INFO:     Uvicorn running on http://0.0.0.0:5245 (Press CTRL+C to quit)
  ```



  首先要求有一个正在运行中的 alist 服务，假设地址为 http://localhost:5244

  然后在命令行中运行

  ```console
  alist-proxy --base-url http://localhost:5244
  ```

  就可以开始代理监听了。如果 --base-url 就是默认地址 http://localhost:5244，是可以省略的。

  如果你还需要监听后台的 **复制**、**上传**、**离线下载转存** 事件，则需要在命令行中提供 alist 的 token。

  ```console
  ALIST_TOKEN='alist-xxxx'
  alist-proxy --token "$ALIST_TOKEN"
  ```

  如果你需要使用 webhook，则需要指定 -w/--webhooks 参数。

  如果你需要使用 websocket，则需要指定 --db-uri 参数，以将数据存储到数据库，目前只支持 sqlite、mongodb 和 redis。



  如果你指定了 -w/--webhooks 参数，就会发送事件到指定的这组链接上

  ```console
  alist-proxy -w http://localhost:8888/webhook
  ```

  客户端代码

  ```python
  from flask import request, Flask

  app = Flask(__name__)

  @app.route("/webhook", methods=["POST"])
  def handle_post():
      data = request.get_json()
      print(f"Received: {data}")
      return "", 200

  app.run(port=8888, threaded=True)
  ```



  如果你指定了 -u/--db-uri 参数，就可以使用 websocket 接口 <kbd>/pull</kbd>

  ```console
  alist-proxy -u sqlite
  ```

  客户端代码

  ```python
  from asyncio import run
  from json import loads

  import websockets

  async def pull():
      uri = "ws://localhost:5245/pull"
      async with websockets.connect(uri) as websocket:
          while True:
              data = loads(await websocket.recv())
              print(f"Received: {data}")

  run(pull())
  ```



  <kbd>/pull</kbd> 接口支持 3 个查询参数，均可省略，省略则从当前开始拉取最新数据

  - `lastid`: 从这个 id（不含）开始读取。省略时，如果指定了非空的 `group`，则继续这个组的读取进度，否则从当前开始（不管以前）读取。如果要从头开始读取，指定 '0' 即可
  - `group`: 组名称。如果组不存在，则自动创建。
  - `name`: 消费者名称。



  <kbd>/pull</kbd> 接口支持 3 个查询参数，均可省略，省略则从当前开始拉取最新数据

  - `lastid`: 从这个 id（不含）开始读取，是一个字符串，表示 UUID。
  - `from_datetime`: 从这个时间点开始，是一个字符串。



  <kbd>/pull</kbd> 接口支持 3 个查询参数，均可省略，省略则从当前开始拉取最新数据

  - `lastid`: 从这个 id（不含）开始读取，是一个整数，表示自增主键。
  - `from_datetime`: 从这个时间点开始，是一个字符串。



  命令行程序只采集和文件系统操作有关的事件消息

  你可以从 <kbd>/pull</kbd> 接口拉取 json 格式的数据。这些数据有几个共同的字段

  1. category: 任务类别。有 3 个可能的值：
      - <kbd>web</kbd>: 由网页直接调用接口成功后产生
      - <kbd>dav</kbd>: 通过 webdav 的成功操作产生
      - <kbd>task</kbd>: 监控后台任务，由执行成功的任务产生
  2. type: 任务类型。可能的取值如下：
      - <kbd>upload</kbd>: 上传/创建 文件
      - <kbd>rename</kbd>: 文件或目录的改名
      - <kbd>move</kbd>: 移动文件或目录（webdav 还包括改名）
      - <kbd>remove</kbd>: 删除文件或目录
      - <kbd>copy</kbd>: 复制文件或目录
      - <kbd>mkdir</kbd>: 创建空目录
      - <kbd>find</kbd>: 查询文件或目录的信息，或罗列目录
  3. method: 具体的操作方法
  4. payload: 和路径有关的数据，每组（由 (method, category, type) 一起确定）都有所不同

  同一种 category 的各个 method 的 payload 的字段构成近似。

  - <kbd>web</kbd>: payload 收集了相关的查询参数，详见 https://alist.nn.ci/guide/api/fs.html
  - <kbd>dav</kbd>: 一般包含
      - <kbd>path</kbd>: 被操作的路径
      - <kbd>is_dir</kbd>: 是否目录

      可能包含

      - <kbd>to_path</kbd>: 操作后的路径（COPY 或 MOVE）
  - <kbd>task</kbd>: 目前有 3 种情况
      - <kbd>method</kbd> 为 copy，即复制，包含
          - <kbd>src_path</kbd>: 源路径
          - <kbd>dst_path</kbd>: 目标路径
          - <kbd>src_storage</kbd>: 源所在存储
          - <kbd>dst_storage</kbd>: 目标所在存储
          - <kbd>src_dir</kbd>: 源所在目录
          - <kbd>dst_dir</kbd>: 目标所在目录
          - <kbd>name</kbd>: 名字
          - <kbd>is_dir</kbd>: 是否目录
      - <kbd>method</kbd> 为 upload，即上传，包含
          - <kbd>path</kbd>: 目标路径
          - <kbd>dst_storage</kbd>: 目标所在存储
          - <kbd>dst_dir</kbd>: 目标所在目录
          - <kbd>name</kbd>: 名字
          - <kbd>is_dir</kbd>: 是否目录，必为 False
      - <kbd>method</kbd> 为 transfer，即离线下载后上传，包含
          - <kbd>path</kbd>: 目标路径
          - <kbd>dst_dir</kbd>: 目标所在目录
          - <kbd>name</kbd>: 名字
          - <kbd>is_dir</kbd>: 是否目录，必为 False


pkgId: 0fa2ca3d7f1b932fde2ef008f5a772490c585e4ac032dc54f5ebc94fe53c2b7a
name: python-alist_proxy
arch: src
version: 0.1
epoch: 0
release: 1
summary: Python alist proxy and monitor.
url: https://github.com/ChenyangGao/web-mount-packs/tree/main/python-alist-proxy
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alist_proxy-0.1-1.src.rpm
checksum_type: sha256
description:
  你可以从 [pypi](https://pypi.org/project/alist_proxy/) 安装

  ```console
  pip install -U alist_proxy
  ```





  ```python
  >>> import alist_proxy
  >>> help(alist_proxy)
  Help on package alist_proxy:

  NAME
      alist_proxy - # encoding: utf-8

  PACKAGE CONTENTS
      __main__

  FUNCTIONS
      make_application(alist_token: str = '', base_url: str = 'http://localhost:5244', collect: None | collections.abc.Callable[[dict], typing.Any] = None, webhooks: None | collections.abc.Sequence[str] = None, project: None | collections.abc.Callable[[dict], None | dict] = None, threaded: bool = False) -> blacksheep.server.application.Application
          创建一个 blacksheep 应用，用于反向代理 alist，并持续收集每个请求事件的消息

          :param alist_token: alist 的 token，提供此参数可在 115 网盘遭受 405 风控时自动扫码刷新 cookies
          :param base_url: alist 的 base_url
          :param collect: 调用以收集 alist 请求事件的消息（在 project 调用之后），如果为 None，则输出到日志
          :param webhooks: 一组 webhook 的链接，事件会用 POST 请求发送给每一个链接，响应头为 {"Content-type": "application/json; charset=utf-8"}
          :param project: 调用以对请求事件的消息进行映射处理，如果结果为 None，则丢弃此消息
          :param threaded: collect 和 project，如果不是 async 函数，就放到单独的线程中运行

          :return: 一个 blacksheep 应用，你可以二次扩展，并用 uvicorn 运行

      make_application_with_fs_event_stream(alist_token: str, base_url: str = 'http://localhost:5244', db_uri: str = 'sqlite', webhooks: None | collections.abc.Sequence[str] = None)
          只收集和文件系统操作有关的事件，存储到 redis streams，并且可以通过 websocket 拉取

          :param alist_token: alist 的 token，用来追踪后台任务列表（若不提供，则不追踪任务列表）
          :param base_url: alist 的 base_url
          :param db_uri: 数据库连接的 URI，格式为 "{dbtype}://{host}:{port}/{path}

              - dbtype: 数据库类型，目前仅支持 "sqlite"、"mongodb" 和 "redis"
              - host: （非 "sqlite"）ip 或 hostname，如果忽略，则用 "localhost"
              - port: （非 "sqlite"）端口号，如果忽略，则自动使用此数据库的默认端口号
              - path: （限 "sqlite"）文件路径，如果忽略，则为 ""（会使用一个临时文件）

              如果你只输入 dbtype 的名字，则视为 "{dbtype}://"
              如果你输入了值，但不能被视为 dbtype，则自动视为 path，即 "sqlite:///{path}"
          :param webhooks: 一组 webhook 的链接，事件会用 POST 请求发送给每一个链接，响应头为 {"Content-type": "application/json; charset=utf-8"}

          :return: 一个 blacksheep 应用，你可以二次扩展，并用 uvicorn 运行

      make_application_with_fs_events(alist_token: str = '', base_url: str = 'http://localhost:5244', collect: None | collections.abc.Callable[[dict], typing.Any] = None, webhooks: None | collections.abc.Sequence[str] = None, threaded: bool = False) -> blacksheep.server.application.Application
          只收集和文件系统操作有关的事件

          :param alist_token: alist 的 token，用来追踪后台任务列表（若不提供，则不追踪任务列表）
          :param base_url: alist 的 base_url
          :param collect: 调用以收集 alist 请求事件的消息（在 project 调用之后），如果为 None，则输出到日志
          :param webhooks: 一组 webhook 的链接，事件会用 POST 请求发送给每一个链接，响应头为 {"Content-type": "application/json; charset=utf-8"}
          :param threaded: collect 如果不是 async 函数，就放到单独的线程中运行

          :return: 一个 blacksheep 应用，你可以二次扩展，并用 uvicorn 运行

  VERSION
      (0, 0, 9)

  AUTHOR
      ChenyangGao <https://chenyanggao.github.io>
  ```



  ```console
  $ alist-proxy -h
  usage: alist_proxy [-h] [-H HOST] [-P PORT] [-b BASE_URL] [-t TOKEN] [-u DB_URI] [-w [webhook ...]] [-d] [-v]

  		🌍🚢 alist 网络代理抓包 🕷️🕸️

  options:
    -h, --help            show this help message and exit
    -H HOST, --host HOST  ip 或 hostname，默认值：'0.0.0.0'
    -P PORT, --port PORT  端口号，默认值：5245
    -b BASE_URL, --base-url BASE_URL
                          被代理的 alist 服务的 base_url，默认值：'http://localhost:5244'
    -t TOKEN, --token TOKEN
                          alist 的 token，用来追踪后台任务列表和更新某些 cookies
    -u DB_URI, --db-uri DB_URI
                          数据库连接的 URI，格式为 "{dbtype}://{host}:{port}/{path}"
                              - dbtype: 数据库类型，目前仅支持 "sqlite"、"mongodb" 和 "redis"
                              - host: （非 "sqlite"）ip 或 hostname，如果忽略，则用 "localhost"
                              - port: （非 "sqlite"）端口号，如果忽略，则自动使用此数据库的默认端口号
                              - path: （限 "sqlite"）文件路径，如果忽略，则为 ""（会使用一个临时文件）
                          如果你只输入 dbtype 的名字，则视为 "{dbtype}://"
                          如果你输入了值，但不能被视为 dbtype，则自动视为 path，即 "sqlite:///{path}"
    -w [webhook ...], --webhooks [webhook ...]
                          一组 webhook 的链接，事件会用 POST 请求发送给每一个链接，响应头为 {"Content-type": "application/json; charset=utf-8"}
    -d, --debug           启用 debug 模式（会输出更详细的信息）
    -v, --version         输出版本

  $ alist-proxy
  INFO:     Started server process [64373]
  INFO:     Waiting for application startup.
  INFO:     Application startup complete.
  INFO:     Uvicorn running on http://0.0.0.0:5245 (Press CTRL+C to quit)
  ```



  首先要求有一个正在运行中的 alist 服务，假设地址为 http://localhost:5244

  然后在命令行中运行

  ```console
  alist-proxy --base-url http://localhost:5244
  ```

  就可以开始代理监听了。如果 --base-url 就是默认地址 http://localhost:5244，是可以省略的。

  如果你还需要监听后台的 **复制**、**上传**、**离线下载转存** 事件，则需要在命令行中提供 alist 的 token。

  ```console
  ALIST_TOKEN='alist-xxxx'
  alist-proxy --token "$ALIST_TOKEN"
  ```

  如果你需要使用 webhook，则需要指定 -w/--webhooks 参数。

  如果你需要使用 websocket，则需要指定 --db-uri 参数，以将数据存储到数据库，目前只支持 sqlite、mongodb 和 redis。



  如果你指定了 -w/--webhooks 参数，就会发送事件到指定的这组链接上

  ```console
  alist-proxy -w http://localhost:8888/webhook
  ```

  客户端代码

  ```python
  from flask import request, Flask

  app = Flask(__name__)

  @app.route("/webhook", methods=["POST"])
  def handle_post():
      data = request.get_json()
      print(f"Received: {data}")
      return "", 200

  app.run(port=8888, threaded=True)
  ```



  如果你指定了 -u/--db-uri 参数，就可以使用 websocket 接口 <kbd>/pull</kbd>

  ```console
  alist-proxy -u sqlite
  ```

  客户端代码

  ```python
  from asyncio import run
  from json import loads

  import websockets

  async def pull():
      uri = "ws://localhost:5245/pull"
      async with websockets.connect(uri) as websocket:
          while True:
              data = loads(await websocket.recv())
              print(f"Received: {data}")

  run(pull())
  ```



  <kbd>/pull</kbd> 接口支持 3 个查询参数，均可省略，省略则从当前开始拉取最新数据

  - `lastid`: 从这个 id（不含）开始读取。省略时，如果指定了非空的 `group`，则继续这个组的读取进度，否则从当前开始（不管以前）读取。如果要从头开始读取，指定 '0' 即可
  - `group`: 组名称。如果组不存在，则自动创建。
  - `name`: 消费者名称。



  <kbd>/pull</kbd> 接口支持 2 个查询参数，均可省略，省略则从当前开始拉取最新数据

  - `lastid`: 从这个 id（不含）开始读取，是一个字符串，表示 UUID。
  - `from_datetime`: 从这个时间点开始，是一个字符串。



  <kbd>/pull</kbd> 接口支持 2 个查询参数，均可省略，省略则从当前开始拉取最新数据

  - `lastid`: 从这个 id（不含）开始读取，是一个整数，表示自增主键。
  - `from_datetime`: 从这个时间点开始，是一个字符串。



  命令行程序只采集和文件系统操作有关的事件消息

  你可以从 <kbd>/pull</kbd> 接口拉取 json 格式的数据。这些数据有几个共同的字段

  1. category: 任务类别。有 3 个可能的值：
      - <kbd>web</kbd>: 由网页直接调用接口成功后产生
      - <kbd>dav</kbd>: 通过 webdav 的成功操作产生
      - <kbd>task</kbd>: 监控后台任务，由执行成功的任务产生
  2. type: 任务类型。可能的取值如下：
      - <kbd>upload</kbd>: 上传/创建 文件
      - <kbd>rename</kbd>: 文件或目录的改名
      - <kbd>move</kbd>: 移动文件或目录（webdav 还包括改名）
      - <kbd>remove</kbd>: 删除文件或目录
      - <kbd>copy</kbd>: 复制文件或目录
      - <kbd>mkdir</kbd>: 创建空目录
      - <kbd>find</kbd>: 查询文件或目录的信息，或罗列目录
  3. method: 具体的操作方法
  4. payload: 和路径有关的数据，每组（由 (method, category, type) 一起确定）都有所不同

  同一种 category 的各个 method 的 payload 的字段构成近似。

  - <kbd>web</kbd>: payload 收集了相关的查询参数，详见 https://alist.nn.ci/guide/api/fs.html
  - <kbd>dav</kbd>: 一般包含
      - <kbd>path</kbd>: 被操作的路径
      - <kbd>is_dir</kbd>: 是否目录

      可能包含

      - <kbd>to_path</kbd>: 操作后的路径（COPY 或 MOVE）
  - <kbd>task</kbd>: 目前有 3 种情况
      - <kbd>method</kbd> 为 copy，即复制，包含
          - <kbd>src_path</kbd>: 源路径
          - <kbd>dst_path</kbd>: 目标路径
          - <kbd>src_storage</kbd>: 源所在存储
          - <kbd>dst_storage</kbd>: 目标所在存储
          - <kbd>src_dir</kbd>: 源所在目录
          - <kbd>dst_dir</kbd>: 目标所在目录
          - <kbd>name</kbd>: 名字
          - <kbd>is_dir</kbd>: 是否目录
      - <kbd>method</kbd> 为 upload，即上传，包含
          - <kbd>path</kbd>: 目标路径
          - <kbd>dst_storage</kbd>: 目标所在存储
          - <kbd>dst_dir</kbd>: 目标所在目录
          - <kbd>name</kbd>: 名字
          - <kbd>is_dir</kbd>: 是否目录，必为 False
      - <kbd>method</kbd> 为 transfer，即离线下载后上传，包含
          - <kbd>path</kbd>: 目标路径
          - <kbd>dst_dir</kbd>: 目标所在目录
          - <kbd>name</kbd>: 名字
          - <kbd>is_dir</kbd>: 是否目录，必为 False


pkgId: 27b61b998faf18db230a1a14187ef7b7ded1e5356918902e7d00d2c65defe017
name: python-aliste
arch: src
version: 1.0.2
epoch: 0
release: 1
summary: Aliste Smart Home SDK for Python
url: https://pypi.org/project/aliste/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aliste-1.0.2-1.src.rpm
checksum_type: sha256
description:
  ```
  pip install aliste
  ```



  ```Python
  from aliste import AlisteHub, AlisteBroker


  broker = AlisteBroker()


  hub = AlisteHub()


  hub.init(mobile, password, broker)
  ```


pkgId: 62cf2dc0e9a58426eca027bc02fb7d101171195d497db614e2e36529a76c1746
name: python-alita
arch: src
version: 0.2.3
epoch: 0
release: 1
summary: A simple Python async framework for building web applications.
url: https://github.com/dwpy/alita
rpm_license: BSD
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alita-0.2.3-1.src.rpm
checksum_type: sha256
description:
  Alita is a lightweight python async web application framework.
  - Come into use the same with Flask.
  - Using the async/await syntax to write concurrent code.
  - Need Python3.5+ version at least.


  ```
  pip install alita
  ```



  ```
  from alita import Alita

  app = Alita()

  @app.route('/')
  async def hello(request):
      return 'Hello, World!'
  ```



  - Code: https://github.com/dwpy/alita
  - Docs-zh: https://dwpy.github.io/alita
  - Docs-en: https://dwpy.github.io/alita-docs-en


pkgId: 895817af7cca7e7db969b6388b9c199bdaadbb5c5bf86d5895c177aea3c8128f
name: python-aliyun-img-utils
arch: src
version: 2.2.0
epoch: 0
release: 1
summary: Package that provides utilities for handling images in Aliyun Cloud.
url: https://github.com/SUSE-Enceladus/aliyun-img-utils
rpm_license: GPLv3+
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aliyun-img-utils-2.2.0-1.src.rpm
checksum_type: sha256
description:
  **aliyun-img-utils** provides a command line utility and API for publishing
  images in the Aliyun Cloud. This includes helper functions for uploading
  image blobs, creating compute images and replicating/publishing/deprecating/
  images across all available regions.

  See the [Alibaba docs](https://www.alibabacloud.com/getting-started) to get
  more info on the Aliyun cloud.



  - oss2
  - Click
  - PyYAML
  - aliyun-python-sdk-core
  - aliyun-python-sdk-ecs



  To install the package on openSUSE and SLES use the following commands as root:

  ```shell
  $ zypper ar http://download.opensuse.org/repositories/Cloud:/Tools/<distribution>
  $ zypper refresh
  $ zypper in python3-aliyun-img-utils
  ```

  To install from PyPI:

  ```shell
  $ pip install aliyun-img-utils
  ```



  **aliyun-img-utils** can be configured with yaml based profiles. The configuration
  directory is `~/.config/aliyun_img_utils` and the default profile is default.yaml
  (~/.config/aliyun_img_utils/default.yaml).

  The following configration options are available in a configuration profile:

  - no_color
  - log_level
  - region
  - access_key
  - access_secret
  - bucket_name

  An example configuration profile may look like:

  ```yaml
  region: cn-beijing
  access_key: FakeKEY
  access_secret: FAKESecret
  bucket_name: smarlow-testing
  ```

  When running any command the profile can be chosen via the *--profile* option.
  For example, *aliyun-img-utils image upload --profile production* would pull
  configuration from ~/.config/aliyun_img_utils/production.yaml.



  The CLI is broken into multiple distinct subcommands that handle different
  steps of creating and publishing images in the Aliyun cloud framework.



  The first step is to upload a qcow2 image to a storage bucket. For this
  *aliyun-img-utils image upload* is available.

  Example:

  ```shell
  $ aliyun-img-utils image upload --image-file ~/Documents/test.qcow2
  ```

  In this example the qcow2 file will be uploaded to the storage bucket configured
  for the given profile and the blob will be named test.qcow2. If you want to
  override the name of the blob there is a *--blob-name* option.

  For more information about the image upload function see the help message:

  ```shell
  $ aliyun-img-utils image upload --help
  ```



  The next step is to create a compute image from the qcow2 blob. For this
  *aliyun-img-utils image create* is available.

  Example:

  ```shell
  $ aliyun-img-utils image create --image-name SLES15-SP2-BYOS --image-description "Test image" --platform SUSE --blob-name SLES15-SP2-BYOS.qcow2
  ```

  In this example the qcow2 blob will be used to create the compute image.
  for the given profile and the blob will be named test.qcow2. If you want to
  override the default (20GB) root disk size there is a *--disk-size* option.

  For more information about the image create function see the help message:

  ```shell
  $ aliyun-img-utils image create --help
  ```



  Once an image is created in a single region it can be replicated or copied to any other region: *aliyun-img-utils image replicate*.

  Example:

  ```shell
  $ aliyun-img-utils image replicate --image-name test-image-v20210303 --regions cn-shanghai
  ```

  In this example the image will be replicated to the cn-shanghai region. If
  no regions are provided the image will be replicated to all available regions.

  For more information about the image replicate function see the help message:

  ```shell
  $ aliyun-img-utils image replicate --help
  ```



  The image can then be published or shared to other accounts with
  *aliyun-img-utils image publish*.

  Example:

  ```shell
  $ aliyun-img-utils image publish --image-name test-image-v20210303 --launch-permission EXAMPLE
  ```

  In this example the launch permission for the image will be set to *EXAMPLE*. If
  no regions are provided the image will be published in all available regions.

  For more information about the image publish function see the help message:

  ```shell
  $ aliyun-img-utils image publish --help
  ```



  An image can be set to the deprecated state with *aliyun-img-utils image deprecate*.

  Example:

  ```shell
  $ aliyun-img-utils image deprecate --image-name test-image-v20210303
  ```

  As with the other commands, if no regions are provided the image will be deprecated
  in all available regions.

  For more information about the image deprecate function see the help message:

  ```shell
  $ aliyun-img-utils image deprecate --help
  ```



  An image can be set back to the active state with *aliyun-img-utils image activate*.

  Example:

  ```shell
  $ aliyun-img-utils image activate --image-name test-image-v20210303
  ```

  As with the other commands, if no regions are provided the image will be activated
  in all available regions.

  For more information about the image activate function see the help message:

  ```shell
  $ aliyun-img-utils image activate --help
  ```



  Info about a specific compute image can be retrieved with
  *aliyun-img-utils image info*.

  Example:

  ```shell
  $ aliyun-img-utils image info --image-name test-image-v20210303
  ```

  The image can be searched by the *--image-name* or *--image-id*. By
  default only active images will be searched. To filter deprecated images
  there is a *--deprecated* option.

  For more information about the image info function see the help message:

  ```shell
  $ aliyun-img-utils image info --help
  ```



  A compute image can be deleted with *aliyun-img-utils image delete*.

  Example:

  ```shell
  $ aliyun-img-utils image delete --image-name test-image-v20210303
  ```

  As with the other commands, if no regions are provided the image will be
  deleted in all available regions.

  For more information about the image delete function see the help message:

  ```shell
  $ aliyun-img-utils image delete --help
  ```



  The AliyunImage class can be instantiated and used as an API from code.
  This provides all the same functions as the CLI with a few additional
  helpers. For example there are waiter functions which will wait for
  a compute image to be created and/or deleted.

  To create an instance of AliyunImage you need an *access_key*,
  *access_secret*, *region* and *bucket_name*. optionally you can pass
  in a Python log object and/or a *log_level*.

  ```python
  aliyun_image = AliyunImage(
      access_key,
      access_secret,
      region,
      bucket_name,
      log_level=log_level,
      log_callback=logger
  )
  ```



  With an instance of AliyunImage you can perform any of the image functions
  which are available through the CLI.

  ```python
  aliyun_image = AliyunImage(
      'accessKEY',
      'superSECRET',
      'cn-beijing',
      'images
  )


  blob_name = aliyun_image.upload_image_tarball('/path/to/image.qcow2')


  image_id = aliyun_image.create_compute_image(
      'test-image-v20220202',
      'A great image to use.',
      'test_image.qcow2',
      'SUSE'
  )



  deleted = aliyun_image.delete_compute_image('test-image-v20220202')


  aliyun_image.delete_compute_image_in_regions('test-image-v20220202')


  deleted = aliyun_image.delete_storage_blob('test_image.qcow2')


  image_id = aliyun_image.copy_compute_image(
      'test-image-v20220202',
      'cn-shanghai'
  )



  images = aliyun_image.replicate_image('test-image-v20220202')


  aliyun_image.publish_image('test-image-v20220202', 'EXAMPLE_PERMISSION')


  aliyun_image.publish_image_to_regions(
      'test-image-v20220202',
      'EXAMPLE_PERMISSION'
  )


  aliyun_image.deprecate_image('test-image-v20220202')


  aliyun_image.deprecate_image_in_regions('test-image-v20220202')


  aliyun_image.activate_image('test-image-v20220202')


  aliyun_image.activate_image_in_regions('test-image-v20220202')


  aliyun_image.wait_on_compute_image('i-123456789')


  aliyun_image.wait_on_compute_image_delete('i-123456789')


  exists = aliyun_image.image_exists('test-image-v20220202')


  exists = aliyun_image.image_tarball_exists('test_image.qcow2')


  image_info = aliyun_image.get_compute_image(image_name='test_image.qcow2')


  regions = aliyun_image.get_regions()
  ```

  The current *region* or *bucket_name* can be changed at any time.

  When the *bucket_name* is changed the current *bucket_client* session
  is closed. The session will reconnect in a lazy fashion on the next
  storage operation.

  ```python
  aliyun_image = AliyunImage(
      'accessKEY',
      'superSECRET',
      'cn-beijing',
      'images
  )
  exists = aliyun_image.image_tarball_exists('test_image.qcow2')


  aliyun_image.bucket_name = 'old-images'


  exists = aliyun_image.image_tarball_exists('test_image.qcow2')
  ```

  Similarly when the *region* is changed both the *bucket_client* and
  the *compute_client* sessions are closed.

  ```python
  aliyun_image = AliyunImage(
      'accessKEY',
      'superSECRET',
      'cn-beijing',
      'images
  )
  image_info = aliyun_image.get_compute_image(image_name='test_image.qcow2')


  aliyun_image.region = 'cn-shanghai'


  image_info = aliyun_image.get_compute_image(image_name='test_image.qcow2')
  ```



  Please submit issues and requests to
  [Github](https://github.com/SUSE-Enceladus/aliyun-img-utils/issues).



  Contributions to **aliyun-img-utils** are welcome and encouraged. See
  [CONTRIBUTING](https://github.com/SUSE-Enceladus/aliyun-img-utils/blob/master/CONTRIBUTING.md)
  for info on getting started.



  Copyright (c) 2021 SUSE LLC.

  Distributed under the terms of GPL-3.0+ license, see
  [LICENSE](https://github.com/SUSE-Enceladus/aliyun-img-utils/blob/master/LICENSE)
  for details.


pkgId: e823d79e5b260c02a23b388c53c778b6a22f6b3891b7906bad51c849f44887f4
name: python-aliyun-iot-linkkit
arch: src
version: 1.2.13
epoch: 0
release: 1
summary: Aliyun IoT Linkkit SDK for Python
url: https://pypi.org/project/aliyun-iot-linkkit/
rpm_license: Apache Software License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aliyun-iot-linkkit-1.2.13-1.src.rpm
checksum_type: sha256
description:
  This is a python sdk for Aliyun IoT device.
  * MQTT connection:MQTTV31,MQTTV311
  * Aliyun IoT Thing Model




  * [ADD] support to configure the custom endpoint for MQTT config_mqtt
  * [ADD] support to configure the custom endpoint for HTTP2 config_http2
  * [UPDATE] support to receive any unsubscribed message by on_topic_message



  * [UPDATE] fix the onConnect callback invoked at wrong time issue


  * [UPDATE] fix tsl parsing error for simplified tsl products


  * [UPDATE] add gateway feature


  * [UPDATE] add mqtt dynamic-register without pre-registration feature


  * [UPDATE] set Endpoint parameter with default value


  * [UPDATE] add ota feature


  * [UPDATE] add mqtt dynamic-register with pre-registration feature


  * [UPDATE] add api to enable users to re-connect to iot platform manually in case of exceptions


  * [UPDATE] fix handshake error in python 3.10/3.11
  * [UPDATE] fix Timeout exception in lossy network
  * [UPDATE] make the API force_reconnect async


  * [UPDATE] use new root certifications. The S1 certificate would not expire untill 2053.


  * [UPDATE] return error codes when pub/sub messages, do not throw exceptions any more; set keepalive range to be [30,1800]


  * [UPDATE] add option to turn on/off host_name check during tls handshake


pkgId: 6aa42c5f19736f720e8d324cad52359df0b9ca68f3f47cb8b2b9a76b193689e8
name: python-aliyun-mns-sdk
arch: src
version: 1.2.0
epoch: 0
release: 1
summary: Aliyun Message Service Library
url: https://pypi.org/project/aliyun-mns-sdk/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aliyun-mns-sdk-1.2.0-1.src.rpm
checksum_type: sha256
description:
      Mns provides interfaces to Aliyun Message Service.
      mnscmd lets you do these actions: create/get/list/set/delete queue, send/receive/peek/change/delete message from/to queue, create/get/list/set/delete topic, publish message to topic, subscribe/get/list/set/unsubscribe subscription.


pkgId: 0f0ffb4a328f258e5bb5e059b5856d1639032164a1afa74b9e7145e7b5a31358
name: python-aliyun-python-sdk-eci
arch: src
version: 1.3.0
epoch: 0
release: 1
summary: The eci module of Aliyun Python sdk.
url: http://develop.aliyun.com/sdk/python
rpm_license: Apache
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aliyun-python-sdk-eci-1.3.0-1.src.rpm
checksum_type: sha256
description:
  aliyun-python-sdk-eci
  This is the eci module of Aliyun Python SDK.

  Aliyun Python SDK is the official software development kit. It makes things easy to integrate your Python application, library, or script with Aliyun services.

  This module works on Python versions:

  2.6.5 and greater
  Documentation:

  Please visit http://develop.aliyun.com/sdk/python


pkgId: 43279a5d2904c674d460697ff9b77b65313252b503fb43c029fc15db3dee8d4f
name: python-aliyun-python-sdk-ocs
arch: src
version: 0.0.4
epoch: 0
release: 1
summary: The ocs module of Aliyun Python sdk.
url: http://develop.aliyun.com/sdk/python
rpm_license: Apache
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aliyun-python-sdk-ocs-0.0.4-1.src.rpm
checksum_type: sha256
description:
  aliyun-python-sdk-ocs
  This is the ocs module of Aliyun Python SDK.

  Aliyun Python SDK is the official software development kit. It makes things easy to integrate your Python application, library, or script with Aliyun services.

  This module works on Python versions:

  2.6.5 and greater
  Documentation:

  Please visit http://develop.aliyun.com/sdk/python


pkgId: d70013d514b0d0a9d0cd972d25abe09373dbf12741d2ec9ed6101fa058270653
name: python-aliyun-rds-bkp
arch: src
version: 0.1.30
epoch: 0
release: 1
summary: A small tool to download db files from Aliyun RDS per schedule
url: https://github.com/life-game-player/aliyun-rds-bkp
rpm_license: GNU General Public License v3 (GPLv3)
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aliyun-rds-bkp-0.1.30-1.src.rpm
checksum_type: sha256
description:
  这是一个按照自定义配置，从阿里云RDS(***目前只支持MySQL***)下载数据库备份(包括全备和binlog备份)到本地的工具，并支持定时清理过期备份文件。



  ```python
  pip install aliyun-rds-bkp
  ```



  配置文件为json格式。

  ```json
  {
      "AccessKeyId": "AccessKeyID Provided by Aliyun RDS",
      "AccessKeySecret": "AccessKeySecret Provided by Aliyun RDS",
      "Regions": [
          {
              "RegionID": "cn-hangzhou",
              "DBInstances": [
                  {
                      "DBInstanceId": "rm-XXXXXXXXXXXXXXXXXX",
                      "LastFullBackup": {
                          "BackupEndTime": "2019-03-16 05:30:00"
                      },
                      "LastBinlogBackup": {
                          "BackupEndTime": "2019-03-16 05:30:00"
                      },
                      "BackupRetentionDays": 21,
                      "Schedule": {
                          "FullBackup": {
                              "Plan": "* * * * 2,4,6"
                          },
                          "BinlogBackup": {
                              "Plan": "* * * * *"
                          }
                      }
                  }
              ]
          }
      ],
      "BackupHome": "Path/to/Backup/Directory",
      "FailedDownloads": "Path/to/Failed Downloads/Directory",
      "ErrorLog": "Path/to/Error/Log",
      "MailConfig": {
          "SMTPServer": "Your SMTP Server",
          "SMTPLogin": "Account to Login SMTP Server",
          "SMTPPassword": "Password to login SMTP Server",
          "SMTPPort": 25,
          "TTLS": false,
          "From": "email_from",
          "To": [
              "email_1",
              "email_2"
          ],
          "Cc": [
              "email_cc"
          ],
          "Subject": "E-Mail Subject"
      }
  }
  ```



  - AccessKeyId: 阿里云提供的AccessKeyId
  - AccessKeySecret: 阿里云提供的AccessKeySecret
  - RegionID: 参考https://help.aliyun.com/document_detail/40654.html
  - DBInstanceId: RDS实例ID
  - BackupEndTime: 上次备份的结束的UTC时间，用于增量，格式为YYYY-MM-DD HH:MI:SS
  - BackupRetentionDays: 备份保留天数
  - Plan: 备份计划(***本地时间***)。5个参数以空格分隔，分别代表触发备份的
    - 分钟
    - 小时
    - 一个月中的第几天
    - 月份
    - 一个星期中的第几天。1表示星期一，7表示星期日。
  - BackupHome: 放置备份文件的总目录。在总目录下会自动按照RegionID->InstanceID->Year->Month->Day创建目录
  - ErrorLog: 指定错误日志存放文件
  - SMTPServer: 邮件服务器地址，用于发送备份成功或失败的通知邮件
  - SMTPLogin: 邮件服务器登录账号
  - SMTPPassword: 邮件服务器登录密码
  - SMTPPort: 邮件服务器端口
  - TTLS: 邮件服务器是否使用TTLS，true或false
  - From: 邮件发送账户
  - To: 邮件接收账户列表
  - Cc: 邮件抄送账户列表
  - Subject: 通知邮件的主题



  1. 编写调用脚本

  ```python
  import os

  from aliyunrdsbkp.mysql_backup import MySQLBackup

  """
  日常备份
  """
  if __name__ == '__main__':
      dir_path = os.path.dirname(os.path.realpath(__file__))
      config_file = os.path.join(
          dir_path,
          'config/settings.json'
      )  # 配置文件路径
      mysql_backup = MySQLBackup(config_file)
      mysql_backup.backup()

  ```

  ```python
  import os

  from aliyunrdsbkp.retry_downloader import RetryDownloader

  """
  下载重试
  """
  if __name__ == '__main__':
      dir_path = os.path.dirname(os.path.realpath(__file__))
      config_file = os.path.join(
          dir_path,
          'config/settings.json'
      )  # 配置文件路径
      retry_downloader = RetryDownloader(config_file)
      retry_downloader.run()
  ```

  2. 在Linux下的crontab或Windows下的Task Scheduler配置定时执行以上调用脚本


pkgId: 2db57a7aca1dee7c61353875aa9fe68a1be04addd9a63a760e4f578a0e1baea7
name: python-aliyun-secret-manager-client
arch: src
version: 0.1.4
epoch: 0
release: 1
summary: Alibaba Cloud Secrets Manager Client implementation for Python
url: https://pypi.org/project/aliyun-secret-manager-client/
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aliyun-secret-manager-client-0.1.4-1.src.rpm
checksum_type: sha256
description:
  The Aliyun Secrets Manager Client for Python enables Python developers
  to easily work with Aliyun KMS Secrets.
  Read this in other languages: 简体中文
  <https://github.com/aliyun/aliyun-secretsmanager-client-python/blob/master/README.zh-cn.rst>
  -  `Aliyun Secrets Manager Client
     Homepage <https://help.aliyun.com/document_detail/190269.html?spm=a2c4g.11186623.6.621.201623668WpoMj>`__
  -  `Issues <https://github.com/aliyun/aliyun-secretsmanager-client-python/issues>`__
  -  `Release <https://github.com/aliyun/aliyun-secretsmanager-client-python/releases>`__


pkgId: 4146a92a6fe7f28c70b458bb4ca6cbedd1642fe123b9f487c9c212b32c3a3400
name: python-aliyunswarm
arch: src
version: 0.0.20
epoch: 0
release: 1
summary: aliyun swarm api
url: http://git.zebrablocklabs.com/wandou_svr/aliyunswarm
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aliyunswarm-0.0.20-1.src.rpm
checksum_type: sha256
description:
  ```
  参考：
  https://help.aliyun.com/document_detail/26063.html?spm=a2c4g.11186623.6.768.81bb2d05Wmhak0
  ```


  ```
  from aliyunswarm import *

  if __name__ == "__main__":
      swarm_api = SwarmApi("https://host:port/",
                          "/path/ca.pem",
                          "/path/cert.pem",
                          "/path/key.pem")

      
      
      
      
      swarm_api.query_applications()
      
      swarm_api.query_applications('swarmtest')
      
      template = open('./compose/compose_ngx.yaml', 'r').read()
      swarm_api.create_application(template, 'swarmtest', 'swarm test')
      
      swarm_api.stop_application('swarmtest')
      
      swarm_api.start_application('swarmtest')
      
      swarm_api.kill_application('swarmtest')
      
      swarm_api.delete_application('swarmtest')
      
      swarm_api.redeploy_application('swarmtest')
      
      template = open('./compose/compose_ngx.yaml', 'r').read()
      swarm_api.update_application(template, 'swarmtest', 'swarmtest 2', version='2.0')

      
      
      
      
      swarm_api.query_services('api')
      
      swarm_api.query_service('swarmtest', 'api')
      
      swarm_api.start_service('swarmtest', 'api')
      
      swarm_api.stop_service('swarmtest', 'api')
      
      swarm_api.kill_service('swarmtest', 'api')
  ```


pkgId: cb48bb3286130d9e5010d714685020d235176d7d0cc41a26de193613ec42e60a
name: python-alkh
arch: src
version: 0.5.0
epoch: 0
release: 1
summary: algorithmic python debugging
url: https://github.com/erez-aharonov/alkh
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alkh-0.5.0-1.src.rpm
checksum_type: sha256
description:
  ![](https://github.com/erez-aharonov/alkh/blob/main/readme_files/take-it-offline-5.png?raw=true)

  ![](https://github.com/erez-aharonov/alkh/blob/main/readme_files/analyze-2.png?raw=true)



  pip install alkh





  function name: take_it_offline

  description: create jupyter notebook based on the program stack

  parameters:

  notebook_dir_path: Optional[str] = None, directory path to save the notebook in

  levels: Optional[int] = 1, number of program stack layers to put in notebook



  import alkh

  alkh.take_it_offline('path-of-notebooks-directory')

  or

  alkh.take_it_offline('path-of-notebooks-directory', levels=2)

  or

  bash:

  export ALKH_NOTEBOOKS_PATH='path-to-notebooks-directory'

  python:

  import alkh

  alkh.take_it_offline()

  or

  alkh.take_it_offline(levels=2)


  Stop at breakpoint within PyCharm
  ![](https://github.com/erez-aharonov/alkh/blob/main/readme_files/take-it-offline-0.png?raw=true)
  Use Console to run code within debugger
  ![](https://github.com/erez-aharonov/alkh/blob/main/readme_files/take-it-offline-1.png?raw=true)
  Run: import alkh
  ![](https://github.com/erez-aharonov/alkh/blob/main/readme_files/take-it-offline-2.png?raw=true)
  Run: alkh.take_it_offline('path-of-notebooks-directory')
  ![](https://github.com/erez-aharonov/alkh/blob/main/readme_files/take-it-offline-3.png?raw=true)
  Start Jupyter
  ![](https://github.com/erez-aharonov/alkh/blob/main/readme_files/take-it-offline-4.png?raw=true)
  Run the notebook
  ![](https://github.com/erez-aharonov/alkh/blob/main/readme_files/take-it-offline-5.png?raw=true)






  function name: analyze

  description: launches web application to analyze code pathways

  parameters:None



  import alkh</br>
  alkh.analyze()



  Add two line to top of file
  ![](https://github.com/erez-aharonov/alkh/blob/main/readme_files/analyze-0.png?raw=true)
  Run the file
  ![](https://github.com/erez-aharonov/alkh/blob/main/readme_files/analyze-1.png?raw=true)
  Analyze your code
  ![](https://github.com/erez-aharonov/alkh/blob/main/readme_files/analyze-2.png?raw=true)


pkgId: 839aa035b5fc3ab8e41961e26f7276853096d7ef1c2ed2a11b334957d85354a8
name: python-alkymi
arch: src
version: 0.3.1
epoch: 0
release: 1
summary: alkymi - Pythonic task automation
url: https://github.com/MathiasStokholm/alkymi
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alkymi-0.3.1-1.src.rpm
checksum_type: sha256
description:
  [![build](https://github.com/MathiasStokholm/alkymi/workflows/build/badge.svg?branch=master)](https://github.com/MathiasStokholm/alkymi/actions?query=workflow%3Abuild)
  [![docs](https://readthedocs.org/projects/alkymi/badge/?version=latest)](https://alkymi.readthedocs.io/en/latest/?badge=latest)
  [![coverage](https://codecov.io/gh/MathiasStokholm/alkymi/branch/develop/graph/badge.svg?token=L0DTW805NL)](https://codecov.io/gh/MathiasStokholm/alkymi)
  [![pypi](https://img.shields.io/pypi/v/alkymi.svg)](https://pypi.org/project/alkymi)
  [![versions](https://img.shields.io/pypi/pyversions/alkymi.svg)](https://pypi.org/project/alkymi)

  Alkymi is a pure Python (3.7+) library for describing and executing tasks and pipelines with built-in caching and
  conditional evaluation based on checksums.

  Alkymi is easy to install, simple to use, and has very few dependencies outside of Python's standard library. The code
  is cross-platform, and allows you to write your pipelines once and deploy to multiple operating systems (tested on
  Linux, Windows and Mac).

  Documentation, including a quickstart guide, is provided [here](https://alkymi.readthedocs.io/en/latest/).


  * Easily define complex data pipelines as decorated Python functions
    * This allows you to run linting, type checking, etc. on your data pipelines
  * Return values are automatically cached to disk, regardless of type
  * Efficiently checks if pipeline is up-to-date
    * Checks if external files have changed, bound functions have changed or if pipeline dependencies have changed
  * No domain specific language (DSL) or CLI tool, just regular Python
    * Supports caching and conditional evaluation in Jupyter Notebooks
  * Cross-platform - works on Linux, Windows and Mac
  * Expose recipes as a command-line interface (CLI) using alkymi's
  [Lab](https://alkymi.readthedocs.io/en/latest/examples/command_line.html) type


  For examples of how to use alkymi, see the
  [quickstart guide](https://alkymi.readthedocs.io/en/latest/getting_started/quick_start.html).

  Example code:
  ```python
  import numpy as np
  import alkymi as alk

  @alk.recipe()
  def long_running_task() -> np.ndarray:
      
      hard_to_compute_result = np.array([42])
      
      return hard_to_compute_result

  result = long_running_task.brew()  # == np.ndarray([42])
  ```

  Or one of the examples, e.g. [MNIST](https://alkymi.readthedocs.io/en/latest/examples/mnist.html).


  Install via pip:
  ```shell script
  pip install --user alkymi
  ```

  Or see the [Installation page](https://alkymi.readthedocs.io/en/latest/getting_started/installation.html).


  After installing, you can run the test suite (use the `lint`, `coverage` and `type_check` recipes to perform those
  actions):
  ```shell script
  python3 labfile.py brew test
  ```


  alkymi is licensed under The MIT License as found in the LICENSE.md file


  The following features are being considered for future implementation:
  * Type annotations propagated from bound functions to recipes
  * Support for call/type checking all recipes (e.g. by adding a `check` command to `Lab`)
  * Cache maintenance functionality


  * alkymi currently doesn't check custom objects for altered external files when computing cleanliness (e.g. `MyClass`
  has a `self._some_path` that points to a file somewhere outside alkymi's internal cache)
  * `alk.foreach()` currently only supports enumerable inputs of type `List` or `Dict`
  * Recipes marked `transient` will always be dirty, and thus always require reevaluation. This functionality should be
  replaced by a proper means of creating recipes that don't cache outputs, but only run when needed to provide inputs for
  downstream recipes


pkgId: a7d7843e697d546266521b3038063c1dca145e0231ae4047e1920556d0673742
name: python-all-fives-domino
arch: src
version: 1.0.23
epoch: 0
release: 1
summary: Simple implementation of the All Fives domino variant
url: https://github.com/Informanthik/all-fives-domino
rpm_license: UNKNOWN
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-all-fives-domino-1.0.23-1.src.rpm
checksum_type: sha256
description:
  Simple version of a domino variant
  ![image](https://img.shields.io/pypi/v/jhdata?style=flat-square)
  ![image](https://img.shields.io/static/v1?label=pytest&message=20+tests&color=success&style=flat-square)
  ![image](https://img.shields.io/static/v1?label=coverage&message=64%25&color=yellow&style=flat-square)

  Install the [PyPI Package](https://pypi.org/project/all-fives-domino/):
      pip install all-fives-domino

  TODO


pkgId: 8b87ddd42d89e68ee5460a9108f5bfd797c7fecfac927d2217c3a1c2416d6db4
name: python-all-repos
arch: src
version: 1.27.0
epoch: 0
release: 1
summary: Clone all your repositories and apply sweeping changes.
url: https://github.com/asottile/all-repos
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-all-repos-1.27.0-1.src.rpm
checksum_type: sha256
description:
  Clone all your repositories and apply sweeping changes.

  ```bash
  pip install all-repos
  ```

  All command line interfaces provided by `all-repos` provide the following
  options:
  - `-h` / `--help`: show usage information
  - `-C CONFIG_FILENAME` / `--config-filename CONFIG_FILENAME`: use a non-default
    config file (the default `all-repos.json` can be changed with the environment
    variable `ALL_REPOS_CONFIG_FILENAME`).
  - `--color {auto,always,never}`: use color in output (default `auto`).

  Add `git clone` tab completion for all-repos repositories.
  Requires [jq](https://stedolan.github.io/jq/) to function.
  Add to `.bash_profile`:
  ```bash
  eval "$(all-repos-complete -C ~/.../all-repos.json --bash)"
  ```

  Clone all the repositories into the `output_dir`.  If run again, this command
  will update existing repositories.
  Options:
  - `-j JOBS` / `--jobs JOBS`: how many concurrent jobs will be used to complete
    the operation.  Specify 0 or -1 to match the number of cpus.  (default `8`).
  Sample invocations:
  - `all-repos-clone`: clone the repositories specified in `all-repos.json`
  - `all-repos-clone -C all-repos2.json`: clone using a non-default config
    filename.

  Similar to a distributed `git ls-files | grep -P PATTERN`.
  Arguments:
  - `PATTERN`: the [python regex](https://docs.python.org/3/library/re.html)
    to match.
  Options:
  - `--repos-with-matches`: only print repositories with matches.
  Sample invocations:
  - `all-repos-find-files setup.py`: find all `setup.py` files.
  - `all-repos-find-files --repos setup.py`: find all repositories containing
    a `setup.py`.

  Similar to a distributed `git grep ...`.
  Options:
  - `--repos-with-matches`: only print repositories with matches.
  - `GIT_GREP_OPTIONS`: additional arguments will be passed on to `git grep`.
    see `git grep --help` for available options.
  Sample invocations:
  - `all-repos-grep pre-commit -- 'requirements*.txt'`: find all repositories
    which have `pre-commit` listed in a requirements file.
  - `all-repos-grep -L six -- setup.py`: find setup.py files which do not
    contain `six`.

  List all cloned repository names.

  Interactively apply a manual change across repos.
  _note_: `all-repos-manual` will always run in `--interactive` autofixing mode.
  _note_: `all-repos-manual` _requires_ the `--repos` autofixer option.
  Options:
  - [autofix options](#all_reposautofix_libadd_fixer_args): `all-repos-manual` is
    an autofixer and supports all of the autofixer options.
  - `--branch-name BRANCH_NAME`: override the autofixer branch name (default
    `all-repos-manual`).
  - `--commit-msg COMMIT_MSG` (required): set the autofixer commit message.

  Similar to a distributed
  `git ls-files -z -- FILENAMES | xargs -0 sed -i EXPRESSION`.
  _note_: this assumes GNU sed. If you're on macOS, install `gnu-sed` with Homebrew:
  ```bash
  brew install gnu-sed

  export PATH="$(brew --prefix)/opt/gnu-sed/libexec/gnubin:$PATH"
  ```
  Arguments:
  - `EXPRESSION`: sed program. For example: `s/hi/hello/g`.
  - `FILENAMES`: filenames glob (passed to `git ls-files`).
  Options:
  - [autofix options](#all_reposautofix_libadd_fixer_args): `all-repos-sed` is
    an autofixer and supports all of the autofixer options.
  - `-r` / `--regexp-extended`: use extended regular expressions in the script.
    See `man sed` for further details.
  - `--branch-name BRANCH_NAME` override the autofixer branch name (default
    `all-repos-sed`).
  - `--commit-msg COMMIT_MSG` override the autofixer commit message.  (default
    `git ls-files -z -- FILENAMES | xargs -0 sed -i ... EXPRESSION`).
  Sample invocations:
  - `all-repos-sed 's/foo/bar/g' -- '*'`: replace `foo` with `bar` in all files.

  A configuration file looks roughly like this:
  ```json
  {
      "output_dir": "output",
      "source": "all_repos.source.github",
      "source_settings":  {
          "api_key": "...",
          "username": "asottile"
      },
      "push": "all_repos.push.github_pull_request",
      "push_settings": {
          "api_key": "...",
          "username": "asottile"
      }
  }
  ```
  - `output_dir`: where repositories will be cloned to when `all-repos-clone` is
    run.
  - `source`: the module import path to a `source`, see below for builtin
    source modules as well as directions for writing your own.
  - `source_settings`: the source-type-specific settings, the source module's
    documentation will explain the various possible values.
  - `push`: the module import path to a `push`, see below for builtin push
    modules as well as directions for writing your own.
  - `push_settings`: the push-type-specific settings, the push module's
    documentation will explain the various possible values.
  - `include` (default `""`): python regex for selecting repositories.  Only
    repository names which match this regex will be included.
  - `exclude` (default `"^$"`): python regex for excluding repositories.
    Repository names which match this regex will be excluded.
  - `all_branches` (default `false`): whether to clone all of the branches or
    just the default upstream branch.


  Clones all repositories listed in a file.  The file must be formatted as
  follows:
  ```json
  {
      "example/repo1": "https://git.example.com/example/repo1",
      "repo2": "https://git.example.com/repo2"
  }
  ```

  - `filename`: file containing repositories one-per-line.

  ```
  output/
  +--- repos.json
  +--- repos_filtered.json
  +--- {repo_key1}/
  +--- {repo_key2}/
  +--- {repo_key3}/
  ```

  Clones all repositories available to a user on github.

  - `api_key`: the api key which the user will log in as.
      - Use [the settings tab](//github.com/settings/tokens/new) to create a
        personal access token.
      - The minimum scope required to function is `public_repo`, though you'll
        need `repo` to access private repositories.
  - `api_key_env`: alternatively API key can also be passed via an environment variable
  - `username`: the github username you will log in as.

  - `collaborator` (default `false`): whether to include repositories which are
    not owned but can be contributed to as a collaborator.
  - `forks` (default `false`): whether to include repositories which are forks.
  - `private` (default `false`): whether to include private repositories.
  - `archived` (default: `false`): whether to include archived repositories.
  - `base_url` (default: `https://api.github.com`) is the base URL to the Github
    API to use (for Github Enterprise support set this to `https://{your_domain}/api/v3`).

  ```
  output/
  +--- repos.json
  +--- repos_filtered.json
  +--- {username1}/
      +--- {repo1}/
      +--- {repo2}/
  +--- {username2}/
      +--- {repo3}/
  ```

  Clones all repositories forked from a repository on github.

  - `api_key`: the api key which the user will log in as.
      - Use [the settings tab](//github.com/settings/tokens/new) to create a
        personal access token.
      - The minimum scope required to function is `public_repo`.
  - `api_key_env`: alternatively API key can also be passed via an environment variable
  - `repo`: the repo which has forks

  - `collaborator` (default `true`): whether to include repositories which are
    not owned but can be contributed to as a collaborator.
  - `forks` (default `true`): whether to include repositories which are forks.
  - `private` (default `false`): whether to include private repositories.
  - `archived` (default: `false`): whether to include archived repositories.
  - `base_url` (default: `https://api.github.com`) is the base URL to the Github
    API to use (for Github Enterprise support set this to `https://{your_domain}/api/v3`).

  See the directory structure for
  [`all_repos.source.github`](#all_repossourcegithub).

  Clones all repositories from an organization on github.

  - `api_key`: the api key which the user will log in as.
      - Use [the settings tab](//github.com/settings/tokens/new) to create a
        personal access token.
      - The minimum scope required to function is `public_repo`, though you'll
        need `repo` to access private repositories.
  - `api_key_env`: alternatively API key can also be passed via an environment variable
  - `org`: the organization to clone from

  - `collaborator` (default `true`): whether to include repositories which are
    not owned but can be contributed to as a collaborator.
  - `forks` (default `false`): whether to include repositories which are forks.
  - `private` (default `false`): whether to include private repositories.
  - `archived` (default: `false`): whether to include archived repositories.
  - `base_url` (default: `https://api.github.com`) is the base URL to the Github
    API to use (for Github Enterprise support set this to `https://{your_domain}/api/v3`).

  See the directory structure for
  [`all_repos.source.github`](#all_repossourcegithub).

  Clones all repositories available to a user on a
  [gitolite](http://gitolite.com/gitolite/index.html) host.

  - `username`: the user to SSH to the server as (usually `git`)
  - `hostname`: the hostname of your gitolite server (e.g. `git.mycompany.com`)
  The gitolite API is served over SSH.  It is assumed that when `all-repos-clone`
  is called, it's possible to make SSH connections with the username and hostname
  configured here in order to query that API.

  - `mirror_path` (default `None`): an optional mirror to clone repositories from.
    This is a Python format string, and can use the variable `repo_name`.
    This can be anything git understands, such as another remote server (e.g.
    `gitmirror.mycompany.com:{repo_name}`) or a local path (e.g.
    `/gitolite/git/{repo_name}.git`).

  ```
  output/
  +--- repos.json
  +--- repos_filtered.json
  +--- {repo_name1}.git/
  +--- {repo_name2}.git/
  +--- {repo_name3}.git/
  ```

  Clones all repositories available to a user on Bitbucket Cloud.

  - `username`: the Bitbucket username you will log in as.
  - `app_password`: the authentication method for the above user to login with
      - Create an application password within your [account settings](https://bitbucket.org/account/admin/app-passwords).
      - We need the scope: Repositories -> Read

  Clones all repositories available to a user on Bitbucket Server.

  - `base_url`: the bitbucket server URL (eg `bitbucket.domain.com`)
  - `username`: the Bitbucket username you will log in as.
  - `app_password`: the authentication method for the above user to login with
      - Create an application password within your [account settings](https://bitbucket.domain.com/plugins/servlet/access-tokens/manage).
      - We need the scope: Repositories -> Read

  - `project` (default `None`): an optional project to restrict the search for repositories.

  ```
  output/
  +--- repos.json
  +--- repos_filtered.json
  +--- {username1}/
      +--- {repo1}/
      +--- {repo2}/
  +--- {username2}/
      +--- {repo3}/
  ```

  Clones all repositories from an organization on gitlab.

  - `api_key`: the api key which the user will log in as.
      - Use the settings tab (eg https://{gitlab.domain.com}/-/profile/personal_access_tokens) to create a
        personal access token.
      - We need the scope: `read_api`, `read_repository`.
  - `api_key_env`: alternatively API key can also be passed via an environment variable
  - `org`: the organization to clone from

  - `base_url`: (default `https://gitlab.com/api/v4`) the gitlab server URL
  - `archived` (default: `false`): whether to include archived repositories.

  ```
  output/
  +--- repos.json
  +--- repos_filtered.json
  +--- {org}/
      +--- {subpgroup1}/
          +--- {subpgroup2}/
              +--- {repo1}/
          +--- {repo2}/
      +--- {repo3}/
      +--- {repo4}/
  ```

  First create a module.  This module must have the following api:

  This class will receive keyword arguments for all values in the
  `source_settings` dictionary.
  An easy way to implement the `Settings` class is by using a `namedtuple`:
  ```python
  Settings = collections.namedtuple('Settings', ('required_thing', 'optional'))
  Settings.__new__.__defaults__ = ('optional default value',)
  ```
  In this example, the `required_thing` setting is a **required** setting
  whereas `optional` may be omitted (and will get a default value of
  `'optional default value'`).

  This callable will be passed an instance of your `Settings` class.  It must
  return a mapping from `{repo_name: repository_url}`.  The `repo_name` is the
  directory name inside the `output_dir`.


  Merges the branch directly to the default branch and pushes.  The commands it
  runs look roughly like this:
  ```bash
  git checkout main
  git pull
  git merge --no-ff $BRANCH
  git push origin HEAD
  ```

  - `fast_forward` (default: `false`): if `true`, perform a fast-forward
      merge (`--ff-only`). If `false`, create a merge commit (`--no-ff`).

  Pushes the branch to `origin` and then creates a github pull request for the
  branch.

  - `api_key`: the api key which the user will log in as.
      - Use [the settings tab](//github.com/settings/tokens/new) to create a
        personal access token.
      - The minimum scope required to function is `public_repo`, though you'll
        need `repo` to access private repositories.
  - `api_key_env`: alternatively API key can also be passed via an environment variable
  - `username`: the github username you will log in as.

  - `fork` (default: `false`): (if applicable) a fork will be created and pushed
    to instead of the upstream repository.  The pull request will then be made
    to the upstream repository.
  - `base_url` (default: `https://api.github.com`) is the base URL to the Github
    API to use (for Github Enterprise support set this to `https://{your_domain}/api/v3`).

  Pushes the branch to `origin` and then creates a Bitbucket pull request for the branch.

  - `base_url`: the Bitbucket server URL (eg `bitbucket.domain.com`)
  - `username`: the Bitbucket username you will log in as.
  - `app_password`: the authentication method for the above user to login with
      - Create an application password within your [account settings](https://bitbucket.domain.com/plugins/servlet/access-tokens/manage).
      - We need the scope: Repositories -> Read

  Pushes the branch to `origin` and then creates a GitLab pull request for the branch.

  - `base_url`: the GitLab server URL (eg `https://{gitlab.domain.com}/api/v4`)
  - `api_key`: the api key which the user will log in as.
      - Use the settings tab (eg https://{gitlab.domain.com}/-/profile/personal_access_tokens) to create a
        personal access token.
      - We need the scope: `write_repository`.
  - `api_key_env`: alternatively API key can also be passed via an environment variable

  Does nothing.

  There are no configurable settings for `readonly`.

  First create a module.  This module must have the following api:

  This class will receive keyword arguments for all values in the `push_settings`
  dictionary.

  This callable will be passed an instance of your `Settings` class.  It should
  deploy the branch.  The function will be called with the root of the
  repository as the `cwd`.

  An autofixer applies a change over all repositories.
  `all-repos` provides several api functions to write your autofixers with:

  ```python
  def add_fixer_args(parser):
  ```
  Adds the autofixer cli options.
  Options:
  - `--dry-run`: show what would happen but do not push.
  - `-i` / `--interactive`: interactively approve / deny fixes.
  - `-j JOBS` / `--jobs JOBS`: how many concurrent jobs will be used to complete
    the operation.  Specify 0 or -1 to match the number of cpus.  (default `1`).
  - `--limit LIMIT`: maximum number of repos to process (default: unlimited).
  - `--author AUTHOR`: override commit author.  This is passed directly to
    `git commit`.  An example: `--author='Herp Derp <herp.derp@umich.edu>'`.
  - `--repos [REPOS [REPOS ...]]`: run against specific repositories instead.
    This is especially useful with `xargs autofixer ... --repos`.  This can be
    used to specify repositories which are not managed by `all-repos`.

  ```python
  def from_cli(args, *, find_repos, msg, branch_name):
  ```
  Parse cli arguments and produce `autofix_lib` primitives.  Returns
  `(repos, config, commit, autofix_settings)`.  This is handled separately from
  `fix` to allow for fixers to adjust arguments.
  - `find_repos`: callback taking `Config` as a positional argument.
  - `msg`: commit message.
  - `branch_name`: identifier used to construct the branch name.

  ```python
  def fix(
          repos, *,
          apply_fix,
          check_fix=_noop_check_fix,
          config: Config,
          commit: Commit,
          autofix_settings: AutofixSettings,
  ):
  ```
  Apply the fix.
  - `apply_fix`: callback which will be called once per repository.  The `cwd`
    when the function is called will be the root of the repository.

  ```python
  def run(*cmd, **kwargs):
  ```
  Wrapper around `subprocess.run` which prints the command it will run.  Unlike
  `subprocess.run`, this defaults `check=True` unless explicitly disabled.

  The trivial autofixer is as follows:
  ```python
  import argparse
  from all_repos import autofix_lib
  def find_repos(config):
      return []
  def apply_fix():
      pass
  def main(argv=None):
      parser = argparse.ArgumentParser()
      autofix_lib.add_fixer_args(parser)
      args = parser.parse_args(argv)
      repos, config, commit, autofix_settings = autofix_lib.from_cli(
          args, find_repos=find_repos, msg='msg', branch_name='branch-name',
      )
      autofix_lib.fix(
          repos, apply_fix=apply_fix, config=config, commit=commit,
          autofix_settings=autofix_settings,
      )
  if __name__ == '__main__':
      raise SystemExit(main())
  ```
  You can find some more involved examples in [all_repos/autofix](https://github.com/asottile/all-repos/tree/main/all_repos/autofix):
  - `all_repos.autofix.azure_pipelines_autoupdate`: upgrade pinned azure
    pipelines template repository references.
  - `all_repos.autofix.pre_commit_autoupdate`: runs `pre-commit autoupdate`.
  - `all_repos.autofix.pre_commit_autopep8_migrate`: migrates `autopep8-wrapper`
    from [pre-commit/pre-commit-hooks] to [mirrors-autopep8].
  - `all_repos.autofix.pre_commit_cache_dir`: updates the cache directory
    for travis-ci / appveyor for pre-commit 1.x.
  - `all_repos.autofix.pre_commit_flake8_migrate`: migrates `flake8` from
    [pre-commit/pre-commit-hooks] to [pycqa/flake8].
  - `all_repos.autofix.pre_commit_migrate_config`: runs
    `pre-commit migrate-config`.
  - `all_repos.autofix.setup_py_upgrade`: runs [setup-py-upgrade] and then
    [setup-cfg-fmt] to migrate `setup.py` to `setup.cfg`.
  [pre-commit/pre-commit-hooks]: https://github.com/pre-commit/pre-commit-hooks
  [mirrors-autopep8]: https://github.com/pre-commit/mirrors-autopep8
  [pycqa/flake8]: https://gitlab.com/pycqa/flake8
  [setup-py-upgrade]: https://github.com/asottile/setup-py-upgrade
  [setup-cfg-fmt]: https://github.com/asottile/setup-cfg-fmt


pkgId: a9c9561ade138b34de4b1ed1af1ee356887591470298d650fe1022ef081deb5a
name: python-all-repos
arch: src
version: 1.28.0
epoch: 0
release: 1
summary: Clone all your repositories and apply sweeping changes.
url: https://github.com/asottile/all-repos
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-all-repos-1.28.0-1.src.rpm
checksum_type: sha256
description:
  Clone all your repositories and apply sweeping changes.

  ```bash
  pip install all-repos
  ```

  All command line interfaces provided by `all-repos` provide the following
  options:
  - `-h` / `--help`: show usage information
  - `-C CONFIG_FILENAME` / `--config-filename CONFIG_FILENAME`: use a non-default
    config file (the default `all-repos.json` can be changed with the environment
    variable `ALL_REPOS_CONFIG_FILENAME`).
  - `--color {auto,always,never}`: use color in output (default `auto`).

  Add `git clone` tab completion for all-repos repositories.
  Requires [jq](https://stedolan.github.io/jq/) to function.
  Add to `.bash_profile`:
  ```bash
  eval "$(all-repos-complete -C ~/.../all-repos.json --bash)"
  ```

  Clone all the repositories into the `output_dir`.  If run again, this command
  will update existing repositories.
  Options:
  - `-j JOBS` / `--jobs JOBS`: how many concurrent jobs will be used to complete
    the operation.  Specify 0 or -1 to match the number of cpus.  (default `8`).
  Sample invocations:
  - `all-repos-clone`: clone the repositories specified in `all-repos.json`
  - `all-repos-clone -C all-repos2.json`: clone using a non-default config
    filename.

  Similar to a distributed `git ls-files | grep -P PATTERN`.
  Arguments:
  - `PATTERN`: the [python regex](https://docs.python.org/3/library/re.html)
    to match.
  Options:
  - `--repos-with-matches`: only print repositories with matches.
  Sample invocations:
  - `all-repos-find-files setup.py`: find all `setup.py` files.
  - `all-repos-find-files --repos setup.py`: find all repositories containing
    a `setup.py`.

  Similar to a distributed `git grep ...`.
  Options:
  - `--repos-with-matches`: only print repositories with matches.
  - `GIT_GREP_OPTIONS`: additional arguments will be passed on to `git grep`.
    see `git grep --help` for available options.
  Sample invocations:
  - `all-repos-grep pre-commit -- 'requirements*.txt'`: find all repositories
    which have `pre-commit` listed in a requirements file.
  - `all-repos-grep -L six -- setup.py`: find setup.py files which do not
    contain `six`.

  List all cloned repository names.

  Interactively apply a manual change across repos.
  _note_: `all-repos-manual` will always run in `--interactive` autofixing mode.
  _note_: `all-repos-manual` _requires_ the `--repos` autofixer option.
  Options:
  - [autofix options](#all_reposautofix_libadd_fixer_args): `all-repos-manual` is
    an autofixer and supports all of the autofixer options.
  - `--branch-name BRANCH_NAME`: override the autofixer branch name (default
    `all-repos-manual`).
  - `--commit-msg COMMIT_MSG` (required): set the autofixer commit message.

  Similar to a distributed
  `git ls-files -z -- FILENAMES | xargs -0 sed -i EXPRESSION`.
  _note_: this assumes GNU sed. If you're on macOS, install `gnu-sed` with Homebrew:
  ```bash
  brew install gnu-sed

  export PATH="$(brew --prefix)/opt/gnu-sed/libexec/gnubin:$PATH"
  ```
  Arguments:
  - `EXPRESSION`: sed program. For example: `s/hi/hello/g`.
  - `FILENAMES`: filenames glob (passed to `git ls-files`).
  Options:
  - [autofix options](#all_reposautofix_libadd_fixer_args): `all-repos-sed` is
    an autofixer and supports all of the autofixer options.
  - `-r` / `--regexp-extended`: use extended regular expressions in the script.
    See `man sed` for further details.
  - `--branch-name BRANCH_NAME` override the autofixer branch name (default
    `all-repos-sed`).
  - `--commit-msg COMMIT_MSG` override the autofixer commit message.  (default
    `git ls-files -z -- FILENAMES | xargs -0 sed -i ... EXPRESSION`).
  Sample invocations:
  - `all-repos-sed 's/foo/bar/g' -- '*'`: replace `foo` with `bar` in all files.

  A configuration file looks roughly like this:
  ```json
  {
      "output_dir": "output",
      "source": "all_repos.source.github",
      "source_settings":  {
          "api_key": "...",
          "username": "asottile"
      },
      "push": "all_repos.push.github_pull_request",
      "push_settings": {
          "api_key": "...",
          "username": "asottile"
      }
  }
  ```
  - `output_dir`: where repositories will be cloned to when `all-repos-clone` is
    run.
  - `source`: the module import path to a `source`, see below for builtin
    source modules as well as directions for writing your own.
  - `source_settings`: the source-type-specific settings, the source module's
    documentation will explain the various possible values.
  - `push`: the module import path to a `push`, see below for builtin push
    modules as well as directions for writing your own.
  - `push_settings`: the push-type-specific settings, the push module's
    documentation will explain the various possible values.
  - `include` (default `""`): python regex for selecting repositories.  Only
    repository names which match this regex will be included.
  - `exclude` (default `"^$"`): python regex for excluding repositories.
    Repository names which match this regex will be excluded.
  - `all_branches` (default `false`): whether to clone all of the branches or
    just the default upstream branch.


  Clones all repositories listed in a file.  The file must be formatted as
  follows:
  ```json
  {
      "example/repo1": "https://git.example.com/example/repo1",
      "repo2": "https://git.example.com/repo2"
  }
  ```

  - `filename`: file containing repositories one-per-line.

  ```
  output/
  +--- repos.json
  +--- repos_filtered.json
  +--- {repo_key1}/
  +--- {repo_key2}/
  +--- {repo_key3}/
  ```

  Clones all repositories available to a user on github.

  - `api_key`: the api key which the user will log in as.
      - Use [the settings tab](//github.com/settings/tokens/new) to create a
        personal access token.
      - The minimum scope required to function is `public_repo`, though you'll
        need `repo` to access private repositories.
  - `api_key_env`: alternatively API key can also be passed via an environment variable
  - `username`: the github username you will log in as.

  - `collaborator` (default `false`): whether to include repositories which are
    not owned but can be contributed to as a collaborator.
  - `forks` (default `false`): whether to include repositories which are forks.
  - `private` (default `false`): whether to include private repositories.
  - `archived` (default: `false`): whether to include archived repositories.
  - `base_url` (default: `https://api.github.com`) is the base URL to the Github
    API to use (for Github Enterprise support set this to `https://{your_domain}/api/v3`).

  ```
  output/
  +--- repos.json
  +--- repos_filtered.json
  +--- {username1}/
      +--- {repo1}/
      +--- {repo2}/
  +--- {username2}/
      +--- {repo3}/
  ```

  Clones all repositories forked from a repository on github.

  - `api_key`: the api key which the user will log in as.
      - Use [the settings tab](//github.com/settings/tokens/new) to create a
        personal access token.
      - The minimum scope required to function is `public_repo`.
  - `api_key_env`: alternatively API key can also be passed via an environment variable
  - `repo`: the repo which has forks

  - `collaborator` (default `true`): whether to include repositories which are
    not owned but can be contributed to as a collaborator.
  - `forks` (default `true`): whether to include repositories which are forks.
  - `private` (default `false`): whether to include private repositories.
  - `archived` (default: `false`): whether to include archived repositories.
  - `base_url` (default: `https://api.github.com`) is the base URL to the Github
    API to use (for Github Enterprise support set this to `https://{your_domain}/api/v3`).

  See the directory structure for
  [`all_repos.source.github`](#all_repossourcegithub).

  Clones all repositories from an organization on github.

  - `api_key`: the api key which the user will log in as.
      - Use [the settings tab](//github.com/settings/tokens/new) to create a
        personal access token.
      - The minimum scope required to function is `public_repo`, though you'll
        need `repo` to access private repositories.
  - `api_key_env`: alternatively API key can also be passed via an environment variable
  - `org`: the organization to clone from

  - `collaborator` (default `true`): whether to include repositories which are
    not owned but can be contributed to as a collaborator.
  - `forks` (default `false`): whether to include repositories which are forks.
  - `private` (default `false`): whether to include private repositories.
  - `archived` (default: `false`): whether to include archived repositories.
  - `base_url` (default: `https://api.github.com`) is the base URL to the Github
    API to use (for Github Enterprise support set this to `https://{your_domain}/api/v3`).

  See the directory structure for
  [`all_repos.source.github`](#all_repossourcegithub).

  Clones all repositories available to a user on a
  [gitolite](http://gitolite.com/gitolite/index.html) host.

  - `username`: the user to SSH to the server as (usually `git`)
  - `hostname`: the hostname of your gitolite server (e.g. `git.mycompany.com`)
  The gitolite API is served over SSH.  It is assumed that when `all-repos-clone`
  is called, it's possible to make SSH connections with the username and hostname
  configured here in order to query that API.

  - `mirror_path` (default `None`): an optional mirror to clone repositories from.
    This is a Python format string, and can use the variable `repo_name`.
    This can be anything git understands, such as another remote server (e.g.
    `gitmirror.mycompany.com:{repo_name}`) or a local path (e.g.
    `/gitolite/git/{repo_name}.git`).

  ```
  output/
  +--- repos.json
  +--- repos_filtered.json
  +--- {repo_name1}.git/
  +--- {repo_name2}.git/
  +--- {repo_name3}.git/
  ```

  Clones all repositories available to a user on Bitbucket Cloud.

  - `username`: the Bitbucket username you will log in as.
  - `app_password`: the authentication method for the above user to login with
      - Create an application password within your [account settings](https://bitbucket.org/account/admin/app-passwords).
      - We need the scope: Repositories -> Read

  Clones all repositories available to a user on Bitbucket Server.

  - `base_url`: the bitbucket server URL (eg `bitbucket.domain.com`)
  - `username`: the Bitbucket username you will log in as.
  - `app_password`: the authentication method for the above user to login with
      - Create an application password within your [account settings](https://bitbucket.domain.com/plugins/servlet/access-tokens/manage).
      - We need the scope: Repositories -> Read

  - `project` (default `None`): an optional project to restrict the search for repositories.

  ```
  output/
  +--- repos.json
  +--- repos_filtered.json
  +--- {username1}/
      +--- {repo1}/
      +--- {repo2}/
  +--- {username2}/
      +--- {repo3}/
  ```

  Clones all repositories from an organization on gitlab.

  - `api_key`: the api key which the user will log in as.
      - Use the settings tab (eg https://{gitlab.domain.com}/-/profile/personal_access_tokens) to create a
        personal access token.
      - We need the scope: `read_api`, `read_repository`.
  - `api_key_env`: alternatively API key can also be passed via an environment variable
  - `org`: the organization to clone from

  - `base_url`: (default `https://gitlab.com/api/v4`) the gitlab server URL
  - `archived` (default: `false`): whether to include archived repositories.

  ```
  output/
  +--- repos.json
  +--- repos_filtered.json
  +--- {org}/
      +--- {subpgroup1}/
          +--- {subpgroup2}/
              +--- {repo1}/
          +--- {repo2}/
      +--- {repo3}/
      +--- {repo4}/
  ```

  First create a module.  This module must have the following api:

  This class will receive keyword arguments for all values in the
  `source_settings` dictionary.
  An easy way to implement the `Settings` class is by using a `namedtuple`:
  ```python
  Settings = collections.namedtuple('Settings', ('required_thing', 'optional'))
  Settings.__new__.__defaults__ = ('optional default value',)
  ```
  In this example, the `required_thing` setting is a **required** setting
  whereas `optional` may be omitted (and will get a default value of
  `'optional default value'`).

  This callable will be passed an instance of your `Settings` class.  It must
  return a mapping from `{repo_name: repository_url}`.  The `repo_name` is the
  directory name inside the `output_dir`.


  Merges the branch directly to the default branch and pushes.  The commands it
  runs look roughly like this:
  ```bash
  git checkout main
  git pull
  git merge --no-ff $BRANCH
  git push origin HEAD
  ```

  - `fast_forward` (default: `false`): if `true`, perform a fast-forward
      merge (`--ff-only`). If `false`, create a merge commit (`--no-ff`).

  Pushes the branch to `origin` and then creates a github pull request for the
  branch.

  - `api_key`: the api key which the user will log in as.
      - Use [the settings tab](//github.com/settings/tokens/new) to create a
        personal access token.
      - The minimum scope required to function is `public_repo`, though you'll
        need `repo` to access private repositories.
  - `api_key_env`: alternatively API key can also be passed via an environment variable
  - `username`: the github username you will log in as.

  - `base_url` (default: `https://api.github.com`) is the base URL to the Github
    API to use (for Github Enterprise support set this to `https://{your_domain}/api/v3`).
  - `draft` (default: `false`) if true will open the pull request as a draft.
  - `fork` (default: `false`): (if applicable) a fork will be created and pushed
    to instead of the upstream repository.  The pull request will then be made
    to the upstream repository.

  Pushes the branch to `origin` and then creates a Bitbucket pull request for the branch.

  - `base_url`: the Bitbucket server URL (eg `bitbucket.domain.com`)
  - `username`: the Bitbucket username you will log in as.
  - `app_password`: the authentication method for the above user to login with
      - Create an application password within your [account settings](https://bitbucket.domain.com/plugins/servlet/access-tokens/manage).
      - We need the scope: Repositories -> Read

  Pushes the branch to `origin` and then creates a GitLab pull request for the branch.

  - `base_url`: the GitLab server URL (eg `https://{gitlab.domain.com}/api/v4`)
  - `api_key`: the api key which the user will log in as.
      - Use the settings tab (eg https://{gitlab.domain.com}/-/profile/personal_access_tokens) to create a
        personal access token.
      - We need the scope: `write_repository`.
  - `api_key_env`: alternatively API key can also be passed via an environment variable

  Does nothing.

  There are no configurable settings for `readonly`.

  First create a module.  This module must have the following api:

  This class will receive keyword arguments for all values in the `push_settings`
  dictionary.

  This callable will be passed an instance of your `Settings` class.  It should
  deploy the branch.  The function will be called with the root of the
  repository as the `cwd`.

  An autofixer applies a change over all repositories.
  `all-repos` provides several api functions to write your autofixers with:

  ```python
  def add_fixer_args(parser):
  ```
  Adds the autofixer cli options.
  Options:
  - `--dry-run`: show what would happen but do not push.
  - `-i` / `--interactive`: interactively approve / deny fixes.
  - `-j JOBS` / `--jobs JOBS`: how many concurrent jobs will be used to complete
    the operation.  Specify 0 or -1 to match the number of cpus.  (default `1`).
  - `--limit LIMIT`: maximum number of repos to process (default: unlimited).
  - `--author AUTHOR`: override commit author.  This is passed directly to
    `git commit`.  An example: `--author='Herp Derp <herp.derp@umich.edu>'`.
  - `--repos [REPOS [REPOS ...]]`: run against specific repositories instead.
    This is especially useful with `xargs autofixer ... --repos`.  This can be
    used to specify repositories which are not managed by `all-repos`.

  ```python
  def from_cli(args, *, find_repos, msg, branch_name):
  ```
  Parse cli arguments and produce `autofix_lib` primitives.  Returns
  `(repos, config, commit, autofix_settings)`.  This is handled separately from
  `fix` to allow for fixers to adjust arguments.
  - `find_repos`: callback taking `Config` as a positional argument.
  - `msg`: commit message.
  - `branch_name`: identifier used to construct the branch name.

  ```python
  def fix(
          repos, *,
          apply_fix,
          check_fix=_noop_check_fix,
          config: Config,
          commit: Commit,
          autofix_settings: AutofixSettings,
  ):
  ```
  Apply the fix.
  - `apply_fix`: callback which will be called once per repository.  The `cwd`
    when the function is called will be the root of the repository.

  ```python
  def run(*cmd, **kwargs):
  ```
  Wrapper around `subprocess.run` which prints the command it will run.  Unlike
  `subprocess.run`, this defaults `check=True` unless explicitly disabled.

  The trivial autofixer is as follows:
  ```python
  import argparse
  from all_repos import autofix_lib
  def find_repos(config):
      return []
  def apply_fix():
      pass
  def main(argv=None):
      parser = argparse.ArgumentParser()
      autofix_lib.add_fixer_args(parser)
      args = parser.parse_args(argv)
      repos, config, commit, autofix_settings = autofix_lib.from_cli(
          args, find_repos=find_repos, msg='msg', branch_name='branch-name',
      )
      autofix_lib.fix(
          repos, apply_fix=apply_fix, config=config, commit=commit,
          autofix_settings=autofix_settings,
      )
  if __name__ == '__main__':
      raise SystemExit(main())
  ```
  You can find some more involved examples in [all_repos/autofix](https://github.com/asottile/all-repos/tree/main/all_repos/autofix):
  - `all_repos.autofix.azure_pipelines_autoupdate`: upgrade pinned azure
    pipelines template repository references.
  - `all_repos.autofix.pre_commit_autoupdate`: runs `pre-commit autoupdate`.
  - `all_repos.autofix.pre_commit_autopep8_migrate`: migrates `autopep8-wrapper`
    from [pre-commit/pre-commit-hooks] to [mirrors-autopep8].
  - `all_repos.autofix.pre_commit_cache_dir`: updates the cache directory
    for travis-ci / appveyor for pre-commit 1.x.
  - `all_repos.autofix.pre_commit_flake8_migrate`: migrates `flake8` from
    [pre-commit/pre-commit-hooks] to [pycqa/flake8].
  - `all_repos.autofix.pre_commit_migrate_config`: runs
    `pre-commit migrate-config`.
  - `all_repos.autofix.setup_py_upgrade`: runs [setup-py-upgrade] and then
    [setup-cfg-fmt] to migrate `setup.py` to `setup.cfg`.
  [pre-commit/pre-commit-hooks]: https://github.com/pre-commit/pre-commit-hooks
  [mirrors-autopep8]: https://github.com/pre-commit/mirrors-autopep8
  [pycqa/flake8]: https://gitlab.com/pycqa/flake8
  [setup-py-upgrade]: https://github.com/asottile/setup-py-upgrade
  [setup-cfg-fmt]: https://github.com/asottile/setup-cfg-fmt


pkgId: d3b2bd9e427e5eb45805a7afcb5b5a43fafcc756269767c51318f6422e70edd8
name: python-allconf
arch: src
version: 4.0.0
epoch: 0
release: 1
summary: Configuration file reader with some nifty bells and whistles added
url: https://github.com/doddi79/allconf
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-allconf-4.0.0-1.src.rpm
checksum_type: sha256
description:
  Generic Configuration file reader/parser with a bunch of nifty extra
  features, most notably:

  - File Inclusion & Extension
  - Internal variable reference parsing
  - Nested fault-tolerant fetching of non-existing values
  - Environment variable embedding
  - On-demand external secret credential embedding _(untested in this new fork thus far)_
  - Python script result embedding
  - Single-file rendering of parsed config file (via CLI)
  - Python dataclass stub generation (via CLI)
  - JSON, YAML & custom support
  - ...and more




  This was forked from the [`alviss`](https://github.com/ccpgames/allconf) package
  in order to continue development and support.



  Given this `my_cfg.yaml` config file example:

  ```yaml
  app:
    name: MyApp
    environment: dev
    log_level: INFO
  ```

  This is how you load and use it with `allconf`:

  ```python
  from allconf import quickloader

  cfg = quickloader.autoload('my_cfg.yaml')

  assert cfg.app.name == 'MyApp'
  assert cfg.app.environment == 'dev'
  assert cfg.app.log_level == 'INFO'
  ```

  And that's basically it really!

  Read on for description of more features in order of "quality of life" impact
  for you as a programmer _(as gauged by myself)_ and it goes more or less like this:

  1. File Inclusion & Extension
  2. Internal variable reference parsing
  3. Nested fault-tolerant fetching of non-existing values
  4. Environment variable embedding
  5. On-demand external secret credential embedding _(untested in this new fork thus far)_
  6. Python script result embedding
  7. Single-file rendering of parsed config file (via CLI)
  8. Python dataclass stub generation (via CLI)
  9. JSON, YAML & custom support

  ...I'll document this later!

  Check out the (`_OLD_README.md`)[_OLD_README.md] file for the old documentation (which may or may not be up to date)!

rpm_license:
  MIT License  Copyright (c) 2024 Thordur Matthiasson Copyright (c) 2019-2024 CCP Games  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: 072ae5a7f7934ddc9efc2f531755e25bf0a13aea4d81a6a4ef9f3b9e598c1c06
name: python-allennlp-pvt-nightly
arch: src
version: 0.9.1.dev201910011800
epoch: 0
release: 1
summary: An open-source NLP research library, built on PyTorch.
url: https://github.com/allenai/allennlp
rpm_license: Apache
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-allennlp-pvt-nightly-0.9.1.dev201910011800-1.src.rpm
checksum_type: sha256
description:
  <p align="center"><img width="40%" src="doc/static/allennlp-logo-dark.png" /></p>

  [![Build Status](http://build.allennlp.org/app/rest/builds/buildType:(id:AllenNLP_AllenNLPCommits)/statusIcon)](http://build.allennlp.org/viewType.html?buildTypeId=AllenNLP_AllenNLPCommits&guest=1)
  [![codecov](https://codecov.io/gh/allenai/allennlp/branch/master/graph/badge.svg)](https://codecov.io/gh/allenai/allennlp)

  An [Apache 2.0](https://github.com/allenai/allennlp/blob/master/LICENSE) NLP research library, built on PyTorch,
  for developing state-of-the-art deep learning models on a wide variety of linguistic tasks.



  * [Website](https://allennlp.org/)
  * [Tutorial](https://allennlp.org/tutorials)
  * [Forum](https://discourse.allennlp.org)
  * [Documentation](https://allenai.github.io/allennlp-docs/)
  * [Contributing Guidelines](CONTRIBUTING.md)
  * [Model List](MODELS.md)
  * [Continuous Build](http://build.allennlp.org/)



  <table>
  <tr>
      <td><b> allennlp </b></td>
      <td> an open-source NLP research library, built on PyTorch </td>
  </tr>
  <tr>
      <td><b> allennlp.commands </b></td>
      <td> functionality for a CLI and web service </td>
  </tr>
  <tr>
      <td><b> allennlp.data </b></td>
      <td> a data processing module for loading datasets and encoding strings as integers for representation in matrices </td>
  </tr>
  <tr>
      <td><b> allennlp.models </b></td>
      <td> a collection of state-of-the-art models </td>
  </tr>
  <tr>
      <td><b> allennlp.modules </b></td>
      <td> a collection of PyTorch modules for use with text </td>
  </tr>
  <tr>
      <td><b> allennlp.nn </b></td>
      <td> tensor utility functions, such as initializers and activation functions </td>
  </tr>
  <tr>
      <td><b> allennlp.service </b></td>
      <td> a web server to that can serve demos for your models </td>
  </tr>
  <tr>
      <td><b> allennlp.training </b></td>
      <td> functionality for training models </td>
  </tr>
  </table>



  AllenNLP requires Python 3.6.1 or later. The preferred way to install AllenNLP is via `pip`.  Just run `pip install allennlp` in your Python environment and you're good to go!

  If you need pointers on setting up an appropriate Python environment or would like to install AllenNLP using a different method, see below.

  Windows is currently not officially supported, although we try to fix issues when they are easily addressed.





  [Conda](https://conda.io/) can be used set up a virtual environment with the
  version of Python required for AllenNLP.  If you already have a Python 3.6 or 3.7
  environment you want to use, you can skip to the 'installing via pip' section.

  1.  [Download and install Conda](https://conda.io/projects/conda/en/latest/user-guide/install/index.html).

  2.  Create a Conda environment with Python 3.6

      ```bash
      conda create -n allennlp python=3.6
      ```

  3.  Activate the Conda environment. You will need to activate the Conda environment in each terminal in which you want to use AllenNLP.

      ```bash
      conda activate allennlp
      ```



  Installing the library and dependencies is simple using `pip`.

     ```bash
     pip install allennlp
     ```

  That's it! You're now ready to build and train AllenNLP models.
  AllenNLP installs a script when you install the python package, meaning you can run allennlp commands just by typing `allennlp` into a terminal.

  You can now test your installation with `allennlp test-install`.

  _`pip` currently installs Pytorch for CUDA 9 only (or no GPU). If you require an older version,
  please visit https://pytorch.org/ and install the relevant pytorch binary._



  Docker provides a virtual machine with everything set up to run AllenNLP--
  whether you will leverage a GPU or just run on a CPU.  Docker provides more
  isolation and consistency, and also makes it easy to distribute your
  environment to a compute cluster.

  Once you have [installed Docker](https://docs.docker.com/engine/installation/)
  just run the following command to get an environment that will run on either the cpu or gpu.

     ```bash
     mkdir -p $HOME/.allennlp/
     docker run --rm -v $HOME/.allennlp:/root/.allennlp allennlp/allennlp:v0.9.0
     ```

  You can test the Docker environment with `docker run --rm -v $HOME/.allennlp:/root/.allennlp allennlp/allennlp:v0.9.0 test-install`.



  You can also install AllenNLP by cloning our git repository:

    ```bash
    git clone https://github.com/allenai/allennlp.git
    ```

  Create a Python 3.6 virtual environment, and install AllenNLP in `editable` mode by running:

    ```bash
    pip install --editable .
    ```

  This will make `allennlp` available on your system but it will use the sources from the local clone
  you made of the source repository.

  You can test your installation with `allennlp test-install`.
  The full development environment also requires the JVM and `perl`,
  which must be installed separately.  `./scripts/verify.py` will run
  the full suite of tests used by our continuous build environment.



  Once you've installed AllenNLP, you can run the command-line interface either
  with the `allennlp` command (if you installed via `pip`) or `allennlp` (if you installed via source).

  ```
  $ allennlp
  Run AllenNLP

  optional arguments:
    -h, --help    show this help message and exit
    --version     show program's version number and exit

  Commands:

      configure   Run the configuration wizard.
      train       Train a model.
      evaluate    Evaluate the specified model + dataset.
      predict     Use a trained model to make predictions.
      make-vocab  Create a vocabulary.
      elmo        Create word vectors using a pretrained ELMo model.
      fine-tune   Continue training a model on a new dataset.
      dry-run     Create a vocabulary, compute dataset statistics and other
                  training utilities.
      test-install
                  Run the unit tests.
      find-lr     Find a learning rate range.
  ```



  AllenNLP releases Docker images to [Docker Hub](https://hub.docker.com/r/allennlp/) for each release.  For information on how to run these releases, see [Installing using Docker](#installing-using-docker).



  For various reasons you may need to create your own AllenNLP Docker image.
  The same image can be used either with a CPU or a GPU.

  First, you need to [install Docker](https://www.docker.com/get-started).
  Then run the following command
  (it will take some time, as it completely builds the
  environment needed to run AllenNLP.)

  ```bash
  docker build -f Dockerfile.pip --tag allennlp/allennlp:latest .
  ```

  You should now be able to see this image listed by running `docker images allennlp`.

  ```
  REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
  allennlp/allennlp            latest              b66aee6cb593        5 minutes ago       2.38GB
  ```



  You can run the image with `docker run --rm -it allennlp/allennlp:latest`.  The `--rm` flag cleans up the image on exit and the `-it` flags make the session interactive so you can use the bash shell the Docker image starts.

  You can test your installation by running  `allennlp test-install`.



  Everyone is welcome to file issues with either feature requests, bug reports, or general questions.  As a small team with our own internal goals, we may ask for contributions if a prompt fix doesn't fit into our roadmap.  We allow users a two week window to follow up on questions, after which we will close issues.  They can be re-opened if there is further discussion.



  The AllenNLP team at AI2 (@allenai) welcomes contributions from the greater AllenNLP community, and, if you would like to get a change into the library, this is likely the fastest approach.  If you would like to contribute a larger feature, we recommend first creating an issue with a proposed design for discussion.  This will prevent you from spending significant time on an implementation which has a technical limitation someone could have pointed out early on.  Small contributions can be made directly in a pull request.

  Pull requests (PRs) must have one approving review and no requested changes before they are merged.  As AllenNLP is primarily driven by AI2 (@allenai) we reserve the right to reject or revert contributions that we don't think are good additions.



  If you use AllenNLP in your research, please cite [AllenNLP: A Deep Semantic Natural Language Processing Platform](https://www.semanticscholar.org/paper/AllenNLP%3A-A-Deep-Semantic-Natural-Language-Platform-Gardner-Grus/a5502187140cdd98d76ae711973dbcdaf1fef46d).

  ```bibtex
  @inproceedings{Gardner2017AllenNLP,
    title={AllenNLP: A Deep Semantic Natural Language Processing Platform},
    author={Matt Gardner and Joel Grus and Mark Neumann and Oyvind Tafjord
      and Pradeep Dasigi and Nelson F. Liu and Matthew Peters and
      Michael Schmitz and Luke S. Zettlemoyer},
    year={2017},
    Eprint = {arXiv:1803.07640},
  }
  ```



  AllenNLP is an open-source project backed by [the Allen Institute for Artificial Intelligence (AI2)](https://allenai.org/).
  AI2 is a non-profit institute with the mission to contribute to humanity through high-impact AI research and engineering.
  To learn more about who specifically contributed to this codebase, see [our contributors](https://github.com/allenai/allennlp/graphs/contributors) page.


pkgId: 65ce3e266306c8544d4fbe1ace3c6d73168eefa507ebc347808d03b381fe46bf
name: python-allennlp-srl-bert
arch: src
version: 0.1.1
epoch: 0
release: 1
summary: Semantic Role Labeling using AllenNLP trained BERT model
url: https://github.com/WGU-edu/allennlp_srl_bert
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-allennlp-srl-bert-0.1.1-1.src.rpm
checksum_type: sha256
description:
  `allennlp_srl_bert` is a Python package designed for **Semantic Role Labeling (SRL)** using a fine-tuned BERT model trained with the AllenNLP library.

  The main purpose of this library is to extract semantic role labels from sentences using a state-of-the-art BERT model fine-tuned for SRL tasks.



  Since the AllenNLP library is currently under maintenance, it often causes version conflicts with other libraries. This package provides a streamlined solution for SRL tasks, eliminating dependency issues by focusing on the fine-tuned BERT model for SRL.



  - **High-Performance SRL**: Leverages a fine-tuned BERT model for extracting semantic role labels.
  - **Standalone Usage**: Avoids the complexities of AllenNLP dependencies.
  - **Customizable**: Easily adaptable for different NLP pipelines.



  Install `allennlp_srl_bert` using pip:

  ```bash
  pip install allennlp_srl_bert
  ```


pkgId: e2ba01a869a9c748c231cb9278b5b04bfde1c5aef7fd9273ddad500276fa7446
name: python-alleycat-link
arch: src
version: 0.4.4
epoch: 0
release: 1
summary: Plover plugin for communication with AlleyCAT
url: https://pypi.org/project/alleycat-link/
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alleycat-link-0.4.4-1.src.rpm
checksum_type: sha256
description:
  <p align="center"><img alt="AlleyCAT" src="https://raw.githubusercontent.com/sammdot/alleycat/main/images/logo.svg"></p>

  <p align="center">
  <a href="https://alleycat.sammdot.ca"><img src="https://img.shields.io/website?url=https%3A%2F%2Falleycat.sammdot.ca" alt="Website"></a>
  <a href="https://github.com/sammdot/alleycat/releases/latest"><img src="https://img.shields.io/github/v/release/sammdot/alleycat" alt="GitHub release"></a>
  <a href="https://pypi.org/project/alleycat-link"><img src="https://img.shields.io/pypi/v/alleycat-link" alt="Python package"></a>
  <a href="https://alleycat.readthedocs.io/en/stable/"><img src="https://readthedocs.org/projects/alleycat/badge/?version=stable" alt="Documentation"></a>
  <img src="https://img.shields.io/github/workflow/status/sammdot/alleycat/build" alt="Build status">
  <img src="https://img.shields.io/github/license/sammdot/alleycat" alt="License">
  </p>

  **AlleyCAT** is a free, open-source computer-aided transcription (CAT) system for stenographers. It lets you write and edit documents such as court transcripts and translation dictionaries on both web and desktop. AlleyCAT originated as a free alternative to professional CAT software, which is proprietary and very expensive.

  ![Screenshot of AlleyCAT running on macOS](https://raw.githubusercontent.com/sammdot/alleycat/main/images/screenshot.png)

  It is not intended to replace or compete with [Plover](https://github.com/openstenoproject/plover), the open-source stenography engine; instead, it connects to Plover to leverage its existing ecosystem, such as the ability to use several brands of hobbyist, student, and professional steno writers, and plugins contributed by the community.



  **TL;DR**: Think of it as like a word processor, but with steno integration.

  CAT software allows you to write documents, usually court transcripts, using stenography. Each steno stroke is stored in the document alongside the text it translates to. The CAT system also lets you modify the document's layout, fix spelling errors or mistranslations, create cover pages and indexes, and more.

  When you write into a CAT system with a steno writer, the steno notes are _immutably_ linked with the translations, so that even when you go back and edit the document, the original steno notes remain intact. This is especially important for court reporters, since the steno notes are considered the primary source of truth.

  While CAT software is primarily used by court reporters, some of these features could still be useful to students and hobbyists: for example, having all of your notes in one document linked to the original steno is great for identifying areas of improvement after a practice session.



  She's a free-range CAT: "no owner, no home, no rules." &mdash; [@stenowitch](https://twitter.com/stenowitch), January 2022



  Pre-built binaries for the latest stable version are available on the [releases page](https://github.com/sammdot/alleycat/releases/latest). Download the corresponding package for your platform: `.msi` for Windows, `.dmg` for macOS, and `.AppImage` for Linux.

  You can also build a bleeding-edge version of AlleyCAT from the source code. See the [Development](#development) section below for more information.

  If you just want to try AlleyCAT without installing, a web version is also available at [alleycat.sammdot.ca](https://alleycat.sammdot.ca). There are couple of caveats to this:

  - Files can only be saved into your web browser's downloads folder
  - AlleyCAT will not be able to connect to the Plover instance running on your computer, for security reasons [^1]

  [^1]: Remote websites running inside a browser environment are typically blocked from connecting to anything running locally. I had originally implemented this using a WebSocket, but that only works when the website is also local.



  AlleyCAT is a hybrid web-desktop application built with [Tauri](https://tauri.app), [React](https://reactjs.org), and [TipTap](https://tiptap.dev). The majority of the application's code is written in TypeScript, and a smaller portion of it in Rust and Python. The core of AlleyCAT is a React application, wrapped in Tauri in order to allow it to run on a desktop. The Tauri side also allows it to perform platform-specific operations such as saving files to the disk.

  ![A diagram of all of AlleyCAT's components](https://raw.githubusercontent.com/sammdot/alleycat/main/images/diagram.svg)

  AlleyCAT can talk to Plover with [AlleyCAT Link](https://pypi.org/project/alleycat-link) (or Link for short), which is a Plover plugin that sends stroke and translation data over a local connection, either a Unix domain socket on macOS and Linux, or TCP port 2228[^2] on Windows.[^3] This lets AlleyCAT leverage Plover's existing ecosystem -- you can write into AlleyCAT with any machine Plover can support, in any system Plover can support, with your own dictionaries, and using any other plugins you may have installed. Link can be installed through `pip` or Plover's plugins manager.

  [^2]: ACAT on a phone keypad :smile:
  [^3]: Windows does support named pipes, and more recent versions of Windows also support Unix domain sockets, but the tooling for working with both asynchronously (`asyncio` on the Python side, and Tokio on the Rust side) is not nearly as developed.



  Building the desktop app from source requires Node v16+ and Rust v1.64+; the web version requires only Node. Ensure `yarn` (and `cargo` on desktop) are installed before proceeding.

  In order to connect AlleyCAT with Plover, you will also need a full Plover 4.0.0-dev10+ installation.



  The repository has four main parts:

  ```
  alleycat (this repository)
   ├─ alleycat_link
   ├─ app
   │   └─ src
   ├─ public
   └─ src
  ```

  - `/alleycat_link`: Plover plugin
  - `/app/src`: Tauri application (desktop only)
  - `/public`: Static assets
  - `/src`: React application (web and desktop)



  Clone the repository:

  ```bash
  $ git clone https://github.com/sammdot/alleycat.git
  $ cd alleycat
  ```

  Install all the dependencies, including TypeScript, React, and the Tauri CLI:

  ```bash
  $ yarn install
  ```

  On Linux, you will also need to install additional dependencies:

  ```bash
  $ sudo apt-get update
  $ sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf
  ```



  To start a development server for just the web version:

  ```bash
  $ yarn start
  ```

  To start the desktop version for development:

  ```bash
  $ yarn startapp
  ```

  Both of these start a web server on [localhost:3000](http://localhost:3000). You should be able to access the web version from a browser even when running the desktop version.

  To install the Plover plugin locally:

  ```bash
  $ plover -s plover_plugins install -e .
  ```

  where `plover` is the path to the main Plover binary (or `plover_console.exe`
  on Windows), then make sure to enable the `alleycat_link` extension in Plover, and allow network connections if needed.



  To build the web version for production:

  ```bash
  $ yarn build
  ```

  The generated files for the web version will be in the `/build` directory. These files can be served statically, and should also work offline.

  To build the desktop version on your machine's platform:

  ```bash
  $ yarn buildapp
  ```

  The generated files for the desktop version will be in the `/app/target/release` directory. This may include a standalone application binary, an application bundle, and/or an installer package, depending on the platform. These files can be installed on your system or distributed.

rpm_license:
  Copyright (c) 2022 Sammi de Guzman 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: 6af5e94db7a6a3a6fe40fd89096c6feefa6f47ae509742846189aff4d74e19a1
name: python-alleycat-reactive
arch: src
version: 0.4.8
epoch: 0
release: 1
summary: A simple Python library to provide an API to implement the Reactive Object Pattern (ROP).
url: https://github.com/mysticfall/alleycat-reactive
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-alleycat-reactive-0.4.8-1.src.rpm
checksum_type: sha256
description:
  ![pytest](https://github.com/mysticfall/alleycat-reactive/workflows/pytest/badge.svg)
  [![PyPI version](https://badge.fury.io/py/alleycat-reactive.svg)](https://badge.fury.io/py/alleycat-reactive)


  A part of the AlleyCat project which supports the _Reactive Object Pattern_.



  AlleyCat Reactive is a project to explore the possibility of bridging the gap between the
  two most widely used programming paradigms, namely, the object-oriented programming (OOP),
  and functional programming (FP).

  It aims to achieve its goal by proposing a new design pattern based on the
  [Reactive Extensions (Rx)](http://reactivex.io/).

  Even though it is already available on [PyPI repository](https://pypi.org/project/alleycat-reactive/)
  as `alleycat-reactive` package, the project is currently at a proof-of-concept stage
  and highly experimental.

  As such, there can be significant changes in the API at any time in future. Furthermore, the project
  may even be discontinued in case the idea it is based upon proves to be an infeasible one.

  So, please use it at your discretion and consider opening an issue if you encounter a problem.



  AlleyCat Reactive provides an API to implement what we term as _Reactive Object Pattern_ or
  _ROP_ for short. Despite its rather pretentious name, it merely means defining class properties
  which can also serve as an _Observable_ in Rx.

  But why do we need such a thing?

  We won't delve into this subject too much since you can learn about the concept from many
  other websites.

  In short, it's much better to define data in a declarative manner, or as "data pipelines",
  especially when it's changing over time. And Rx is all about composing and manipulating such
  pipelines in a potentially asynchronous context.

  But what if the data do not come from an asynchronous source, like Tweets or GUI events,
  but are just properties of an object? Of course, Rx can handle synchronous data as well, but the
  cost of using it may outweigh the benefits in such a scenario.

  In a traditional OOP system, properties of an object are mere values which are often
  mutable, but not observable by default. To observe the change of a property over time, we
  must use an observer pattern, usually in the form of a separate event.

  Some implementation of Rx allows converting such an event into an _Observable_. Still, it
  can be a tedious task to define an event for every such property, and it requires a lot of
  boilerplate code to convert them into Rx pipelines.

  More importantly, the resulting pipelines and their handling code don't have any clear
  relationship with the original object or its properties from which they got derived. They
  are just a bunch of statements which you can put anywhere in the project, and that's not
  how you want to design your business logic in an OOP project.

  In a well-designed OOP project, classes form a coherent whole by participating in
  inheritance hierarchies. They may reference, extend, or redefine properties of their
  parents or associated objects to express the behaviours and traits of the domain concepts
  they represent.

  And there is another problem with using _Observables_ in such a manner. Once you build an Rx
  pipeline, you can't retrieve the value flowing inside unless you write still more boilerplate
  code to subscribe to the stream and store its value to an outside variable.

  This practice is usually discouraged as an anti-pattern, and so is the use of _Subjects_.
  However, the object is not observing some outside data (e.g. Tweets) but owns it, which is
  one of the few cases where the use of a _Subject_ can be justified. In such a context, it's
  perfectly reasonable to assume that an object always has access to a snapshot of all the
  states it owns.

  So, what if we can define such state data of an object as _Observables_ which can also
  behave like ordinary properties? Wouldn't it be nice if we can easily access them as in OOP
  while still being able to observe and compose them like in Rx?

  And that is what this project is trying to achieve.



  To achieve the goal outlined in the previous section, we provide a way to define a property
  which can also turn into an _Observable_. And there are two different types of such
  property classes you can use for that purpose.



  Firstly, there is a type of property that can manage its state, which is implemented by
  `ReactiveProperty[T]` class. To define such a property using an initial value, you can use
  a helper function `from_value` as follows:

  ```python
  from alleycat.reactive import RP
  from alleycat.reactive import functions as rv

  class Toto:

      
      value: RP[int] = rv.from_value(99) # You know the song, don't you?
  ```

  Note that `RP[T]` is just a convenient alias for `ReactiveProperty[T]` which you can use for
  type hinting. As with other type annotations in Python, it is not strictly necessary. But it
  can be particularly useful when you want to lazily initialize the property.

  You can declare an 'empty' property using `new_property` and initialize it later as shown
  below. Because it may be difficult to see what type of data the property expects without an
  initial value, using an explicit type annotation can make the code more readable:

  ```python
  from alleycat.reactive import RP
  from alleycat.reactive import functions as rv

  class MyClass:

      
      value: RP[int] = rv.new_property()

      def __init__(self, init_value: int):

          
          self.value = init_value
  ```

  A `ReactiveProperty` can be can be read and modified like an ordinary class attribute. And
  also you can make it a read-only property by setting the `read_only` argument to `True` like the
  following example:

  ```python
  from alleycat.reactive import RP
  from alleycat.reactive import functions as rv

  class ArcadiaBay:

      writeable: RP[str] = rv.from_value("life is strange")

      read_only: RP[str] = rv.from_value("the past", read_only=True)


  place = ArcadiaBay()

  print(place.writeable) # "life is strange"
  print(place.read_only) # "the past"

  place.writeable = "It's awesome"

  print(place.writeable) # "It's awesome"

  place.read_only = "Let me rewind." # Throws an AttributeError


  ```

  But haven't we talked about Rx? Of course, we have! And that's the whole point of
  the library, after all.

  To convert a reactive property into an _Observable_ of the same type, you can use observe
  method like this:

  ```python
  from alleycat.reactive import RP
  from alleycat.reactive import functions as rv

  class Nena:

      ballons: RP[int] = rv.from_value(98)


  nena = Nena()

  luftballons = []

  rv.observe(nena.ballons).subscribe(luftballons.append) # Returns a Disposable. See Rx API.

  print(luftballons) # Returns [98].

  nena.ballons = nena.ballons + 1

  print(luftballons) # [98, 99] # Ok, I lied before. It's about Nena. not Toto :P
  ```

  If you are familiar with Rx, you may notice the similarities between `ReactiveProperty`
  with _BehaviorSubject_. In fact, the former is a wrapper around the latter, and `observe`
  returns an _Observable_ instance backed by such a subject.

  To learn about all the exciting things we can do with an _Observable_, you may want to
  read the official documentation of Rx. We will introduce a few examples later, but before
  that, we better learn about the other variant of the reactive value first.



  `ReactiveView[T]`(or `RV[T]` for short) is another derivative of `ReactiveValue`, from
  which `ReactiveProperty` is also derived (hence, the alias of `functions` module used
  above, _"rv"_).

  The main difference is that while the latter owns a state value itself, a reactive view
  reflects it from an outside source specified as an _Observable_. To create a reactive
  view from an instance of _Observable_, you can use `from_observable` function like this:

  ```python
  import rx
  from alleycat.reactive import RV
  from alleycat.reactive import functions as rv

  class Joni:

      big: RV[str] = rv.from_observable(rx.of("Yellow", "Taxi"))
  ```

  If you are familiar with Rx, you may see it as a wrapper around an _Observable_, while
  a reactive property can be seen as one around a _Subject_.

  Like its counterpart, you can initialize a reactive view either eagerly or lazily. In order
  to create a lazy-initializing view, you can use `new_view`, and later provide an _Observable_
  as shown below:

  ```python
  import rx
  from alleycat.reactive import RV
  from alleycat.reactive import functions as rv

  class BothSides:

      love: RV[str] = rv.new_view()

      def __init__(self):
          self.love = rx.of("Moons", "Junes", "Ferris wheels")
  ```

  It also accepts `read_only` option from its constructor (default to `True`, in contrast to the case
  with `ReactiveProperty`) setting of which will make it 'writeable'.

  It may sound unintuitive since a 'view' usually implies immutability. However, what changes
  when you set a value of a reactive view is the source _Observable_ that the view monitors,
  not the data itself, as is the case with a reactive property.

  Lastly, you can convert a reactive property into a view by calling its `as_view` method.
  It's a convenient shortcut to call `observe` to obtain an _Observable_ of a reactive property
  so that it can be used to initialize an associated view.

  The code below shows how you can derive a view from an existing reactive property:

  ```python
  from alleycat.reactive import RP, RV
  from alleycat.reactive import functions as rv

  class Example:

      value: RP[str] = rv.from_value("Boring!") # I know. But it's not easy to make it interesting, alright?

      view: RV[str] = value.as_view()
  ```



  As we know how to create reactive properties and values, now it's time to learn how to
  transform them. Both variants of `ReactiveValue` provides `map` method, with which you
  can map an arbitrary function or lambda expression over each value in the pipeline:

  ```python
  from alleycat.reactive import RP, RV
  from alleycat.reactive import functions as rv

  class Counter:

      word: RP[str] = rv.new_property()

      count: RV[str] = word.as_view().map(len).map(lambda o, c: f"The word has {c} letter(s)")
      

  counter = Counter()

  counter.word = "Supercalifragilisticexpialidocious!"

  print(counter.count) # Prints "The word has 35 letter(s)". Wait, did you actually count that?
  ```

  You can also use `pipe` to chain arbitrary Rx operators to build a more complex pipeline like this:

  ```python
  from rx import operators as ops
  from alleycat.reactive import RP, RV
  from alleycat.reactive import functions as rv

  class CrowsCounter:

      animal: RP[str] = rv.new_property()

      
      crows: RV[str] = animal.as_view().pipe(lambda o: (
          ops.map(str.lower),
          ops.filter(lambda v: v == "crow"),
          ops.map(lambda _: 1),
          ops.scan(lambda v1, v2: v1 + v2, 0)))

  counting = CrowsCounter()

  counting.animal = "cat"
  counting.animal = "Crow"
  counting.animal = "CROW"
  counting.animal = "dog"

  print(counting.crows) # Returns 2.
  ```

  There are also convenient counterparts to `merge`, `combine_latest`, and `zip` from Rx API,
  which you can use to combine two or more reactive values in a more concise manner:

  ```python
  from alleycat.reactive import RP, RV
  from alleycat.reactive import functions as rv

  class Rectangle:

      width: RP[int] = rv.from_value(100)

      height: RP[int] = rv.from_value(200)

      area: RV[int] = rv.combine_latest(width, height)(lambda v: v[0] * v[1])

  rectangle = Rectangle()

  print(rectangle.area) # Prints 20,000... you do the math!

  rectangle.width = 150

  print(rectangle.area) # Prints 30,000.

  rectangle.height = 50

  print(rectangle.area) # Prints 750.
  ```



  The library can be installed using `pip` as follows:
  ```shell script
  pip install alleycat-reactive
  ```


  This project is provided under the terms of _[MIT License](LICENSE)_.


pkgId: 79d25239b3bd64ccecba107d7b049243281011d60b472c2439586b704e2e7309
name: python-allianceauth
arch: src
version: 4.3.1
epoch: 0
release: 1
summary: An auth system for EVE Online to help in-game organizations
url: https://gitlab.com/allianceauth/allianceauth
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-allianceauth-4.3.1-1.src.rpm
checksum_type: sha256
description:
  [![license](https://img.shields.io/badge/license-GPLv2-green)](https://pypi.org/project/allianceauth/)
  [![python](https://img.shields.io/pypi/pyversions/allianceauth)](https://pypi.org/project/allianceauth/)
  [![django](https://img.shields.io/pypi/djversions/allianceauth?label=django)](https://pypi.org/project/allianceauth/)
  [![version](https://img.shields.io/pypi/v/allianceauth?label=release)](https://pypi.org/project/allianceauth/)
  [![pipeline status](https://gitlab.com/allianceauth/allianceauth/badges/master/pipeline.svg)](https://gitlab.com/allianceauth/allianceauth/commits/master)
  [![Documentation Status](https://readthedocs.org/projects/allianceauth/badge/?version=latest)](http://allianceauth.readthedocs.io/?badge=latest)
  [![coverage report](https://gitlab.com/allianceauth/allianceauth/badges/master/coverage.svg)](https://gitlab.com/allianceauth/allianceauth/commits/master)
  [![Chat on Discord](https://img.shields.io/discord/399006117012832262.svg)](https://discord.gg/fjnHAmk)

  An auth system for EVE Online to help in-game organizations manage online service access.



  - [Overview](#overview)
  - [Documentation](http://allianceauth.rtfd.io)
  - [Support](#support)
  - [Release Notes](https://gitlab.com/allianceauth/allianceauth/-/releases)
  - [Developer Team](#development-team)
  - [Contributing](#contributing)



  Alliance Auth (AA) is a web site that helps Eve Online organizations efficiently manage access to applications and services.

  Main features:

  - Automatically grants or revokes user access to external services (e.g. Discord, Mumble) and web apps (e.g. SRP requests) based on the user's current membership to [in-game organizations](https://allianceauth.readthedocs.io/en/latest/features/core/states/) and [groups](https://allianceauth.readthedocs.io/en/latest/features/core/groups/)

  - Provides a central web site where users can directly access web apps (e.g. SRP requests, Fleet Schedule) and manage their access to external services and groups.

  - Includes a set of connectors (called ["services"](https://allianceauth.readthedocs.io/en/latest/features/services/)) for integrating access management with many popular external applications / services like Discord, Mumble, Teamspeak 3, SMF and others

  - Includes a set of web [apps](https://allianceauth.readthedocs.io/en/latest/features/apps/) which add many useful functions, e.g.: fleet schedule, timer board, SRP request management, fleet activity tracker

  - Can be easily extended with additional services and apps. Many are provided by the community and can be found here: [Community Creations](https://gitlab.com/allianceauth/community-creations)

  - English :flag_gb:, Chinese :flag_cn:, German :flag_de:, Spanish :flag_es:, Korean :flag_kr:, Russian :flag_ru:, Italian :flag_it:, French :flag_fr:, Japanese :flag_jp: and Ukrainian :flag_ua: Localization

  For further details about AA - including an installation guide and a full list of included services and plugin apps - please see the [official documentation](http://allianceauth.rtfd.io).



  Here is an example of the Alliance Auth web site with some plug-ins apps and services enabled:

  ![screenshot](https://i.imgur.com/2tnX9kD.png)



  [Get help on Discord](https://discord.gg/fjnHAmk) or submit an [issue](https://gitlab.com/allianceauth/allianceauth/issues).





  - [Aaron Kable](https://gitlab.com/aaronkable/)
  - [Ariel Rin](https://gitlab.com/soratidus999/)
  - [Col Crunch](https://gitlab.com/colcrunch/)
  - [Erik Kalkoken](https://gitlab.com/ErikKalkoken/)
  - [Rounon Dax](https://gitlab.com/ppfeufer)
  - [snipereagle1](https://gitlab.com/mckernanin)



  - [Adarnof](https://gitlab.com/adarnof/)
  - [Basraah](https://gitlab.com/basraah/)



  - [ghoti](https://gitlab.com/ChainsawMcGinny/)
  - [kaezon](https://github.com/kaezon/)
  - [mmolitor87](https://gitlab.com/mmolitor87/)
  - [orbitroom](https://github.com/orbitroom/)
  - [TargetZ3R0](https://github.com/TargetZ3R0)
  - [tehfiend](https://github.com/tehfiend/)

  Special thanks to [Nikdoof](https://github.com/nikdoof/), as his [auth](https://github.com/nikdoof/test-auth) was the foundation for the original work on this project.



  Alliance Auth is maintained and developed by the community and we welcome every contribution!

  To see what needs to be worked on please review our issue list or chat with our active developers on Discord.

  Also, please make sure you have signed the [License Agreement](https://developers.eveonline.com/resource/license-agreement) by logging in at [https://developers.eveonline.com](https://developers.eveonline.com) before submitting any pull requests.

  In addition to the core AA system we also very much welcome contributions to our growing list of 3rd party services and plugin apps. Please see [AA Community Creations](https://gitlab.com/allianceauth/community-creations) for details.


pkgId: 71f0c316bf7d2d5daf29d33e4065c31b0b5735a13eb5c6a4c8e80274b4150938
name: python-allianceauth
arch: src
version: 4.4.2
epoch: 0
release: 1
summary: An auth system for EVE Online to help in-game organizations
url: https://gitlab.com/allianceauth/allianceauth
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-allianceauth-4.4.2-1.src.rpm
checksum_type: sha256
description:
  [![license](https://img.shields.io/badge/license-GPLv2-green)](https://pypi.org/project/allianceauth/)
  [![python](https://img.shields.io/pypi/pyversions/allianceauth)](https://pypi.org/project/allianceauth/)
  [![django](https://img.shields.io/pypi/djversions/allianceauth?label=django)](https://pypi.org/project/allianceauth/)
  [![version](https://img.shields.io/pypi/v/allianceauth?label=release)](https://pypi.org/project/allianceauth/)
  [![pipeline status](https://gitlab.com/allianceauth/allianceauth/badges/master/pipeline.svg)](https://gitlab.com/allianceauth/allianceauth/commits/master)
  [![Documentation Status](https://readthedocs.org/projects/allianceauth/badge/?version=latest)](https://allianceauth.readthedocs.io/?badge=latest)
  [![coverage report](https://gitlab.com/allianceauth/allianceauth/badges/master/coverage.svg)](https://gitlab.com/allianceauth/allianceauth/commits/master)
  [![Chat on Discord](https://img.shields.io/discord/399006117012832262.svg)](https://discord.gg/fjnHAmk)

  An auth system for EVE Online to help in-game organizations manage online service access.



  - [Overview](#overview)
  - [Documentation](https://allianceauth.rtfd.io)
  - [Support](#support)
  - [Release Notes](https://gitlab.com/allianceauth/allianceauth/-/releases)
  - [Developer Team](#development-team)
  - [Contributing](#contributing)



  Alliance Auth (AA) is a web site that helps Eve Online organizations efficiently manage access to applications and services.

  Main features:

  - Automatically grants or revokes user access to external services (e.g. Discord, Mumble) and web apps (e.g. SRP requests) based on the user's current membership to [in-game organizations](https://allianceauth.readthedocs.io/en/latest/features/core/states/) and [groups](https://allianceauth.readthedocs.io/en/latest/features/core/groups/)

  - Provides a central web site where users can directly access web apps (e.g. SRP requests, Fleet Schedule) and manage their access to external services and groups.

  - Includes a set of connectors (called ["services"](https://allianceauth.readthedocs.io/en/latest/features/services/)) for integrating access management with many popular external applications / services like Discord, Mumble, Teamspeak 3, SMF and others

  - Includes a set of web [apps](https://allianceauth.readthedocs.io/en/latest/features/apps/) which add many useful functions, e.g.: fleet schedule, timer board, SRP request management, fleet activity tracker

  - Can be easily extended with additional services and apps. Many are provided by the community and can be found here: [Community Creations](https://gitlab.com/allianceauth/community-creations)

  - English :flag_gb:, Chinese :flag_cn:, German :flag_de:, Spanish :flag_es:, Korean :flag_kr:, Russian :flag_ru:, Italian :flag_it:, French :flag_fr:, Japanese :flag_jp: and Ukrainian :flag_ua: Localization

  For further details about AA - including an installation guide and a full list of included services and plugin apps - please see the [official documentation](https://allianceauth.rtfd.io).



  Here is an example of the Alliance Auth web site with some plug-ins apps and services enabled:

  ![screenshot](https://i.imgur.com/2tnX9kD.png)



  [Get help on Discord](https://discord.gg/fjnHAmk) or submit an [issue](https://gitlab.com/allianceauth/allianceauth/issues).





  - [Aaron Kable](https://gitlab.com/aaronkable/)
  - [Ariel Rin](https://gitlab.com/soratidus999/)
  - [Col Crunch](https://gitlab.com/colcrunch/)
  - [Erik Kalkoken](https://gitlab.com/ErikKalkoken/)
  - [Rounon Dax](https://gitlab.com/ppfeufer)
  - [snipereagle1](https://gitlab.com/mckernanin)



  - [Adarnof](https://gitlab.com/adarnof/)
  - [Basraah](https://gitlab.com/basraah/)



  - [ghoti](https://gitlab.com/ChainsawMcGinny/)
  - [kaezon](https://github.com/kaezon/)
  - [mmolitor87](https://gitlab.com/mmolitor87/)
  - [orbitroom](https://github.com/orbitroom/)
  - [TargetZ3R0](https://github.com/TargetZ3R0)
  - [tehfiend](https://github.com/tehfiend/)

  Special thanks to [Nikdoof](https://github.com/nikdoof/), as his [auth](https://github.com/nikdoof/test-auth) was the foundation for the original work on this project.



  Alliance Auth is maintained and developed by the community and we welcome every contribution!

  To see what needs to be worked on please review our issue list or chat with our active developers on Discord.

  Also, please make sure you have signed the [License Agreement](https://developers.eveonline.com/resource/license-agreement) by logging in at [https://developers.eveonline.com](https://developers.eveonline.com) before submitting any pull requests.

  In addition to the core AA system we also very much welcome contributions to our growing list of 3rd party services and plugin apps. Please see [AA Community Creations](https://gitlab.com/allianceauth/community-creations) for details.


pkgId: 1300782292804ea4e3c6c99bbfa40cddd75cbc046f9ffec2d8fd96804ecd79ad
name: python-allianceauth-afat
arch: src
version: 3.2.0
epoch: 0
release: 1
summary: Another Fleet Activity Tracking tool for Alliance Auth
url: https://github.com/ppfeufer/allianceauth-afat
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-allianceauth-afat-3.2.0-1.src.rpm
checksum_type: sha256
description:
  [![Version](https://img.shields.io/pypi/v/allianceauth-afat?label=release)](https://pypi.org/project/allianceauth-afat/)
  [![License](https://img.shields.io/badge/license-GPLv3-green)](https://pypi.org/project/allianceauth-afat/)
  [![Python](https://img.shields.io/pypi/pyversions/allianceauth-afat)](https://pypi.org/project/allianceauth-afat/)
  [![Django](https://img.shields.io/pypi/djversions/allianceauth-afat?label=django)](https://pypi.org/project/allianceauth-afat/)
  ![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)
  [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/ppfeufer/allianceauth-afat/master.svg)](https://results.pre-commit.ci/latest/github/ppfeufer/allianceauth-afat/master)
  [![Code Style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](http://black.readthedocs.io/en/latest/)
  [![Automated Checks](https://github.com/ppfeufer/allianceauth-afat/actions/workflows/automated-checks.yml/badge.svg)](https://github.com/ppfeufer/allianceauth-afat/actions/workflows/automated-checks.yml)
  [![codecov](https://codecov.io/gh/ppfeufer/allianceauth-afat/branch/master/graph/badge.svg?token=GNE88NUAKK)](https://codecov.io/gh/ppfeufer/allianceauth-afat)
  [![Translation status](https://weblate.ppfeufer.de/widget/alliance-auth-apps/allianceauth-afat/svg-badge.svg)](https://weblate.ppfeufer.de/engage/alliance-auth-apps/)
  [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/ppfeufer/aa-forum/blob/master/CODE_OF_CONDUCT.md)
  [![Discord](https://img.shields.io/discord/790364535294132234?label=discord)](https://discord.gg/zmh52wnfvM)

  [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/N4N8CL1BY)

  An Improved FAT/PAP System for
  [Alliance Auth](https://gitlab.com/allianceauth/allianceauth).

  ______________________________________________________________________

  <!-- mdformat-toc start --slug=github --maxlevel=6 --minlevel=1 -->

  - [Alliance Auth AFAT — Another Fleet Activity Tracker](#alliance-auth-afat-%E2%80%94-another-fleet-activity-tracker)
    - [Features and Highlights](#features-and-highlights)
    - [Screenshots](#screenshots)
      - [Dashboard](#dashboard)
      - [Fat Link List](#fat-link-list)
      - [Fat Link Details](#fat-link-details)
      - [Add Fat Link View for FCs](#add-fat-link-view-for-fcs)
    - [Installation](#installation)
      - [Important](#important)
      - [Step 1: Install the App](#step-1-install-the-app)
      - [Step 2: Update Your AA Settings](#step-2-update-your-aa-settings)
      - [Step 3: Finalizing the Installation](#step-3-finalizing-the-installation)
    - [Updating](#updating)
    - [Data Migration](#data-migration)
      - [Import From Native FAT](#import-from-native-fat)
      - [Import From ImicusFAT](#import-from-imicusfat)
        - [Uninstall ImicusFAT](#uninstall-imicusfat)
    - [Settings](#settings)
    - [Permissions](#permissions)
    - [Changelog](#changelog)
    - [Translation Status](#translation-status)
    - [Contributing](#contributing)
    - [Credits](#credits)

  <!-- mdformat-toc end -->

  ______________________________________________________________________



  - Automatic tracking of participation on FAT links created via ESI
  - Multiple ESI fleets (with your alts)
  - Manually end ESI tracking per fleet
  - Fleet type classification (can be added in the admin backend)
  - Ship type overview per FAT link
  - Graphical statistics views
  - Custom module name
  - Re-open FAT link if the FAT link has expired and is within the defined grace time
    (only for clickable FAT links)
  - Manually add pilots to clickable FAT links, in case they missed clicking the link
    (for a period of 24 hours after the FAT links original expiry time)
  - Log for the following actions (Logs are kept for a certain time, 60 days per default):
    - Create FAT link
    - Change FAT link
    - Remove FAT link
    - Re-open FAT link
    - Manually add pilot to FAT link
    - Remove pilot from FAT link

  AFAT will work alongside the built-in native FAT System and ImicusFAT.
  However, data doesn't share, but you can migrate their data to AFAT, for more
  information, see below.





  ![Dashboard](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/afat-dashboard.png "Dashboard")



  ![Fat Link List](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/fatlink-list.png "Fat Link List")



  ![Fat Link Details](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/changelog/1.9.0/ship-type-overview.png "Fat Link Details")



  ![Add Fat Link View for FCs](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/add-fatlink.png "Add Fat Link View for FCs")



  > \[!NOTE\]
  >
  > **Alliance Auth AFAT >= 3.0.0 needs at least Alliance Auth v4.0.0!**
  >
  > Please make sure to update your Alliance Auth instance _before_ you install this
  > module or update to the latest version, otherwise an update to Alliance Auth will
  > be pulled in unsupervised.
  >
  > The last version compatible with Alliance Auth v3 is `2.13.0`.



  This app is a plugin for Alliance Auth. If you don't have Alliance Auth running already,
  please install it first before proceeding. (See the official
  [AA installation guide](https://allianceauth.readthedocs.io/en/latest/installation/allianceauth.html)
  for details)

  **For users migrating from one of the other FAT systems, please read the specific
  instructions FIRST.**



  Make sure you're in the virtual environment (venv) of your Alliance Auth installation.
  Then install the latest version:

  ```bash
  pip install allianceauth-afat
  ```



  Configure your AA settings in your `local.py` as follows:

  - Add `'afat',` to `INSTALLED_APPS`
  - Add the scheduled tasks

  ```python

  CELERYBEAT_SCHEDULE["afat_update_esi_fatlinks"] = {
      "task": "afat.tasks.update_esi_fatlinks",
      "schedule": crontab(minute="*/1"),
  }

  CELERYBEAT_SCHEDULE["afat_logrotate"] = {
      "task": "afat.tasks.logrotate",
      "schedule": crontab(minute="0", hour="1"),
  }
  ```



  Run migrations & copy static files

  ```bash
  python manage.py collectstatic
  python manage.py migrate
  ```

  Restart your supervisor services for AA.



  To update your existing installation of AFAT, first enable your
  virtual environment (venv) of your Alliance Auth installation.

  ```bash
  pip install -U allianceauth-afat

  python manage.py collectstatic
  python manage.py migrate
  ```

  Finally, restart your supervisor services for AA

  It is possible that some versions need some more changes. Always read the
  [release notes](https://github.com/ppfeufer/allianceauth-afat/releases) to find out
  more.



  Right after the **initial** installation and running migrations,
  you can import the data from Alliance Auth's native FAT system or from ImicusFAT if
  you have used one of these until now.



  To import from the native FAT module, simply run the following command:

  ```shell
  python myauth/manage.py afat_import_from_allianceauth_fat
  ```



  To import from the ImicusFAT module, simply run the following command:

  ```shell
  python myauth/manage.py afat_import_from_imicusfat
  ```



  Now that you've migrated, you can uninstal `ImicusFAT`.

  First, remove all Django migrations for `ImicusFAT` with:

  ```shell
  python manage.py migrate imicusfat zero
  ```

  This will remove all migrations for `ImicusFAT` including its DB tables.

  Should this command throw an error, a bit of manual labor is needed, but nothing you
  can't handle, I'm sure.

  ```shell
  python manage.py migrate imicusfat zero --fake
  ```

  And remove all DB tables beginning with `imicusfat_` from your DB manually afterwards.

  Now that the DB is cleaned up, time to remove te app.

  ```shell
  pip uninstall allianceauth-imicusfat
  ```

  Now remove `imicusfat` from your `INSTALLED_APPS` in your `local.py`, restart
  supervisor and ... Done!



  To customize the module, the following settings are available.

  | Name                                   | Description                                                      | Default Value           | Value Type |
  | :------------------------------------- | :--------------------------------------------------------------- | :---------------------- | :--------- |
  | AFAT_APP_NAME                          | Custom application name, in case you'd like a different name     | Fleet Activity Tracking | string     |
  | AFAT_DEFAULT_FATLINK_EXPIRY_TIME       | Default expiry time for clickable FAT links in Minutes           | 60                      | int        |
  | AFAT_DEFAULT_FATLINK_REOPEN_GRACE_TIME | Time in minutes a FAT link can be re-opened after it has expired | 60                      | int        |
  | AFAT_DEFAULT_FATLINK_REOPEN_DURATION   | Time in minutes a FAT link is re-opened                          | 60                      | int        |
  | AFAT_DEFAULT_LOG_DURATION              | Time in days before log entries are being removed from the DB    | 60                      | int        |



  | Name                    | Description                              | Notes                                                                                                                                                                           |
  | :---------------------- | :--------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
  | basic_access            | Can access the AFAT module               | Your line member probably want this permission, so they can see the module and click the FAT links they are given. They also can see their own statistics with this permission. |
  | manage_afat             | Can manage the AFAT module               | Your Military lead probably should get this permission                                                                                                                          |
  | add_fatlink             | Can create FAT Links                     | Your regular FC or who ever should be able to add FAT links should have this permission                                                                                         |
  | stats_corporation_own   | Can see own corporation statistics       |                                                                                                                                                                                 |
  | stats_corporation_other | Can see statistics of other corporations |                                                                                                                                                                                 |
  | logs_view               | Can view the modules logs                |                                                                                                                                                                                 |



  To keep track of all changes, please read the
  [Changelog](https://github.com/ppfeufer/allianceauth-afat/blob/master/CHANGELOG.md).



  [![Translation status](https://weblate.ppfeufer.de/widget/alliance-auth-apps/allianceauth-afat/multi-auto.svg)](https://weblate.ppfeufer.de/engage/alliance-auth-apps/)

  Do you want to help translate this app into your language or improve the existing
  translation? - [Join our team of translators][weblate engage]!



  You want to contribute to this project? That's cool!

  Please make sure to read the [contribution guidelines](https://github.com/ppfeufer/allianceauth-afat/blob/master/CONTRIBUTING.md).\
  (I promise, it's not much, just some basics)



  AFAT is maintained by @ppfeufer and is based on
  [ImicusFAT](https://gitlab.com/evictus.iou/allianceauth-imicusfat)
  by @exiom with @Aproia and @ppfeufer which is based on
  [allianceauth-bfat](https://gitlab.com/colcrunch/allianceauth-bfat) by @colcrunch

  Both of these modules are no longer maintained and are deprecated. Both modules will
  not run with the latest stable releases of Alliance Auth.

  <!-- Inline Links -->

  [weblate engage]: https://weblate.ppfeufer.de/engage/alliance-auth-apps/ "Weblate Translations"

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


pkgId: dc0086840a971dfe9c5087b5debb62d4531980fbcd67fa8440b73bc45e1fd7aa
name: python-allianceauth-afat
arch: src
version: 3.4.0
epoch: 0
release: 1
summary: Another Fleet Activity Tracking tool for Alliance Auth
url: https://github.com/ppfeufer/allianceauth-afat
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-allianceauth-afat-3.4.0-1.src.rpm
checksum_type: sha256
description:
  [![Version](https://img.shields.io/pypi/v/allianceauth-afat?label=release)](https://pypi.org/project/allianceauth-afat/)
  [![License](https://img.shields.io/badge/license-GPLv3-green)](https://pypi.org/project/allianceauth-afat/)
  [![Python](https://img.shields.io/pypi/pyversions/allianceauth-afat)](https://pypi.org/project/allianceauth-afat/)
  [![Django](https://img.shields.io/pypi/djversions/allianceauth-afat?label=django)](https://pypi.org/project/allianceauth-afat/)
  ![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)
  [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/ppfeufer/allianceauth-afat/master.svg)](https://results.pre-commit.ci/latest/github/ppfeufer/allianceauth-afat/master)
  [![Code Style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](http://black.readthedocs.io/en/latest/)
  [![Automated Checks](https://github.com/ppfeufer/allianceauth-afat/actions/workflows/automated-checks.yml/badge.svg)](https://github.com/ppfeufer/allianceauth-afat/actions/workflows/automated-checks.yml)
  [![codecov](https://codecov.io/gh/ppfeufer/allianceauth-afat/branch/master/graph/badge.svg?token=GNE88NUAKK)](https://codecov.io/gh/ppfeufer/allianceauth-afat)
  [![Translation status](https://weblate.ppfeufer.de/widget/alliance-auth-apps/allianceauth-afat/svg-badge.svg)](https://weblate.ppfeufer.de/engage/alliance-auth-apps/)
  [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/ppfeufer/aa-forum/blob/master/CODE_OF_CONDUCT.md)
  [![Discord](https://img.shields.io/discord/790364535294132234?label=discord)](https://discord.gg/zmh52wnfvM)

  [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/N4N8CL1BY)

  An Improved FAT/PAP System for
  [Alliance Auth](https://gitlab.com/allianceauth/allianceauth).

  ______________________________________________________________________

  <!-- mdformat-toc start --slug=github --maxlevel=6 --minlevel=1 -->

  - [Alliance Auth AFAT — Another Fleet Activity Tracker](#alliance-auth-afat-%E2%80%94-another-fleet-activity-tracker)
    - [Features and Highlights](#features-and-highlights)
    - [Screenshots](#screenshots)
      - [Dashboard](#dashboard)
      - [Fat Link List](#fat-link-list)
      - [Fat Link Details](#fat-link-details)
      - [Add Fat Link View for FCs](#add-fat-link-view-for-fcs)
    - [Installation](#installation)
      - [Important](#important)
      - [Step 1: Install the App](#step-1-install-the-app)
      - [Step 2: Update Your AA Settings](#step-2-update-your-aa-settings)
      - [Step 3: Finalizing the Installation](#step-3-finalizing-the-installation)
    - [Updating](#updating)
    - [Data Migration](#data-migration)
      - [Import From Native FAT](#import-from-native-fat)
    - [Settings](#settings)
    - [Permissions](#permissions)
    - [Changelog](#changelog)
    - [Translation Status](#translation-status)
    - [Contributing](#contributing)
    - [Credits](#credits)

  <!-- mdformat-toc end -->

  ______________________________________________________________________



  - Automatic tracking of participation on FAT links created via ESI
  - Multiple ESI fleets (with your alts)
  - Manually end ESI tracking per fleet
  - Fleet type classification (can be added in the admin backend)
  - Ship type overview per FAT link
  - Graphical statistics views
  - Custom module name
  - Re-open FAT link if the FAT link has expired and is within the defined grace time
    (only for clickable FAT links)
  - Manually add pilots to clickable FAT links, in case they missed clicking the link
    (for a period of 24 hours after the FAT links original expiry time)
  - Log for the following actions (Logs are kept for a certain time, 60 days per default):
    - Create FAT link
    - Change FAT link
    - Remove FAT link
    - Re-open FAT link
    - Manually add pilot to FAT link
    - Remove pilot from FAT link

  AFAT will work alongside the built-in native FAT System and ImicusFAT.
  However, data doesn't share, but you can migrate their data to AFAT, for more
  information, see below.





  ![Dashboard](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/afat-dashboard.png "Dashboard")



  ![Fat Link List](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/fatlink-list.png "Fat Link List")



  ![Fat Link Details](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/changelog/1.9.0/ship-type-overview.png "Fat Link Details")



  ![Add Fat Link View for FCs](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/add-fatlink.png "Add Fat Link View for FCs")



  > \[!NOTE\]
  >
  > **Alliance Auth AFAT >= 3.0.0 needs at least Alliance Auth v4.0.0!**
  >
  > Please make sure to update your Alliance Auth instance _before_ you install this
  > module or update to the latest version, otherwise an update to Alliance Auth will
  > be pulled in unsupervised.
  >
  > The last version compatible with Alliance Auth v3 is `2.13.0`.



  This app is a plugin for Alliance Auth. If you don't have Alliance Auth running already,
  please install it first before proceeding. (See the official
  [AA installation guide](https://allianceauth.readthedocs.io/en/latest/installation/allianceauth.html)
  for details)

  > \[!IMPORTANT\]
  >
  > For users migrating from Alliance Auth's built-in FAT systems,
  > please read the [specific instructions](#data-migration) FIRST.



  Make sure you're in the virtual environment (venv) of your Alliance Auth installation.
  Then install the latest version:

  ```bash
  pip install allianceauth-afat
  ```



  Configure your AA settings in your `local.py` as follows:

  - Add `'afat',` to `INSTALLED_APPS`
  - Add the scheduled tasks

  ```python

  CELERYBEAT_SCHEDULE["afat_update_esi_fatlinks"] = {
      "task": "afat.tasks.update_esi_fatlinks",
      "schedule": crontab(minute="*/1"),
  }

  CELERYBEAT_SCHEDULE["afat_logrotate"] = {
      "task": "afat.tasks.logrotate",
      "schedule": crontab(minute="0", hour="1"),
  }
  ```



  Run migrations & copy static files

  ```bash
  python manage.py collectstatic
  python manage.py migrate
  ```

  Restart your supervisor services for AA.



  To update your existing installation of AFAT, first enable your
  virtual environment (venv) of your Alliance Auth installation.

  ```bash
  pip install -U allianceauth-afat

  python manage.py collectstatic
  python manage.py migrate
  ```

  Finally, restart your supervisor services for AA

  It is possible that some versions need some more changes. Always read the
  [release notes](https://github.com/ppfeufer/allianceauth-afat/releases) to find out
  more.



  Right after the **initial** installation and running migrations,
  you can import the data from Alliance Auth's native FAT system if
  you have used one it until now.



  To import from the native FAT module, simply run the following command:

  ```shell
  python myauth/manage.py afat_import_from_allianceauth_fat
  ```



  To customize the module, the following settings can be managed in your admin backend:

  | Setting                            | Description                                                                                                                                                                                                           | Default Value |
  | :--------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------ |
  | Use doctrines from fittings module | Whether to use the doctrines from the Fittings modules in the doctrine dropdown or from AFATs own doctrine list. (Note: The [fittings module](https://gitlab.com/colcrunch/fittings) needs to be installed for this.) | No            |
  | Default FAT link expiry time       | Default expiry time for clickable FAT links in Minutes                                                                                                                                                                | 60            |
  | Default FAT link reopen grace time | Time in minutes a FAT link can be re-opened after it has expired                                                                                                                                                      | 60            |
  | Default FAT link reopen duration   | Time in minutes a FAT link is re-opened                                                                                                                                                                               | 60            |
  | Default log duration               | Time in days before log entries are being removed from the DB                                                                                                                                                         | 60            |



  | Name                    | Description                              | Notes                                                                                                                                                                           |
  | :---------------------- | :--------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
  | basic_access            | Can access the AFAT module               | Your line member probably want this permission, so they can see the module and click the FAT links they are given. They also can see their own statistics with this permission. |
  | manage_afat             | Can manage the AFAT module               | Your Military lead probably should get this permission                                                                                                                          |
  | add_fatlink             | Can create FAT Links                     | Your regular FC or who ever should be able to add FAT links should have this permission                                                                                         |
  | stats_corporation_own   | Can see own corporation statistics       |                                                                                                                                                                                 |
  | stats_corporation_other | Can see statistics of other corporations |                                                                                                                                                                                 |
  | logs_view               | Can view the modules logs                |                                                                                                                                                                                 |



  To keep track of all changes, please read the
  [Changelog](https://github.com/ppfeufer/allianceauth-afat/blob/master/CHANGELOG.md).



  [![Translation status](https://weblate.ppfeufer.de/widget/alliance-auth-apps/allianceauth-afat/multi-auto.svg)](https://weblate.ppfeufer.de/engage/alliance-auth-apps/)

  Do you want to help translate this app into your language or improve the existing
  translation? - [Join our team of translators][weblate engage]!



  You want to contribute to this project? That's cool!

  Please make sure to read the [contribution guidelines](https://github.com/ppfeufer/allianceauth-afat/blob/master/CONTRIBUTING.md).\
  (I promise, it's not much, just some basics)



  AFAT is maintained by @ppfeufer and is based on
  [ImicusFAT](https://gitlab.com/evictus.iou/allianceauth-imicusfat)
  by @exiom with @Aproia and @ppfeufer which is based on
  [allianceauth-bfat](https://gitlab.com/colcrunch/allianceauth-bfat) by @colcrunch

  Both of these modules are no longer maintained and are deprecated. Both modules will
  not run with the latest stable releases of Alliance Auth.

  <!-- Inline Links -->

  [weblate engage]: https://weblate.ppfeufer.de/engage/alliance-auth-apps/ "Weblate Translations"

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


pkgId: cfffc19e792e46cc76097130d1ceb46aa52151d4f051f9b25a44c56400d05ec4
name: python-allianceauth-afat
arch: src
version: 3.5.0
epoch: 0
release: 1
summary: Another Fleet Activity Tracking tool for Alliance Auth
url: https://github.com/ppfeufer/allianceauth-afat
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-allianceauth-afat-3.5.0-1.src.rpm
checksum_type: sha256
description:
  [![Version](https://img.shields.io/pypi/v/allianceauth-afat?label=release)](https://pypi.org/project/allianceauth-afat/)
  [![License](https://img.shields.io/badge/license-GPLv3-green)](https://pypi.org/project/allianceauth-afat/)
  [![Python](https://img.shields.io/pypi/pyversions/allianceauth-afat)](https://pypi.org/project/allianceauth-afat/)
  [![Django](https://img.shields.io/pypi/djversions/allianceauth-afat?label=django)](https://pypi.org/project/allianceauth-afat/)
  ![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)
  [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/ppfeufer/allianceauth-afat/master.svg)](https://results.pre-commit.ci/latest/github/ppfeufer/allianceauth-afat/master)
  [![Code Style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](http://black.readthedocs.io/en/latest/)
  [![Automated Checks](https://github.com/ppfeufer/allianceauth-afat/actions/workflows/automated-checks.yml/badge.svg)](https://github.com/ppfeufer/allianceauth-afat/actions/workflows/automated-checks.yml)
  [![codecov](https://codecov.io/gh/ppfeufer/allianceauth-afat/branch/master/graph/badge.svg?token=GNE88NUAKK)](https://codecov.io/gh/ppfeufer/allianceauth-afat)
  [![Translation status](https://weblate.ppfeufer.de/widget/alliance-auth-apps/allianceauth-afat/svg-badge.svg)](https://weblate.ppfeufer.de/engage/alliance-auth-apps/)
  [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/ppfeufer/aa-forum/blob/master/CODE_OF_CONDUCT.md)
  [![Discord](https://img.shields.io/discord/790364535294132234?label=discord)](https://discord.gg/zmh52wnfvM)

  [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/N4N8CL1BY)

  An Improved FAT/PAP System for
  [Alliance Auth](https://gitlab.com/allianceauth/allianceauth).

  ______________________________________________________________________

  <!-- mdformat-toc start --slug=github --maxlevel=6 --minlevel=2 -->

  - [Features and Highlights](#features-and-highlights)
  - [Screenshots](#screenshots)
    - [Dashboard](#dashboard)
    - [Fat Link List](#fat-link-list)
    - [Fat Link Details](#fat-link-details)
    - [Add Fat Link View for FCs](#add-fat-link-view-for-fcs)
  - [Installation](#installation)
    - [Important](#important)
    - [Step 1: Install the App](#step-1-install-the-app)
    - [Step 2: Update Your AA Settings](#step-2-update-your-aa-settings)
    - [Step 3: Finalizing the Installation](#step-3-finalizing-the-installation)
  - [Updating](#updating)
  - [Data Migration](#data-migration)
    - [Import From Native FAT](#import-from-native-fat)
  - [Settings](#settings)
  - [Permissions](#permissions)
  - [Changelog](#changelog)
  - [Translation Status](#translation-status)
  - [Contributing](#contributing)
  - [Credits](#credits)

  <!-- mdformat-toc end -->

  ______________________________________________________________________



  - Automatic tracking of participation on FAT links created via ESI
  - Multiple ESI fleets (with your alts)
  - Manually end ESI tracking per fleet
  - Fleet type classification (can be added in the admin backend)
  - Ship type overview per FAT link
  - Graphical statistics views
  - Custom module name
  - Re-open FAT link if the FAT link has expired and is within the defined grace time
    (only for clickable FAT links)
  - Manually add pilots to clickable FAT links, in case they missed clicking the link
    (for a period of 24 hours after the FAT links original expiry time)
  - Log for the following actions (Logs are kept for a certain time, 60 days per default):
    - Create FAT link
    - Change FAT link
    - Remove FAT link
    - Re-open FAT link
    - Manually add pilot to FAT link
    - Remove pilot from FAT link

  AFAT will work alongside the built-in native FAT System and ImicusFAT.
  However, data doesn't share, but you can migrate their data to AFAT, for more
  information, see below.





  ![Dashboard](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/afat-dashboard.png "Dashboard")



  ![Fat Link List](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/fatlink-list.png "Fat Link List")



  ![Fat Link Details](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/changelog/1.9.0/ship-type-overview.png "Fat Link Details")



  ![Add Fat Link View for FCs](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/add-fatlink.png "Add Fat Link View for FCs")



  > \[!NOTE\]
  >
  > **Alliance Auth AFAT >= 3.0.0 needs at least Alliance Auth v4.0.0!**
  >
  > Please make sure to update your Alliance Auth instance _before_ you install this
  > module or update to the latest version, otherwise an update to Alliance Auth will
  > be pulled in unsupervised.
  >
  > The last version compatible with Alliance Auth v3 is `2.13.0`.



  This app is a plugin for Alliance Auth. If you don't have Alliance Auth running already,
  please install it first before proceeding. (See the official
  [AA installation guide](https://allianceauth.readthedocs.io/en/latest/installation/allianceauth.html)
  for details)

  > \[!IMPORTANT\]
  >
  > For users migrating from Alliance Auth's built-in FAT systems,
  > please read the [specific instructions](#data-migration) FIRST.



  Make sure you're in the virtual environment (venv) of your Alliance Auth installation.
  Then install the latest version:

  ```bash
  pip install allianceauth-afat
  ```



  Configure your AA settings in your `local.py` as follows:

  - Add `'afat',` to `INSTALLED_APPS`
  - Add the scheduled tasks

  ```python

  CELERYBEAT_SCHEDULE["afat_update_esi_fatlinks"] = {
      "task": "afat.tasks.update_esi_fatlinks",
      "schedule": crontab(minute="*/1"),
  }

  CELERYBEAT_SCHEDULE["afat_logrotate"] = {
      "task": "afat.tasks.logrotate",
      "schedule": crontab(minute="0", hour="1"),
  }
  ```



  Run migrations & copy static files

  ```bash
  python manage.py collectstatic
  python manage.py migrate
  ```

  Restart your supervisor services for AA.



  To update your existing installation of AFAT, first enable your
  virtual environment (venv) of your Alliance Auth installation.

  ```bash
  pip install -U allianceauth-afat

  python manage.py collectstatic
  python manage.py migrate
  ```

  Finally, restart your supervisor services for AA

  It is possible that some versions need some more changes. Always read the
  [release notes](https://github.com/ppfeufer/allianceauth-afat/releases) to find out
  more.



  Right after the **initial** installation and running migrations,
  you can import the data from Alliance Auth's native FAT system if
  you have used one it until now.



  To import from the native FAT module, simply run the following command:

  ```shell
  python myauth/manage.py afat_import_from_allianceauth_fat
  ```



  To customize the module, the following settings can be managed in your admin backend:

  | Setting                            | Description                                                                                                                                                                                                           | Default Value |
  | :--------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------ |
  | Use doctrines from fittings module | Whether to use the doctrines from the Fittings modules in the doctrine dropdown or from AFATs own doctrine list. (Note: The [fittings module](https://gitlab.com/colcrunch/fittings) needs to be installed for this.) | No            |
  | Default FAT link expiry time       | Default expiry time for clickable FAT links in Minutes                                                                                                                                                                | 60            |
  | Default FAT link reopen grace time | Time in minutes a FAT link can be re-opened after it has expired                                                                                                                                                      | 60            |
  | Default FAT link reopen duration   | Time in minutes a FAT link is re-opened                                                                                                                                                                               | 60            |
  | Default log duration               | Time in days before log entries are being removed from the DB                                                                                                                                                         | 60            |



  | Name                    | Description                              | Notes                                                                                                                                                                           |
  | :---------------------- | :--------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
  | basic_access            | Can access the AFAT module               | Your line member probably want this permission, so they can see the module and click the FAT links they are given. They also can see their own statistics with this permission. |
  | manage_afat             | Can manage the AFAT module               | Your Military lead probably should get this permission                                                                                                                          |
  | add_fatlink             | Can create FAT Links                     | Your regular FC or who ever should be able to add FAT links should have this permission                                                                                         |
  | stats_corporation_own   | Can see own corporation statistics       |                                                                                                                                                                                 |
  | stats_corporation_other | Can see statistics of other corporations |                                                                                                                                                                                 |
  | logs_view               | Can view the modules logs                |                                                                                                                                                                                 |



  To keep track of all changes, please read the
  [Changelog](https://github.com/ppfeufer/allianceauth-afat/blob/master/CHANGELOG.md).



  [![Translation status](https://weblate.ppfeufer.de/widget/alliance-auth-apps/allianceauth-afat/multi-auto.svg)](https://weblate.ppfeufer.de/engage/alliance-auth-apps/)

  Do you want to help translate this app into your language or improve the existing
  translation? - [Join our team of translators][weblate engage]!



  You want to contribute to this project? That's cool!

  Please make sure to read the [contribution guidelines](https://github.com/ppfeufer/allianceauth-afat/blob/master/CONTRIBUTING.md).\
  (I promise, it's not much, just some basics)



  AFAT is maintained by @ppfeufer and is based on
  [ImicusFAT](https://gitlab.com/evictus.iou/allianceauth-imicusfat)
  by @exiom with @Aproia and @ppfeufer which is based on
  [allianceauth-bfat](https://gitlab.com/colcrunch/allianceauth-bfat) by @colcrunch

  Both of these modules are no longer maintained and are deprecated. Both modules will
  not run with the latest stable releases of Alliance Auth.

  <!-- Inline Links -->

  [weblate engage]: https://weblate.ppfeufer.de/engage/alliance-auth-apps/ "Weblate Translations"

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


pkgId: 714df8e243fd0d8dc16579ce897cd1f62e9ce555a06f7c499fcac7b897b89bde
name: python-allianceauth-afat
arch: src
version: 3.5.2
epoch: 0
release: 1
summary: Another Fleet Activity Tracking tool for Alliance Auth
url: https://github.com/ppfeufer/allianceauth-afat
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-allianceauth-afat-3.5.2-1.src.rpm
checksum_type: sha256
description:
  [![Version](https://img.shields.io/pypi/v/allianceauth-afat?label=release)](https://pypi.org/project/allianceauth-afat/)
  [![License](https://img.shields.io/badge/license-GPLv3-green)](https://pypi.org/project/allianceauth-afat/)
  [![Python](https://img.shields.io/pypi/pyversions/allianceauth-afat)](https://pypi.org/project/allianceauth-afat/)
  [![Django](https://img.shields.io/pypi/djversions/allianceauth-afat?label=django)](https://pypi.org/project/allianceauth-afat/)
  ![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)
  [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/ppfeufer/allianceauth-afat/master.svg)](https://results.pre-commit.ci/latest/github/ppfeufer/allianceauth-afat/master)
  [![Code Style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](http://black.readthedocs.io/en/latest/)
  [![Automated Checks](https://github.com/ppfeufer/allianceauth-afat/actions/workflows/automated-checks.yml/badge.svg)](https://github.com/ppfeufer/allianceauth-afat/actions/workflows/automated-checks.yml)
  [![codecov](https://codecov.io/gh/ppfeufer/allianceauth-afat/branch/master/graph/badge.svg?token=GNE88NUAKK)](https://codecov.io/gh/ppfeufer/allianceauth-afat)
  [![Translation status](https://weblate.ppfeufer.de/widget/alliance-auth-apps/allianceauth-afat/svg-badge.svg)](https://weblate.ppfeufer.de/engage/alliance-auth-apps/)
  [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/ppfeufer/aa-forum/blob/master/CODE_OF_CONDUCT.md)
  [![Discord](https://img.shields.io/discord/790364535294132234?label=discord)](https://discord.gg/zmh52wnfvM)

  [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/N4N8CL1BY)

  An Improved FAT/PAP System for
  [Alliance Auth](https://gitlab.com/allianceauth/allianceauth).

  ______________________________________________________________________

  <!-- mdformat-toc start --slug=github --maxlevel=6 --minlevel=2 -->

  - [Features and Highlights](#features-and-highlights)
  - [Screenshots](#screenshots)
    - [Dashboard](#dashboard)
    - [Fat Link List](#fat-link-list)
    - [Fat Link Details](#fat-link-details)
    - [Add Fat Link View for FCs](#add-fat-link-view-for-fcs)
  - [Installation](#installation)
    - [Important](#important)
    - [Step 1: Install the App](#step-1-install-the-app)
    - [Step 2: Update Your AA Settings](#step-2-update-your-aa-settings)
    - [Step 3: Finalizing the Installation](#step-3-finalizing-the-installation)
  - [Updating](#updating)
  - [Data Migration](#data-migration)
    - [Import From Native FAT](#import-from-native-fat)
  - [Settings](#settings)
  - [Permissions](#permissions)
  - [Changelog](#changelog)
  - [Translation Status](#translation-status)
  - [Contributing](#contributing)
  - [Credits](#credits)

  <!-- mdformat-toc end -->

  ______________________________________________________________________



  - Automatic tracking of participation on FAT links created via ESI
  - Multiple ESI fleets (with your alts)
  - Manually end ESI tracking per fleet
  - Fleet type classification (can be added in the admin backend)
  - Ship type overview per FAT link
  - Graphical statistics views
  - Custom module name
  - Re-open FAT link if the FAT link has expired and is within the defined grace time
    (only for clickable FAT links)
  - Manually add pilots to clickable FAT links, in case they missed clicking the link
    (for a period of 24 hours after the FAT links original expiry time)
  - Log for the following actions (Logs are kept for a certain time, 60 days per default):
    - Create FAT link
    - Change FAT link
    - Remove FAT link
    - Re-open FAT link
    - Manually add pilot to FAT link
    - Remove pilot from FAT link

  AFAT will work alongside the built-in native FAT System and ImicusFAT.
  However, data doesn't share, but you can migrate their data to AFAT, for more
  information, see below.





  ![Dashboard](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/afat-dashboard.png "Dashboard")



  ![Fat Link List](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/fatlink-list.png "Fat Link List")



  ![Fat Link Details](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/changelog/1.9.0/ship-type-overview.png "Fat Link Details")



  ![Add Fat Link View for FCs](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/add-fatlink.png "Add Fat Link View for FCs")



  > [!NOTE]
  >
  > **Alliance Auth AFAT >= 3.0.0 needs at least Alliance Auth v4.0.0!**
  >
  > Please make sure to update your Alliance Auth instance _before_ you install this
  > module or update to the latest version, otherwise an update to Alliance Auth will
  > be pulled in unsupervised.
  >
  > The last version compatible with Alliance Auth v3 is `2.13.0`.



  This app is a plugin for Alliance Auth. If you don't have Alliance Auth running already,
  please install it first before proceeding. (See the official
  [AA installation guide](https://allianceauth.readthedocs.io/en/latest/installation/allianceauth.html)
  for details)

  > [!IMPORTANT]
  >
  > For users migrating from Alliance Auth's built-in FAT systems,
  > please read the [specific instructions](#data-migration) FIRST.



  Make sure you're in the virtual environment (venv) of your Alliance Auth installation.
  Then install the latest version:

  ```bash
  pip install allianceauth-afat
  ```



  Configure your AA settings in your `local.py` as follows:

  - Add `'afat',` to `INSTALLED_APPS`
  - Add the scheduled tasks

  ```python

  CELERYBEAT_SCHEDULE["afat_update_esi_fatlinks"] = {
      "task": "afat.tasks.update_esi_fatlinks",
      "schedule": crontab(minute="*/1"),
  }

  CELERYBEAT_SCHEDULE["afat_logrotate"] = {
      "task": "afat.tasks.logrotate",
      "schedule": crontab(minute="0", hour="1"),
  }
  ```



  Run migrations & copy static files

  ```bash
  python manage.py collectstatic
  python manage.py migrate
  ```

  Restart your supervisor services for AA.



  To update your existing installation of AFAT, first enable your
  virtual environment (venv) of your Alliance Auth installation.

  ```bash
  pip install -U allianceauth-afat

  python manage.py collectstatic
  python manage.py migrate
  ```

  Finally, restart your supervisor services for AA

  It is possible that some versions need some more changes. Always read the
  [release notes](https://github.com/ppfeufer/allianceauth-afat/releases) to find out
  more.



  Right after the **initial** installation and running migrations,
  you can import the data from Alliance Auth's native FAT system if
  you have used it until now.



  To import from the native FAT module, run the following command:

  ```shell
  python myauth/manage.py afat_import_from_allianceauth_fat
  ```



  To customize the module, the following settings can be managed in your admin backend:

  | Setting                            | Description                                                                                                                                                                                                           | Default Value |
  | :--------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------ |
  | Use doctrines from fittings module | Whether to use the doctrines from the Fittings modules in the doctrine dropdown or from AFATs own doctrine list. (Note: The [fittings module](https://gitlab.com/colcrunch/fittings) needs to be installed for this.) | No            |
  | Default FAT link expiry time       | Default expiry time for clickable FAT links in Minutes                                                                                                                                                                | 60            |
  | Default FAT link reopen grace time | Time in minutes a FAT link can be re-opened after it has expired                                                                                                                                                      | 60            |
  | Default FAT link reopen duration   | Time in minutes a FAT link is re-opened                                                                                                                                                                               | 60            |
  | Default log duration               | Time in days before log entries are being removed from the DB                                                                                                                                                         | 60            |



  | Name                    | Description                              | Notes                                                                                                                                                                           |
  | :---------------------- | :--------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
  | basic_access            | Can access the AFAT module               | Your line member probably want this permission, so they can see the module and click the FAT links they are given. They also can see their own statistics with this permission. |
  | manage_afat             | Can manage the AFAT module               | Your Military lead probably should get this permission                                                                                                                          |
  | add_fatlink             | Can create FAT Links                     | Your regular FC or who ever should be able to add FAT links should have this permission                                                                                         |
  | stats_corporation_own   | Can see own corporation statistics       |                                                                                                                                                                                 |
  | stats_corporation_other | Can see statistics of other corporations |                                                                                                                                                                                 |
  | logs_view               | Can view the modules logs                |                                                                                                                                                                                 |



  To keep track of all changes, please read the
  [Changelog](https://github.com/ppfeufer/allianceauth-afat/blob/master/CHANGELOG.md).



  [![Translation status](https://weblate.ppfeufer.de/widget/alliance-auth-apps/allianceauth-afat/multi-auto.svg)](https://weblate.ppfeufer.de/engage/alliance-auth-apps/)

  Do you want to help translate this app into your language or improve the existing
  translation? - [Join our team of translators][weblate engage]!



  You want to contribute to this project? That's cool!

  Please make sure to read the [contribution guidelines](https://github.com/ppfeufer/allianceauth-afat/blob/master/CONTRIBUTING.md).\
  (I promise, it's not much, just some basics)



  AFAT is maintained by @ppfeufer and is based on
  [ImicusFAT](https://gitlab.com/evictus.iou/allianceauth-imicusfat)
  by @exiom with @Aproia and @ppfeufer which is based on
  [allianceauth-bfat](https://gitlab.com/colcrunch/allianceauth-bfat) by @colcrunch

  Both of these modules are no longer maintained and are deprecated. Both modules will
  not run with the latest stable releases of Alliance Auth.

  <!-- Inline Links -->

  [weblate engage]: https://weblate.ppfeufer.de/engage/alliance-auth-apps/ "Weblate Translations"

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


pkgId: 1f2b34f7aa45495c89f03013afbeff7f883d2bcb566f2c1eca1c0b373965f59c
name: python-allianceauth-app-utils
arch: src
version: 1.25.0
epoch: 0
release: 1
summary: Commonly used utilities and helpers for rapid development of Alliance Auth apps.
url: https://gitlab.com/ErikKalkoken/allianceauth-app-utils
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-allianceauth-app-utils-1.25.0-1.src.rpm
checksum_type: sha256
description:
  [![release](https://img.shields.io/pypi/v/allianceauth-app-utils?label=release)](https://pypi.org/project/allianceauth-app-utils/)
  [![python](https://img.shields.io/pypi/pyversions/allianceauth-app-utils)](https://pypi.org/project/allianceauth-app-utils/)
  [![django](https://img.shields.io/pypi/djversions/allianceauth-app-utils?label=django)](https://pypi.org/project/allianceauth-app-utils/)
  [![pipeline](https://gitlab.com/ErikKalkoken/allianceauth-app-utils/badges/master/pipeline.svg)](https://gitlab.com/ErikKalkoken/allianceauth-app-utils/-/pipelines)
  [![codecov](https://codecov.io/gl/ErikKalkoken/allianceauth-app-utils/branch/master/graph/badge.svg?token=S6AUWTRHC4)](https://codecov.io/gl/ErikKalkoken/allianceauth-app-utils)
  [![Documentation Status](https://readthedocs.org/projects/allianceauth-app-utils/badge/?version=latest)](https://allianceauth-app-utils.readthedocs.io/en/latest/?badge=latest)
  [![license](https://img.shields.io/badge/license-MIT-green)](https://gitlab.com/ErikKalkoken/allianceauth-app-utils/-/blob/master/LICENSE)
  [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
  [![chat](https://img.shields.io/discord/790364535294132234)](https://discord.gg/zmh52wnfvM)

  Commonly used utility functions and classes for rapid development of Alliance Auth apps.



  This package contains a variety of commonly used utility functions and classes that help speed up development of Alliance Auth apps and reduce code duplication across apps.



  For a full description of the API please see the [documentation](https://allianceauth-app-utils.readthedocs.io/en/latest/index.html).


pkgId: 4638de6fc0824fc58c84ab6423ce0f9995aa36f77eaab49bf3176290c50af3b6
name: python-allianceauth-corptools
arch: src
version: 2.8.0
epoch: 0
release: 1
summary: This module is the core of the CorpTools Ecosystem
url: https://github.com/Solar-Helix-Independent-Transport/allianceauth-corp-tools
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-allianceauth-corptools-2.8.0-1.src.rpm
checksum_type: sha256
description:
  [![CI](https://github.com/pvyParts/allianceauth-corp-tools/actions/workflows/main.yml/badge.svg?branch=master)](https://github.com/pvyParts/allianceauth-corp-tools/actions/workflows/main.yml) [![PyPI version](https://badge.fury.io/py/allianceauth-corptools.svg)](https://badge.fury.io/py/allianceauth-corptools) ![Discord](https://img.shields.io/discord/399006117012832262?label=Support%20Server)



  This module is the core of the CorpTools Ecosystem, this includes;

  - [Invoices](https://github.com/Solar-Helix-Independent-Transport/allianceauth-invoice-manager): Automatic tracking of payments made to a holding wallet.
  - [Moons](https://github.com/pvyParts/allianceauth-corp-tools-moons): Moon Mining tracking and Tax system.
  - [Indy Dash](https://github.com/pvyParts/allianceauth-corp-tools-indy-dash): What Industrial structures have what rigs and where are they.
  - [Pinger](https://github.com/Solar-Helix-Independent-Transport/allianceauth-corp-tools-pinger): High performance pings from the notification endpoint, using the data avaialbe from character audit.

  Included `Bits and Bobs`:

  - Character Audit

    - Assets
    - Roles
    - Contacts
    - Notifications
    - Standings
    - Markets
    - Skills
      - List
      - Queue
      - Audit/Export
    - Wallet
      - Activity Analysis
    - History
    - Clones
      - Implants

  - Corp Audit

    - Wallets
    - Structures
    - Assets

  - [Sec Group](https://github.com/Solar-Helix-Independent-Transport/allianceauth-secure-groups) Filters
    - Audit Fully Loaded
    - Assets
      - Location
      - Type
      - Group
    - Skill List
    - Corporate Roles
    - Corporate Title
    - Main time in corp

  Active Devs:

  - [AaronKable](https://github.com/pvyParts)



  1.  Install the Repo from git `pip install -U git+https://github.com/pvyParts/allianceauth-corp-tools.git`
  2.  Add `'corptools',` to your `INSTALLED_APPS` in your projects `local.py`
  3.  run migrations, collectstatic and restart auth
  4.  run the corp tools setup managemnt command `python manage.py ct_setup`
  5.  setup your perms as documented below
  6.  add characters and corp tokens as required.



  Add the below lines to your `local.py` settings file, Changing the contexts to yours.

  You can optionally se the name of the app in the ui by setting this setting

  ```python

  CORPTOOLS_APP_NAME = "Character Audit"
  ```





  This will show how to do daily updates.

  Currently this is:

  - 2 times an hour ( minute 15, and 45) 1/48th of the total character updates, for at worst 1 update per character per day
  - Corp update run on all corps hourly at minute 30

  1. Got Audit Admin
  2. Click `Create or Update Periodic Tasks`
  3. you can edit the schedules to work more inline with your group as required.



  There are some basic access perms

  All permissions are filtered by main character, if a person has neutral alts loaded they will also be visible to someone who can see their main.



  | Perm                | Admin Site | Perm                                                                         | Description                                            |
  | ------------------- | ---------- | ---------------------------------------------------------------------------- | ------------------------------------------------------ |
  | view_characteraudit | nill       | Can view character audit.                                                    | Generic Access perm to show the Member Audit Menu item |
  | global_hr           | nill       | Can access other character's data for characters in any corp/alliance/state. | Superuser level access                                 |
  | alliance_hr         | nill       | Can access other character's data for own alliance.                          | Alliance only level access                             |
  | corp_hr             | nill       | Can access other character's data for own corp.                              | Own Corp restricted level access                       |



  | Perm                    | Admin Site | Perm                                                                         | Description                        |
  | ----------------------- | ---------- | ---------------------------------------------------------------------------- | ---------------------------------- |
  | global_corp_manager     | nill       | Can access other character's data for characters in any corp/alliance/state. | Superuser level access             |
  | alliance_corp_manager   | nill       | Can access other character's data for own alliance.                          | Alliance only level access         |
  | own_corp_manager        | nill       | Can access other character's data for own corp.                              | Own Corp restricted level access   |
  | holding_corp_structures | nill       | Can access configured holding corp structure data.                           | Holding Corp Structure data access |
  | holding_corp_wallets    | nill       | Can access configured holding corp wallet data.                              | Holding Corp Structure data access |
  | holding_corp_assets     | nill       | Can access configured holding corp asset data.                               | Holding Corp Structure data access |

  Note: Configure the "Holding Corps" in the `Corptools Configuration` Admin Model. via the auth admin interface.





  Each section of the character audit can be enabled and disabled via settings in your `local.py`

  - `True` Enables the module
  - `False` Disables the Module

  You can also exclude section of hte updates from the "Active" metric, this is handy should you wish to add a module and not have everyone be marked as "Inactive" in the audit module. or if CCP is having issues with part of the ESI. _Looks at Assets_

  - `True` Masks the section in the active calculation
  - `False` Enforces the section in the active calculation

  To assist with auth related tasks we request `publicData` on top of the configured set.

  | Module                    | Enable Setting (Default)                 | Active Setting (Default)                               | Description                                     | Scopes Requested                                                                                                           | Note                                  |
  | ------------------------- | ---------------------------------------- | ------------------------------------------------------ | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
  | Assets                    | `CT_CHAR_ASSETS_MODULE` (`True`)         | `CT_CHAR_ACTIVE_IGNORE_ASSETS_MODULE` (`False`)        | Character Assets                                | 'esi-assets.read_assets.v1'                                                                                                | Fully enabled with a Sec Group Filter |
  | Standings                 | `CT_CHAR_STANDINGS_MODULE` (`True`)      | `CT_CHAR_ACTIVE_IGNORE_STANDINGS_MODULE` (`False`)     | Character NPC Standings                         | 'esi-characters.read_standings.v1'                                                                                         | Fully enabled                         |
  | Killmails                 | `CT_CHAR_KILLMAILS_MODULE` (`True`)      | `CT_CHAR_ACTIVE_IGNORE_KILLMAILS_MODULE` (`False`)     | Character Killmails                             | 'esi-killmails.read_killmails.v1'                                                                                          | Future Version                        |
  | Fittings                  | `CT_CHAR_FITTINGS_MODULE` (`True`)       | `CT_CHAR_ACTIVE_IGNORE_FITTINGS_MODULE` (`False`)      | Character Fittings                              | 'esi-fittings.read_fittings.v1'                                                                                            | Future Version                        |
  | Calendar                  | `CT_CHAR_CALENDAR_MODULE` (`True`)       | `CT_CHAR_ACTIVE_IGNORE_CALENDAR_MODULE` (`False`)      | Character Killmails                             | 'esi-calendar.read_calendar_events.v1'                                                                                     | Future Version                        |
  | Contacts                  | `CT_CHAR_CONTACTS_MODULE` (`True`)       | `CT_CHAR_ACTIVE_IGNORE_CONTACTS_MODULE` (`False`)      | Character Contacts                              | 'esi-characters.read_contacts.v1'                                                                                          | Fully enabled                         |
  | Notifications             | `CT_CHAR_NOTIFICATIONS_MODULE` (`True`)  | `CT_CHAR_ACTIVE_IGNORE_NOTIFICATIONS_MODULE` (`False`) | Character Notifications                         | 'esi-characters.read_notifications.v1'                                                                                     | Fully enabled                         |
  | Roles                     | `CT_CHAR_ROLES_MODULE` (`True`)          | `CT_CHAR_ACTIVE_IGNORE_ROLES_MODULE` (`False`)         | Character Roles and Titles                      | 'esi-characters.read_titles.v1', 'esi-characters.read_corporation_roles.v1'                                                | Fully enabled with a Sec Group Filter |
  | Industry                  | `CT_CHAR_INDUSTRY_MODULE` (`True`)       | `CT_CHAR_ACTIVE_IGNORE_INDUSTRY_MODULE` (`False`)      | Character Indy Jobs                             | 'esi-industry.read_character_jobs.v1'                                                                                      | Fully enabled                         |
  | Mining                    | `CT_CHAR_MINING_MODULE` (`True`)         | `CT_CHAR_ACTIVE_IGNORE_MINING_MODULE` (`False`)        | Character Mining Ledgers                        | 'esi-industry.read_character_mining.v1'                                                                                    | Future Version                        |
  | Wallets/Markets/Contracts | `CT_CHAR_WALLET_MODULE` (`True`)         | `CT_CHAR_ACTIVE_IGNORE_WALLET_MODULE` (`False`)        | Character Wallets, Contracts and Trading/Orders | 'esi-markets.read_character_orders.v1', 'esi-wallet.read_character_wallet.v1', 'esi-contracts.read_character_contracts.v1' | Fully Enabled                         |
  | Skills                    | `CT_CHAR_SKILLS_MODULE` (`True`)         | `CT_CHAR_ACTIVE_IGNORE_SKILLS_MODULE` (`False`)        | Character Skills/Queues and Doctrine Tools      | 'esi-skills.read_skillqueue.v1','esi-skills.read_skills.v1'                                                                | Fully Enabled with Sec Group Filters  |
  | Clones                    | `CT_CHAR_CLONES_MODULE` (`True`)         | `CT_CHAR_ACTIVE_IGNORE_CLONES_MODULE` (`False`)        | Character Medical and Jump Clone Module         | 'esi-clones.read_implants.v1', 'esi-clones.read_clones.v1'                                                                 | Fully Enabled with a Sec Group Filter |
  | Fleet                     | `CT_CHAR_FLEET_MODULE` (`True`)          | nill                                                   | Character Fleet Tools                           | 'esi-fleets.read_fleet.v1', 'esi-fleets.write_fleet.v1`                                                                    | Future Version                        |
  | Mail                      | `CT_CHAR_MAIL_MODULE` (`False`)          | `CT_CHAR_ACTIVE_IGNORE_MAIL_MODULE` (`False`)          | Character Mail Views                            | 'esi-mail.read_mail.v1`                                                                                                    | Fully Enabled                         |
  | Helpers                   | `CT_CHAR_HELPER_MODULE` (`False`)        | `CT_CHAR_ACTIVE_IGNORE_HELPER_MODULE` (`False`)        | Character Helpers                               | 'esi-ui.open_window.v1','esi-ui.write_waypoint.v1'                                                                         | Future Versions                       |
  | Opportunities             | `CT_CHAR_OPPORTUNITIES` (`False`)        | nill                                                   | Character Opportunities                         | 'esi-characters.read_opportunities.v1'                                                                                     | Future Versions                       |
  | Loyalty Points            | `CT_CHAR_LOYALTYPOINTS_MODULE` (`False`) | `CT_CHAR_ACTIVE_IGNORE_LOYALTYPOINTS_MODULE` (`True`)  | Character LP                                    | 'esi-characters.read_loyalty.v1'                                                                                           | Fully Enabled                         |



  If `Assets`, `Clones`, `Wallets` or `Minning` are enabled these extra spoces are requested:

  - 'esi-universe.read_structures.v1'
  - 'esi-search.search_structures.v1'



  | Setting                      | Default                                              | Description                                                                                                                                                   |
  | ---------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `CORPTOOLS_APP_NAME`         | "Character Audit"                                    | Name on the menu for Character Audit                                                                                                                          |
  | `CT_CHAR_MAX_INACTIVE_DAYS`  | 3                                                    | Days till data is considered Stale                                                                                                                            |
  | `CORPTOOLS_DISCORD_BOT_COGS` | `["corptools.cogs.routes", "corptools.cogs.locate"]` | Discord bot cogs to enable/disable                                                                                                                            |
  | `CT_PAGINATION_SIZE`         | 30000                                                | Max items per page of data in the UI                                                                                                                          |
  | `CT_USERS_CAN_FORCE_REFRESH` | False                                                | Set to `True` to force cache invalidation on a regular user requresting updates from the UI. Superusers will always cache invalidate on requesting an update. |



  Make sure you have signed the [License Agreement](https://developers.eveonline.com/resource/license-agreement) by logging in at https://developers.eveonline.com before submitting any pull requests. All bug fixes or features must not include extra superfluous formatting changes.


pkgId: 4039b9e8ad8580ea5d1470c6dc09b6b31b4094533bd7be72a2bf73f10354cf16
name: python-allianceauth-discordbot
arch: src
version: 3.8.2
epoch: 0
release: 1
summary: Alliance Auth Modular Discord Bot
url: https://pypi.org/project/allianceauth-discordbot/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-allianceauth-discordbot-3.8.2-1.src.rpm
checksum_type: sha256
description:
  AA-Discordbot for [Alliance Auth](https://gitlab.com/allianceauth/allianceauth).

  [![PyPi](https://img.shields.io/pypi/v/allianceauth-discordbot?color=green)](https://pypi.org/project/allianceauth-discordbot/)



  * Bot Framework, easily extensible with more Cogs
  * Integration with Alliance Auth, able to fetch data directly from its django project.
  * Channel/Direct messaging feature, with Tasks and a Queue/Consumer
  * Current Cogs
    * About
      * !about - Bot Information and Statistics
    * Auth
      * !auth or /auth - A direct link to the Auth Install to catch users familiar with other bots.
    * Members
      * !lookup [search string] - Fetch a users Main, Affiliation, State, Groups and linked characters from any character.
      * !altcorp [search string] - search for users with characters in an altcorp
    * Remind
      * !remindme [5s/m/h/d text] - Sets a simple non-persistent reminder timer when the bot will respond with the text
    * Sov
      * !vuln [context] - Returns a list of Vulnerable sov structures for a Region/Constellation/Solar_System or alliance
      * !sov [context] - Returns a list of _all_ sov structures for a Region/Constellation/Solar_System or alliance
      * !lowadm - Lists sov in need of ADM-ing, context provided in settings.
    * Time
      * !time or /time - Returns the current EVE Time.
    * Timers
      * !timer - Returns the next Structure timer from allianceauth.timerboard.
    * Ticket
      * /help and Message context command to create private support threads
    * PriceCheck:
      * amarr - Check an item price on Amarr market
      * jita -  Check an item price on Jita market
      * price - Check an item price on Jita and Amarr market
    * Easter Eggs,
      * !happybirthday [text] - Wishes the text a happy birthday, works with user mentions
    * WelcomeGoodbye
      * Welcome - Responds to user join events with predefined messages.
      * Goodbye - Responds to user leave events with predefined messages.
    * Admin
      * Slash commands to help with setting up a discord server when you are not admin or owner.
      * accessed via `/admin [command]`
      * add_role / add_role_read / rem_role - add/remove a role to a channel
      * new_channel - create a new channel and assign it a role for read access
      * promote_role_to_god/demote_role_to_god - promote/demote a role to/from full admin so for when you need it
      * empty_roles - list all roles on server with no members
      * clear_empty_roles - remove all empty roles from the server
      * orphans - find any user in discord with no auth user attached
      * get_webhooks - returns any webhooks setup in this current channel, or creates one for you and returns that
      * uptime - how long the bot has been up for



  * Ensure you have installed and configured the Alliance Auth Discord Service, <https://allianceauth.readthedocs.io/en/latest/features/services/discord.html>

  * Update your [Discord Developer Application](https://discord.com/developers/applications) to include the Privileged Intents that we call. Please enable all intents.

  ![screenshot](https://i.imgur.com/A1yA24P.png)

  * Install the app with your venv active

  ```bash
  pip install allianceauth-discordbot
  ```

  * Add `'aadiscordbot',` and  `'solo',` to your INSTALLED_APPS list in local.py.

  * Add the below lines to your `local.py` settings file, Changing the contexts to yours.

  ```python


  ADMIN_DISCORD_BOT_CHANNELS = [111, 222, 333]

  SOV_DISCORD_BOT_CHANNELS = [111, 222, 333]

  ADM_DISCORD_BOT_CHANNELS = [111, 222, 333]

  DISCORD_BOT_SOV_STRUCTURE_OWNER_IDS = [1000169] # Centre for Advanced Studies example
  DISCORD_BOT_MEMBER_ALLIANCES = [111, 222, 333] # A list of alliances to be considered "Mains"

  DISCORD_BOT_ADM_REGIONS = [10000002] # The Forge Example
  DISCORD_BOT_ADM_SYSTEMS = [30000142] # Jita Example
  DISCORD_BOT_ADM_CONSTELLATIONS = [20000020] # Kimitoro Example

  PRICE_CHECK_HOSTNAME = "evepraisal.com" # Point to your favorite evepraisal
  ```

  ```python

  LOGGING['handlers']['bot_log_file']= {
              'level': 'INFO',
              'class': 'logging.handlers.RotatingFileHandler',
              'filename': os.path.join(BASE_DIR, 'log/discord_bot.log'),
              'formatter': 'verbose',
              'maxBytes': 1024 * 1024 * 5,
              'backupCount': 5,
          }
  LOGGING['loggers']['aadiscordbot'] = {'handlers': ['bot_log_file'],'level': 'DEBUG'}
  ```

  * Add the below lines to `myauth/celery.py` somewhere above the `app.autodiscover_tasks...` line

  ```python


  app.conf.task_routes = {'aadiscordbot.tasks.*': {'queue': 'aadiscordbot'}}
  ```

  * Run migrations `python manage.py migrate` (There should be none from this app)
  * Gather your static files `python manage.py collectstatic` (There should be none from this app)

  * Fetch `bot_conf.py` from the Git Repo into the root of your AA install, beside `manage.py`

  ```bash
  wget https://raw.githubusercontent.com/pvyParts/allianceauth-discordbot/master/bot_conf.py
  ```



  * To download the `bot_conf.py` file into your `conf/` folder, run the following from your aa-docker folder
  ```bash
  wget https://raw.githubusercontent.com/pvyParts/allianceauth-discordbot/master/bot_conf.py -O conf/bot_conf.py
  ```
  * Update base image to have bot_conf.py mapped

  ```dockerfile
  x-allianceauth-base:



    &allianceauth-base
    build:
      context: .
      dockerfile: custom.dockerfile
      args:
        AA_DOCKER_TAG: ${AA_DOCKER_TAG?err}
    restart: always
    env_file:
      - ./.env
    volumes:
  ...
      - ./conf/bot_conf.py:/home/allianceauth/myauth/bot_conf.py
  ...
  ```

  Add a service to run the Discordbot

  ```dockerfile
    allianceauth_discordbot:
      container_name: allianceauth_discordbot
      <<: [ *allianceauth-base ]
      restart: on-failure:1
      entrypoint: [ "python", "/home/allianceauth/myauth/bot_conf.py" ]
  ```



  * Amend your supervisor.conf, correcting paths as required and add `authbot` to the launch group at the end of the conf

  ```ini
  [program:authbot]
  command=/home/allianceserver/venv/auth/bin/python /home/allianceserver/myauth/bot_conf.py
  directory=/home/allianceserver/myauth
  user=allianceserver
  numprocs=1
  autostart=true
  autorestart=true
  stopwaitsecs=600
  stdout_logfile=/home/allianceserver/myauth/log/authbot.log
  stderr_logfile=/home/allianceserver/myauth/log/authbot.log
  ```

  ```ini

  [group:myauth]
  programs=beat,worker,gunicorn,authbot
  priority=999
  ```

  Go to admin and configure your admin users in the bot config model.

  > Enable groups/states/users to utilize the lookup command by adding permissions under **corputils | corp stats |**

  ```ini
  corputils.view_alliance_corpstats
  ```




  ```python


  DISCORD_BOT_COGS = [
    "aadiscordbot.cogs.about", # about the bot
    "aadiscordbot.cogs.admin", # Discord server admin helpers
    "aadiscordbot.cogs.members", # Member lookup commands
    "aadiscordbot.cogs.timers", # timer board integration
    "aadiscordbot.cogs.auth", # return auth url
    "aadiscordbot.cogs.sov", # some sov helpers
    "aadiscordbot.cogs.time", # whats the time Mr Eve Server
    "aadiscordbot.cogs.eastereggs", # some "fun" commands from ariel...
    "aadiscordbot.cogs.remind", # very Basic in memory reminder tool
    "aadiscordbot.cogs.reaction_roles", # auth group integrated reaction roles
    "aadiscordbot.cogs.services", # service activation data
    "aadiscordbot.cogs.price_check", # Price Checks
    "aadiscordbot.cogs.eightball", # 8ball should i install this cog
    "aadiscordbot.cogs.welcomegoodbye", # Customizable user join/leave messages
    "aadiscordbot.cogs.models", # Populate and Maintain Django Models for Channels and Servers
    "aadiscordbot.cogs.quote", # Save and recall messages
    "aadiscordbot.cogs.prom_export", # Admin Level Logging cog
    "aadiscordbot.cogs.tickets", # Private thread ticket system with pingable groups.
    "aadiscordbot.cogs.recruit_me", # Private thread recruitment ticket system.
    ]
  ```



  ```python





  DISCORD_BOT_TASK_RATE_LIMITS = {
          "send_channel_message_by_discord_id": "100/s",
          "send_direct_message_by_discord_id": "1/s",
          "send_direct_message_by_user_id": "1/s"
          }
  ```


  >
  > ❗❗❗ **This will bypass the Group Leadership/Join Request System**: This is intended for open groups but not limited to it! ❗❗❗

  The bot is able to run a reaction roles system that is compatible with auth and public users on a discord.

  * If a member is part of auth it will do auth syncing of roles
  * If a member is not found in auth and the reaction role message has the public flag set it will assign roles to anyone who reacts



   1. Setup the inital Message you wish to use buy using the command `!rr`

      * _Optional_ Edit the name and settings of this message in `Admin > Discord Bot > Reaction Role Messages`

   2. React to the message with the reactions you wish to use.
   3. The bot will counter react to the reactions when it creates the binding in auth.
   4. Goto `Admin > Discord Bot > Reaction Role Bindings`
   5. Assign the groups you want for each reaction



  ![https://cdn.discordapp.com/attachments/639369068930924546/936082605156237332/unknown.png](https://cdn.discordapp.com/attachments/639369068930924546/936082605156237332/unknown.png)



  ![https://cdn.discordapp.com/attachments/639369068930924546/936084126379962378/unknown.png](https://cdn.discordapp.com/attachments/639369068930924546/936084126379962378/unknown.png)



  * [Statistics](https://github.com/pvyParts/aa-statistics)
    * Adds zkill Monthly/Yearly stats to !lookup
  * [timezones](https://github.com/ppfeufer/aa-timezones)
    * Updates the `time` command to have all timezones configured in auth.



  `
  With the WelcomeGoodbye Cog activated, Discordbot will grab a random message from the Welcome or Goodbye Message Model and send it to the Guild System channel

  These can be configured in admin under `/admin/aadiscordbot/welcomemessage/` and `/admin/aadiscordbot/goodbyemessage/`

  The messages support some string formatting

  * `{user_mention} - A Discord @ Mention
  * `{guild_name} - The name of the Discord Server
  * `{auth_url} - A link to Auth

  ```text
  Welcome {user_mention} to {guild_name}, I hope you enjoy your stay.

  You can Authenticate for more access {auth_url}
  ```



  > ❗❗❗ **While this is fully functional, this is still in early stages of development, Please report any issues you find!** ❗❗❗

  With the `aadiscordbot.cogs.tickets` Cog activated, users wll be able to issue the `/help` command to pick a group to get help from.

  The groups available for selection are configurable in the site admin under
  `Discord Bot > Ticket Cog Configuration`

  You also need to choose a channel to create the threads in from the site admin `Discord Bot > Ticket Cog Configuration`:

  * Anyone who can use the `/help` command must have View and Send Message permissions on this channel otherwise they will not be able to see the tickets authbot creates for them
  * Authbot must have the permissions to create private threads in this channel
  * Authbot must have the permissions to send messages to this channel





  You can use the send_message helper to send a message with text/embed to:

  * Discord user_id
  * Discord channel_id
  * Auth User Model Object
  * Auth user_pk

  [aadiscordbot/tasks.py](https://github.com/pvyParts/allianceauth-discordbot/blob/master/aadiscordbot/tasks.py)



  ```python
  from django.contrib.auth.models import User
  from django.apps import apps


  def discord_bot_active():
      return apps.is_installed('aadiscordbot')


  if discord_bot_active():
      from aadiscordbot.tasks import send_message
      
      from discord import Embed, Color



  if discord_bot_active():
      usr = User.objects.get(pk=1)

      
      msg = "Channel ID Tests"
      e = Embed(title="Channel ID Tests!",
                description="This is a Test Embed.\n\n```Discord Channel ID```",
                color=Color.yellow())
      e.add_field(name="Test Field 1", value="Value of some kind goes here")
      send_message(channel_id=639252062818926642, embed=e) # Embed
      send_message(channel_id=639252062818926642, message=msg) # Message
      send_message(channel_id=639252062818926642, message=msg, embed=e) # Both

      
      msg = "User ID Tests"
      e = Embed(title="User ID Tests!",
                description="This is a Test Embed.\n\n```Discord User ID```",
                color=Color.nitro_pink())
      e.add_field(name="Test Field 1", value="Value of some kind goes here")

      send_message(user_id=318309023478972417, embed=e) # Embed
      send_message(user_id=318309023478972417, message=msg) # Message
      send_message(user_id=318309023478972417, message=msg, embed=e) # Both

      
      msg = "Auth User Model Tests"
      e = Embed(title="Auth User Model Tests!",
                description="This is a Test Embed.\n\n```Auth User Model```",
                color=Color.dark_orange())
      e.add_field(name="Test Field 1", value="Value of some kind goes here")
      send_message(user=usr, embed=e) # Embed
      send_message(user=usr, message=msg) # Message
      send_message(user=usr, message=msg, embed=e) # Both

      
      msg = "Auth User PK Tests"
      e = Embed(title="Auth User PK Tests!",
                description="This is a Test Embed.\n\n```Auth User PK```",
                color=Color.brand_green())
      e.add_field(name="Test Field 1", value="Value of some kind goes here")
      send_message(user_pk=1, embed=e) # Embed
      send_message(user_pk=1, message=msg) # Message
      send_message(user_pk=1, message=msg, embed=e) # Both

      
      msg = "All Together Tests"
      e = Embed(title="All Together Tests!",
                description="This is a Test Embed.\n\n```All Together```",
                color=Color.blurple())
      e.add_field(name="Test Field 1", value="Value of some kind goes here")
      send_message(channel_id=639252062818926642,
                  user_id=318309023478972417,
                  user=User.objects.get(pk=1),
                  message=msg,
                  embed=e)
  ```



  In `auth_hooks.py`, define a function that returns an array of cog modules, and register it as a `discord_cogs_hook`:

  ```python
  @hooks.register('discord_cogs_hook')
  def register_cogs():
      return ["yourapp.cogs.cog_a", "yourapp.cogs.cog_b"]
  ```





  ```python
  AUTHBOT_DISCORD_APP_ID = 'App ID for dedicated bot'
  AUTHBOT_DISCORD_BOT_TOKEN = 'Token for dedicated bot'
  ```



  Please remember to report any aa-discordbot related issues using the issues on **this** repository.





  **Problem:**

  Something has gone funny with my venv after i installed another app that wanted `discord.py`

  **Reason:**

  This is due to the Py-cord lib sharing the `discord` namespace. Py-Cord is however a drop in replacement. So no issues should arise from using it over the now legacy discord.py lib. **YMMV**

  **Fix:**

   1. Uninstall `discord.py` by running `pip uninstall discord.py` with your venv active.
   2. Reinstall `py-cord` by running `pip install -U py-cord==2.0.0b3` with your venv active.
   3. Approach the dev from the app that overrode your py-cord to update to a maintained lib.


pkgId: 984f3ef5ce603bfcd8fc2d8260eccf2afef312bad4fba307d176665ec31e0d6e
name: python-allianceauth-mumbletemps
arch: src
version: 3.0.2
epoch: 0
release: 1
summary: Mumble Temp Links plugin for Alliance Auth
url: https://github.com/Solar-Helix-Independent-Transport/allianceauth-mumble-temp
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-allianceauth-mumbletemps-3.0.2-1.src.rpm
checksum_type: sha256
description:
  > \[!IMPORTANT\]
  >
  > This does nothing on its own you also need to update your authenticator [to my
  > fork found here](https://gitlab.com/aaronkable/mumble-authenticator).
  >
  > More on that in the setup instructions below!

  This [Alliance Auth](https://gitlab.com/allianceauth/allianceauth) module lets you give temp access to your mumble service with ease.

  ______________________________________________________________________

  <!-- mdformat-toc start --slug=github --maxlevel=6 --minlevel=2 -->

  - [Usage](#usage)
  - [Setup](#setup)
    - [Alliance Auth Plugin](#alliance-auth-plugin)
      - [Step 1: Install the Package](#step-1-install-the-package)
      - [Step 2: Configure Alliance Auth](#step-2-configure-alliance-auth)
      - [Step 3: Finalizing the Installation](#step-3-finalizing-the-installation)
    - [Mumble Authenticator](#mumble-authenticator)
    - [Settings](#settings)
    - [Restart services and you're done.](#restart-services-and-youre-done)
    - [Permissions](#permissions)
  - [Preview](#preview)
    - [Management and Creation](#management-and-creation)
    - [OPTIONAL Login Screen (Non SSO mode)](#optional-login-screen-non-sso-mode)
    - [Templink User View](#templink-user-view)

  <!-- mdformat-toc end -->

  ______________________________________________________________________



  A user with the `create` permission creates a link and copies it to the people who need access,
  TempLink users will be given the group `Guest`, mumble ACL's can be setup to restrict access as required.
  The mumble chat command `!kicktemps` will purge the mumble server of all temp users, if they still have a valid Templink they will be able to reconnect until it either expires or is removed from the tool. Only members who have the `Kick User` permission can use the command.



  > \[!NOTE\]
  >
  > ️This is assuming you already have configured a fully functioning mumble service.





  Make sure you're in the virtual environment (venv) of your Alliance Auth installation. Then install the latest release directly from PyPi.

  ```shell
  pip install allianceauth-mumbletemps
  ```



  You need to add `'mumbletemps',` to your `INSTALLED_APPS` and `APPS_WITH_PUBLIC_VIEWS` in the `local.py` file of your Alliance Auth installation.

  This is fairly simple, configure your AA settings (`local.py`) as follows:

  ```python
  INSTALLED_APPS += [
      
      "mumbletemps",
  ]

  APPS_WITH_PUBLIC_VIEWS += [
      
      "mumbletemps",
  ]

  CELERYBEAT_SCHEDULE["mumbletemps_tidy_up_temp_links"] = {
      "task": "mumbletemps.tasks.tidy_up_temp_links",
      "schedule": crontab(minute="*/5"),
  }
  ```

  > \[!NOTE\]
  >
  > If you don't have a list for `APPS_WITH_PUBLIC_VIEWS` yet, then add the whole block
  > from here. This feature has been added in Alliance Auth v3.6.0, so you might not yet
  > have this list in your `local.py`.



  Run static files collection and migrations.

  ```shell
  python manage.py collectstatic --noinput
  python manage.py migrate
  ```



  To update your mumble authenticator if you git cloned the original repo, we will add my branch as a remote and check out the updated code.

  > \[!IMPORTANT\]
  >
  > ️It is a good idea to back up your `authenticator.ini` file before starting.

  1. `cd` into the folder you have the authenticator code in.
  1. `git status` to confirm it is a git repo, and the correct place.
  1. `git remote add upstream git@gitlab.com:aaronkable/mumble-authenticator.git` to add the remote.
  1. `git fetch upstream` to grab the updates.
  1. `git checkout upstream/master` to roll over to my code.
  1. Restart your authenticator with supervisor.

  > \[!NOTE\]
  >
  > The authenticator.log should show something like:
  >
  > ```
  > Starting AllianceAuth mumble authenticator V:1.0.0 - TempLinks
  > ```
  >
  > If you are on the correct branch and version, if not, you may still be running the default auth version and will need to investigate why. Users will get prompted for passwords when they try to connect with a temp link, and you are not running this version. The Authenticator version needs to match this version!

  If you did not use the git clone method of installing the authenticator,
  copy the contents of [my forkfound here](https://gitlab.com/aaronkable/mumble-authenticator)
  on top of your current installation.



  | Setting                   | Default   | Description                                                              |
  | ------------------------- | --------- | ------------------------------------------------------------------------ |
  | MUMBLE_TEMPS_FORCE_SSO    | `True`    | Setting this to `False` will allow users to auth with the non-sso method |
  | MUMBLE_TEMPS_SSO_PREFIX   | `[TEMP]`  | Display Name Prefix for an SSO'd temp user in mumble                     |
  | MUMBLE_TEMPS_LOGIN_PREFIX | `[*TEMP]` | Display Name Prefix for a non-SSO'd temp user in mumble                  |



  Restart your Alliance Auth instance to apply the changes.

  ```shell
  sudo systemctl restart supervisor.service
  ```



  | Perm                         | Admin Site | Auth Site                         |
  | ---------------------------- | ---------- | --------------------------------- |
  | mumbletemps.create_new_links | None       | Can create and delete Temp Links. |





  ![image](https://i.imgur.com/Jl2ihH2.png)



  ![Login](https://i.imgur.com/BIRLFmq.png)



  ![Demo](https://i.imgur.com/G86qAb8.png)

rpm_license:
  MIT License  Copyright (c) 2019 Aaron Kable  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.


