# packages

pkgId: 3a31a266a19b9f1520ffdd0eb287750cd317476e207e89793c018d5506496b4d
name: python-wwwurf-project-generator-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for wwwurf-project-generator
url: https://worldwidewurf.io
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-wwwurf-project-generator-0.1.0-1.src.rpm
location_href: Packages/python-wwwurf-project-generator-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  A command-line tool for generating structured multi-package Python projects using Poetry.



  - Creates a structured multi-package Python project
  - Generates package scaffolding with Poetry configuration
  - Includes testing setup with pytest
  - Automatic Git initialization
  - Management script for adding new packages



  ```bash
  pip install wwwurf-project-generator
  ```





  ```bash
  wwwurf-gen create my-project --packages core api database
  ```



  ```bash
  wwwurf-gen add-package new-package-name
  ```



  The generated project will have the following structure:

  ```
  my-project/
  ├── main_app/
  │   ├── __init__.py
  │   └── main.py
  ├── packages/
  │   ├── core/
  │   │   ├── core/
  │   │   │   ├── __init__.py
  │   │   │   └── main.py
  │   │   ├── tests/
  │   │   ├── pyproject.toml
  │   │   └── README.md
  │   └── [other-packages]/
  ├── pyproject.toml
  ├── README.md
  ├── .gitignore
  └── manage.py
  ```



  MIT License - see LICENSE file for details.



  Contributions are welcome! Please feel free to submit a Pull Request.



  WorldWideWurf (worldwidewurf@gmail.com)


pkgId: bcf092422168ea52e1544636d67f4e04cfbef08159852ecc826a764cc7003049
name: python-xaal.lib-help
arch: noarch
version: 0.7.8
epoch: 0
release: 1
summary: Development documents and examples for xaal.lib
url: https://recherche.imt-atlantique.fr/xaal/
rpm_license: GPL License
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xaal.lib-0.7.8-1.src.rpm
location_href: Packages/python-xaal.lib-help-0.7.8-1.noarch.rpm
checksum_type: sha256
description:
  **xaal.lib** is the official Python stack to develop home-automation devices and gateways
  with the xAAL protocol. For a full description of the protocol check out
  http://recherche.imt-atlantique.fr/xaal/
  Dependencies
  ~~~~~~~~~~~~
  xaal.lib depends on :
   * cbor2
   * pysodium
   * configobj
   * coloredlogs
   * decorator
   * tabulate
   * aioconsole
  Install
  ~~~~~~~
  Please refer to the official `full documentation to install the lib in a virtualenv
  <https://gitlab.imt-atlantique.fr/xaal/code/python/-/blob/main/README.rst>`_
  Usage
  ~~~~~
  The main goal of xaal.lib is to provide an API to easily develop devices & gateways.
  **xaal.lib.Engine send / receive / parse to|from xAAL Bus**.
  To receive / parse / display incoming xAAL messages, you can simply try something like
  this:
     from xaal.lib import Engine
     def display(msg):
         print(msg)
     eng = Engine()
     eng.subscribe(display)
     eng.run()
  The Engine will call the display function every time it receive a xAAL message.
  Let's take a look at a simple lamp device :
     from xaal.lib import Device,Engine,tools
     
     dev = Device("lamp.basic", tools.get_random_uuid())
     dev.product_id = 'Dummy Lamp'
     dev.url  = 'http://www.acme.org'
     dev.info = 'My fake lamp'
     
     light = dev.new_attribute('light')
     
     def on():
         light.value = True
     def off():
         light.value = False
     dev.add_method('turn_on',on)
     dev.add_method('turn_off',off)
     
     eng = Engine()
     eng.add_device(dev)
     eng.run()
  To avoid to rewrite the same code for each device, you can use the `xaal.schemas package <https://gitlab.imt-atlantique.fr/xaal/code/python/-/tree/main/libs/schemas>`_.
  This package provides a set of predefined devices, you can use them as a template to create your own device.
     from xaal.schemas import devices
     from xaal.lib import Engine
     
     dev = devices.lamp()
     
     eng = Engine()
     eng.add_device(dev)
     eng.run()
  FAQ
  ~~~
  The core engine run forever so how can I use it in webserver, GUI or to develop device
  with IO. The whole API is absolutely not thread safe, so **don't use threads** unless you
  exactly know what's going on. Anyways, you have several options to fix this issue:
  * You can use you own loop and periodically call *eng.loop()*
    for example, you can do something like this:
       while 1:
           do_some_stuff()
           eng.loop()
  * You can use a engine timer, to perform some stuff.
       def read_io():
           pass
       
       eng.add_timer(read_io,10)
       eng.run()
  * Use the **AsyncEngine**. Python version > 3.8 provides async programming with **asyncio** package.
    *AsyncEngine* use the same API as *Engine*, but it is a **asynchronous** engine. You can use
    *coroutines* in device methods, timers functions and callbacks. It provides additionals features
    like the *on_start* and *on_stop* callbacks.
  * Use an alternate coroutine lib, you can use **gevent** or **greenlet** for example. Look at
    apps/rest for a simple greenlet example.


pkgId: 5d5aa00d11d92994f44ed191a7047d6f06829bc26c98afc68f55561cad011311
name: python-xaal.monitor-help
arch: noarch
version: 0.4
epoch: 0
release: 1
summary: Development documents and examples for xaal.monitor
url: https://recherche.imt-atlantique.fr/xaal/
rpm_license: GPL License
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xaal.monitor-0.4-1.src.rpm
location_href: Packages/python-xaal.monitor-help-0.4-1.noarch.rpm
checksum_type: sha256
description:
  This package is a library for monitoring the xAAL devices on the network. It provides a easy way to get the list of devices and their status
  (attributes, description, metadata, etc...). It also provides a simple way to subscribe to events.
  This package is used by a lot of xAAL programs like: The dashboard, the REST API, the Home Assistant plugin...


pkgId: c4443231675784730afc6bc0642278cc1bc691099be4e04f548878162230cc7e
name: python-xaal.tools-help
arch: noarch
version: 0.6.2
epoch: 0
release: 1
summary: Development documents and examples for xaal.tools
url: https://recherche.imt-atlantique.fr/xaal/
rpm_license: GPL License
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xaal.tools-0.6.2-1.src.rpm
location_href: Packages/python-xaal.tools-help-0.6.2-1.noarch.rpm
checksum_type: sha256
description:
  A collection of tools for working with the xAAL bus.
  This package contains the following tools:
    - xaal-isalive
    - xaal-info
    - xaal-walker
    - xaal-dumper
    - xaal-log
    - xaal-querydb
    - xaal-cleandb
    - xaal-send
    - xaal-tail
    - xaal-pkgrun
    - xaal-keygen
    - xaal-uuidgen
    - xaal-shell


pkgId: 9badd3d9615bfb6971a5e48f10ecec4ccc6e08170acb96fa0b53cde4ba45463e
name: python-xaitk-jatic-help
arch: noarch
version: 0.4.3
epoch: 0
release: 1
summary: Development documents and examples for xaitk-jatic
url: https://pypi.org/project/xaitk-jatic/
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xaitk-jatic-0.4.3-1.src.rpm
location_href: Packages/python-xaitk-jatic-help-0.4.3-1.noarch.rpm
checksum_type: sha256
description:
  <!-- :auto badges: -->
  [![PyPI - Python Version](https://img.shields.io/pypi/v/xaitk-jatic)](https://pypi.org/project/xaitk-jatic/)
  ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/xaitk-jatic)
  [![Documentation Status](https://readthedocs.org/projects/xaitk-jatic/badge/?version=latest)](https://xaitk-jatic.readthedocs.io/en/latest/?badge=latest)
  <!-- :auto badges: -->



  "Bucket" to house various examples and resources related to
  [`xaitk-saliency`](https://github.com/xaitk/xaitk-saliency)
  integration and scaling for JATIC use as part of the JATIC program.

  <!-- :auto installation: -->

  Ensure the source tree is acquired locally before proceeding.

  To install the current version via `pip`:
  ```bash
  pip install xaitk-jatic
  ```

  Alternatively, you can use [Poetry](https://python-poetry.org/):
  ```bash
  poetry install
  ```

  Certain plugins may require additional runtime dependencies. Details on these requirements can be found [here](https://xaitk-jatic.readthedocs.io/en/latest/implementations.html).

  For more detailed installation instructions, visit the [installation documentation](https://xaitk-jatic.readthedocs.io/en/latest/installation.html).
  <!-- :auto installation: -->

  <!-- :auto getting-started: -->

  Explore usage examples of the `xaitk-jatic` package in various contexts using the Jupyter notebooks provided in the `./examples/` directory.

  Contributions are encouraged! For more details, refer to the [CONTRIBUTING.md](./CONTRIBUTING.md) file.
  <!-- :auto getting-started: -->

  <!-- :auto documentation: -->

  Documentation for both release snapshots and the latest master branch is available on [ReadTheDocs](https://xaitk-jatic.readthedocs.io/en/latest/).

  To build the Sphinx-based documentation locally for the latest reference:
  ```bash

  poetry install --sync --with linting,tests,docs

  cd docs

  poetry run make html

  firefox _build/html/index.html
  ```
  <!-- :auto documentation: -->

  <!-- :auto developer-tools: -->



  Pre-commit hooks ensure that code complies with required linting and formatting guidelines. These hooks run automatically before commits but can also be executed manually. To bypass checks during a commit, use the `--no-verify` flag.

  To install and use pre-commit hooks:
  ```bash

  poetry install --sync --with linting,tests,docs

  poetry run pre-commit install

  poetry run pre-commit run --all-files
  ```
  <!-- :auto developer-tools: -->

  <!-- :auto contributing: -->

  - Follow the [JATIC Design Principles](https://cdao.pages.jatic.net/public/program/design-principles/).
  - Adopt the Git Flow branching strategy.
  - Detailed release information is available in [docs/release_process.rst](./docs/release_process.rst).
  - Additional contribution guidelines can be found in [CONTRIBUTING.md](./CONTRIBUTING.md).
  <!-- :auto contributing: -->

  <!-- :auto license: -->

  [Apache 2.0](./LICENSE)
  <!-- :auto license: -->

  <!-- :auto contacts: -->


  **Principal Investigator**: Brian Hu (Kitware) @brian.hu
  **Product Owner**: Austin Whitesell (MITRE) @awhitesell
  **Scrum Master / Tech Lead**: Brandon RichardWebster (Kitware) @b.richardwebster
  **Deputy Tech Lead**: Emily Veenhuis (Kitware) @emily.veenhuis
  <!-- :auto contacts: -->


pkgId: bceeaec5acaf1c4aeaa970b47c8feb9c85c1b5ce22407b865b95343e2b6f274e
name: python-xanadu-sphinx-theme-help
arch: noarch
version: 0.6.2
epoch: 0
release: 1
summary: Development documents and examples for xanadu-sphinx-theme
url: https://github.com/XanaduAI/xanadu-sphinx-theme
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xanadu-sphinx-theme-0.6.2-1.src.rpm
location_href: Packages/python-xanadu-sphinx-theme-help-0.6.2-1.noarch.rpm
checksum_type: sha256
description:
  The Xanadu Sphinx Theme requires Python 3.7 or later. The latest version of the
  XST can be installed directly from the GitHub repository using ``pip``:
      pip install xanadu-sphinx-theme


pkgId: bafc918f3903cf2b1e887d29c2195487904f78bfba936623d2e2dde703a0e8f4
name: python-xautomata-hive-help
arch: noarch
version: 3.21.0
epoch: 0
release: 1
summary: Development documents and examples for xautomata-hive
url: https://github.com/sherlogic/xautomata-hive.git
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xautomata-hive-3.21.0-1.src.rpm
location_href: Packages/python-xautomata-hive-help-3.21.0-1.noarch.rpm
checksum_type: sha256
description:
  Pacchetto che fornisca una interfaccia semplice per usare le API di Xautomata in python

  The full documentation can be fount at https://sherlogic.github.io/xautomata-hive/



  Il pacchetto si installa come un qualsiasi pacchetto python
  ```bash
  pip install xautomata-hive
  ```

  L'uso interno poi deve essere fatto con il solo nome **hive**
  ```python
  import hive
  ```




  La libreria *hive* è stata pensata per facilitare l'interazione con le API di XAutomata.
  Di seguito si trova un esempio dove viene chiesta la lista dei customers con codice DEMO, e si chiede di ottere il
  risultato paginato di 50 elementi per volta. Il risultato ottenuto (ricompattato in un unica lista) vine poi
  usato per estrarre lo uuid del primo customer per chiedere tutti i siti attivi di quel customer scelto.

  L'uso di questa libreria garantisce una serie di feature aggiuntive automatiche, gestite dietro le quinte, di cui l'operatore non deve preoccuparsi:
  - warmstart: gestione di una cache locale per non rifare piu volte la stessa chiamata se non serve.
  - ratelimiter: vengono limitate le chiamate massime al minuto che si possono fare, garantendo l'impossibilita di dare fastidio al server inavvertitamente.
  - riautenticazione: se l'autenticazione usata scade per il troppo tempo passato, viene gestita in automatico la riatuenticazione.
  - paginazione: le chiamate troppo grandi vengono suddivise in automatico in sottochiamate per non chiedere tutto assieme.
  - richiamate: se una chiamata fallisce vengono fatti una serie di tentativi prima di restituire un errore.

  **Ogni metodo usato restituisce sempre una lista di elementi.**

  Le API trovate sullo swagger del proprio ambiente XAUTOMATA sono chiamabili in maniera semplificata come metodi della
  libreria *XautomataAPI*. In alternativa si puo usare una metodologia piu simile alla libreria *request* che richiede l'url
  dell'API. Di seguito i due tipi di approccio.



  ```python
  from hive.api import XautomataApi

  root = ''
  passw = ''
  user = ''

  xa = XautomataApi(root=root, user=user, password=passw)

  customers = xa.customers(code='DEMO', like=True, page_size=50)

  uuid_c = customers[0]['uuid']

  sites = xa.sites(uuid_customer=uuid_c, status='A')
  ```

  Si puo vedere come le chiamate alle API hanno la stessa terminologie trovata sullo swagger
  cosi come tutti i parametri di filtro evidenziati dentro lo swagger.
  Suddetti filtri vengono selezionati semplicemente aggiungendo la chiave:valore nel metodo scelto.
  In aggiunta ai filtri degli specifici endpoint sono presenti in aggiunta:
  - single_page: XautomataApi pagina sempre la chiamata, ma se impostato a single_page=True, la paginazione viene inibita
  - page_size: paginando in automatico, è sempre presente un valore di elementi per pagina. Importante ricordare che il risultato non viene restituito paginato ma sempre ricompattato in una unica risposta.
  - warm_start: per le chiamate in lettura è sempre possibile attivare la modalita warmstart che crea una hard cache locale, salvado la risposta in un file. Ogni volta che viene rifatta la stessa chiamata con gli stessi parametri (se in modalita warm_start), il risultato viene preso dal file locale invece che fare la chiamata al server.
  - kwargs: questa chiave prevede di ricevere un dizionario e sono valori vengono passati direttamente a *request*. Utile sono a chi sa cosa sta facendo e vuole un comportamento di request diverso dal default.

  L'uso di ogni API è specializzato ai parametri specifici di quel API, per avere un dettaglio dei parametri usabili si puo consultare sia il docstring di ogni metodo,
  che contiene il dettaglio dei parametri usabili, cosi come lo swagger stesso. Ogni parametro presente nello swagger è riportato un modo speculare nei parametri di XautomataApi.

  Nelle situazioni in cui viene richiesto un corpo delle API sotto forma di una lista di oggetti, la lista deve essere fornita per intero, come nell'esempio che segue:

  ```python
  from hive.api import XautomataApi
  xa = XautomataApi(root='root', user='user', password='passw')

  lista_uuid = ['uuid1', 'uuid2', 'uuid3']

  customers = xa.sites_bulk(payload=lista_uuid)
  ```



  In alternativa e' possibile usare XautomataApi tramite l'url dell'endpoint. La differenza chiave sul passare tramite
  questo approccio e' che si possono chiamare anche API non ancora implemetate in modalita metodi, o manipolare in modo piu
  diretto cosa viene passato alla chiamata. Resta ugualmente preferibile usare XautomataApi rispetto a *request*
  perche anche tramite la chiamta url vengono mantenute le proprieta di paginazione, cache, riautenticazione etc.

  Qui di seguito si puo vedere la chiamata fatta per ottenere i clienti con codice 'DEMO' in modalita url.

  ```python
  from hive.api import XautomataApi
  xa = XautomataApi(root='root', user='user', password='passw')

  params = {'code': 'DEMO',
            'like': True}

  customers = xa.execute(mode='GET', path='/customers/', params=params, page_size=50)
  ```

  a differenza della modalita per metodi, in questo caso i parametri devono essere inseriti all'interno di un dizionario
  che viene passato a **params** se si sta fornendo un parametri, e a **payload** se si sta fornendo un *corpo* (tipicamente
  usato per le post)



  esiste un parametri privato *_get_only* che se forzato a True impedisce di usare API di POST/PUT/DELETE. Fatta eccezione
  delle bulk e query dove vengono inibite solo le chiamtate che andrebbero ad apportare modifiche al db

  ```python
  from hive.api import XautomataApi
  xa = XautomataApi(root='root', user='user', password='passw')
  xa._get_only = True
  ```



  La struttura di XA e' complessa e mescola assieme elementi di una gerarchia ad albero con elenedi da grafo, ma se ci si limita
  all'interazione con gli elementi dell'asset di un cliente la complessita si riduce un minimo.

  Possiamo immaginare di avere l'asset di un cliente e una serie di servizzi che puntano all'asset, andando ad arricchire
  l'informazione li presente, oppure aggiungendo funzionalita.



  Come **asset** definiamo tutto cio' che costituisce il perimetro fisico del cliente. L'asset e' definito in modo
  gerarchico dalle seguenti componenti (in ordine gerarchica decrescente:
  - Customer
  - Site
  - Group
  - Object
  - Metric_type
  - Metric
  - Service

  Ogniuno di questi livelli contiene informazione, il customer definisce il cliente, i siti definiscono le filiali del cliente, etc.
  Ogni livelli e' connesso con un legame uno a molti con il livello sottostante, quindi un sito ha dei gruppi al suo interno, ma un gruppo non puo essere in piu siti.
  Esiste un eccezione che sono i gruppi, per la maggior parte del loro uso mantengono una relazione uno a molti con i metric_type, ma un oogetto puo essere contenuto in piu gruppi.
  Quindi diciamo che tra i gruppi e gli oggetti c'e' una relazione molti a molti.

  Ogni elemento puo essere identificato da una serie di chiavi primarie che comprendono anche lo uuid del suo livello superiore.
  Questo ovviamente non e' vero per gli oggetti per via della natura molti a molti con i gruppi.

  I servizzi che chiudono la fila, sono una seconda eccezione: hanno una importanza gerarchica simile alle metriche, possono essere legate alle metriche con legame molti a molti ma possono anche non essere legate alle metriche
  e vivere completamente slegate dall'asset.
  I servizzi rappresentano informazione aggiuntiva calcolata partendo da valori del cliente o altri dati, non necessariamente sono legate all'asset.
  Se sono legate all'asset lo sono tramite le metriche, in questi casi esiste un puntamento verso tutte le metriche che hanno contribuito a formare il servizio.

  La struttura dal customer al servizio rappresenta l'asset e viene chiamato **albero**.

  Per navigare l'albero esistono API che permettono di ottenere le informazioni di legame di un layer con gli altri.
  Per fare un esempio, se conosco una **metric** e voglio sapere in quale **object** questa e' contenuta, nei dati della **metric** stessa e' presente lo *uuid* del **metric_type** che la contiene.
  Con quel *uuid*, posso ricavare i dettagli del **metric_type** in cui e' presente lo *uuid* del **object** che lo contiene. Con quel *uuid* posso andare a chiedere i dettagli dell'**object** che mi interessava conoscere.

  E' altrettando vero nell'altra direzione, noto un **objetc** posso sapere tutti gli **metric_type** che lo compongono, sceltone uno posso chiedere tutte le **metrics** che lo compongono.

  Questo modo di navigare l'albero trova alcune variazioni quando si cerca di superare i layer con relazioni molti a molti. Per conoscere quali **groups** contengono un **object** e viceversa, ci sono API apposta che dato
  uno dei due layer, ti restituisce il secondo. Questo vale anche per i **services** avengo la stessa natura molti a molti.

  Esistono scorciatoie per navigare l'albero, queste scorciatorie vanno sotto forma del set di API **tree_hierarchy**. Questa API sono disegnate per recuperare un elemento nell'albero con tutti i suoi legami con i layer superiori.



  L'asset rapresenta gli oggetti che producono dati, ma i dati stessi vengono raccolti in un posto diverso. Nello specifico nelle tabelle delle serie temporali.
  Tali serie si dividono in due tipologie, serie di **stato** e serie di **valore**.

  Le serie di stato sono una successione di informazioni raccolte in dizionari, possono contenere ogni tipo di informazione e portano con se un indice di *gravita*.
  Le serie di valore sono successioni di numeri, ideali per raccogliere dati numerici come temperatura, velocita etc.

  Le **metrics** sono il layer in cui vengono salvate queste serie. Ogni **metric** e' legata direttamente ad una e una sola serie temporale, sia essa di stato o di valore.

  I **services** possono essere legati a serie temporali a loro volta, e , a differenza delle **metrics** possono puntare conemporaneamente sia a serie di valore che di stato.



  Le ralazioni non finiscono con l'asset, esistono una miriade di informazioni aggiuntive esplorabili, come gli **user**, le **dashboard** e cosi via.
  Il modo di navigare questi legami e' pero lo stesso con cui si naviga l'albero.

  La completa connessione tra tutti gli elementi richiamabili con API e' presentata nello schema qui di seguito

  <img src="docs/schema.png"  width="80%" height="80%">


pkgId: 65bb42c2f1bc2657b452d21b623972ad271de030dffe8642f1e5b24605f891ef
name: python-xcompact3d-toolbox-help
arch: noarch
version: 1.3.0
epoch: 0
release: 1
summary: Development documents and examples for xcompact3d-toolbox
url: https://pypi.org/project/xcompact3d-toolbox/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xcompact3d-toolbox-1.3.0-1.src.rpm
location_href: Packages/python-xcompact3d-toolbox-help-1.3.0-1.noarch.rpm
checksum_type: sha256
description:
  |         |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | QA      | [![CI](https://github.com/fschuch/xcompact3d_toolbox/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/fschuch/xcompact3d_toolbox/actions/workflows/ci.yaml) [![CodeQL](https://github.com/fschuch/xcompact3d_toolbox/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/fschuch/xcompact3d_toolbox/actions/workflows/github-code-scanning/codeql) [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/fschuch/xcompact3d_toolbox/main.svg)](https://results.pre-commit.ci/latest/github/fschuch/xcompact3d_toolbox/main)[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=fschuch_xcompact3d_toolbox&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=fschuch_xcompact3d_toolbox)[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=fschuch_xcompact3d_toolbox&metric=coverage)](https://sonarcloud.io/summary/new_code?id=fschuch_xcompact3d_toolbox)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
  | Docs    | [![Docs](https://github.com/fschuch/xcompact3d_toolbox/actions/workflows/docs.yaml/badge.svg?branch=main)](https://docs.fschuch.com/xcompact3d_toolbox) [![badge](https://img.shields.io/badge/launch-Tutorials-579ACA.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAABZCAMAAABi1XidAAAB8lBMVEX///9XmsrmZYH1olJXmsr1olJXmsrmZYH1olJXmsr1olJXmsrmZYH1olL1olJXmsr1olJXmsrmZYH1olL1olJXmsrmZYH1olJXmsr1olL1olJXmsrmZYH1olL1olJXmsrmZYH1olL1olL0nFf1olJXmsrmZYH1olJXmsq8dZb1olJXmsrmZYH1olJXmspXmspXmsr1olL1olJXmsrmZYH1olJXmsr1olL1olJXmsrmZYH1olL1olLeaIVXmsrmZYH1olL1olL1olJXmsrmZYH1olLna31Xmsr1olJXmsr1olJXmsrmZYH1olLqoVr1olJXmsr1olJXmsrmZYH1olL1olKkfaPobXvviGabgadXmsqThKuofKHmZ4Dobnr1olJXmsr1olJXmspXmsr1olJXmsrfZ4TuhWn1olL1olJXmsqBi7X1olJXmspZmslbmMhbmsdemsVfl8ZgmsNim8Jpk8F0m7R4m7F5nLB6jbh7jbiDirOEibOGnKaMhq+PnaCVg6qWg6qegKaff6WhnpKofKGtnomxeZy3noG6dZi+n3vCcpPDcpPGn3bLb4/Mb47UbIrVa4rYoGjdaIbeaIXhoWHmZYHobXvpcHjqdHXreHLroVrsfG/uhGnuh2bwj2Hxk17yl1vzmljzm1j0nlX1olL3AJXWAAAAbXRSTlMAEBAQHx8gICAuLjAwMDw9PUBAQEpQUFBXV1hgYGBkcHBwcXl8gICAgoiIkJCQlJicnJ2goKCmqK+wsLC4usDAwMjP0NDQ1NbW3Nzg4ODi5+3v8PDw8/T09PX29vb39/f5+fr7+/z8/Pz9/v7+zczCxgAABC5JREFUeAHN1ul3k0UUBvCb1CTVpmpaitAGSLSpSuKCLWpbTKNJFGlcSMAFF63iUmRccNG6gLbuxkXU66JAUef/9LSpmXnyLr3T5AO/rzl5zj137p136BISy44fKJXuGN/d19PUfYeO67Znqtf2KH33Id1psXoFdW30sPZ1sMvs2D060AHqws4FHeJojLZqnw53cmfvg+XR8mC0OEjuxrXEkX5ydeVJLVIlV0e10PXk5k7dYeHu7Cj1j+49uKg7uLU61tGLw1lq27ugQYlclHC4bgv7VQ+TAyj5Zc/UjsPvs1sd5cWryWObtvWT2EPa4rtnWW3JkpjggEpbOsPr7F7EyNewtpBIslA7p43HCsnwooXTEc3UmPmCNn5lrqTJxy6nRmcavGZVt/3Da2pD5NHvsOHJCrdc1G2r3DITpU7yic7w/7Rxnjc0kt5GC4djiv2Sz3Fb2iEZg41/ddsFDoyuYrIkmFehz0HR2thPgQqMyQYb2OtB0WxsZ3BeG3+wpRb1vzl2UYBog8FfGhttFKjtAclnZYrRo9ryG9uG/FZQU4AEg8ZE9LjGMzTmqKXPLnlWVnIlQQTvxJf8ip7VgjZjyVPrjw1te5otM7RmP7xm+sK2Gv9I8Gi++BRbEkR9EBw8zRUcKxwp73xkaLiqQb+kGduJTNHG72zcW9LoJgqQxpP3/Tj//c3yB0tqzaml05/+orHLksVO+95kX7/7qgJvnjlrfr2Ggsyx0eoy9uPzN5SPd86aXggOsEKW2Prz7du3VID3/tzs/sSRs2w7ovVHKtjrX2pd7ZMlTxAYfBAL9jiDwfLkq55Tm7ifhMlTGPyCAs7RFRhn47JnlcB9RM5T97ASuZXIcVNuUDIndpDbdsfrqsOppeXl5Y+XVKdjFCTh+zGaVuj0d9zy05PPK3QzBamxdwtTCrzyg/2Rvf2EstUjordGwa/kx9mSJLr8mLLtCW8HHGJc2R5hS219IiF6PnTusOqcMl57gm0Z8kanKMAQg0qSyuZfn7zItsbGyO9QlnxY0eCuD1XL2ys/MsrQhltE7Ug0uFOzufJFE2PxBo/YAx8XPPdDwWN0MrDRYIZF0mSMKCNHgaIVFoBbNoLJ7tEQDKxGF0kcLQimojCZopv0OkNOyWCCg9XMVAi7ARJzQdM2QUh0gmBozjc3Skg6dSBRqDGYSUOu66Zg+I2fNZs/M3/f/Grl/XnyF1Gw3VKCez0PN5IUfFLqvgUN4C0qNqYs5YhPL+aVZYDE4IpUk57oSFnJm4FyCqqOE0jhY2SMyLFoo56zyo6becOS5UVDdj7Vih0zp+tcMhwRpBeLyqtIjlJKAIZSbI8SGSF3k0pA3mR5tHuwPFoa7N7reoq2bqCsAk1HqCu5uvI1n6JuRXI+S1Mco54YmYTwcn6Aeic+kssXi8XpXC4V3t7/ADuTNKaQJdScAAAAAElFTkSuQmCC)](https://mybinder.org/v2/gh/fschuch/xcompact3d_toolbox/main?labpath=.%2Fdocs%2Ftutorial) [![badge](https://img.shields.io/badge/launch-Sandbox%20examples-579ACA.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAABZCAMAAABi1XidAAAB8lBMVEX///9XmsrmZYH1olJXmsr1olJXmsrmZYH1olJXmsr1olJXmsrmZYH1olL1olJXmsr1olJXmsrmZYH1olL1olJXmsrmZYH1olJXmsr1olL1olJXmsrmZYH1olL1olJXmsrmZYH1olL1olL0nFf1olJXmsrmZYH1olJXmsq8dZb1olJXmsrmZYH1olJXmspXmspXmsr1olL1olJXmsrmZYH1olJXmsr1olL1olJXmsrmZYH1olL1olLeaIVXmsrmZYH1olL1olL1olJXmsrmZYH1olLna31Xmsr1olJXmsr1olJXmsrmZYH1olLqoVr1olJXmsr1olJXmsrmZYH1olL1olKkfaPobXvviGabgadXmsqThKuofKHmZ4Dobnr1olJXmsr1olJXmspXmsr1olJXmsrfZ4TuhWn1olL1olJXmsqBi7X1olJXmspZmslbmMhbmsdemsVfl8ZgmsNim8Jpk8F0m7R4m7F5nLB6jbh7jbiDirOEibOGnKaMhq+PnaCVg6qWg6qegKaff6WhnpKofKGtnomxeZy3noG6dZi+n3vCcpPDcpPGn3bLb4/Mb47UbIrVa4rYoGjdaIbeaIXhoWHmZYHobXvpcHjqdHXreHLroVrsfG/uhGnuh2bwj2Hxk17yl1vzmljzm1j0nlX1olL3AJXWAAAAbXRSTlMAEBAQHx8gICAuLjAwMDw9PUBAQEpQUFBXV1hgYGBkcHBwcXl8gICAgoiIkJCQlJicnJ2goKCmqK+wsLC4usDAwMjP0NDQ1NbW3Nzg4ODi5+3v8PDw8/T09PX29vb39/f5+fr7+/z8/Pz9/v7+zczCxgAABC5JREFUeAHN1ul3k0UUBvCb1CTVpmpaitAGSLSpSuKCLWpbTKNJFGlcSMAFF63iUmRccNG6gLbuxkXU66JAUef/9LSpmXnyLr3T5AO/rzl5zj137p136BISy44fKJXuGN/d19PUfYeO67Znqtf2KH33Id1psXoFdW30sPZ1sMvs2D060AHqws4FHeJojLZqnw53cmfvg+XR8mC0OEjuxrXEkX5ydeVJLVIlV0e10PXk5k7dYeHu7Cj1j+49uKg7uLU61tGLw1lq27ugQYlclHC4bgv7VQ+TAyj5Zc/UjsPvs1sd5cWryWObtvWT2EPa4rtnWW3JkpjggEpbOsPr7F7EyNewtpBIslA7p43HCsnwooXTEc3UmPmCNn5lrqTJxy6nRmcavGZVt/3Da2pD5NHvsOHJCrdc1G2r3DITpU7yic7w/7Rxnjc0kt5GC4djiv2Sz3Fb2iEZg41/ddsFDoyuYrIkmFehz0HR2thPgQqMyQYb2OtB0WxsZ3BeG3+wpRb1vzl2UYBog8FfGhttFKjtAclnZYrRo9ryG9uG/FZQU4AEg8ZE9LjGMzTmqKXPLnlWVnIlQQTvxJf8ip7VgjZjyVPrjw1te5otM7RmP7xm+sK2Gv9I8Gi++BRbEkR9EBw8zRUcKxwp73xkaLiqQb+kGduJTNHG72zcW9LoJgqQxpP3/Tj//c3yB0tqzaml05/+orHLksVO+95kX7/7qgJvnjlrfr2Ggsyx0eoy9uPzN5SPd86aXggOsEKW2Prz7du3VID3/tzs/sSRs2w7ovVHKtjrX2pd7ZMlTxAYfBAL9jiDwfLkq55Tm7ifhMlTGPyCAs7RFRhn47JnlcB9RM5T97ASuZXIcVNuUDIndpDbdsfrqsOppeXl5Y+XVKdjFCTh+zGaVuj0d9zy05PPK3QzBamxdwtTCrzyg/2Rvf2EstUjordGwa/kx9mSJLr8mLLtCW8HHGJc2R5hS219IiF6PnTusOqcMl57gm0Z8kanKMAQg0qSyuZfn7zItsbGyO9QlnxY0eCuD1XL2ys/MsrQhltE7Ug0uFOzufJFE2PxBo/YAx8XPPdDwWN0MrDRYIZF0mSMKCNHgaIVFoBbNoLJ7tEQDKxGF0kcLQimojCZopv0OkNOyWCCg9XMVAi7ARJzQdM2QUh0gmBozjc3Skg6dSBRqDGYSUOu66Zg+I2fNZs/M3/f/Grl/XnyF1Gw3VKCez0PN5IUfFLqvgUN4C0qNqYs5YhPL+aVZYDE4IpUk57oSFnJm4FyCqqOE0jhY2SMyLFoo56zyo6becOS5UVDdj7Vih0zp+tcMhwRpBeLyqtIjlJKAIZSbI8SGSF3k0pA3mR5tHuwPFoa7N7reoq2bqCsAk1HqCu5uvI1n6JuRXI+S1Mco54YmYTwcn6Aeic+kssXi8XpXC4V3t7/ADuTNKaQJdScAAAAAElFTkSuQmCC)](https://mybinder.org/v2/gh/fschuch/xcompact3d_toolbox/main?labpath=.%2Fdocs%2Fexamples) |
  | Package | [![PyPI - Version](https://img.shields.io/pypi/v/xcompact3d-toolbox.svg?logo=pypi&label=PyPI)](https://pypi.org/project/xcompact3d-toolbox/) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/xcompact3d-toolbox.svg?logo=python&label=Python)](https://pypi.org/project/xcompact3d-toolbox/) ![PyPI - Downloads](https://img.shields.io/pypi/dm/xcompact3d-toolbox?color=blue)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | Meta    | [![Wizard Template](https://img.shields.io/badge/Wizard-Template-%23447CAA)](https://github.com/fschuch/wizard-template) [![Checked with mypy](https://www.mypy-lang.org/static/mypy_badge.svg)](https://mypy-lang.org/) [![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![PyPI - License](https://img.shields.io/pypi/l/xcompact3d-toolbox?color=blue)](https://github.com/fschuch/xcompact3d_toolbox/blob/master/LICENSE) [![EffVer Versioning](https://img.shields.io/badge/version_scheme-EffVer-0097a7)](https://jacobtomlinson.dev/effver)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

  It is a Python package designed to handle the pre and postprocessing of
  the high-order Navier-Stokes solver [XCompact3d](https://github.com/xcompact3d/Incompact3d). It aims to help users and
  code developers to build case-specific solutions with a set of tools and
  automated processes.

  The physical and computational parameters are built on top of [traitlets](https://traitlets.readthedocs.io/en/stable/index.html),
  a framework that lets Python classes have attributes with type checking, dynamically calculated default values, and ‘on change’ callbacks.
  In addition to [ipywidgets](https://ipywidgets.readthedocs.io/en/latest/) for an user friendly interface.

  Data structure is provided by [xarray](https://docs.xarray.dev/en/stable) (see [Why xarray?](https://docs.xarray.dev/en/stable/getting-started-guide/why-xarray.html)), that introduces labels in the form of dimensions, coordinates and attributes on top of raw [NumPy](https://numpy.org/)-like arrays, which allows for a more intuitive, more concise, and less error-prone developer experience. It integrates tightly with [dask](https://dask.org/) for parallel computing and [hvplot](https://hvplot.holoviz.org/user_guide/Gridded_Data.html) for interactive data visualization.

  Finally, Xcompact3d-toolbox is fully integrated with the new *Sandbox Flow Configuration*.
  The idea is to easily provide everything that XCompact3d needs from a [Jupyter Notebook](https://jupyter.org/), like initial conditions, solid geometry, boundary conditions, and the parameters.
  It makes life easier for beginners, that can run any new flow configuration without worrying about Fortran and [2decomp](http://www.2decomp.org/).
  For developers, it works as a rapid prototyping tool, to test concepts and then compare results to validate any future Fortran implementation.



  - [Documentation](https://docs.fschuch.com/xcompact3d_toolbox/);
  - [Changelog](https://github.com/fschuch/xcompact3d_toolbox/releases);
  - [Suggestions for new features and bug report](https://github.com/fschuch/xcompact3d_toolbox/issues);
  - [See what is coming next (Project page)](https://github.com/fschuch/xcompact3d_toolbox/projects/1);
  - [Xcompact3d's repository](https://github.com/xcompact3d/Incompact3d).



  It is possible to install using pip:

  ```bash
  pip install xcompact3d-toolbox
  ```

  There are other dependency sets for extra functionality:

  ```bash
  pip install xcompact3d-toolbox[visu] # interactive visualization with hvplot and others
  ```

  To install from source, clone de repository:

  ```bash
  git clone https://github.com/fschuch/xcompact3d_toolbox.git
  ```

  And then install it interactively with pip:

  ```bash
  cd xcompact3d_toolbox
  pip install -e .
  ```

  You can install additional dependencies as well:

  ```bash
  pip install -e .[visu]
  ```

  Now, any change you make at the source code will be available at your local installation, with no need to reinstall the package every time.



  - Importing the package:

    ```python
    import xcompact3d_toolbox as x3d
    ```

  - Loading the parameters file (both `.i3d` and `.prm` are supported, see [#7](https://github.com/fschuch/xcompact3d_toolbox/issues/7)) from the disc:

    ```python
    prm = x3d.Parameters(loadfile="input.i3d")
    prm = x3d.Parameters(loadfile="incompact3d.prm")
    ```

  - Specifying how the binary fields from your simulations are named, for instance:

  - If the simulated fields are named like `ux-000.bin`:

    ```python
    prm.dataset.filename_properties.set(
       separator = "-",
       file_extension = ".bin",
       number_of_digits = 3
    )
    ```

  - If the simulated fields are named like `ux0000`:

    ```python
    prm.dataset.filename_properties.set(
       separator = "",
       file_extension = "",
       number_of_digits = 4
    )
    ```

  - There are many ways to load the arrays produced by your numerical simulation, so you can choose what best suits your post-processing application.
    All arrays are wrapped into [xarray](http://docs.xarray.dev/en/stable) objects, with many useful methods for indexing, comparisons, reshaping and reorganizing, computations and plotting.
    See the examples:

  - Load one array from the disc:

    ```python
    ux = prm.dataset.load_array("ux-0000.bin")
    ```

  - Load the entire time series for a given variable:

    ```python
    ux = prm.dataset["ux"]
    ```

  - Load all variables from a given snapshot:

    ```python
    snapshot = prm.dataset[10]
    ```

  - Loop through all snapshots, loading them one by one:

    ```python
    for ds in prm.dataset:
       
       vort = ds.uy.x3d.first_derivative("x") - ds.ux.x3d.first_derivative("y")
       
       prm.dataset.write(data = vort, file_prefix = "w3")
    ```

  - Or simply load all snapshots at once (if you have enough memory):

    ```python
    ds = prm.dataset[:]
    ```

  - It is possible to produce a new xdmf file, so all data can be visualized on any external tool:

  - Loop through all snapshots, loading them one by one:

  - User interface for the parameters with IPywidgets:

    ```python
    ds = prm.dataset[:]
    ```

  - It is possible to produce a new xdmf file, so all data can be visualized on any external tool:

    ```python
    prm.dataset.write_xdmf()
    ```

  - User interface for the parameters with IPywidgets:

    ```python
    prm = x3d.ParametersGui()
    prm
    ```

    ![An animation showing the graphical user interface in action](https://www.fschuch.com/en/slides/2021-x3d-dev-meeting/Output.gif)



  © 2020 [Felipe N. Schuch](https://github.com/fschuch).
  All content is under [GPL-3.0 License](https://github.com/fschuch/xcompact3d_toolbox/blob/master/LICENSE).


pkgId: 4b7fb65a68251f0b448eb894effb5f3f8fc485fe02a3c1bb84e9cd0ad2511931
name: python-xdat-help
arch: noarch
version: 0.1.241
epoch: 0
release: 1
summary: Development documents and examples for xdat
url: https://bitbucket.org/hermetric/xdat/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xdat-0.1.241-1.src.rpm
location_href: Packages/python-xdat-help-0.1.241-1.noarch.rpm
checksum_type: sha256
description:
  xdat (eXtended Data Analysis Toolkit), is a set of utilities that help streamline data science projects.

  + Monkey-patches common packages to add useful functionality
  + Helps with standardization of plots in projects
  + Includes useful tools (like caching)







  ```
  > pip install xdat
  ```

  Optionally, can also install:
  ```
  > sudo apt -q -y install libeigen3-dev
  > pip install git+https://github.com/madrury/py-glm.git
  ```


pkgId: fe07cc54f54174b4756e193dc544583a9c032097260fc38dc3067b4b8f939159
name: python-xdbx-help
arch: noarch
version: 1.1.1
epoch: 0
release: 1
summary: Development documents and examples for xdbx
url: https://gitee.com/spider-x/xdbx
rpm_license: MIT Licence
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xdbx-1.1.1-1.src.rpm
location_href: Packages/python-xdbx-help-1.1.1-1.noarch.rpm
checksum_type: sha256
description:
  [toc]



  > 目前每次我们存数据库的时候都会有这样的问题，所有的数据在同步。或者说在入库时我们需要写入库的相关代码【day by day】，本着：`DRY - Don't Repeat Yourself(不要重复你自己)`原则于是我想到了我们可以异步及批量数据操作器。



  - 我们只需要关注数据的问题，不用再太多费心操作相关的创建表，修改表相关字段问题



  - [x] MySQL
  - [x] SqlServer
  - [x] PostgreSQL
  - [x] KafKa
  - [x] ElasticSearch


  - [x] 智能创建表和字段
  - [x] 批量数据插入操作
  - [x] 操作数据同一个表字段不同时，会到表中智能增加字段
  - [x] 支持数据库的连接参数重写操作



  在`config.py`文件中配置数据库和消息队列的连接信息。您需要设置如下环境变量：

  - `ES_HOST_PORT_LIST`: Elasticsearch的主机和端口列表。
  - `KAFKA_HOST`, `KAFKA_PORT`, `KAFKA_TOPIC`: Kafka的主机、端口和主题。
  - 数据库相关配置（如SQL Server、PostgreSQL、MySQL）。



  > DBOP(Database Operation)数据库操作相关代码

  - x_sqlserver.py文件用来存储处理x_sqlserver数据的管道
  - x_mysql.py文件用来存储处理x_mysql数据的管道
  - x_kafka.py文件用来存储处理kafka数据的管道
  - x_mongo.py文件用来存储处理Mongo数据的管道



  ```python

  from xdbx import x_mysql





  x_mysql.host = '127.0.0.1'

  x_mysql.port = 3306

  x_mysql.username = 'root'

  x_mysql.password = '123456'

  x_mysql.db = 'test'


  x_mysql.insert_one(item={'a': 1, 'b': 2}, table='ceshi_20211229')

  x_mysql.insert_many(items=[{'a': 1, 'b': 2}, {'a': 1, 'b': 2}, {'a': 1, 'b': 2}, {'a': 1, 'b': 2}],
                      table='ceshi_20211229')
  ```





  使用`XES`类与Elasticsearch进行交互。示例代码如下：

  ```python
  from xdbx import x_es


  es = x_es.connect()


  query_json = '{"query": {"match_all": {}}}'
  results = es.query(query_json)


  es.query(query_json, to_excel=True)
  ```



  > 将Kafka进行了封装,对平时我们爬虫的一些常规数据存储做操作，利用单例模式开发支持多线程操作【加锁】 使用`XKafka`类与Kafka进行交互。示例代码如下：

  ```python
  from xdbx import x_kafka


  kafka_producer = x_kafka._connect()


  message = {'key': 'value'}
  kafka_producer.insert(message)
  ```



  > 将SqlServer进行了封装，会自动智能的去创建一些表和字段相关的东西，会省爬虫开发者一些时间 使用`SqlServerPipeline`类与SQL Server进行交互。示例代码如下：

  ```python
  from xdbx import x_mssql


  sql_server = x_mssql()


  item = {'column1': 'value1', 'column2': 'value2'}
  table = 'your_table_name'
  sql_server.insert_one(item, table)
  ```



  > 将PostgreSQL进行了封装，会自动智能的去创建一些表和字段相关的东西，会省爬虫开发者一些时间。 使用`PostgrePipeline`类与PostgreSQL进行交互。示例代码如下：

  ```python
  from xdbx import x_pgsql


  postgres = x_pgsql()


  sql = 'SELECT * FROM your_table'
  results = postgres.find(sql)
  ```



  > 将MySQL进行了封装，会自动智能的去创建一些表和字段相关的东西，会省爬虫开发者一些时间。因为mysql<=5.5版本可能有些创建更新时间不稳定的问题，我已经把相关的代码先暂时不开放，如果有更好的方案我们再优化一下。 使用`MysqlDB`类与MySQL进行交互。示例代码如下：

  ```python
  from xdbx import x_mysql


  mysql = x_mysql()


  sql = 'SELECT * FROM your_table'
  results = mysql.find(sql)
  ```



  在使用过程中，如果遇到连接错误或查询错误，请检查配置文件中的连接信息是否正确，并查看日志输出的错误详情。



  如果有任何问题或需要进一步的帮助，请联系我们。






  > 注：相同数据库中不能有相同的触发器，虽然作用于这个表，但是他的范围是相对于数据库，相当于函数名

  ![DBEDF650-1E0D-42ff-A3FC-D32E8FF93CD6.png](http://tva1.sinaimg.cn/large/9aec9ebdgy1gxgzmytbhgj21y410ab29.jpg)



  > 使用字段做对比时全进行转换成小写后再对比


pkgId: 59aa54a7856e6f0828f0e6af6fc467c24dcf54185a4dc56e7f9dccbf808413ce
name: python-xds-protos-help
arch: noarch
version: 1.68.1
epoch: 0
release: 1
summary: Development documents and examples for xds-protos
url: https://grpc.io
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xds-protos-1.68.1-1.src.rpm
location_href: Packages/python-xds-protos-help-1.68.1-1.noarch.rpm
checksum_type: sha256
description:
  Package "xds-protos" is a collection of ProtoBuf generated Python files for xDS protos (or the `data-plane-api <https://github.com/envoyproxy/data-plane-api>`_). You can find the source code of this project in `grpc/grpc <https://github.com/grpc/grpc>`_. For any question or suggestion, please post to https://github.com/grpc/grpc/issues.

  Each generated Python file can be imported according to their proto package. For example, if we are trying to import a proto located at "envoy/service/status/v3/csds.proto", whose proto package is "package envoy.service.status.v3", then we can import it as:

  ::

    
    from envoy.service.status.v3 import csds_pb2
    
    from envoy.service.status.v3 import csds_pb2_grpc


pkgId: d068e5a325c8c8681ec4f202c2db60f74a7eaa63d30f70061274bf0d0f673dbd
name: python-xerparser-help
arch: noarch
version: 0.13.4
epoch: 0
release: 1
summary: Development documents and examples for xerparser
url: https://github.com/jjCode01/xerparser
rpm_license: GPL-3.0-only
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xerparser-0.13.4-1.src.rpm
location_href: Packages/python-xerparser-help-0.13.4-1.noarch.rpm
checksum_type: sha256
description:
  Read the contents of a P6 .xer file and convert it into a Python object.

  *Disclaimers:
  It's helpfull if you are already familiar with the mapping and schemas used by P6 during the export process.
  Refer to the [Oracle Documentation]( https://docs.oracle.com/cd/F25600_01/English/Mapping_and_Schema/xer_import_export_data_map_project/index.htm) for more information regarding how data is mapped to the XER format.
  Tested on .xer files exported as versions 15.2 through 19.12.*

  <br/>



  **Windows**:

  ```bash
  pip install xerparser
  ```

  **Linux/Mac**:

  ```bash
  pip3 install xerparser
  ```

  <br/>



  Import the `Xer` class from `xerparser`  and pass the contents of a .xer file as an argument. Use the `Xer` class variable `CODEC` to set the proper encoding to decode the file.

  ```python
  from xerparser import Xer

  file = r"/path/to/file.xer"
  with open(file, encoding=Xer.CODEC, errors="ignore") as f:
      file_contents = f.read()
  xer = Xer(file_contents)
  ```

  Do not pass the the .xer file directly as an argument to the `Xer` class. The file must be decoded and read into a string, which can then be passed as an argument. Or, pass the .xer file into the `Xer.reader` classmethod, which accepts:

  * str or pathlib.Path objects for files stored locally or on a server.
  * Binary files from requests, Flask, FastAPI, etc...

  ```python
  from xerparser import Xer

  file = r"/path/to/file.xer"
  xer = Xer.reader(file)
  ```

  <br/>



  The tables stored in the .xer file are accessable as either Global, Project specific, Task specific, or Resource specific:



    ```python
    xer.export_info           # export data
    xer.activity_code_types   # dict of ACTVTYPE objects
    xer.activity_code_values  # dict of ACTVCODE objects
    xer.calendars             # dict of all CALENDAR objects
    xer.financial_periods     # dict of FINDATES objects
    xer.notebook_topics       # dict of MEMOTYPE objects
    xer.projects              # dict of PROJECT objects
    xer.project_code_types    # dict of PCATTYPE objects
    xer.project_code_values   # dict of PCATVAL objects
    xer.tasks                 # dict of all TASK objects
    xer.relationships         # dict of all TASKPRED objects
    xer.resources             # dict of RSRC objects
    xer.resource_rates        # dict of RSRCRATE objects
    xer.udf_types             # dict of UDFTYPE objects
    xer.wbs_nodes             # dict of all PROJWBS objects
    ```



  ```python

  project = list(xer.projects.values())[0]

  project.activity_codes        # list of project specific ACTVTYPE objects
  project.calendars             # list of project specific CALENDAR objects
  project.project_codes         # dict of PCATTYPE: PCATVAL objects
  project.tasks                 # list of project specific TASK objects
  project.relationships         # list of project specific TASKPRED objects
  project.resources             # lest of project specific TASKRSRC objects
  project.user_defined_fields   # dict of `UDFTYPE`: `UDF Value` pairs
  project.wbs_nodes             # list of project specific PROJWBS objects
  ```


  ```python

  wbs_node = project.wbs_root

  wbs_node.children              # list of child PROJWBS objects
  wbs_node.project               # PROJECT the WBS node belongs to
  wbs_node.tasks                 # list of TASK objects assigned directly to WBS node
  wbs_node.all_tasks             # list of TASK objects under the WBS node
  wbs_node.user_defined_fields   # dict of `UDFTYPE`: `UDF Value` pairs
  ```



  ```python

  task = project.tasks[0]

  task.activity_codes       # dict of ACTVTYPE: ACTVCODE objects
  task.memos                # list of TASKMEMO objects
  task.periods              # list of TASKFIN objects
  task.resources            # dict of TASKRSRC objects
  task.user_defined_fields  # dict of `UDFTYPE`: `UDF Value` pairs
  ```



  ```python

  resource = list(task.resources.values())[0]

  resource.periods              # list of TRSRCFIN objects
  resource.user_defined_fields  # dict of `UDFTYPE`: `UDF Value` pairs
  ```

  <br/>



  Sometimes the xer file is corrupted during the export process. If this is the case, a `CorruptXerFile` Exception will be raised during initialization.  A list of the errors can be accessed from the `CorruptXerFile` Exception, or by using the `find_xer_errors` function.


  ```python
  from xerparser import Xer, CorruptXerFile

  file = r"/path/to/file.xer"
  try:
      xer = Xer.reader(file)
  except CorruptXerFile as e:
      for error in e.errors:
          print(error)
  ```


  ```python
  from xerparser import parser, file_reader, find_xer_errors

  file = r"/path/to/file.xer"
  xer_data = parser(file_reader(file))
  file_errors = find_xer_errors(xer_data)
  for error in file_errors:
      print(error)
  ```



  - Minimum required tables - an error is recorded if one of the following tables is missing:
    - CALENDAR
    - PROJECT
    - PROJWBS
    - TASK
    - TASKPRED
  - Required table pairs - an error is recorded if Table 1 is included but not Table 2:

    | Table 1       | Table 2       | Notes    |
    | :----------- |:-------------|----------|
    | TASKFIN | FINDATES | *Financial Period Data for Task* |
    | TRSRCFIN | FINDATES | *Financial Period Data for Task Resource* |
    | TASKRSRC | RSRC | *Resource Data* |
    | TASKMEMO | MEMOTYPE | *Notebook Data* |
    | ACTVCODE | ACTVTYPE | *Activity Code Data* |
    | TASKACTV | ACTVCODE | *Activity Code Data* |
    | PCATVAL | PCATTYPE | *Project Code Data* |
    | PROJPCAT | PCATVAL | *Project Code Data* |
    | UDFVALUE | UDFTYPE | *User Defined Field Data* |

  - Non-existent calendars assigned to tasks.
  - Non-existent resources assigned to task resources.


pkgId: 0e856b2f9f878ff90990dcd259c47bec3efe305296c1e4e88220c98d0c7ee5e7
name: python-xfields-help
arch: noarch
version: 0.21.5
epoch: 0
release: 1
summary: Development documents and examples for xfields
url: https://xsuite.readthedocs.io/
rpm_license: Apache 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xfields-0.21.5-1.src.rpm
location_href: Packages/python-xfields-help-0.21.5-1.noarch.rpm
checksum_type: sha256
description:
  Python package for the computation of fields generated by particle ensembles in accelerators.

  This package is part of the Xsuite collection.


pkgId: 48c669de2aa02ef9685f4778e18d8cfdac4564b5b7f99346cc01517f49d0d446
name: python-xhm_all-help
arch: noarch
version: 0.0.4
epoch: 0
release: 1
summary: Development documents and examples for xhm_all
url: https://pypi.org/project/xhm_all/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xhm_all-0.0.4-1.src.rpm
location_href: Packages/python-xhm_all-help-0.0.4-1.noarch.rpm
checksum_type: sha256
description:
  安装单个模块：

      pip install xhm_all[xhm_log]

  安装所有：

      pip install xhm_all



  安装：

      poetry add xhm_all@0.1.7 --verbose



      from xhm_log import log

      def test_case():
          log.error('cc')



      
       python setup.py sdist upload -r nexus



      poetry config repositories.nexus http://nexus.fscut.com/repository/fs-pypi/
      poetry config http-basic.nexus 用户名 密码

      poetry build
      poetry publish --repository nexus

      
      poetry config pypi-token.pypi pypi-AgEIcHlwaS5vcmcCJGYyM2E5ZjkxLWZhYTYtNGE2Mi1iOGZlLTczOGU2YjVhNzNkNAACKlszLCIwNzE3NWUwYy05YTA5LTQ3ZmMtOTYxNS0xZjExZjQyMmVhMDEiXQAABiCb__bveg49S186PbTgid0-FqFAz5GOxr0sB5dY23NuKg



      poetry add xhm_all==0.5.6



  | 版本    | 日期         | 更新记录          | 开发人员 |
  |-------|------------|---------------|------|
  | 0.0.1 | 2024-12-08 | 拆分基础SDK和业务SDK | 邹慧刚  |


pkgId: 97768512d74e7acd1f2adb5f4a6d2ecdafd09d563091ee7aed096fa1d6ff9cff
name: python-xiaoyu-proxy-pool-help
arch: noarch
version: 1.0
epoch: 0
release: 1
summary: Development documents and examples for xiaoyu-proxy-pool
url: https://pypi.org/project/xiaoyu-proxy-pool/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xiaoyu-proxy-pool-1.0-1.src.rpm
location_href: Packages/python-xiaoyu-proxy-pool-help-1.0-1.noarch.rpm
checksum_type: sha256
description:
  Used to do scripting global variable proxy test tool, the tool can add ports and specified local production environment for local automation and multi-threaded batch interface testing
  <!--
  主要是用自动化测试工具
  1.支持文件代理
  2.支持多线程测试
  3.支持ip+port代理
  -->


  <!--
  调用的API分别有
  get_ip  关于http代理
  get_ips 关于https的代理
  proxy_url 代理池代理
  proxy_file 文件本地代理

  1.0版本暂时没有多线程,仅测试,后期会优化
   -->


  <!--  Porp_text_file.get_ip() -->


  `1.0` 初始测试版本


pkgId: 4abb065f508198b23c9fd87a7c43adacfd7005f3813da9f81a610d5d9c7301f6
name: python-xlf-merge-help
arch: noarch
version: 0.1.10
epoch: 0
release: 1
summary: Development documents and examples for xlf-merge
url: https://github.com/Salamek/xlf-merge
rpm_license: GPL-3.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xlf-merge-0.1.10-1.src.rpm
location_href: Packages/python-xlf-merge-help-0.1.10-1.noarch.rpm
checksum_type: sha256
description:
  Tool to merge XLF translation files.
  And it can also find dupes in XLF files.






  ```bash
  pip install xlf-merge
  ```



  Go to https://repository.salamek.cz/ to see how to setup access to my public repository, then just do:

  debian
  ```bash
  apt update && apt install xlf-merge
  ```

  archlinux
  ```bash
  pacman -Sy xlf-merge
  ```





  ```bash
  xlf-merge merge <old_translation_file> <new_translation_file> <output_file> --method='source/id'
  ```

  Merge files by source:

  ```bash
  xlf-merge merge messages.cs.xlf.old messages.xlf messages.cs.xlf --method='source'
  ```

  Merge files by id:

  ```bash
  xlf-merge merge messages.cs.xlf.old messages.xlf messages.cs.xlf --method='id'
  ```


  ```
  xlf-merge dupes <file_to_check> --method='source/id/target'
  ```

  Finding dupes by source:

  ```
  xlf-merge dupes messages.cs.xlf --method='source'
  ```

  Finding dupes by id:

  ```
  xlf-merge dupes messages.cs.xlf --method='id'
  ```

  Finding dupes by target:

  ```
  xlf-merge dupes messages.cs.xlf --method='target'
  ```


pkgId: 4cf5c6761be55c022fb4e6a9a0bfd3a2ca5b37f718bd811770fe72d0b625d85e
name: python-xlns-help
arch: noarch
version: 1.0.3
epoch: 0
release: 1
summary: Development documents and examples for xlns
url: https://github.com/xlnsresearch/xlns
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xlns-1.0.3-1.src.rpm
location_href: Packages/python-xlns-help-1.0.3-1.noarch.rpm
checksum_type: sha256
description:
  XLNS: a configurable python package for Logarithmic Number System eXperimentation




  It is recommended to create a python virtual environment for experimentation with the ``xlns`` package. Within that environment, ensure you have the dependencies listed below installed.

  Explanatory information about LNS is in the ``LNS_Intro.md`` file.  By default,  ``xlns`` uses 64-bit built-in floating point (FP) to calculate as accurately as is possible.  We call this approach _ideal_. The recent interest in LNS is mostly because there are many _non-ideal_ approximations which greatly reduce the cost of the hardware, and some of these methods are available here as _user configurations_.  Information on available user configurations can be found in the ``README.md`` file in ``src/xlnsconf``.  It also explains how you can contribute your own configurations to this open-source project.


  numpy

  ````
  pip3 install numpy
  ````

  For some examples, matplotlib is also needed:
  ````
  pip3 install matplotlib
  ````

  You can grab all the dependencies in one go using the requirements file thus:
  ````
  pip install -r requirements.txt
  ````


pkgId: 371723d1f4fa15ddeb1879abcf2614be4503e751dca9b3053bf50ac7c205a553
name: python-xml-to-pandas-help
arch: noarch
version: 0.0
epoch: 0
release: 1
summary: Development documents and examples for xml-to-pandas
url: https://pypi.org/project/xml-to-pandas/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xml-to-pandas-0.0-1.src.rpm
location_href: Packages/python-xml-to-pandas-help-0.0-1.noarch.rpm
checksum_type: sha256
description:
  This Python utility provides a robust and flexible solution for converting XML files into pandas DataFrames. The library offers advanced parsing capabilities that can handle complex XML structures, including nested elements, attributes, and varying node types.



  - 🔄 Recursive XML parsing
  - 🌳 Handles nested and complex XML structures
  - 🏷️ Optional namespace removal
  - 📊 Converts XML to pandas DataFrame
  - 🔧 Configurable root tag preservation
  - 🚨 Comprehensive error handling and logging



  - Python 3.7+
  - pandas
  - xml.etree.ElementTree (Standard Library)



  1. Clone the repository:
  ```bash
  git clone https://github.com/Pi2003/xml_to_pandas.git
  cd xml_to_pandas
  ```

  2. Install dependencies:
  ```bash
  pip install pandas
  pip install xml_to_pandas
  ```





  ```python
  from xml_to_pandas import xml_to_pandas


  df = xml_to_pandas('your_file.xml')
  print(df)
  ```



  ```python

  df = xml_to_pandas('your_file.xml', ignore_namespaces=True)


  df = xml_to_pandas('your_file.xml', preserve_root_tag=False)
  ```



  The converter handles different XML structures intelligently:

  - 📍 **Leaf Nodes**: Converted to single-row DataFrames
  - 🌿 **Parent Nodes with Leaf Children**: Concatenated side by side
  - 🌳 **Parent Nodes with Parent Children**: Concatenated vertically
  - 🔀 **Mixed Node Types**: Intelligently merged



  The library uses Python's standard logging module to provide informative runtime messages:
  - File not found errors
  - XML parsing errors
  - Unexpected exceptions



  - Returns `None` for parsing failures
  - Logs detailed error messages
  - Handles various XML parsing scenarios



  1. Fork the repository
  2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
  3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
  4. Push to the branch (`git push origin feature/AmazingFeature`)
  5. Open a Pull Request



  Distributed under the MIT License. See `LICENSE` for more information.



  Pinak Tendulkar - pdtendulkar140203@gmail.com

  Project Link: [https://github.com/Pi2003/xml_to_pandas](https://github.com/Pi2003/xml_to_pandas)


pkgId: 2dc30733ee147d5fe313c1bc465f2f0ef027c494e754c2941440f842838e95bb
name: python-xml7shi-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for xml7shi
url: https://github.com/7shi/xml7shi
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xml7shi-0.1.0-1.src.rpm
location_href: Packages/python-xml7shi-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  A pull-based simple and permissive XML parser for Python.



  - Focuses on practical parsing rather than strict XML specification compliance
  - No external dependencies



  ```bash
  pip install xml7shi
  ```



  ```python
  import xml7shi


  xml = '''<?xml version="1.0" encoding="UTF-8"?>
  <root>
    <item id="1">First item</item>
    <item id="2">Second item</item>
  </root>'''


  xr = xml7shi.reader(xml)


  for _ in xr.each("item"):
      id = xr["id"]
      
      if xr.read():
          print(f"ID: {id}, Content: {xr.text}")
  ```

  Notes:

  - The reader instance `xr` is stateful; its internal state changes with each read operation



  `xml7shi.reader`: Main parser class that reads XML content.

  Methods:

  - `read()`: Read next element
  - `find(tag, **kwargs)`: Find next element matching tag and attributes
  - `each(tag="", **kwargs)`: Returns a generator that iterates over elements matching the tag and attributes

  Notes:

  - `kwargs` is a dictionary of attribute names and values to match in the element. For example, `find("item", id="1")` will find the next `<item>` element with matching attributes



  For detailed behavior, please refer to [examples/tag.py](examples/tag.py).

  **Parser Behavior:**

  - The parser is permissive and does not perform strict XML syntax checking
  - The parser attempts to parse incomplete XML as much as possible

  **Tag Processing:**

  - Self-closing tags like `<tag/>` are treated as separate opening and closing tags, i.e., `<tag></tag>`.
  - Tag names are converted to lowercase (case-insensitive)
  - Tag hierarchy is not recognized; nested tags must be processed by the user

  **Attribute Handling:**

  - Attribute values can be processed with or without quotes (e.g., both `a=3` and `a="3"` are valid)
  - Spaces between attribute names and values are allowed (e.g., `a = 3`)
  - All attribute values are treated as strings

  **Content Processing:**

  - Text content is decoded using html.unescape() to handle HTML entities
  - Comments are stored in the values dictionary with the `comment` key
  - Comment tags are treated as empty tag names



  For developers, it is recommended to use `pypa/build` and `pypa/installer` for building and installing this package.

  **Building:**

  ```bash
  pip install build
  python -m build
  ```

  This will generate wheel and source distribution files in the `dist` directory.

  **Installing:**

  ```bash
  pip install installer
  python -m installer dist/*.whl
  ```

  Alternatively, you can use `pip` to install the wheel file directly:

  ```bash
  pip install dist/*.whl
  ```

  Using these standard tools ensures a more reliable and reproducible build and installation process.


pkgId: 85bb9766077e4659c0d78762dd598ae6a251a8432cb62def98f75823aeb2e159
name: python-xmrig-help
arch: noarch
version: 1.1.2
epoch: 0
release: 1
summary: Development documents and examples for xmrig
url: https://pypi.org/project/xmrig/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xmrig-1.1.2-1.src.rpm
location_href: Packages/python-xmrig-help-1.1.2-1.noarch.rpm
checksum_type: sha256
description:
  [![PyPi](https://img.shields.io/badge/PyPi-1.1.2-green?labelColor=026ab5&style=flat-square&logo=pypi&logoColor=ffffff&link=https://pypi.org/project/xmrig/)](https://pypi.org/project/xmrig/)
  [![Python](https://img.shields.io/badge/Python-%203.9,%203.10,%203.11,%203.12-green?labelColor=026ab5&style=flat-square&logo=pypi&logoColor=ffffff&link=https://pypi.org/project/xmrig/)](https://pypi.org/project/xmrig/)
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/xmrig?label=PyPI%20Downloads)
  ![License](https://img.shields.io/github/license/CoulterStutz/python-xmrig?label=License&color=brightgreen)

  A wrapper for the XMRig HTTP API and client manager





  ```shell
  git clone https://github.com/CoulterStutz/python-xmrig.git && cd python-xmrig
  poetry install # or use `pip install .`, dont forget the period to set the source location to the current directory.
  ```



  ```shell
  poetry install xmrig # or use `pip install xmrig`.
  ```

  After that the package will be available to use!



  Here is a basic implementation of the API Wrapper now dubbed XMRigAPI.

  ```python
  import xmrig, logging
  x = xmrig.XMRigAPI(ip="127.0.0.1", port="5555", access_token="example")
  logging.basicConfig()
  logging.getLogger("XMRigAPI").setLevel(logging.INFO)            # Change to DEBUG to print out all responses when their methods are called
  log = logging.getLogger("MyLOG")


  x.pause_miner()
  x.resume_miner()
  x.stop_miner()
  x.start_miner()


  x.update_summary()
  x.update_all_responses()


  x.update_config()                                               # This updates the cached data
  config = x.config()                                             # Use the `config` property to access the data
  config["pools"]["USER"] = "NEW_WALLET_ADDRESS"
  x.post_config(config)


  log.info(x.summary)                                             # Prints the entire `summary` endpoint response
  log.info(x.sum_hashrates)                                       # Prints out the current hashrates
  log.info(x.sum_pool_accepted_jobs)                              # Prints out the accepted_jobs counter
  log.info(x.sum_pool_rejected_jobs)                              # Prints out the rejected_jobs counter
  log.info(x.sum_current_difficulty)                              # Prints out the current difficulty
  ```


pkgId: 69090b51dfab3ec2665b8c115ed80e9f4a68fe7e2f814b42e1d749f3d1d6b6b4
name: python-xoa-converter-help
arch: noarch
version: 2.0.7
epoch: 0
release: 1
summary: Development documents and examples for xoa-converter
url: https://github.com/xenanetworks/open-automation-config-converter
rpm_license: Apache 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xoa-converter-2.0.7-1.src.rpm
location_href: Packages/python-xoa-converter-help-2.0.7-1.noarch.rpm
checksum_type: sha256
description:
  ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/xoa-converter) [![PyPI](https://img.shields.io/pypi/v/xoa-converter)](https://pypi.python.org/pypi/xoa-converter) ![GitHub](https://img.shields.io/github/license/xenanetworks/open-automation-config-converter) [![Documentation Status](https://readthedocs.com/projects/xena-networks-open-automation-config-converter/badge/?version=latest)](https://docs.xenanetworks.com/projects/xoa-config-converter/en/latest/?badge=latest)

  Xena OpenAutomation (XOA) Test Configuration Converter is a supporting tool for users to quickly migrate their Valkyrie test suite configurations into XOA.


  The XOA Test Config Converter is an open-source tool hosted on Xena Networks' GitHub repository. It is designed to help users migrate their existing Valkyrie test suite configurations into the XOA format, enabling a seamless transition to the XOA ecosystem for network automation and testing.

  Key features of the XOA Test Config Converter include:

  1. Conversion support: The tool supports conversion of Valkyrie test suite configuration files to XOA-compatible format, facilitating the integration of existing test cases into the XOA framework.

  2. Ease of use: The XOA Test Config Converter is designed to be user-friendly, with a straightforward process for converting test suite configuration files.

  3. Compatibility: The converter ensures that the migrated test suite configurations are compatible with XOA Core and can be executed within the XOA ecosystem.

  > The purpose of XOA Converter is ONLY to convert Xena Valkyrie test suit applications' configuration files into XOA's configuration files. Thus only four test suite types are supported by XOA Converter as the source config files.


  The user documentation is hosted:
  [Xena OpenAutomation Test Config Converter Documentation](https://docs.xenanetworks.com/projects/xoa-config-converter)





  Make sure Python `pip` is installed on you system. If you are using virtualenv, then pip is already installed into environments created by virtualenv, and using sudo is not needed. If you do not have pip installed, download this file: https://bootstrap.pypa.io/get-pip.py and run `python get-pip.py`.

  To install the latest, use pip to install from pypi:
  ``` shell
  ~/> pip install xoa-converter
  ```

  To upgrade to the latest, use pip to upgrade from pypi:
  ``` shell
  ~/> pip install xoa-converter --upgrade
  ```


  Make sure these packages are installed ``wheel``, ``setuptools`` on your system.

  Install ``setuptools`` using pip:
  ``` shell
  ~/> pip install wheel setuptools
  ```

  To install source of python packages:
  ``` shell
  /xoa_driver> python setup.py install
  ```

  To build ``.whl`` file for distribution:
  ``` shell
  /xoa_driver> python setup.py bdist_wheel
  ```



  * Get Python pip if not already installed (Download https://bootstrap.pypa.io/get-pip.py):
      `python get-pip.py`

  * Install the latest xoa-driver:
      `pip install xoa-converter -U`

  * Code example to convert `.v2544` into XOA 2544 test configuration:
      ```python
      import asyncio
      import json
      from xoa_core import controller
      from xoa_converter.entry import converter
      from xoa_converter.types import TestSuiteType

      async def start():
          SOURCE_CONFIG_FILE = "my_old2544_config.v2544" # source config file to be converted

          core_ctrl = await controller.MainController() # create an instance of xoa core controller
          info = core_ctrl.get_test_suite_info("RFC-2544") # get 2544 test suite information from the core's registration
          target_schema = json.load(info['schema']) # get the target json schema

          with open(SOURCE_CONFIG_FILE, 'r') as source_data_file:
              target_config = converter(
                  test_suite_type=TestSuiteType.RFC2544,
                  source_config=source_data_file.read(),
                  target_schema=target_schema
              )

              print(target_config)


      if __name__ == '__main__':
          loop = asyncio.get_event_loop()
          loop.create_task(start())
          loop.run_forever()
      ```


  ***

  FOR TESTING BEYOND THE STANDARD.


pkgId: 7857f98374ade4bcf8219d0f93443fb81f3363c07c4913b18859e3754f2011ea
name: python-xoa-core-help
arch: noarch
version: 2.0.8
epoch: 0
release: 1
summary: Development documents and examples for xoa-core
url: https://github.com/xenanetworks/open-automation-core
rpm_license: Apache 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xoa-core-2.0.8-1.src.rpm
location_href: Packages/python-xoa-core-help-2.0.8-1.noarch.rpm
checksum_type: sha256
description:
  ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/xoa-core) [![PyPI](https://img.shields.io/pypi/v/xoa-core)](https://pypi.python.org/pypi/xoa-core) ![GitHub](https://img.shields.io/github/license/xenanetworks/open-automation-core) [![Documentation Status](https://readthedocs.com/projects/xena-networks-open-automation-core/badge/?version=latest)](https://docs.xenanetworks.com/projects/xoa-core/en/latest/?badge=latest)


  Xena OpenAutomation Core (XOA Core) is an open-source test suite framework for network automation and testing. It is designed to host various [XOA Test Suites](https://github.com/xenanetworks/open-automation-test-suites) as plugins, allowing users to create, manage, and run test cases for different network scenarios. The XOA Core framework serves as the foundation for building and executing test suites in the XOA ecosystem.

  Key features of XOA Core include:

  1. Modular architecture: The test suite framework employs a modular architecture, enabling users to develop and run different test suites as plugins.

  2. Test Suite execution: XOA Core supports both local and remote test suite execution. Users can execute test suites on their local machines or on remote testbeds through the XOA CLI or Web GUI.

  3. Test Case management: XOA Core provides tools for managing test cases, including creating, updating, and deleting them. Users can also organize test cases using tags and execute them in parallel or sequentially.

  4. Extensibility: The framework is designed to be extensible, allowing users to develop custom test suites and plugins to address specific testing requirements.

  5. Logging and reporting: XOA Core offers built-in logging and reporting functionality, generating detailed test reports to help users analyze test results and identify issues.
  Xena OpenAutomation (XOA) Core is the framework that provides a standardized way for developers and test specialists to execute, develop, and integrate test suites, as well as managing Xena's physical and virtual Traffic Generation and Analysis (TGA) testers.


  The user documentation is hosted:
  [Xena OpenAutomation Core Documentation](https://docs.xenanetworks.com/projects/xoa-core)




  This section provides a step-by-step guide on how to use XOA Core to run XOA test suites.



  To run XOA test suites, you need a folder to place the test suite plugins, the test configuration files, and yous Python script to control the tests.

  Let's create a folder called ```/my_xoa_project```

  ```
  /my_xoa_project
      |
  ```




  After creating the folder, install ```xoa-core``` and ```xoa-converter```using pip:

  ```
  pip install xoa-core -U
  pip install xoa-converter -U
  ```



  Place the corresponding [XOA RFC test suite plugins](https://github.com/xenanetworks/open-automation-rfc-test-suites) and the test configuration files in ```/my_xoa_project```.

  Your project folder will look like this afterwards.

  ```
  /my_xoa_project
      |
      |- /test_suites
          |- /plugin2544
          |- /plugin2889
          |- /plugin3918
  ```




  > Read more about [XOA Config Convert](https://docs.xenanetworks.com/projects/xoa-config-converter)

  Copy your Valkyrie test configurations into ```/my_xoa_project``` for easy access. Then create a ```main.py``` file inside the folder ```/my_xoa_project```.

  ```
  /my_xoa_project
      |
      |- main.py
      |- old_2544_config.v2544
      |- old_2889_config.v2889
      |- old_3918_config.v3918
      |- /test_suites
          |- /plugin2544
          |- /plugin2889
          |- /plugin3918
  ```

  This ```main.py``` controls the test workflow, i.e. load the configuration files, start tests, receive test results, and stop tests. The example below demonstrates a basic flow for you to run XOA tests.


  ``` python
  from __future__ import annotations
  import sys
  from xoa_core import (
      controller,
      types,
  )
  import asyncio
  import json
  from pathlib import Path

  try:
      from xoa_converter.entry import converter
      from xoa_converter.types import TestSuiteType
  except ImportError:
      print("XOA Converter is an independent module and it needs to be installed via `pip install xoa-converter`")
      sys.exit()

  PROJECT_PATH = Path(__file__).parent
  OLD_2544_CONFIG = PROJECT_PATH / "old_2544_config.v2544"
  OLD_2889_CONFIG = PROJECT_PATH / "old_2889_config.v2889"
  PLUGINS_PATH = PROJECT_PATH / "test_suites"


  async def subscribe(ctrl: "controller.MainController", channel_name: str, fltr: set["types.EMsgType"] | None = None) -> None:
      async for msg in ctrl.listen_changes(channel_name, _filter=fltr):
          print(msg)



  async def main() -> None:
      
      my_tester_credential = types.Credentials(
          product=types.EProductType.VALKYRIE,
          host="10.20.30.40"
      )

      
      ctrl = await controller.MainController()

      
      ctrl.register_lib(str(PLUGINS_PATH))

      
      
      await ctrl.add_tester(my_tester_credential)

      
      asyncio.create_task(subscribe(ctrl, channel_name=types.PIPE_RESOURCES))

      
      with open(OLD_2544_CONFIG, "r") as f:
          
          info = ctrl.get_test_suite_info("RFC-2544")
          if not info:
              print("Test suite is not recognized.")
              return None

          
          new_data = converter(TestSuiteType.RFC2544, f.read())

          
          new_config = json.loads(new_data)

          
          execution_id = ctrl.start_test_suite("RFC-2544", new_config)


          
          asyncio.create_task(
              subscribe(ctrl, channel_name=execution_id, fltr={types.EMsgType.STATISTICS})
          )

      
      
      await asyncio.Event().wait()


  if __name__ == "__main__":
      asyncio.run(main())

  ```




  XOA Core sends test result data (in JSON format) to your code as shown in the example below. It is up to you to decide how to process it, either parse it and display in your console, or store them into a file.

  > Read about [Test Result Types](https://docs.xenanetworks.com/projects/xoa-core/en/latest/understand_xoa_core/test_result_types.html)


  ***

  FOR TESTING BEYOND THE STANDARD.


pkgId: 3c15932ad294cf254ea7be8832584ba22acdbd7ccb04141beee91d5b35e79ce4
name: python-xoa-driver-help
arch: noarch
version: 2.9.0
epoch: 0
release: 1
summary: Development documents and examples for xoa-driver
url: https://github.com/xenanetworks/open-automation-python-api
rpm_license: Apache 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xoa-driver-2.9.0-1.src.rpm
location_href: Packages/python-xoa-driver-help-2.9.0-1.noarch.rpm
checksum_type: sha256
description:
  ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/xoa-driver) [![PyPI](https://img.shields.io/pypi/v/xoa-driver)](https://pypi.python.org/pypi/xoa-driver) ![GitHub](https://img.shields.io/github/license/xenanetworks/open-automation-python-api) [![Documentation Status](https://readthedocs.com/projects/xena-networks-open-automation-python-api/badge/?version=latest)](https://docs.xenanetworks.com/projects/xoa-python-api/en/latest/?badge=latest)

  Xena OpenAutomation Python API is a standalone Python library that provides a user-friendly and powerful interface for automating network testing tasks using Xena Networks test equipment. Xena test equipment is a high-performance network test device designed for testing and measuring the performance of network equipment and applications.


  The XOA Python API is designed to be easy to use and integrate with other automation tools and frameworks. It provides a comprehensive set of methods and classes for interacting with Xena test equipment, including the ability to create and run complex test scenarios, generate and analyze traffic at line rate, and perform detailed analysis of network performance and behavior.

  The XOA Python API simplifies the process of automating network testing tasks using Xena test equipment. It provides a simple, yet powerful, interface for interacting with Xena test equipment using the Python programming language. With the XOA Python API, network engineers and testing professionals can easily create and execute test scenarios, generate and analyze traffic, and perform detailed analysis of network performance and behavior, all while leveraging the power and flexibility of the Python programming language.

  Overall, the XOA Python API is a valuable tool for anyone looking to automate their network testing tasks using Xena test equipment. With its simple, yet powerful, interface and support for the Python programming language, the XOA Python API provides a flexible and extensible framework for automating network testing tasks and improving the quality of network infrastructure.


  The user documentation is hosted:
  [Xena OpenAutomation Python API Documentation](https://docs.xenanetworks.com/projects/xoa-python-api)


  * Objected-oriented, high-level abstraction, to help users save time on parsing command responses.
  * Supporting sending commands in batches to increase code execution efficiency.
  * Automatically matching command requests and server response, providing clear information in case a command gets an error response.
  * Supporting server-to-client push notification, and event subscription, to reduce user code complexity.
  * Covering commands of Xena testers, including Xena Valkyrie, Vulcan, and Chimera.
  * Supporting IDE auto-complete with built-in class/function/API use manual, to increase development efficiency.





  Make sure Python `pip` is installed on you system. If you are using virtualenv, then pip is already installed into environments created by virtualenv, and using sudo is not needed. If you do not have pip installed, download this file: https://bootstrap.pypa.io/get-pip.py and run `python get-pip.py`.

  To install the latest, use pip to install from pypi:
  ``` shell
  ~/> pip install xoa-driver
  ```

  To upgrade to the latest, use pip to upgrade from pypi:
  ``` shell
  ~/> pip install xoa-driver --upgrade
  ```


  Make sure these packages are installed ``wheel``, ``setuptools`` on your system.

  Install ``setuptools`` using pip:
  ``` shell
  ~/> pip install wheel setuptools
  ```

  To install source of python packages:
  ``` shell
  /xoa_driver> python setup.py install
  ```

  To build ``.whl`` file for distribution:
  ``` shell
  /xoa_driver> python setup.py bdist_wheel
  ```




  * Get Python pip if not already installed (Download https://bootstrap.pypa.io/get-pip.py):
      `python get-pip.py`

  * Install the latest xoa-driver:
      `pip install xoa-driver -U`

  * Write Python code to manage with Xena testers:
      ```python
      import asyncio

      from xoa_driver import testers
      from xoa_driver import modules
      from xoa_driver import ports
      from xoa_driver import enums
      from xoa_driver import utils

      async def my_awesome_func():
          
          async with testers.L23Tester("10.10.10.10", "JonDoe") as tester:
              
              port = await tester.modules.obtain(0).ports.obtain(0)

              
              await port.reservation.set_reserve()

              
              await port.reset.set()

              
              stream = await port.streams.create()

              
              header_protocol = [enums.ProtocolOption.ETHERNET, enums.ProtocolOption.IP]

              
              await utils.apply(
                  stream.tpld_id.set(0), # Create the TPLD index of stream
                  stream.packet.length.set(*size), # Configure the packet size
                  stream.packet.header.protocol.set(header_protocol), # Configure the packet type
                  stream.packet.header.data.set(header), # Configure the packet header
                  stream.enable.set_on(), # Enable streams
                  stream.rate.fraction.set(1000000) # Configure the stream rate 100%
              )

              
              await utils.apply(
                  port.statistics.tx.clear.set(),
                  port.statistics.rx.clear.set()
              )

              
              await port.traffic.state.set_start()

              
              await asyncio.sleep(10)

              
              tx_result = await port.statistics.tx.total.get()
              print(f"bit count last second: {tx_result.bit_count_last_sec}")
              print(f"packet count last second: {tx_result.packet_count_last_sec}")
              print(f"byte count since cleared: {tx_result.byte_count_since_cleared}")
              print(f"packet count since cleared: {tx_result.packet_count_since_cleared}")

              
              await port.traffic.state.set_stop()

              
              await port.reservation.set_release()

      def main():
          try:
              loop = asyncio.get_event_loop()
              loop.create_task(my_awesome_func())
              loop.run_forever()
          except KeyboardInterrupt:
              pass

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


  ***

  FOR TESTING BEYOND THE STANDARD.


pkgId: c452cb14571726152ed689caf315e0ff23de5feb9b3d2516ea17c8b0749a527f
name: python-xoa-utils-help
arch: noarch
version: 2.3.4
epoch: 0
release: 1
summary: Development documents and examples for xoa-utils
url: https://github.com/xenanetworks/open-automation-utilities
rpm_license: Apache 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xoa-utils-2.3.4-1.src.rpm
location_href: Packages/python-xoa-utils-help-2.3.4-1.noarch.rpm
checksum_type: sha256
description:
  ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/xoa-utils) [![PyPI](https://img.shields.io/pypi/v/xoa-utils)](https://pypi.python.org/pypi/xoa-utils) ![GitHub](https://img.shields.io/github/license/xenanetworks/open-automation-utilities) [![Documentation Status](https://readthedocs.com/projects/xena-networks-open-automation-utilities/badge/?version=latest)](https://docs.xenanetworks.com/projects/xoa-utilities/en/latest/?badge=latest)



  ANLT Utility provides an **interactive shell** for users to control Xena testers via **command-line interface** (CLI) commands to performance operations such as AN/LT testing and resource management in an interactive fashion.


  See [installation guide](https://docs.xenanetworks.com/projects/xoa-utilities/en/stable/getting_started/installation.html)



  See [step-by-step guide](https://docs.xenanetworks.com/projects/xoa-utilities/en/stable/getting_started/step_by_step.html)


pkgId: c8345e795107146602423a4d371578b481d5b034fba28fefcee9edcbffa7f679
name: python-xpander-sdk-help
arch: noarch
version: 1.15.1
epoch: 0
release: 1
summary: Development documents and examples for xpander-sdk
url: https://github.com/xpander-ai/xpander-sdk.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xpander-sdk-1.15.1-1.src.rpm
location_href: Packages/python-xpander-sdk-help-1.15.1-1.noarch.rpm
checksum_type: sha256
description:
  **Xpander Open Source SDK** empowers developers to build intelligent and reliable AI Agents capable of managing complex, multi-step tasks across diverse systems and platforms. The SDK simplifies challenges like function calling, schema definition, graph enforcement, and prompt group management.

  With support for leading LLM providers such as OpenAI, Amazon Bedrock, and NVIDIA NIM, the **Xpander SDK** seamlessly integrates into your existing systems.

  ![ai-agents-with-xpander](static/images/screenshots/2024-11-19-21-45-27.png)



  Choose your preferred package manager:



  ```bash
  npm install xpander-sdk
  ```



  ```bash
  pip install xpander-sdk
  ```





  1. Visit [app.xpander.ai](https://app.xpander.ai)
  2. Retrieve your Agent Key from the Agent Settings page
  3. Install the SDK and make sure you have Node.js installed (required as the SDK runs as a Node.js app under the hood)



  <details><summary>TypeScript</summary>

  ```python
  import { XpanderClient } from 'xpander-sdk';
  import * as dotenv from 'dotenv';

  dotenv.config();

  const xpanderAPIKey = process.env.XPANDER_API_KEY || '';
  const xpanderAgentID = process.env.XPANDER_AGENT_ID || '';

  const xpanderClient = new XpanderClient({ apiKey: xpanderAPIKey });
  const agent = await xpanderClient.agents.get(xpanderAgentID);

  // Get available tools for the agent
  const tools = await agent.getTools();

  // This is a placeholder for AI to analyze the tools and decide which to invoke
  // You would typically send these tools to your AI provider (e.g., OpenAI, Anthropic)
  // The AI will return a structured response indicating which tools to call
  const llmResponse = await yourAIProvider.chat.completions.create({
    messages: [userMessage],
    tools: tools // The tools are formatted for the AI to understand
    // ... other AI configuration
  });

  // Parse LLM response automatically into tool calls
  const toolsToRun = XpanderClient.extractToolCalls(llmResponse);

  // Execute multiple tool calls at once
  const results = await agent.runTools(toolsToRun);
  ```

  </details><details>
  <summary>JavaScript</summary>

  ```javascript
  const { XpanderClient } = require('xpander-sdk');
  require('dotenv').config();

  const xpanderAPIKey = process.env.XPANDER_API_KEY || '';
  const xpanderAgentID = process.env.XPANDER_AGENT_ID || '';

  const xpanderClient = new XpanderClient({ apiKey: xpanderAPIKey });
  const agent = await xpanderClient.agents.get(xpanderAgentID);

  // Get available tools for the agent
  const tools = await agent.getTools();

  // This is a placeholder for AI to analyze the tools and decide which to invoke
  // You would typically send these tools to your AI provider (e.g., OpenAI, Anthropic)
  // The AI will return a structured response indicating which tools to call
  const llmResponse = await yourAIProvider.chat.completions.create({
    messages: [userMessage],
    tools: tools // The tools are formatted for the AI to understand
    // ... other AI configuration
  });

  // Parse LLM response automatically into tool calls
  const toolsToRun = XpanderClient.extractToolCalls(llmResponse);

  // Execute multiple tool calls at once
  const results = await agent.runTools(toolsToRun);
  ```

  </details><details>
  <summary>Python</summary>

  ```python
  from xpander_sdk import XpanderClient
  from dotenv import load_dotenv
  import os

  load_dotenv()

  xpanderAPIKey = os.environ.get("XPANDER_API_KEY", "")
  xpanderAgentID = os.environ.get("XPANDER_AGENT_ID", "")

  xpander_client = XpanderClient(api_key=xpanderAPIKey)
  agent = xpander_client.agents.get(agent_id=xpanderAgentID)


  tools = agent.get_tools()




  llm_response = your_ai_provider.chat.completions.create(
      messages=[user_message],
      tools=tools  # The tools are formatted for the AI to understand
      
  )


  tools_to_run = XpanderClient.extract_tool_calls(llm_response=llm_response.model_dump())


  results = agent.run_tools(tools_to_run)
  ```

  </details><details>
  <summary>C#</summary>

  ```csharp
  using Xpander.Sdk;
  using DotEnv.Net;

  new DotEnvLoader().Load();

  var xpanderAPIKey = Environment.GetEnvironmentVariable("XPANDER_API_KEY") ?? "";
  var xpanderAgentID = Environment.GetEnvironmentVariable("XPANDER_AGENT_ID") ?? "";

  var xpanderClient = new XpanderClient(xpanderAPIKey);
  var agent = await xpanderClient.Agents.GetAsync(xpanderAgentID);

  // Get available tools for the agent
  var tools = await agent.GetToolsAsync();

  // This is a placeholder for AI to analyze the tools and decide which to invoke
  // You would typically send these tools to your AI provider (e.g., OpenAI, Anthropic)
  // The AI will return a structured response indicating which tools to call
  var llmResponse = await yourAIProvider.chat.completions.create({
    messages: [userMessage],
    tools: tools // The tools are formatted for the AI to understand
    // ... other AI configuration
  });

  // Parse LLM response automatically into tool calls
  var toolsToRun = XpanderClient.ExtractToolCalls(llmResponse);

  // Execute multiple tool calls at once
  var results = await agent.RunToolsAsync(toolsToRun);
  ```

  </details>



  For comprehensive documentation, tutorials, and API references, visit:

  * [Official Documentation](https://docs.xpander.ai/userguides/overview/introduction)
  * [API Reference](https://docs.xpander.ai/api-reference/SDK/getting-started)



  The library is compiled using Projen and runs as a Node.js application under the hood. Ensure you have Node.js installed for optimal performance.



  We welcome contributions to improve the SDK. Please see our [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on how to submit improvements and bug fixes.


pkgId: c98dc60fdcea5ecdde45fe72d640e39d58b550627e4ddd34952dd21adef3cb8c
name: python-xproj-help
arch: noarch
version: 0.0.1
epoch: 0
release: 1
summary: Development documents and examples for xproj
url: https://pypi.org/project/xproj/
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xproj-0.0.1-1.src.rpm
location_href: Packages/python-xproj-help-0.0.1-1.noarch.rpm
checksum_type: sha256
description:
  [![Tests](https://github.com/benbovy/xproj/actions/workflows/test.yml/badge.svg?branch=main&event=push)](https://github.com/benbovy/xproj/actions/test.yml?query=branch%3Amain+event%3Apush)
  [![Coverage](https://codecov.io/gh/benbovy/xproj/branch/main/graph/badge.svg)](https://app.codecov.io/gh/benbovy/xproj?branch=main)



  Xarray extension for projections and coordinate reference systems.

  *Current development status: experimental, proof-of-concept.*



  See the notebooks in the "examples" folder.

  - [Demo](https://nbviewer.org/github/benbovy/xproj/blob/main/examples/demo.ipynb)
  - [Interoperability with 3rd-party Xarray extensions](https://nbviewer.org/github/benbovy/xproj/blob/main/examples/xarray_geo_extensions.ipynb)



  - Provide to Xarray geospatial extensions a set of convenient tools for dealing
    with coordinate reference systems (CRSs) in a uniform & flexible way.
  - Prevent duplicating CRS-specific logic (e.g., parse, reset, formatting,
    checking equality, etc.) in each extension ; put it together into one reusable
    package instead (i.e., a lightweight Xarray extension mostly built on top of
    [pyproj](https://pyproj4.github.io/pyproj/stable/)).
  - Provide a common end-user API for handling CRS via `.proj` Xarray accessors.
  - Leverage recent Xarray features such as custom indexes. Easily compare,
    combine or align Xarray datasets or dataarrays based on their CRS (via
    `CRSIndex`).
  - Consolidate the Xarray geospatial ecosystem (towards better interoperability).



  - Being strongly opinionated on how CRS and other information like spatial
    dimensions should be represented as metadata in Xarray objects and/or in
    Xarray supported I/O formats. This is left to other Xarray extensions and
    format specifications (e.g., GeoZarr, GeoTIFF, GeoParquet, etc.).
  - Provide a common set of tools (implementations) for re-projecting data. This
    highly depends on the data type (i.e., raster, vector, etc.) or application
    and it is best handled by other Xarray extensions. We also see XProj
    potentially as a lightweight dependency common to those other extensions so we
    want to restrict XProj's dependencies to the minimum (i.e., Xarray and
    PyProj).


pkgId: 0bad58ebddfbe452137ed0f424c8ccf911b6fc1cf934800cc046881012fc0dec
name: python-xpt2csv-cli-help
arch: noarch
version: 0.1.3
epoch: 0
release: 1
summary: Development documents and examples for xpt2csv-cli
url: https://pypi.org/project/xpt2csv-cli/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xpt2csv-cli-0.1.3-1.src.rpm
location_href: Packages/python-xpt2csv-cli-help-0.1.3-1.noarch.rpm
checksum_type: sha256
description:
  ```{shell}
  pip install xpt2csv-cli
  ```



  Let's assume user have one directory that have xpt files

  ```

  - study_one/
      - bw.xpt
      - dm.xpt
      - lb.xpt
      - mi.xpt
      - om.xpt
      - ts.xpt
      - tx.xpt
  ```

  make a directory where to save csv files

  ```{shell}
  mkdir directory_to_save_csv/
  ```

  now convert xpt files to csv files using 'to_csv' command

  ```{shell}
  to_csv study_one/ directory_to_save_csv/
  ```

  this command will convert all xpt files to csv files and will save in following directory structure

  ```
  - directory_to_save_csv/
      - study_one/
          - bw.csv
          - dm.csv
          - lb.csv
          - mi.csv
          - om.csv
          - ts.csv
          - tx.csv
  ```


   Let's say user have few study in a directory `all_study/`.

  ```
  - all_study/
      - study_one/
          - bw.xpt
          - dm.xpt
          - lb.xpt
          - mi.xpt
          - om.xpt
          - ts.xpt
          - tx.xpt
      - study_one/
          - bw.xpt
          - dm.xpt
          - lb.xpt
          - mi.xpt
          - om.xpt
          - ts.xpt
          - tx.xpt
  ```

  ```{shell}
  to_csv all_study/ directory_to_save_csv/
  ```

  this will convert and save all xpt files in following directory structure

  ```
  - directory_to_save_csv/
          - study_one/
              - bw.csv
              - dm.csv
              - lb.csv
              - mi.csv
              - om.csv
              - ts.csv
              - tx.csv
          - study_one/
              - bw.csv
              - dm.csv
              - lb.csv
              - mi.csv
              - om.csv
              - ts.csv
              - tx.csv
  ```


  project in [github](https://github.com/Yousuf28/xpt2csv)
  pypi [link](https://pypi.org/project/xpt2csv-cli/)


pkgId: 24a63cfdeb1d58fabe00ab19d543e20b8f81e7036d77cc27c03bf50d7c872978
name: python-xradio-help
arch: noarch
version: 0.0.46
epoch: 0
release: 1
summary: Development documents and examples for xradio
url: https://pypi.org/project/xradio/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xradio-0.0.46-1.src.rpm
location_href: Packages/python-xradio-help-0.0.46-1.noarch.rpm
checksum_type: sha256
description:
  Xarray Radio Astronomy Data IO is still in development.

  [![Python 3.9 3.10 3.11 3.12](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%203.12-blue)](https://www.python.org/downloads/release/python-380/)


  It is recommended to use the conda environment manager from [miniforge](https://github.com/conda-forge/miniforge) to create a clean, self-contained runtime where XRADIO and all its dependencies can be installed:
  ```sh
  conda create --name xradio python=3.12 --no-default-packages
  conda activate xradio
  ```
  > 📝 On macOS it is required to pre-install `python-casacore` using `conda install -c conda-forge python-casacore`.

  XRADIO can now be installed using:
  ```sh
  pip install xradio
  ```
  This will also install the minimal dependencies for XRADIO. To install the minimal dependencies and the interactive components (JupyterLab) use:
  ```sh
  pip install "xradio[interactive]"
  ```

rpm_license:
  BSD 3-Clause License  All works in this repository are copyrighted 2024. For inquiries contact  Associated Universities, Inc., 2650 Park Tower Drive Vienna, VA 22180, USA.  Portions of this repository are copyrighted by the following entities: 1. AUI/NRAO, ESO, NAOJ, in the framework of the ALMA partnership. 2. AUI/NRAO in the framework of the ngVLA project.  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


pkgId: 0a0c8753ba768342dd0396f9c9bb4b45cc7a0fffd989e8c08cf01dcfb5ca8cde
name: python-xsget-help
arch: noarch
version: 0.1.18
epoch: 0
release: 1
summary: Development documents and examples for xsget
url: https://pypi.org/project/xsget/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xsget-0.1.18-1.src.rpm
location_href: Packages/python-xsget-help-0.1.18-1.noarch.rpm
checksum_type: sha256
description:
  Console tools to download online novel and convert to text file.



  Stable version From PyPI using `pipx`:

  ```console
  pipx install xsget playwright
  playwright install
  ```

  Stable version From PyPI using `pip`:

  ```console
  python3 -m pip install xsget playwright
  playwright install
  ```

  Upgrade to latest stable version:

  ```console
  python3 -m pip install xsget --upgrade
  ```

  Latest development version from GitHub:

  ```console
  python3 -m pip install -e git+https://github.com/kianmeng/xsget.git
  playwright install
  ```



  ```console
  xsget -h
  ```

  <!--help-xsget !-->

  ```console
  usage: xsget [-l CSS_PATH] [-p URL_PARAM] [-g [FILENAME] | -c [FILENAME]] [-r]
               [-t] [-b] [-bs SESSION] [-bd DELAY] [-od OUTPUT_DIR] [-q] [--env]
               [-d] [-h] [-V]
               URL

  xsget is a console app that crawl and download online novel.

  website: https://github.com/kianmeng/xsget
  changelog: https://github.com/kianmeng/xsget/blob/master/CHANGELOG.md
  issues: https://github.com/kianmeng/xsget/issues

  positional arguments:
    URL   set url of the index page to crawl

  options:
    -l, --link-css-path CSS_PATH
          set css path of the link to a chapter (default: 'a')
    -p, -url-param-as-filename URL_PARAM
          use url param key as filename (default: '')
    -g, --generate-config-file [FILENAME]
          generate config file from options (default: 'xsget.toml')
    -c, --config-file [FILENAME]
          load config from file (default: 'xsget.toml')
    -r, --refresh
          refresh the index page
    -t, --test
          show extracted urls without crawling
    -b, --browser
          crawl by actual browser (default: 'False')
    -bs, --browser-session SESSION
          set the number of browser session (default: 2)
    -bd, --browser-delay DELAY
          set the second to wait for page to load in browser (default: 0)
    -od, --output-dir OUTPUT_DIR
          set default output folder (default: 'output')
    -q, --quiet
          suppress all logging
    --env
          print environment information for bug reporting
    -d, --debug
          show debugging log and stacktrace
    -h, --help
          show this help message and exit
    -V, --version
          show program's version number and exit

  examples:
    xsget http://localhost
    xsget http://localhost/page[1-100].html
    xsget -g -l "a" -p "id" http://localhost
  ```

  <!--help-xsget !-->



  ```console
  xstxt -h
  ```

  <!--help-xstxt !-->

  ```console
  usage: xstxt [-pt CSS_PATH] [-pb CSS_PATH] [-la LANGUAGE] [-ps SEPARATOR]
               [-rh REGEX REGEX] [-rt REGEX REGEX] [-bt TITLE] [-ba AUTHOR]
               [-ic INDENT_CHARS] [-fw] [-oi] [-ow] [-i GLOB_PATTERN]
               [-e GLOB_PATTERN] [-l TOTAL_FILES] [-w WIDTH] [-o FILENAME]
               [-od OUTPUT_DIR] [-y] [-p] [-g [FILENAME] | -c [FILENAME]] [-m]
               [-q] [--env] [-d] [-h] [-V]

  xstxt is a console app that extract content from HTML to text file.

  website: https://github.com/kianmeng/xsget
  changelog: https://github.com/kianmeng/xsget/blob/master/CHANGELOG.md
  issues: https://github.com/kianmeng/xsget/issues

  options:
    -pt, --title-css-path CSS_PATH
          set css path of chapter title (default: 'title')
    -pb, --body-css-path CSS_PATH
          set css path of chapter body (default: 'body')
    -la, --language LANGUAGE
          language of the ebook (default: 'zh')
    -ps, --paragraph-separator SEPARATOR
          set paragraph separator (default: '\n\n')
    -rh, --html-replace REGEX REGEX
          set regex to replace word or pharase in html file
    -rt, --txt-replace REGEX REGEX
          set regex to replace word or pharase in txt file
    -bt, --book-title TITLE
          set title of the novel (default: '不详')
    -ba, --book-author AUTHOR
          set author of the novel (default: '不详')
    -ic, --indent-chars INDENT_CHARS
          set indent characters for a paragraph (default: '')
    -fw, --fullwidth
          convert ASCII character to from halfwidth to fullwidth (default: 'False')
    -oi, --output-individual-file
          convert each html file into own txt file
    -ow, --overwrite
          overwrite output file
    -i, --input GLOB_PATTERN
          set glob pattern of html files to process (default: '['./*.html']')
    -e, --exclude GLOB_PATTERN
          set glob pattern of html files to exclude (default: '[]')
    -l, --limit TOTAL_FILES
          set number of html files to process (default: '3')
    -w, --width WIDTH
          set the line width for wrapping (default: 0, 0 to disable)
    -o, --output FILENAME
          set output txt file name (default: 'book.txt')
    -od, --output-dir OUTPUT_DIR
          set output directory (default: 'output')
    -y, --yes
          yes to prompt
    -p, --purge
          remove extracted files specified by --output-folder option (default: 'False')
    -g, --generate-config-file [FILENAME]
          generate config file from options (default: 'xstxt.toml')
    -c, --config-file [FILENAME]
          load config from file (default: 'xstxt.toml')
    -m, --monitor
          monitor config file changes and re-run when needed
    -q, --quiet
          suppress all logging
    --env
          print environment information for bug reporting
    -d, --debug
          show debugging log and stacktrace
    -h, --help
          show this help message and exit
    -V, --version
          show program's version number and exit

  examples:
    xsget -g
    xstxt --input *.html
    xstxt --output-individual-file --input *.html
    xstxt --config --monitor
  ```

  <!--help-xstxt !-->



  Copyright (C) 2021,2022,2023,2024 Kian-Meng Ang

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

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

  You should have received a copy of the GNU Affero General Public License along
  with this program. If not, see <https://www.gnu.org/licenses/>.


pkgId: 136177edf6c1ada65c569ea7eb09e1ecb70d452565a69e134027bf9ec1fc97ca
name: python-xspin-help
arch: noarch
version: 0.8.0
epoch: 0
release: 1
summary: Development documents and examples for xspin
url: https://pypi.org/project/xspin/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xspin-0.8.0-1.src.rpm
location_href: Packages/python-xspin-help-0.8.0-1.noarch.rpm
checksum_type: sha256
description:
  Python module for creating console spinners.
  ![PyPI version](https://badge.fury.io/py/xspin.svg)
  ![Build Status](https://github.com/glamorie/xspin/workflows/release/badge.svg)
  ![License](https://img.shields.io/badge/license-MIT-blue.svg)


  There are two types of spinner's based on the kind of program being
  run.

  - ### SyncRuntime
  This is the base class for spinners running in a blocking program.
  They run in a separate thread. These include [Xspin](#xspin) and [CustomSpinner](#customspinner)

  - ### AsyncRuntime
  This is the base class for spinners running in an async program.
  They run in a separate thread. These include [Axspin](#xspin) and [CustomAspinner](#customaspinner)


  There are three ways in which a spinner instance can be run. These are implemented by
  the runtime base classes hence apply to any of their subclasses.

  - ### `start` and `stop`
  These are methods used to start and stop a spinner.
  ```python
  spinner = Xspin(label="Loading ...")
  spinner.start()
  do_work()
  spinner.stop("Done!")
  ```
  For async spinners, these methods have to be awaited.
  ```python
  async def main():
      spinner = Axspin(label="Loading ...")
      await spinner.start()
      await do_work()
      await spinner.stop("Done!")
  ```

  - ### Context manager
  The runtimes also implement the context manager protocal.
  For sync spinners,
  ```python
  with Xspin("Loading ...") as sp:
      do_work()
      sp.echo("Done!")
  ```
  For async spinners,
  ```python
  async def main():
      async with Axspin("Loading ...") as sp:
          await do_work()
          sp.echo("Done!")
  ```

  - ### Binding the spinner to a function.
  When a spinner is bound to a function, it returns a method
  which when called runs the spinner in the background as it executes.
  The function being bound must take in the spinner instance as the first
  argument. This is useful for ensuring the spinner is accessible from inside
  the function if logging is required.
  ```python
  sp = Xspin("Doing work ...")

  @sp.bind
  def do_work(sp: Xspin, some_arg: str, other: int ):
      sp.echo(f" {some_arg} {other}")
      ...
      sp.echo("Done!")

  do_work("Some arg", 1 )

  ```
  Async spinners should be bound to async functions.
  ```python
  sp = Axspin("Doing work ...")

  @sp.bind
  async def download(sp: Xspin, url: str, file: str):
      sp.echo(f" * Downloading <{other}>")
      ...
      sp.echo(f" * <{other}> -> {[file]}!")

  async def main():
      await download("https://www.example.com/image.png", "image.png")
  ```


  When inheriting from a runtime base class, the runtime expects the
  `render` method to be defined. This is the function that is called
  on each update. It should return an iterable of integers which
  when summed returns the lines the text takes up in the terminal. This is
  rarely required since the module provides preconfigured classes that implement
  the render method automatically. These are

  - ### Xspin and Axspin
  These spinners use python's format templating to define the frames of the spinner.
  The format should contain the keys `symbol` and `label`. The symbols are cycled over
  and formated based on the format specified.
  ```python
  sp = Xspin(label = "Loading ...", format="{symbol} {label}",symbols=r"\|/-")
  ```
  The symbols are just an iterable of strings.
  > **NOTE** If the generator is not a builtin collection, list is called on so the
  values are reused. Doing things for infinite iterables like itertools `cycle` may lead
  to memory errors.

  - ### CustomSpinner and CustomAspinner
  When inheriting from these base classes, they rely on the `frames` being implemented to return
  an iterable of strings representing the spinner frame. You can define it as a generator
  and store the spinner state in the instance itself.

  ```python
  class MySpinner(CustomSpinner):
      def __init__(self, count: int):
          super().__init__(delay=50)
          self.count = count

      def frames(self):
          for i in range(self.count):
              yield f"Count {i}"

  with MySpinner(30) as sp:
      ... # do something
      sp.echo("Done!")
  ```


  When the spinner runs, it disables keystrokes from being echoed so they don't interfere with
  the spinner being rendered.
  <img src="https://raw.githubusercontent.com/glamorie/xspin/main/media/ubuntu-demo.gif" alt="Ubuntu Demo: Spinner Running in ubuntu with keystrokes echoing disabled.">



  On windows, virtual terminal mode is enabled in order for colors and ansi escape codes to work. This allows for the spinners to be rendered even on
  the old `conhost.exe` emulator.
  <img src="https://raw.githubusercontent.com/glamorie/xspin/main/media/conhost.gif" alt="Windows Conhost Demo: Demonstrates how the spinner runs with virtual terminal mode enabled on Windows' old `conhost.exe`.">

  The spinner also uses escape codes specified [here](https://learn.microsoft.com/en-us/windows/terminal/tutorials/progress-bar-sequences) to enable progress indication on windows terminal's titlebar and taskbar.
  <img src="https://raw.githubusercontent.com/glamorie/xspin/main/media/wt.gif" alt="Windows Terminal Demo: Demonstrates titlebar progress indication when the spinner runs.">


  [MIT](LICENSE)

rpm_license:
  MIT License  Copyright (c) 2024 Glitchie  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: ed6baf7243ab2c911f7866aa21eff75a06f721dcc7ba9c2d2d63b9b94c21137b
name: python-xtquant-help
arch: noarch
version: 241014.1.1
epoch: 0
release: 1
summary: Development documents and examples for xtquant
url: http://dict.thinktrader.net/?id=7zqjlm
rpm_license: GNU GPLv3
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xtquant-241014.1.1-1.src.rpm
location_href: Packages/python-xtquant-help-241014.1.1-1.noarch.rpm
checksum_type: sha256
description:
  tick数据增加现手字段(tickvol)，即当前tick累计成交量与上条数据的差值



  xtdata.get_option_detail_data()期权多空方向类型判断调整

  xtdata.get_trading_calendar() 自动下载所需的节假日数据

  xtdata.get_instrument_detail() 字段ExpireDate类型由int调整为str

  新增函数xtdata.get_formula_result()，用于获取subscribe_formula()的模型结果



  修复token模式下启用K线全推后单支订阅数据周期错误的问题


pkgId: a5472e654ca1c5492fc8305d7013b532e5e01c3fc849b939326ed917ff804481
name: python-xtrain-help
arch: noarch
version: 0.4.3
epoch: 0
release: 1
summary: Development documents and examples for xtrain
url: https://pypi.org/project/xtrain/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xtrain-0.4.3-1.src.rpm
location_href: Packages/python-xtrain-help-0.4.3-1.noarch.rpm
checksum_type: sha256
description:
  Design goals:

    - Help avoiding boiler-plate code
    - Minimal functionality and dependency
    - Agnostic to hardware configuration (e.g. GPU->TPU)





  ```
  class MyFlaxModule(nn.Module):
    @nn.compact
    def __call__(self, x):
      ...
  ```



  ```
  def my_loss_func(batch, prediction):
      x, y_true = batch
      loss = ....
      return loss
  ```



  ```
  my_data = zip(sequence_of_inputs, sequence_of_labels)
  ```



  ```

  trainer = xtrain.Trainer(
    model = MyFlaxModule(),
    losses = my_loss_func,
    optimizer = optax.adam(1e-4),
  )

  train_iter = trainer.train(my_data) # returns a iterable object


  for epoch in range(3):
    for model_out in train_iter:
      pass
    print(train_iter.loss_logs)
    train_iter.reset_loss_logs()
  ```



  - tensowflow Dataset
  - torch dataloader
  - generator function
  - other python iterable that produce numpy data



  train_iter is orbax compatible.

  ```
  import orbax.checkpoint as ocp
  ocp.StandardCheckpointer().save(cp_path, args=ocp.args.StandardSave(train_iter))
  ```


  ```
  train_iter.freeze("submodule/Dense_0/kernel")
  ```


  ```

  ds = ds.batch(8)

  trainer_iter = xtrain.Trainer(model, losses, optimizer, strategy=xtrain.Distributed).train(ds)
  ```



  https://jiyuuchc.github.io/xtrain/


pkgId: 6293602dd6d55127b87bbde1edfeab17f061e23cba5a3a8fcd469e716cdf2a6a
name: python-xxpaper-help
arch: noarch
version: 1.2.post6
epoch: 0
release: 1
summary: Development documents and examples for xxpaper
url: https://github.com/clearclaw/cfgstack
rpm_license: GPL-3.0-only
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xxpaper-1.2.post6-1.src.rpm
location_href: Packages/python-xxpaper-help-1.2.post6-1.noarch.rpm
checksum_type: sha256
description:
  Installation:
  	     pip install xxpaper
  XXPaper generates artfiles representing charters, privates,
  shares, station markers, trains and (linear) stock markets (2D stock
  markets coming later) as defined by a configuration passed on the
  command line.  All art is made using a format which is friendly to
  die-cutting.
  This is now version 1.x of XXPaper.  It is not backward compatible
  with v0.x versions of XXPaper.  Many things are different.  Some of
  them are better.  Maybe a few things are worse.  Sample configuration
  files can be found in the "samples" directory of the source tree.
  Their number will grow over time.
  Note: XXPaper is now a Python3 project.  It may still work under
  Python 2, but that is neither tested or expected.
  -- JCL


pkgId: a6e1f07e97338c5c938a1a736930450e2c5476690697bc6f65f6b38f1dd176b8
name: python-xytoy-help
arch: noarch
version: 1.2.0
epoch: 0
release: 1
summary: Development documents and examples for xytoy
url: https://pypi.org/project/xytoy/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xytoy-1.2.0-1.src.rpm
location_href: Packages/python-xytoy-help-1.2.0-1.noarch.rpm
checksum_type: sha256
description:
  This a toybox of XY

  [![CI](https://github.com/you-n-g/toy/actions/workflows/ci.yml/badge.svg)](https://github.com/you-n-g/toy/actions/workflows/ci.yml)
  [![CommitLint](https://github.com/you-n-g/toy/actions/workflows/commitlint.yml/badge.svg)](https://github.com/you-n-g/toy/actions/workflows/commitlint.yml)
  [![DevContainer](https://github.com/you-n-g/toy/actions/workflows/devcontainer.yml/badge.svg)](https://github.com/you-n-g/toy/actions/workflows/devcontainer.yml)
  [![Release](https://github.com/you-n-g/toy/actions/workflows/release.yml/badge.svg)](https://github.com/you-n-g/toy/actions/workflows/release.yml)
  [![Renovate](https://github.com/you-n-g/toy/actions/workflows/renovate.yml/badge.svg)](https://github.com/you-n-g/toy/actions/workflows/renovate.yml)
  [![Semantic Release](https://github.com/you-n-g/toy/actions/workflows/semantic-release.yml/badge.svg)](https://github.com/you-n-g/toy/actions/workflows/semantic-release.yml)
  [![Coverage](https://img.shields.io/endpoint?url=https://you-n-g.github.io/toy/_static/badges/coverage.json)](https://you-n-g.github.io/toy/reports/coverage)
  [![Release](https://img.shields.io/github/v/release/you-n-g/toy)](https://github.com/you-n-g/toy/releases)
  [![PyPI](https://img.shields.io/pypi/v/xytoy)](https://pypi.org/project/xytoy/)
  [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/xytoy)](https://pypi.org/project/xytoy/)
  [![GitHub](https://img.shields.io/github/license/you-n-g/toy)](https://github.com/you-n-g/toy/blob/main/LICENSE)

  [![pdm-managed](https://img.shields.io/badge/pdm-managed-blueviolet)](https://pdm-project.org)
  [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)
  [![Checked with mypy](https://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
  [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-%23FE5196?logo=conventionalcommits&logoColor=white)](https://conventionalcommits.org)
  [![Pydantic v2](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/pydantic/pydantic/5697b1e4c4a9790ece607654e6c02a160620c7e1/docs/badge/v2.json)](https://pydantic.dev)
  [![Copier](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-grayscale-inverted-border-orange.json)](https://github.com/copier-org/copier)
  [![Serious Scaffold Python](https://img.shields.io/endpoint?url=https://serious-scaffold.github.io/ss-python/_static/badges/logo.json)](https://serious-scaffold.github.io/ss-python)
  [![Open in Dev Containers](https://img.shields.io/static/v1?label=Dev%20Containers&message=Open&color=blue&logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/you-n-g/toy)

  > [!WARNING]
  > _Toy of XY_ is in the **Alpha** phase.
  > Frequent changes and instability should be anticipated.
  > Any feedback, comments, suggestions and contributions are welcome!


  This is a toybox of XY



  MIT License, for more details, see the [LICENSE](https://github.com/you-n-g/toy/blob/main/LICENSE) file.


pkgId: 1dd07d9fc14c3e4943d68788f6e3e833cc04f641dc6a9001028c1a3161a59228
name: python-xyzstyle-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for xyzstyle
url: https://pypi.org/project/xyzstyle/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-xyzstyle-0.1.0-1.src.rpm
location_href: Packages/python-xyzstyle-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  [![PyPI][pypi-badge]][pypi-link]
  [![GitHub issues][issue-badge]][issue-link]
  [![GitHub forks][fork-badge]][fork-link]
  [![GitHub stars][star-badge]][star-link]
  [![GitHub license][license-badge]][license-link]
  [![contributors][contributor-badge]][contributor-link]
  [![watcher][watcher-badge]][watcher-link]
  [![Binder][binder-badge]][binder-link]
  [![Downloads][download-badge]][download-link]
  [![Documentation Status][status-badge]][status-link]
  [![PyPI - Downloads][install-badge]][install-link]
  ![repo size](https://img.shields.io/github/repo-size/xinetzone/xyzstyle.svg)
  [![Downloads Week](https://pepy.tech/badge/xyzstyle/week)](https://pepy.tech/project/xyzstyle)

  学无止境！

  [pypi-badge]: https://img.shields.io/pypi/v/xyzstyle.svg
  [pypi-link]: https://pypi.org/project/xyzstyle/
  [issue-badge]: https://img.shields.io/github/issues/xinetzone/xyzstyle
  [issue-link]: https://github.com/xinetzone/xyzstyle/issues
  [fork-badge]: https://img.shields.io/github/forks/xinetzone/xyzstyle
  [fork-link]: https://github.com/xinetzone/xyzstyle/network
  [star-badge]: https://img.shields.io/github/stars/xinetzone/xyzstyle
  [star-link]: https://github.com/xinetzone/xyzstyle/stargazers
  [license-badge]: https://img.shields.io/github/license/xinetzone/xyzstyle
  [license-link]: https://github.com/xinetzone/xyzstyle/LICENSE
  [contributor-badge]: https://img.shields.io/github/contributors/xinetzone/xyzstyle
  [contributor-link]: https://github.com/xinetzone/xyzstyle/contributors
  [watcher-badge]: https://img.shields.io/github/watchers/xinetzone/xyzstyle
  [watcher-link]: https://github.com/xinetzone/xyzstyle/watchers
  [binder-badge]: https://mybinder.org/badge_logo.svg
  [binder-link]: https://mybinder.org/v2/gh/xinetzone/xyzstyle/main
  [install-badge]: https://img.shields.io/pypi/dw/xyzstyle?label=pypi%20installs
  [install-link]: https://pypistats.org/packages/xyzstyle
  [status-badge]: https://readthedocs.org/projects/xyzstyle/badge/?version=latest
  [status-link]: https://xyzstyle.readthedocs.io/zh-cn/latest/?badge=latest
  [download-badge]: https://pepy.tech/badge/xyzstyle
  [download-link]: https://pepy.tech/project/xyzstyle



  需要安装 `xyzstyle` 包：

  ```shell
  pip install xyzstyle
  ```

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


pkgId: fa218a3bca729a9446c2ca6eae4cdb2142844029570420dfbb2ef9b37be164f5
name: python-y-py-dart-slate
arch: noarch
version: 0.6.3a13
epoch: 0
release: 1
summary: Python bindings for the Y-CRDT built from yrs (Rust)
url: https://github.com/its-dart/ypy
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-y-py-dart-slate-0.6.3a13-1.src.rpm
location_href: Packages/python-y-py-dart-slate-0.6.3a13-1.noarch.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/y-py.svg)](https://badge.fury.io/py/y-py)



  Ypy is a Python binding for Y-CRDT. It provides distributed data types that enable real-time collaboration between devices. Ypy can sync data with any other platform that has a Y-CRDT binding, allowing for seamless cross-domain communication. The library is a thin wrapper around Yrs, taking advantage of the safety and performance of Rust.

  > [We are looking for a maintainer 👀](https://github.com/y-crdt/ypy/issues/148)



  ```
  pip install y-py
  ```



  Ypy provides many of the same shared data types as [Yjs](https://docs.yjs.dev/). All objects are shared within a `YDoc` and get modified within a transaction block.

  ```python
  import y_py as Y

  d1 = Y.YDoc()

  text = d1.get_text('test')

  with d1.begin_transaction() as txn:
      
      text.extend(txn, "hello world!")


  d2 = Y.YDoc()

  state_vector = Y.encode_state_vector(d2)
  diff = Y.encode_state_as_update(d1, state_vector)
  Y.apply_update(d2, diff)

  value = str(d2.get_text('test'))

  assert value == "hello world!"
  ```



  0. Install [Rust](https://www.rust-lang.org/tools/install) and [Python](https://www.python.org/downloads/)
  1. Install `maturin` in order to build Ypy: `pip install maturin`
  2. Create a development build of the library: `maturin develop`



  All tests are located in `/tests`. To run the tests, install `pytest` and run the command line tool from the project root:

  ```
  pip install pytest
  pytest
  ```



  If you are using `hatch`, there is a `test` environment matrix defined in `pyproject.toml` that will run commands in virtual environments for `py37` through `py312`.

  ```
  hatch run test:maturin develop
  hatch run test:pytest
  ```



  Build the library as a wheel and store them in `target/wheels`:

  ```
  maturin build
  ```



  As a Rust-based library, Ypy cannot build "pure Python" wheels. CI processes build and upload a number of wheels to PyPI, but PyPI does not support hosting `emscripten` / `wasm32` wheels necessary to import in Pyodide (see https://github.com/pypi/warehouse/issues/10416 for more info and updates). For now, Ypy will build `emscripten` wheels and attach the binaries as assets in the appropriate [Releases](https://github.com/y-crdt/ypy/releases) entry. Unfortunately, trying to install directly from the Github download link will result in a CORS error, so you'll need to use a proxy to pull in the binary and write / install from emscripten file system or host the binary somewhere that is CORS accessible for your application.

  You can try out Ypy in Pyodide using the [terminal emulator at pyodide.org](https://pyodide.org/en/stable/console.html):

  ```
  Welcome to the Pyodide terminal emulator 🐍
  Python 3.10.2 (main, Sep 15 2022 23:28:12) on WebAssembly/Emscripten
  Type "help", "copyright", "credits" or "license" for more information.
  >>> wheel_url = 'https://github.com/y-crdt/ypy/releases/download/v0.5.5/y_py-0.5.5-cp310-cp310-emscripten_3_1_14_wasm32.whl'
  >>> wheel_name = wheel_url.split('/')[-1]
  >>> wheel_name
  'y_py-0.5.5-cp310-cp310-emscripten_3_1_14_wasm32.whl'
  >>>
  >>> proxy_url = f'https://api.allorigins.win/raw?url={wheel_url}'
  >>> proxy_url
  'https://api.allorigins.win/raw?url=https://github.com/y-crdt/ypy/releases/download/v0.5.5/y_py-0.5.5-cp310-cp310-emscripten_3_1_14_wasm32.whl'
  >>>
  >>> import pyodide
  >>> resp = await pyodide.http.pyfetch(proxy_url)
  >>> resp.status
  200
  >>>
  >>> content = await resp.bytes()
  >>> len(content)
  360133
  >>> content[:50]
  b'PK\x03\x04\x14\x00\x00\x00\x08\x00\xae\xb2}U\x92l\xa7E\xe6\x04\x00\x00u\t\x00\x00\x1d\x00\x00\x00y_py-0.5.5.dist-info'
  >>>
  >>> with open(wheel_name, 'wb') as f:
  ...   f.write(content)
  ...
  360133
  >>>
  >>> import micropip
  >>> await micropip.install(f'emfs:./{wheel_name}')
  >>>
  >>> import y_py as Y
  >>> Y
  <module 'y_py' from '/lib/python3.10/site-packages/y_py/__init__.py'>
  >>>
  >>> d1 = Y.YDoc()
  >>> text = d1.get_text('test')
  >>> with d1.begin_transaction() as txn:
      text.extend(txn, "hello world!")
  ...
  >>> d2 = Y.YDoc()
  >>> state_vector = Y.encode_state_vector(d2)
  >>> diff = Y.encode_state_as_update(d1, state_vector)
  >>> Y.apply_update(d2, diff)
  >>> d2.get_text('test')
  YText(hello world!)
  ```


pkgId: c0d7dfe56ee1769e3f15e582ac182f739e724dc154d5587631b3b4c2a2ec17d3
name: python-yaflux-help
arch: noarch
version: 0.2.0
epoch: 0
release: 1
summary: Development documents and examples for yaflux
url: https://pypi.org/project/yaflux/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yaflux-0.2.0-1.src.rpm
location_href: Packages/python-yaflux-help-0.2.0-1.noarch.rpm
checksum_type: sha256
description:
  A declarative framework for managing complex analytical workflows in Python.



  `yaflux` provides a structured approach to managing complex data analysis pipelines where tracking transformations, ensuring reproducibility, and maintaining clear provenance are essential. It offers a pure Python solution for declaring dependencies between analysis steps and managing results immutably.



  - **Declarative Workflow Definition**: Analysis steps are defined through decorators that explicitly state their inputs and outputs
  - **Immutable Results Management**: Results are tracked and protected from inadvertent mutation
  - **Dependency Tracking**: Automatic tracking of dependencies between analysis steps
  - **Progress Monitoring**: Built-in tracking of completed analysis steps
  - **Serialization**: Simple persistence of complete analysis states
  - **Portable Results**: Analysis results can be shared and loaded without original class definitions



  The full documentation for `yaflux` can be found at [yaflux.readthedocs.io](https://yaflux.readthedocs.io).



  With `yaflux`, you can define complex analytical workflows in a structured and reproducible way.

  All methods are functional and the step decorator handles mutations to the analysis object.
  You can specify dependencies between steps and `yaflux` will automatically track them.
  This allows you to focus on the functional implementation of each step and limit side effects.

  ```python
  import yaflux as yf

  class MyAnalysis(yf.Base):
      """An example analysis class."""

      
      @yf.step(creates="raw_data")
      def workflow_step_a(self) -> list[int]:
          return [i for i in range(10)]

      
      @yf.step(creates="processed_data", requires="raw_data")
      def workflow_step_b(self) -> list[int]:
          return [i * 2 for i in self.results.raw_data]

      
      @yf.step(creates="final_data", requires=["raw_data", "processed_data"])
      def workflow_step_c(self) -> list[int]:
          return [i + j for i in self.results.raw_data for j in self.results.processed_data]

      
      def run(self):
          self.workflow_step_a()
          self.workflow_step_b()
          self.workflow_step_c()


  analysis = MyAnalysis()
  analysis.run()


  final = analysis.results.final_data


  analysis.save("analysis.yax")


  loaded = MyAnalysis.load("analysis.yax")


  loaded = yf.Base.load("analysis.yax")


  analysis.workflow_step_a() # skipped


  analysis.workflow_step_a(force=True) # re-run


  analysis.visualize_dependencies()


  metadata = analysis.get_step_metadata("workflow_step_b")
  ```



  `yaflux` provides a built-in method for visualizing the dependencies between analysis steps.
  This can be useful for understanding complex workflows and ensuring that all dependencies are correctly specified.

  Let's first define a complex analysis with multiple steps and dependencies:

  ```python
  import yaflux as yf

  class MyAnalysis(yf.Base):

      @yf.step(creates=["x", "y", "z"])
      def load_data(self) -> tuple[int, int, int]:
          return 1, 2, 3

      @yf.step(creates="proc_x", requires="x")
      def process_x(self) -> int:
          return self.results.x + 1

      @yf.step(creates=["proc_y1", "proc_y2", "_marked"], requires="y")
      def process_y(self) -> tuple[int, int]:
          return (
              self.results.y + 1,
              self.results.y + 2,
          )

      @yf.step(creates="proc_z", requires=["proc_y1", "proc_y2", "z"])
      def process_z(self) -> int:
          return self.results.proc_y1 + self.results.proc_y2 + self.results.z

      @yf.step(creates="final", requires=["proc_x", "proc_z", "_marked"])
      def final(self) -> int:
          return self.results.proc_x + self.results.proc_z
  ```

  Now we can visualize the dependencies between the analysis steps:

  ```python
  analysis = MyAnalysis()
  analysis.visualize_dependencies()
  ```

  ![Dependency Graph](docs/source/assets/complex_workflow_init.svg)

  As we run the analysis, we can fill in the dependency graph and see where we are in the workflow.

  ```python
  analysis.load_data()
  analysis.process_x()
  analysis.process_y()


  analysis.visualize_dependencies()
  ```

  ![Dependency Graph](docs/source/assets/complex_workflow_progress.svg)



  One of the benefits of a declarative workflow is you can avoid a whole class of errors related to missing or incorrect dependencies.

  In `yaflux` you can specify dependencies between steps using the `requires` argument in the `@step` decorator.
  The `step` function parses the decorated method's abstract syntax tree (AST) to determine the dependencies and ensure they are met.

  This means that if you try to access a result that hasn't been created yet, `yaflux` will raise an error at definition time rather than at runtime.

  The below code will raise an error at class definition time because `step_b` **uses** `z` but does not **require** it:

  ```python
  import yaflux as yf

  class BadAnalysis(yf.Base):

      @yf.step(creates="x")
      def step_a(self) -> int:
          return 1

      @yf.step(creates="y") # Missing `z` in `requires`
      def step_b(self) -> int:
          return self.results.z + 1
  ```

  This is especially useful when you have a typo in your analysis but don't realize it until much later in the workflow.
  `yaflux` acts as a static analysis tool for your analysis workflow, catching errors early and saving you time debugging.

  ```python
  import yaflux as yf

  class BadAnalysis(yf.Base):

      @yf.step(creates="some_complex_name")
      def step_a(self) -> int:
          return 1

      @yf.step(creates="y", requires="some_complex_name") # Typo in `requires`
      def step_b(self) -> int:
          return self.results.some_complx_name + 1
  ```



  For a base python installation with zero external dependencies use:

  ```bash
  pip install yaflux
  ```

  For a more feature-rich installation with additional dependencies use:

  ```bash
  pip install yaflux[full]
  ```

  Or if you want a specific subset of features, you can install individual extras:

  ```bash
  pip install yaflux[viz]
  ```


pkgId: f09ce32ba345be7ffd9c575b28aefe5e05b4b198b9be4dc0ea53e74da8957931
name: python-yahoo-oauth-help
arch: noarch
version: 2.1.1
epoch: 0
release: 1
summary: Development documents and examples for yahoo-oauth
url: https://pypi.org/project/yahoo-oauth/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yahoo-oauth-2.1.1-1.src.rpm
location_href: Packages/python-yahoo-oauth-help-2.1.1-1.noarch.rpm
checksum_type: sha256
description:
  [![Build Status](https://travis-ci.org/josuebrunel/yahoo-oauth.svg?branch=master)](https://travis-ci.org/josuebrunel/yahoo-oauth)
  [![Documentation Status](https://readthedocs.org/projects/yahoo-oauth/badge/?version=latest)](https://readthedocs.org/projects/yahoo-oauth/?badge=latest)
  [![Code Health](https://landscape.io/github/josuebrunel/yahoo-oauth/master/landscape.svg?style=flat)](https://landscape.io/github/josuebrunel/yahoo-oauth/master)
  [![PyPI](https://img.shields.io/pypi/v/yahoo-oauth.svg?style=flat)](https://pypi.python.org/pypi/yahoo_oauth)
  [![PyPI](https://img.shields.io/pypi/dm/yahoo-oauth.svg?style=flat)](https://pypi.python.org/pypi/yahoo_oauth)
  [![PyPI](https://img.shields.io/pypi/pyversions/yahoo-oauth.svg?style=flat)](https://pypi.python.org/pypi/yahoo_oauth)
  [![PyPI](https://img.shields.io/pypi/implementation/yahoo-oauth.svg?style=flat)](https://pypi.python.org/pypi/yahoo_oauth)
  [![Coverage Status](https://coveralls.io/repos/josuebrunel/yahoo-oauth/badge.svg?branch=master)](https://coveralls.io/r/josuebrunel/yahoo-oauth?branch=master)
  [![PyPI](https://img.shields.io/pypi/l/yahoo-oauth.svg?style=flat)](https://pypi.python.org/pypi/yahoo_oauth)

  Yahoo_OAuth is a very easy to use OAuth library for Yahoo! APIs.



  ```python
  pip install yahoo_oauth
  ```



  Only **2** parameters are required to get started

  * ___consumer_key___
  * ___consumer_secret___

  I recommend putting those two into a file. Only ***json*** and ***yaml*** files are supported

  ```json
  {
      "consumer_key": "my_very_long_and_weird_consumer_key",
      "consumer_secret": "my_not_that_long_consumer_secret"
  }
  ```

  Once you acquired your access_token, this file will look like :

  * **OAuth2**

  ```json
  {
      "access_token": "DELvMgOYvwPQJS8eFW_2hRN5rJxz6dnHAOk2s.qB0iMIeRg5.ZpW3xZF0p8CABLjZ2gfNdE602dCN2wTHdGHHLtChF3ls9BUuZ1QDdqIVq.yWclfweleyZSq6dAzlPEHiskWmfItjHK5VERY_LONG_ACCESS_TOKEN_oyyD4cIKvdNJsJ9k779mAUqN02_5ugBeDfCLebqjL8uVuunObew0ERa2MxE6jywNY0TTCe9W0nqTd6n0lKoN4PSP1Dw_Ifwx6enGuhUUAhhpa7nNMyhNy_pe6PfDf7IJ5gbkdtw3mD1o2T218ZTV0owdrKDLSF9oZrNvZ75xDlqaaI5yeW_.L63zk11PjsWUd5K8LGhWSTgRbyhffCDBcqVwTYEqHwCyVqHX4z2kgHhGsc0ies6WMG33kSw5Cgun0fnPbdDuHBgQziXU.GMv4hIDoIDMSLGpzpcpkyx4GS1CC_RUQwKxLilR3MQy7X2gI3cJA4lhRPlXEOdhS5HIQiQTgMWO9nWt7.RR7XtXVg-",
      "consumer_key": "dj0yJmk9eFJINERDYWMY_CONSUMER_KEYmRGTnpZbWNHbzlNQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD1iNQ--",
      "consumer_secret": "08802b459ab48eeaMY_CONSUMER_SECRET_0af6a4b75789f7",
      "refresh_token": "APIENFXij.bjFW1tEcr2THE_REFRESH_TOKEN_Xn.4.DOIYOR37",
      "token_time": 1433553339.706037,
      "token_type": "bearer"
  }
  ```

  With that you should be good to go.

  Normally, once your got all that, you can ***use the same credentials FOREVER***, you just have to ***REFRESH THEM***.





  ```python
  from yahoo_oauth import OAuth2
  oauth = OAuth2(None, None, from_file='oauth2.json')
  ...

  if not oauth.token_is_valid():
      oauth.refresh_access_token()

  response = oauth.session.get(url, params=payload)
  ```



  * How to disable **Yahoo_OAuth Logger**
  ```python
  import logging
  oauth_logger = logging.getLogger('yahoo_oauth')
  oauth_logger.disabled = True
  ```



  Any kind of contribution is welcomed.

  0. report bug by opening an issue
  1. Fork the repository
  2. Make your changes
  3. Test your changes
  4. Submit a pull request

  Have fun guys :wink:


pkgId: 5adc195d088476027976354e8204cd8844991801953736c6426cdf894fd37604
name: python-yalexs-ble-help
arch: noarch
version: 2.5.3
epoch: 0
release: 1
summary: Development documents and examples for yalexs-ble
url: https://github.com/bdraco/yalexs-ble
rpm_license: GPL-3.0-only
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yalexs-ble-2.5.3-1.src.rpm
location_href: Packages/python-yalexs-ble-help-2.5.3-1.noarch.rpm
checksum_type: sha256
description:
  <p align="center">
    <a href="https://github.com/bdraco/yalexs-ble/actions?query=workflow%3ACI">
      <img src="https://img.shields.io/github/workflow/status/bdraco/yalexs-ble/CI/main?label=CI&logo=github&style=flat-square" alt="CI Status" >
    </a>
    <a href="https://yalexs-ble.readthedocs.io">
      <img src="https://img.shields.io/readthedocs/yalexs-ble.svg?logo=read-the-docs&logoColor=fff&style=flat-square" alt="Documentation Status">
    </a>
    <a href="https://codecov.io/gh/bdraco/yalexs-ble">
      <img src="https://img.shields.io/codecov/c/github/bdraco/yalexs-ble.svg?logo=codecov&logoColor=fff&style=flat-square" alt="Test coverage percentage">
    </a>
  </p>
  <p align="center">
    <a href="https://python-poetry.org/">
      <img src="https://img.shields.io/badge/packaging-poetry-299bd7?style=flat-square&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAASCAYAAABrXO8xAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJJSURBVHgBfZLPa1NBEMe/s7tNXoxW1KJQKaUHkXhQvHgW6UHQQ09CBS/6V3hKc/AP8CqCrUcpmop3Cx48eDB4yEECjVQrlZb80CRN8t6OM/teagVxYZi38+Yz853dJbzoMV3MM8cJUcLMSUKIE8AzQ2PieZzFxEJOHMOgMQQ+dUgSAckNXhapU/NMhDSWLs1B24A8sO1xrN4NECkcAC9ASkiIJc6k5TRiUDPhnyMMdhKc+Zx19l6SgyeW76BEONY9exVQMzKExGKwwPsCzza7KGSSWRWEQhyEaDXp6ZHEr416ygbiKYOd7TEWvvcQIeusHYMJGhTwF9y7sGnSwaWyFAiyoxzqW0PM/RjghPxF2pWReAowTEXnDh0xgcLs8l2YQmOrj3N7ByiqEoH0cARs4u78WgAVkoEDIDoOi3AkcLOHU60RIg5wC4ZuTC7FaHKQm8Hq1fQuSOBvX/sodmNJSB5geaF5CPIkUeecdMxieoRO5jz9bheL6/tXjrwCyX/UYBUcjCaWHljx1xiX6z9xEjkYAzbGVnB8pvLmyXm9ep+W8CmsSHQQY77Zx1zboxAV0w7ybMhQmfqdmmw3nEp1I0Z+FGO6M8LZdoyZnuzzBdjISicKRnpxzI9fPb+0oYXsNdyi+d3h9bm9MWYHFtPeIZfLwzmFDKy1ai3p+PDls1Llz4yyFpferxjnyjJDSEy9CaCx5m2cJPerq6Xm34eTrZt3PqxYO1XOwDYZrFlH1fWnpU38Y9HRze3lj0vOujZcXKuuXm3jP+s3KbZVra7y2EAAAAAASUVORK5CYII=" alt="Poetry">
    </a>
    <a href="https://github.com/ambv/black">
      <img src="https://img.shields.io/badge/code%20style-black-000000.svg?style=flat-square" alt="black">
    </a>
    <a href="https://github.com/pre-commit/pre-commit">
      <img src="https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=flat-square" alt="pre-commit">
    </a>
  </p>
  <p align="center">
    <a href="https://pypi.org/project/yalexs-ble/">
      <img src="https://img.shields.io/pypi/v/yalexs-ble.svg?logo=python&logoColor=fff&style=flat-square" alt="PyPI Version">
    </a>
    <img src="https://img.shields.io/pypi/pyversions/yalexs-ble.svg?style=flat-square&logo=python&amp;logoColor=fff" alt="Supported Python versions">
    <img src="https://img.shields.io/pypi/l/yalexs-ble.svg?style=flat-square" alt="License">
  </p>

  Bluetooth control of Yale and August locks



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

  `pip install yalexs-ble`



  Thanks to:

  https://github.com/Friendly0Fire/augustpy
  https://github.com/terrcin/augustctl
  https://github.com/ethitter/augustctl
  https://github.com/robson83/augustctl



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

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

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



  This package was created with
  [Cookiecutter](https://github.com/audreyr/cookiecutter) and the
  [browniebroke/cookiecutter-pypackage](https://github.com/browniebroke/cookiecutter-pypackage)
  project template.


pkgId: 87cef3d428aeb151dc2685ab95ee281ab1af0477b8fadacef7303e1bef47286f
name: python-yaml2terragrunt-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for yaml2terragrunt
url: https://pypi.org/project/yaml2terragrunt/
rpm_license: GPL-3.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yaml2terragrunt-0.1.0-1.src.rpm
location_href: Packages/python-yaml2terragrunt-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  yaml2terragrunt is an open-source project designed to enable the dynamic creation of Terragrunt files, folders, and configurations using a declarative YAML approach. The primary objective is to simplify and streamline the management of complex infrastructure-as-code setups, particularly for organizations dealing with multiple environments, regions, and services.



  The project aims to address several shortcomings of traditional Terragrunt folder structures:

  1. Scalability issues: As projects grow, maintaining a consistent folder structure across multiple environments and regions becomes challenging.

  2. Duplication of code: Traditional approaches often lead to repetitive configurations, violating the DRY (Don't Repeat Yourself) principle.

  3. Limited flexibility: Static configurations make it difficult to share complex variables or computed values across different levels of the hierarchy.

  4. Complexity in reorganization: Restructuring existing Terragrunt projects can be cumbersome and error-prone.



  Future objectives for yaml2terragrunt may include:

  1. Enhancing support for multi-region and multi-environment setups.
  2. Implementing advanced features for dynamic configuration generation.
  3. Developing tools to facilitate easier migration from existing Terragrunt structures.
  4. Improving integration with other infrastructure-as-code tools and workflows.


  By addressing these challenges, yaml2terragrunt aims to provide a more flexible, maintainable, and scalable approach to managing Terragrunt configurations for complex infrastructure projects.


  Create YAML configuration files with a standard structure
  Use the Python script to convert YAML to Terragrunt HCL
  Run Terragrunt/Terraform as normal with generated HCL files


  ```yaml
  source: "github.com/module/path"
  backend: "s3"
  bucket: "my-terraform-state"
  key: "environment/component"
  region: "us-west-2"
  inputs:
    instance_type: "t3.micro"
    environment: "staging"
  ```


  Requires PyYAML and potentially tfmt for JSON to HCL conversion
  Complex configurations might need manual tweaking
  Performance overhead of conversion


  - PyYAML
  - tfmt (optional, for JSON to HCL conversion)
  - Python 3.7+



  - Add robust error handling
  - Support for complex Terragrunt inheritance
  - Validation against Terraform schemas
  - Templating support


  [Contribution guidelines for this project](.github/CONTRIBUTING.md)


pkgId: 815a6fd371377ea64f0e8b9c45e974aa46dad556f3d2f4c8af52a0c79329ff8f
name: python-yandexcloud-help
arch: noarch
version: 0.328.0
epoch: 0
release: 1
summary: Development documents and examples for yandexcloud
url: https://github.com/yandex-cloud/python-sdk
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yandexcloud-0.328.0-1.src.rpm
location_href: Packages/python-yandexcloud-help-0.328.0-1.noarch.rpm
checksum_type: sha256
description:
  [![PyPI Version][pypi-image]][pypi-url]
  [![Build Status][build-image]][build-url]
  [![License][license-image]][license-url]

  <!-- Badges -->

  [pypi-image]: https://img.shields.io/pypi/v/yandexcloud
  [pypi-url]: https://pypi.org/project/yandexcloud/
  [build-image]: https://github.com/yandex-cloud/python-sdk/actions/workflows/run-tests.yml/badge.svg
  [build-url]: https://github.com/yandex-cloud/python-sdk/actions/workflows/run-tests.yml
  [license-image]: https://img.shields.io/github/license/yandex-cloud/python-sdk.svg
  [license-url]: https://github.com/yandex-cloud/python-sdk/blob/master/LICENSE



  Need to automate your infrastructure or use services provided by Yandex.Cloud? We've got you covered.

  Installation:

      pip install yandexcloud



  There are several options for authorization your requests - OAuth Token,
  Metadata Service (if you're executing your code inside VMs or Cloud Functions
  running in Yandex.Cloud), Service Account Keys, and externally created IAM tokens.



  ```python
  sdk = yandexcloud.SDK(token='AQAD-.....')
  ```



  Don't forget to assign Service Account for your Instance or Function and grant required roles.

  ```python
  sdk = yandexcloud.SDK()
  ```



  ```python

  sa_key = {
      "id": "...",
      "service_account_id": "...",
      "private_key": "..."
  }

  sdk = yandexcloud.SDK(service_account_key=sa_key)
  ```



  ```python
  sdk = yandexcloud.SDK(iam_token="t1.9eu...")
  ```

  Check `examples` directory for more examples.





  | Service Name                                                           | Alias                    |
  |------------------------------------------------------------------------|--------------------------|
  | yandex.cloud.ai.foundation_models                                      | ai-foundation-models     |
  | yandex.cloud.ai.llm                                                    | ai-llm                   |
  | yandex.cloud.ai.ocr                                                    | ai-vision-ocr            |
  | yandex.cloud.ai.stt                                                    | ai-stt                   |
  | yandex.cloud.ai.translate                                              | ai-translate             |
  | yandex.cloud.ai.tts                                                    | ai-speechkit             |
  | yandex.cloud.ai.vision                                                 | ai-vision                |
  | yandex.cloud.apploadbalancer                                           | alb                      |
  | yandex.cloud.billing                                                   | billing                  |
  | yandex.cloud.cdn                                                       | cdn                      |
  | yandex.cloud.certificatemanager.v1.certificate_content_service         | certificate-manager-data |
  | yandex.cloud.certificatemanager                                        | certificate-manager      |
  | yandex.cloud.compute                                                   | compute                  |
  | yandex.cloud.containerregistry                                         | container-registry       |
  | yandex.cloud.dataproc.manager                                          | dataproc-manager         |
  | yandex.cloud.dataproc                                                  | dataproc                 |
  | yandex.cloud.datasphere                                                | datasphere               |
  | yandex.cloud.datatransfer                                              | datatransfer             |
  | yandex.cloud.dns                                                       | dns                      |
  | yandex.cloud.endpoint                                                  | endpoint                 |
  | yandex.cloud.iam                                                       | iam                      |
  | yandex.cloud.iot.devices                                               | iot-devices              |
  | yandex.cloud.k8s                                                       | managed-kubernetes       |
  | yandex.cloud.kms.v1.symmetric_crypto_service                           | kms-crypto               |
  | yandex.cloud.kms                                                       | kms                      |
  | yandex.cloud.loadbalancer                                              | load-balancer            |
  | yandex.cloud.loadtesting                                               | loadtesting              |
  | yandex.cloud.lockbox.v1.payload_service                                | lockbox-payload          |
  | yandex.cloud.lockbox                                                   | lockbox                  |
  | yandex.cloud.logging.v1.log_ingestion_service                          | log-ingestion            |
  | yandex.cloud.logging.v1.log_reading_service                            | log-reading              |
  | yandex.cloud.logging                                                   | logging                  |
  | yandex.cloud.marketplace                                               | marketplace              |
  | yandex.cloud.mdb.clickhouse                                            | managed-clickhouse       |
  | yandex.cloud.mdb.elasticsearch                                         | managed-elasticsearch    |
  | yandex.cloud.mdb.greenplum                                             | managed-greenplum        |
  | yandex.cloud.mdb.kafka                                                 | managed-kafka            |
  | yandex.cloud.mdb.mongodb                                               | managed-mongodb          |
  | yandex.cloud.mdb.mysql                                                 | managed-mysql            |
  | yandex.cloud.mdb.opensearch                                            | managed-opensearch       |
  | yandex.cloud.mdb.postgresql                                            | managed-postgresql       |
  | yandex.cloud.mdb.redis                                                 | managed-redis            |
  | yandex.cloud.mdb.sqlserver                                             | managed-sqlserver        |
  | yandex.cloud.operation                                                 | operation                |
  | yandex.cloud.organizationmanager                                       | organization-manager     |
  | yandex.cloud.resourcemanager                                           | resource-manager         |
  | yandex.cloud.serverless.apigateway.websocket                           | apigateway-connections   |
  | yandex.cloud.serverless.apigateway                                     | serverless-apigateway    |
  | yandex.cloud.serverless.containers                                     | serverless-containers    |
  | yandex.cloud.serverless.functions                                      | serverless-functions     |
  | yandex.cloud.serverless.triggers                                       | serverless-triggers      |
  | yandex.cloud.storage                                                   | storage-api              |
  | yandex.cloud.vpc                                                       | vpc                      |
  | yandex.cloud.ydb                                                       | ydb                      |



  ```python
  from yandex.cloud.vpc.v1.network_service_pb2_grpc import NetworkServiceStub
  from yandexcloud import SDK

  sdk = SDK(iam_token="t1.9eu...")
  new_network_client_endpoint = "example.new.vpc.very.new.yandex:50051"
  insecure = False # by default is False, but if server does not support verification can be set to True
  network_client = sdk.client(NetworkServiceStub, endpoint=new_network_client_endpoint, insecure=False)
  ```


  To override endpoints provide dict in format {alias : new-endpoint}
  ```python
  from yandex.cloud.vpc.v1.network_service_pb2_grpc import NetworkServiceStub
  from yandexcloud import SDK
  new_network_client_endpoint = "example.new.vpc.very.new.yandex:50051"
  sdk = SDK(iam_token="t1.9eu...", endpoints={"vpc": new_network_client_endpoint})
  insecure = False # by default is False, but if server does not support verification can be set to True
  network_client = sdk.client(NetworkServiceStub, insecure=False)
  ```

  Notice: if both overrides are used for same endpoint, override by client has priority


  ```python
  from yandexcloud import SDK, set_up_yc_api_endpoint
  kz_region_endpoint = "api.yandexcloud.kz"

  sdk = SDK(iam_token="t1.9eu...", endpoint="api.yandexcloud.kz")

  set_up_yc_api_endpoint(kz_region_endpoint)
  ```



  Use `make deps` command to install library, its production and development dependencies.


  Use `make format` to autoformat code with black tool.


  - `make test` to run tests for current python version
  - `make lint` to run only linters for current python version
  - `make tox-current` to run all checks (tests + code style checks + linters + format check) for current python version
  - `make tox` to run all checks for all supported (installed in your system) python versions
  - `make test-all-versions` to run all checks for all supported python versions in docker container



  If pull request consists of several meaningful commits, that should be preserved,
  then use "Rebase and merge" option. Otherwise use "Squash and merge".

  New release (changelog, tag and pypi upload) will be automatically created
  on each push to master via Github Actions workflow.


pkgId: b30c995602dafa8c6615a05b4d239b1130755950d9cb9f127b369b37b8eb9206
name: python-yapper-tts-help
arch: noarch
version: 0.2.3
epoch: 0
release: 1
summary: Development documents and examples for yapper-tts
url: https://github.com/n1teshy/yapper-tts
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yapper-tts-0.2.3-1.src.rpm
location_href: Packages/python-yapper-tts-help-0.2.3-1.noarch.rpm
checksum_type: sha256
description:
  Yapper is a lightweight, offline, real-time, easily extendible, text-to-speech library with more than a dozen voices, it can also, optionally use SOTA LLMs through free APIs to enhance(personalize) your text according to a predefined system-message(personality).

  the use of the word 'enhance' in this repository means adding a 'vibe' to your text, you might ask yapper to say "hello world" and
  it could say "ay what's good G, what's bangin'" depending on the persona you give it.

  [![Watch a demo](https://img.youtube.com/vi/s6EDaP0gt04/0.jpg)](https://www.youtube.com/watch?v=s6EDaP0gt04)




  Use the package manager [pip](https://pip.pypa.io/en/stable/) to install yapper.

  ```bash
  pip install yapper-tts
  ```



  ```python
  from yapper import Yapper


  yapper = Yapper()
  yapper.yap("expected AI driven utopia, got world domination instead")





  yapper.yap("hello world, what '<some-word> is all you need' paper would you publish today?", plain=True)






  @yapper()
  def func():
      raise TypeError("expected peaches, got a keyboard")
      

  with yapper as yapper:
      raise ValueError("69420 is not an integer")
      
  ```




  a speaker is a `BaseSpeaker` subclass that implements a `say()` method, the method takes the text and, well, 'speaks' it.
  there are two built-in speakers, `DefaultSpeaker` that uses [pyttsx3](https://github.com/nateshmbhat/pyttsx3) and
  `PiperSpeaker` that uses [piper](https://github.com/rhasspy/piper), I suggest using `PiperSpeaker` over the default
  because of how natural it sounds and it's also 'very' fast, might make piper the default speaker in future, and of course
  you can subclass `BaseSpeaker` to pass your own speaker to a Yapper instance. Piper offers many voices in `low, medium and high` qualities, you can use any of them by passing a value from `PiperVoiceUS` or `PiperVoiceUK` enum as the voice argument to `PiperSpeaker`
  the quality you want using `PiperQuality` value, by default the voice will be used in the highest available quality. You can also pass
  your own speaker by subclassing `BaseSpeaker`.

  ```python
  from yapper import Yapper, PiperSpeaker, PiperVoiceUK, PiperQuality

  lessac = PiperSpeaker(
      voice=PiperVoiceUK.ALAN
  )
  lessac.say("hello")

  yapper = Yapper(speaker=lessac)
  yapper.yap("<some random text>")
  ```


  an enhancer is `BaseEnhancer` subclass that implements an `enhance()` method, the method takes a string and adds
  the given `persona`'s vibe to it, there are three built-in enhancers `DefaultEnhancer`, `GeminiEnhancer` and `GroqEnhancer`,`DefaultEnhancer` uses the [g4f](https://github.com/xtekky/gpt4free) to transform text, `GeminiEnhancer` uses Google's gemini
  api and `GroqEnhancer` uses [groq](https://groq.com/)'s free APIs', you can create a free GCP account or Groq account and get a
  free api-key to use `GeminiEnhancer` and `GroqEnhancer` respectively, you can pass your own enhancer by subclassing `BaseEnhancer`.

  NOTE: `BaseEnhancer` may or may not work, use `GeminiEnhancer` or `GroqEnhancer` for stability.
  NOTE: if an enhancer doesn't work, yapper will say the text as it is.
  ```python
  from yapper import Yapper, GeminiEnhancer

  yapper = Yapper(
      enhancer=GeminiEnhancer(api_key="<come-take-this-api-key>")
  )
  yapper.yap("<some text that severely lacks vibe>")
  ```


  choose a persona to make your text sound like the 'persona' said it, for example, you might ask yapper
  to say "hello world" and choose Jarvis's peronality to enhance it, and yapper will use an LLM to convert
  "hello world" into something like "Hello, world. How may I assist you today?", classic JARVIS.
  available personas include `jarvis, alfred, friday, HAL-9000, TARS, cortana(from Halo) and samantha(from 'Her')`, the default
  persona is that of a funny coding companion.
  ```python
  from yapper import Yapper, DefaultEnhancer, Persona

  yapper = Yapper(
      enhancer=DefaultEnhancer(persona=Persona.JARVIS)
  )
  yapper.yap("hello world")

  ```



  Pull requests are welcome. For major changes, please open an issue first
  to discuss what you would like to change.



  [MIT](https://choosealicense.com/licenses/mit/)


pkgId: 3e87f55682d52e8278aab191eaf68d027fbe2bceea3de2b195348d7b9be933b1
name: python-yarb-against-war-help
arch: noarch
version: 1.0.1
epoch: 0
release: 1
summary: Development documents and examples for yarb-against-war
url: https://github.com/bots-against-war/yarb
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yarb-against-war-1.0.1-1.src.rpm
location_href: Packages/python-yarb-against-war-help-1.0.1-1.noarch.rpm
checksum_type: sha256
description:
  Yet another Redis backup utility. Partial port of [upstash-redis-dump](https://github.com/upstash/upstash-redis-dump)
  to Python 3.10+.



  ```sh
  pip install -r requirements.txt
  export REDIS_URL="rediss://:password1@redis-host.com:12345"
  python yarb.py $REDIS_URL my-dump.resp

  python yarb.py --help  # for options
  ```



  From [manual](https://redis.io/docs/manual/patterns/bulk-loading/):

  ```sh
  cat my-dump.resp | redis-cli --pipe
  ```



  ```sh
  export REDIS_URL="rediss://:password1@redis-host.com:12345"
  python yarb_periodic.py

  python yarb_periodic.py --help  # for options
  ```



  See full [manual](https://linuxhandbook.com/create-systemd-services/). Example setup:

  1. Create `systemd` service

  ```sh
  sudo nano /etc/systemd/system/yarb.service
  ```

  Paste something like:

  ```
  [Unit]
  Description=Redis periodic backup
  After=network.target
  StartLimitIntervalSec=0

  [Service]
  Type=simple
  Restart=always
  RestartSec=1
  User=my-username
  ExecStart=/full/path/to/venv/bin/python /path/to/yarb_periodic.py --workers 10 --backups-dir /path/to/backups/dir

  [Install]
  WantedBy=multi-user.target
  ```

  2. Create `.conf` configuration to pass environment variable with Redis URL

  ```sh
  sudo systemctl edit yarb.service
  ```

  Paste something like

  ```
  [Service]
  Environment="REDIS_URL=rediss://username:password@redis-host.com:6379"
  ```

  3. Start the service and check everything is working

  ```sh
  sudo systemctl start yarb.service


  sudo systemctl status yarb.service


  journalctl -u yarb.service -f
  ```

  4. Enable service so that it is restarted on reboot

  ```sh
  sudo systemctl enable yarb.service
  ```



  After dumping remote Redis, you can load the dump into local instance and compare it with prod.
  This script will go through local keys and check corresponding remote values, printing any changes.

  ```bash
  REDIS_URL=my-prod-redis:12345 python diff_redis_with_local.py
  ```

  `yarb_periodic.py` stores metadata for each backup in a JSON file. To visualize some trends
  in this metadata, use `visualize_metadata.py`.


pkgId: 5b34b6690d2d010c27f42f2c7e54b0f1823c0855091df3cfc497f4a1a3cb7e13
name: python-yasem-help
arch: noarch
version: 0.4.1
epoch: 0
release: 1
summary: Development documents and examples for yasem
url: https://pypi.org/project/yasem/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yasem-0.4.1-1.src.rpm
location_href: Packages/python-yasem-help-0.4.1-1.noarch.rpm
checksum_type: sha256
description:
  YASEM is a simple and efficient library for executing SPLADE (Sparse Lexical and Expansion Model for Information Retrieval) and creating sparse vectors. It provides a straightforward interface inspired by [SentenceTransformers](https://sbert.net/) for easy integration into your projects.



  - Simplicity: YASEM focuses on providing a clean and simple implementation of SPLADE without unnecessary complexity.
  - Efficiency: Generate sparse embeddings quickly and easily.
  - Flexibility: Works with both NumPy and PyTorch backends.
  - Convenience: Includes helpful utilities like get_token_values for inspecting feature representations.



  You can install YASEM using pip:

  ```bash
  pip install yasem
  ```



  Here's a simple example of how to use YASEM:

  ```python
  from yasem import SpladeEmbedder


  embedder = SpladeEmbedder("naver/splade-v3")


  sentences = [
      "Hello, my dog is cute",
      "Hello, my cat is cute",
      "Hello, I like a ramen",
      "Hello, I like a sushi",
  ]


  embeddings = embedder.encode(sentences)




  similarity = embedder.similarity(embeddings, embeddings)
  print(similarity)







  token_values = embedder.get_token_values(embeddings[0])
  print(token_values)




  token_values = embedder.get_token_values(embeddings[3])
  print(token_values)


  ```



  ```python

  query = "What programming language is best for machine learning?"
  documents = [
     "Python is widely used in machine learning due to its extensive libraries like TensorFlow and PyTorch",
     "JavaScript is primarily used for web development and front-end applications",
     "SQL is essential for database management and data manipulation"
  ]


  results = embedder.rank(query, documents)
  print(results)







  results = embedder.rank(query, documents, return_documents=True)
  print(results)













  ```



  - Easy-to-use API inspired by SentenceTransformers
  - Support for both NumPy and scipy.sparse.csr_matrix
  - Efficient dot product similarity computation
  - Utility function to inspect token values in embeddings



  This project is licensed under the MIT License. See the LICENSE file for the full license text. Copyright (c) 2024 Yuichi Tateno (@hotchpotch)



  Contributions are welcome! Please feel free to submit a Pull Request.



  This library is inspired by the SPLADE model and aims to provide a simple interface for its usage. Special thanks to the authors of the original SPLADE paper and the developers of the model.


pkgId: a299a7887017f16d2e1019556ae002eea0fb697a832be263e1cb29502850da15
name: python-yasiu-native-help
arch: noarch
version: 0.2.2
epoch: 0
release: 1
summary: Development documents and examples for yasiu-native
url: https://pypi.org/project/yasiu-native/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yasiu-native-0.2.2-1.src.rpm
location_href: Packages/python-yasiu-native-help-0.2.2-1.noarch.rpm
checksum_type: sha256
description:
  ```shell
  pip install yasiu-native
  ```


  Module has plenty useful decorators.

   - Flexible decorators
   - Time decorators



  Decorator for parametrizing decorators.

  Turns single level decorator into two leveled decorator,
  by passing decoration parameters alongside function signature for ease of use.

  Decorators wrapped with `Flexible` can be used both with `()` and without `()` operator.


  ```python
  from yasiu_native.decorators import flexible_decorator


  @flexible_decorator
  def custom_decorator(func, decorParam):
      def wrapper(*a, **kw):
          print(f"Decoration Paramter is {decorParam}")
          return func(*a, **kw)

      return wrapper

  @custom_decorator
  def test_1():
      pass

  @custom_decorator()
  def test_2():
      pass

  @custom_decorator(1)
  def test_3(b=0):
      pass

  @custom_decorator(decorParamA=1, decorParamB=2)
  def test_3(b=0):
      pass

  ```

  ```python
  from yasiu_native.decorators import flexible_decorator_2d

  @flexible_decorator_2d
  def custom_decorator(*posParam, **keyParam):
      "posParam: [Optional] positional argument for customizng your decorator behaviour"
      "keyParam: [Optional] keyword argument for customizng your decorator behaviour"

      def wrapper(decoratedFunction):
          "decoratedFunction: function To be decorated with your decorator."

          def inner(*args, **kwargs):
              "args kwargs: arguments of decorated funciton"
              "Use decorative arguments to modify decorator"

              ret = decoratedFunction(*args, **kwargs)
              return ret
          return inner
      return wrapper
  ```



  Decorators for measuring time with formatter.

  - **measure_perf_time_decorator**

    decorator that measures function execution time using *time.perf_counter*


  - **measure_real_time_decorator**

    decorator that measures function execution time using *time.time*



  ```py
  from yasiu_native.time import measure_perf_time_decorator


  @measure_perf_time_decorator()
  def func():
      ...


  @measure_perf_time_decorator(">4.1f")
  def func():
      ...


  @measure_perf_time_decorator(fmt=">4.1f")
  def func():
      ...

  "Example output:" # Function <name> executed in 3min
  "Example output:" # Function <name> executed in 40.2s
  "Example output:" # Function <name> executed in 10.2ms
  ```



  - Use with caution for multiple function calls




  not here yet.



  [1. Native Package](https://pypi.org/project/yasiu-native/)

  [2. Math Package](https://pypi.org/project/yasiu-math/)

  [3. Image Package](https://pypi.org/project/yasiu-image/)

  [4. Pyplot visualisation Package](https://pypi.org/project/yasiu-vis/)


pkgId: a22b5e2404632ffc4a849dfb8afc805214611ef2a70f1e157d4d64285db6b17b
name: python-yasiu-vis-help
arch: noarch
version: 0.3.4
epoch: 0
release: 1
summary: Development documents and examples for yasiu-vis
url: https://pypi.org/project/yasiu-vis/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yasiu-vis-0.3.4-1.src.rpm
location_href: Packages/python-yasiu-vis-help-0.3.4-1.noarch.rpm
checksum_type: sha256
description:
  High level functions, to quickly visualise data frames.



  ```shell
  pip install yasiu-vis
  ```



  - `summary_plot` - plot dataframe, possible grouping by columns



  ```py
  from yasiu_vis.pandas import summary_plot




  summary_plot(df)
  summary_plot(df, group="column-name")
  summary_plot(df, group="column-name", split_widnow="column")
  ```

  ```py
  from yasiu_vis.keras import plotLayersWeights
  from matpotlib import pyplot as plt
  import keras

  model : keras.models.Sequential
  plotLayersWeights(model.layers)
  plt.show()
  ```


  [1. Native Package](https://pypi.org/project/yasiu-native/)

  [2. Math Package](https://pypi.org/project/yasiu-math/)

  [3. Image Package](https://pypi.org/project/yasiu-image/)

  [4. Visualisation Package](https://pypi.org/project/yasiu-vis/)


pkgId: 35425b47404863072b3c5a6515e6ac2d457feb348fbfc41b3ce35a343cbca144
name: python-yayawallet-python-sdk-help
arch: noarch
version: 0.3.0
epoch: 0
release: 1
summary: Development documents and examples for yayawallet-python-sdk
url: https://pypi.org/project/yayawallet-python-sdk/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yayawallet-python-sdk-0.3.0-1.src.rpm
location_href: Packages/python-yayawallet-python-sdk-help-0.3.0-1.noarch.rpm
checksum_type: sha256
description:
  This is a Python SDK package for handling API integration on merchant application.


  To install the sdk to your python based application, add
  ```
  yayawallet-python-sdk==VERSION
  ```
  to the requirements.txt file on your python project. Then run 'pip install -r requirements.txt'.


  The sdk expects api credentials to be provided by the user. To set it up, you need to create a .env file and add the following environment variables:
  ```
  YAYA_API_URL=https://yayawallet.com/api/en
  YAYA_API_PATH=/api/en
  YAYA_API_KEY=your_yayawallet_api_key
  YAYA_API_SECRET=your_yayawallet_api_secret
  ```

  You can find the last two credentials on https://yayawallet.com/en/profile/settings, after you logged in to your account on a browser.


  This sdk provides functions that will call different apis available on YaYa's system. Here is how you can call ```getTransactionListByUser``` function:
  ```
  from adrf.decorators import api_view
  from rest_framework.response import Response
  from yayawallet_python_sdk.api import transaction

  @api_view(['GET'])
  async def proxy_get_transaction_list_by_user(request):
      response = await transaction.get_transaction_list_by_user(None)
      return Response(response)
  ```

  You can get the list of services available on ```yayawallet_python_sdk/api``` folder on this repo.


pkgId: be51698ebdcb988b24f950b4877e6b0ef23b46ccc7fedd85716952b95992bd6a
name: python-ydb-dbapi-help
arch: noarch
version: 0.1.6
epoch: 0
release: 1
summary: Development documents and examples for ydb-dbapi
url: https://github.com/ydb-platform/ydb-python-dbapi/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ydb-dbapi-0.1.6-1.src.rpm
location_href: Packages/python-ydb-dbapi-help-0.1.6-1.noarch.rpm
checksum_type: sha256
description:
  Python DBAPI to `YDB`, which provides both sync and async drivers and complies with [PEP249](https://www.python.org/dev/peps/pep-0249/).



  ```shell
  pip install ydb-dbapi
  ```



  To establish a new DBAPI connection you should provide `host`, `port` and `database`:

  ```python
  import ydb_dbapi

  connection = ydb_dbapi.connect(
      host="localhost", port="2136", database="/local"
  ) # sync connection

  async_connection = await ydb_dbapi.async_connect(
      host="localhost", port="2136", database="/local"
  ) # async connection
  ```

  Usage of connection:

  ```python
  with connection.cursor() as cursor:
      cursor.execute("SELECT id, val FROM table")

      row = cursor.fetchone()
      rows = cursor.fetchmany(size=5)
      rows = cursor.fetchall()
  ```

  Usage of async connection:

  ```python
  async with async_connection.cursor() as cursor:
      await cursor.execute("SELECT id, val FROM table")

      row = await cursor.fetchone()
      rows = await cursor.fetchmany(size=5)
      rows = await cursor.fetchall()
  ```


pkgId: a61999cc67f86c6a486c11cde56f14f78ad21931696acdb25d5f31eb7630e960
name: python-ydb-sqlalchemy-help
arch: noarch
version: 0.1.4
epoch: 0
release: 1
summary: Development documents and examples for ydb-sqlalchemy
url: http://github.com/ydb-platform/ydb-sqlalchemy
rpm_license: Apache 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ydb-sqlalchemy-0.1.4-1.src.rpm
location_href: Packages/python-ydb-sqlalchemy-help-0.1.4-1.noarch.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/ydb-platform/ydb-sqlalchemy/blob/main/LICENSE)
  [![Functional tests](https://github.com/ydb-platform/ydb-sqlalchemy/actions/workflows/tests.yml/badge.svg)](https://github.com/ydb-platform/ydb-sqlalchemy/actions/workflows/tests.yml)
  [![Style checks](https://github.com/ydb-platform/ydb-sqlalchemy/actions/workflows/style.yml/badge.svg)](https://github.com/ydb-platform/ydb-sqlalchemy/actions/workflows/style.yml)
  This repository contains YQL dialect for SqlAlchemy 2.0.
  **Note**: Dialect also works with SqlAlchemy 1.4, but it is not fully tested.

  To work with current ydb-sqlalchemy version clone this repo and run from source root:
  ```bash
  $ pip install -U .
  ```

  Connect to local YDB using SqlAlchemy:
  ```python3
  import sqlalchemy as sa
  engine = sa.create_engine("yql+ydb://localhost:2136/local")
  with engine.connect() as conn:
    rs = conn.execute(sa.text("SELECT 1 AS value"))
    print(rs.fetchone())
  ```


  Run the command from the root directory of the repository to start YDB in a local docker container.
  ```bash
  $ docker-compose up
  ```
  To run all tests execute the command from the root directory of the repository:
  ```bash
  $ tox -e test-all
  ```
  Run specific test:
  ```bash
  $ tox -e test -- test/test_core.py
  ```
  Check code style:
  ```bash
  $ tox -e style
  ```
  Reformat code:
  ```bash
  $ tox -e isort
  $ tox -e black-format
  ```
  Run example (needs running local YDB):
  ```bash
  $ python -m pip install virtualenv
  $ virtualenv venv
  $ source venv/bin/activate
  $ pip install -r requirements.txt
  $ python examples/example.py
  ```


pkgId: 9b0a4106429d3eb09192361637e4a89cbded845e02c93ad093aa11fff376410d
name: python-ydl-podcast-help
arch: noarch
version: 1.7.10
epoch: 0
release: 1
summary: Development documents and examples for ydl-podcast
url: https://github.com/nbr23/ydl-podcast
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ydl-podcast-1.7.10-1.src.rpm
location_href: Packages/python-ydl-podcast-help-1.7.10-1.noarch.rpm
checksum_type: sha256
description:
  [![Pypi Version Shield](https://img.shields.io/pypi/v/ydl-podcast.svg?style=flat-square)](https://pypi.org/project/ydl-podcast/)
  [![Pypi License Shield](https://img.shields.io/pypi/l/ydl-podcast.svg?style=flat-square)](https://pypi.org/project/ydl-podcast/)



  A simple tool to generate Podcast-like RSS feeds from youtube (or other
  youtube-dl supported services) channels, using
  [`youtube-dl`](https://github.com/rg3/youtube-dl).



  Install package with requirements:



  `pip install ydl-podcast[youtube-dl]`



  `pip install ydl-podcast[yt-dlp]`



  Edit the config.yaml file to list your podcast sources and configure them,
  as well as edit general configuration.

  [Example config file](config.sample.yaml)

  The available settings are the following.



  - `output_dir`: local directory where the downloaded media will be stored, and
    the podcast xml files generated.
  - `url_root`: root url for the static files (used in the generation of the XML
    to point to the media files.
  - `subscriptions`: a list of feeds to subscribe to.
  - `youtube-dl-module`: Alternative youtube-dl python module. By default, this
  uses [youtube-dl](https://github.com/rg3/youtube-dl), but can leverage forks
  such as [yt-dlp](https://github.com/yt-dlp/yt-dlp).




  - `name NAME`: Name of the podcast source. Used as the podcast title, and media
    directory name.
  - `url URL`: source url for the youtube (or other) channel.


  - `audio_only True/False`: if `True`, audio will be extracted from downloaded
    videos to create an audio podcast.
  - `retention_days N`: only download elements newer than `N` days, and
    automatically delete elements older.
  - `download_last N`: only download the latest `N` videos.
  - `initialize True/False`: if `True`, then downloads everything on the first
    run, no matter the `download_last` or `retention_days` specified.
  - `output_dir`: local directory where the downloaded media will be stored, and
    the podcast xml files generated.
  - `url_root`: root url for the static files (used in the generation of the XML
    to point to the media files.
  - `format`: file format to force youtube-dl to use (eg mp4, webm, mp3 for audio
    only…)
  - `best`: force best quality (only useful when specifying a format).
  - `ydl_options`: list of raw youtube-dl options to use. For experienced users,
    since this will likely yield issues if not understood.
  - `nfo_files`: generates nfo files for subscriptions and downloaded episodes (simulates a "tvshow" nfo for the subscription and "tvshow episode" for each video). This helps plex, kodi, jellyfin import correct metadata. Does NOT support `audio_only` feeds at this point.
  - `skip_download`: Don't perform download, just generate the Atom feed from the existing files. Mandatory `url` parameter can be skipped if `skip_download` is set to `true`
  - `download_as_playlist`: Pass the url to the downloader directly, without processing the metadata of each item in the playlist. This is helpful with generic urls, and a few specific extractors.



  Using cron or your favorite scheduler, run:

  `ydl-podcast [-c configfile.yaml]`

  You can then use your favorite web server to serve the files (a good idea is to
  exclude the `*.json` and `*.part` files from being served as the first might
  leak information, and the second is unnecessary.

  eg with nginx:

  ```
  root /var/www/static/podcasts/;
  location ~ (\.json$|\.part$) {
    return 403;
  }
  ```



  ```bash
  usage: ydl-podcast [-h] [-v] [-c CONFIG] [-j JSON_CONFIG] [-f FILTER] [-e EXCLUDE]

  options:
    -h, --help            show this help message and exit
    -v, --version         Show version and exit
    -c CONFIG, --config CONFIG
                          Configuration file
    -j JSON_CONFIG, --json-config JSON_CONFIG
                          Configuration string in JSON format
    -f FILTER, --filter FILTER
                          Filter subscriptions
    -e EXCLUDE, --exclude EXCLUDE
                          Exclude subscriptions
  ```


pkgId: 478b16118edff47db56c13441f2180dc7d9094ce748012bdb11e13e2d7bdc075
name: python-ydne-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for ydne
url: https://github.com/satrijandi24/ydne
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ydne-0.1.0-1.src.rpm
location_href: Packages/python-ydne-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  Ydne is a Python library containing a collection of data science utilities to streamline data preprocessing, analysis, and visualization.



  - Data Cleaning
  - Outlier Detection
  - Feature Scaling
  - Missing Value Handling
  - Correlation Visualization
  - Distribution Plotting



  ```bash
  pip install ydne
  ```





  ```python
  from ydne.preprocessing import DataPreprocessor


  scaled_features = DataPreprocessor.scale_features(X, method='standard')


  processed_df = DataPreprocessor.handle_missing_values(your_dataframe)
  ```



  Contributions are welcome! Please feel free to submit a Pull Request.



  This project is licensed under the MIT License.


pkgId: 8c1b70b6f87e097dfead2e48bdd38a4bd142bacae8f9b82ac11780d318215166
name: python-yellowdog-python-examples-help
arch: noarch
version: 7.11.19
epoch: 0
release: 1
summary: Development documents and examples for yellowdog-python-examples
url: https://github.com/yellowdog/python-examples
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yellowdog-python-examples-7.11.19-1.src.rpm
location_href: Packages/python-yellowdog-python-examples-help-7.11.19-1.noarch.rpm
checksum_type: sha256
description:
  This is a set of command line Python scripts for interacting with the YellowDog Platform, providing examples of usage of the [YellowDog Python SDK](https://docs.yellowdog.co/api/python/index.html).

  The command scripts support:

  - **Provisioning** Worker Pools with the **`yd-provision`** command
  - **Submitting** Work Requirements with the **`yd-submit`** command
  - **Starting** HELD Work Requirements and **Holding** (or pausing) RUNNING Work Requirements with the **`yd-start`** and **`yd-hold`** commands
  - **Uploading** files to the YellowDog Object Store with the **`yd-upload`** command
  - **Instantiating** Compute Requirements with the **`yd-instantiate`** command
  - **Downloading** Results from the YellowDog Object Store with the **`yd-download`** command
  - **Aborting** running Tasks with the **`yd-abort`** command
  - **Cancelling** Work Requirements with the **`yd-cancel`** command
  - **Shutting Down** Worker Pools with the **`yd-shutdown`** command
  - **Terminating** Compute Requirements with the **`yd-terminate`** command
  - **Deleting** objects in the YellowDog Object Store with the **`yd-delete`** command
  - **Listing** YellowDog items using the **`yd-list`** command
  - **Resizing** Worker Pools and Compute Requirements with the **`yd-resize`** command
  - **Boosting** Allowances with the **`yd-boost`** command
  - **Creating, Updating and Removing** Source Templates, Compute Templates, Keyrings, Credentials, Namespace Storage Configurations, Image Families, Allowances, and Configured Worker Pools with the **`yd-create`** and **`yd-remove`** commands
  - **Following Event Streams** for Work Requirements, Worker Pools and Compute Requirements with the **`yd-follow`** command
  - **Showing** the details of any YellowDog entity by its YellowDog ID with the **`yd-show`** command

  Please see the documenation in the [GitHub repository](https://github.com/yellowdog/python-examples) for more details.


pkgId: c7f6fa3daa7a73ebd93ef12cb8ea9e474529f2ebefacd1bd678d9f07ed70f954
name: python-yfinance-help
arch: noarch
version: 0.2.51
epoch: 0
release: 1
summary: Development documents and examples for yfinance
url: https://github.com/ranaroussi/yfinance
rpm_license: Apache
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yfinance-0.2.51-1.src.rpm
location_href: Packages/python-yfinance-help-0.2.51-1.noarch.rpm
checksum_type: sha256
description:
  **Yahoo!, Y!Finance, and Yahoo! finance are registered trademarks of
  Yahoo, Inc.**
  yfinance is **not** affiliated, endorsed, or vetted by Yahoo, Inc. It's
  an open-source tool that uses Yahoo's publicly available APIs, and is
  intended for research and educational purposes.
  **You should refer to Yahoo!'s terms of use**
  ([here](https://policies.yahoo.com/us/en/yahoo/terms/product-atos/apiforydn/index.htm),
  [here](https://legal.yahoo.com/us/en/yahoo/terms/otos/index.html), and
  [here](https://policies.yahoo.com/us/en/yahoo/terms/index.htm)) **for
  details on your rights to use the actual data downloaded. Remember - the
  Yahoo! finance API is intended for personal use only.**


pkgId: d87824a21b39a2039071a6828db383ff530deabebd819c406d06c189d5954050
name: python-yippy-help
arch: noarch
version: 1.7.0
epoch: 0
release: 1
summary: Development documents and examples for yippy
url: https://github.com/CoreySpohn/yippy
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yippy-1.7.0-1.src.rpm
location_href: Packages/python-yippy-help-1.7.0-1.noarch.rpm
checksum_type: sha256
description:
  A wrapper to create a coronagraph object from a yield input package (a "YIP").
  A core feature is its ability to use Fourier interpolation to generate off axis
  PSFs at arbitrary locations in the (x,y) plane efficiently.
  `yippy` uses [JAX](https://jax.readthedocs.io/en/latest/) to speed up
  computation by default, with an optional Python backend.

  ```bash
  pip install yippy
  ```

  Typical use will look like
  ```python
  from lod_unit import lod
  from yippy import Coronagraph

  coro = Coronagraph("input/LUVOIR_VVC")

  x_pos = 2 * lod # 2 lambda/D
  y_pos = 5 * lod # 5 lambda/D
  offaxis_psf = coro.offax(x_pos, y_pos)

  stellar_diameter = 1*lod
  stellar_intensity = coro.stellar_intensity(stellar_diameter)

  sky_trans = coro.sky_trans()
  ```

  Yield input packages use $`\lambda / D`$ units so `yippy` treats them
  as the default and uses the `lod_unit` package to define the `lod` unit. However,
  it can use three different `astropy` units: pixels (as defined by the yield
  input package), angular separation (angle units), or apparent separation
  (length units). If no units are provided it assumes the input is in $`\lambda / D`$.
  ```python
  import astropy.units as u

  x_pos = 2 * u.pix
  y_pos = 5 * u.pix
  offaxis_psf = aplc.offax(x_pos, y_pos)

  telescope_diameter = 10 * u.m
  wavelength = 500 * u.nm
  offaxis_psf = aplc.offax(x_pos, y_pos, lam=wavelength, D=telescope_diameter)

  star_dist = 10 * u.pc
  offaxis_psf = aplc.offax(x_pos, y_pos, lam=wavelength, D=telescope_diameter, dist=star_dist)
  ```

  The default backend is JAX, which is a high-performance numerical computing library
  that we use for JIT compilation and GPU/TPU support. By default, JAX uses 32-bit
  floating point precision, which leads to faster computation and lower memory overhead
  but results in lower precision (~1e-6 precision). If you need precision at the
  1e-16 level, set `use_x64=True`.

  - `use_jax`: Use JAX for computation. Default is `True`.
  - `use_x64`: Use 64-bit floating point precision. Default is `False`.
  - `x_symmetric`: Off-axis PSF is symmetric about the x-axis. Default is `True`.
  - `y_symmetric`: Off-axis PSF is symmetric about the y-axis. Default is `False`.
  - `cpu_cores`: Number of CPU cores to use. Default is `1`.
  - `platform`: Computing platform to use for JAX computation. Options are `cpu`, `gpu`, `tpu`. Default is `cpu`.

  The base call of `coronagraph.offax(x,y)` is the most user-friendly, but is not
  the most efficient. When generating many PSFs it is recommended to convert all
  required (x,y) positions into arrays of floats (in $`\lambda / D`$) and use the
  `coronagraph.offax.create_psfs_parallel(x_arr, y_arr)` function. This function
  uses JAX's `shard_map` to distribute the computation across multiple devices or
  CPU cores.

rpm_license:
  MIT License  Copyright (c) 2024 Corey Spohn  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: a8d6098994bb189a828edeceaa352c886d1f17b8ea6ab1deea91a8ae865882a5
name: python-yoflo-help
arch: noarch
version: 0.9.1
epoch: 0
release: 1
summary: Development documents and examples for yoflo
url: https://github.com/CharlesCNorton/yoflo-cli
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yoflo-0.9.1-1.src.rpm
location_href: Packages/python-yoflo-help-0.9.1-1.noarch.rpm
checksum_type: sha256
description:
  YOFLO-CLI is a command-line interface for the YO-FLO package, providing advanced object detection and binary inference capabilities using the Florence-2 vision-language model in real-time. This tool leverages state-of-the-art vision models to perform tasks such as object detection and binary inference based on referring expression comprehension.





  Identify and classify objects within a video feed. You can specify class names or display all detections if no class names are provided. Unlike traditional models limited to a fixed set of classes (e.g., COCO dataset), Florence-2 can detect an expansive array of objects due to its advanced vision-language capabilities. While it may be slower than models like YOLO for pure object detection, it excels when natural language processing (NLP) logic is required, allowing it to handle tasks that require understanding and reasoning about the visual input.



  Answer yes/no questions based on the visual input. This feature leverages Florence-2’s ability to understand complex visual scenes and provide binary responses, making it ideal for simple decision-making tasks. For example, it can answer questions like "Is the person smiling?" by analyzing the visual input in real-time.



  Evaluate multiple inferences and determine overall results based on a sequence of phrases. This allows for a more comprehensive context analysis within individual frames by examining multiple aspects of the scene. For example, to determine if a person is working, you might check if their eyes are open, their hands are on the keyboard, and they are facing the computer. This feature addresses the limitation that newer and smaller vision-language models are capable of answering simple questions, but not compound ones.



  Measure the rate of inferences per second. This feature helps monitor the performance of the system and optimize for real-time processing, providing insights into how efficiently the model processes visual data.



  Process video feeds from a webcam in real-time. This enables immediate analysis and response to visual input, which is crucial for applications such as surveillance, live monitoring, and interactive systems.



  Automatically capture and save a screenshot when a target object is detected. This feature is useful for logging and reviewing detections, providing a visual record of the events.



  Log detection events to a file. This creates a persistent record of detection events, which is useful for auditing, analysis, and troubleshooting. Detection events will be logged to a file named `alerts.log`.



  Run the tool without displaying the video feed, suitable for server environments or automated systems where a display is not necessary. This mode is useful for running on servers or in background processes. Enabling this mode should result in an ~20% increase in inference speed.



  Enable formatted output of detections for better readability. This makes it easier to interpret the results, especially when monitoring the output in real-time.



  Option to download the Florence-2 model directly from the Hugging Face Hub. This simplifies the setup process by automating the model download and initialization.



  Support for multiple webcams, allowing concurrent processing and inference on multiple video feeds. This is useful for surveillance systems, multi-view analysis, and other applications requiring inputs from several cameras.



  Added video recording functionality with conditions to trigger recording based on object detection and inference results. This feature allows capturing video segments of interest for further analysis or documentation.



  This tool uses Microsoft's Florence-2, a powerful vision-language model designed to understand and generate detailed descriptions of visual inputs. Florence-2 combines advanced image processing with natural language understanding, making it ideal for complex tasks that require both visual and textual analysis. Florence-2 uses a unified sequence-to-sequence architecture to handle tasks from image-level understanding to fine-grained visual-semantic alignment. The model is trained on a large-scale, high-quality multitask dataset FLD-5B, which includes 126M images and billions of text annotations.





  1. Clone the repository:
      ```sh
      git clone https://github.com/CharlesCNorton/yoflo-cli.git
      cd yoflo-cli
      ```

  2. Install the package:
      ```sh
      pip install .
      ```



  You can also install YOFLO-CLI directly from PyPI:
  ```sh
  pip install yoflo
  ```



  Run the script with the desired arguments. Below are the available flags and their descriptions:



  - `-mp`, `--model_path`: Path to the pre-trained model directory. Specify the directory where the Florence-2 model is located. This flag is mandatory if the model is not being downloaded.
  - `-od`, `--object_detection`: Enable object detection. Optionally, you can specify class names to detect (e.g., `"cat"`, `"dog"`). If no class names are provided, all detections will be displayed.
  - `-ph`, `--phrase`: Enable binary inference with a yes/no question based on the visual input. For example, "Is the person smiling?". This flag initiates the expression comprehension feature of the tool.
  - `-hl`, `--headless`: Run in headless mode without displaying the video feed. This mode is useful for server environments or situations where a display is not available or necessary.
  - `-ss`, `--screenshot`: Enable screenshot on detection. When a target object is detected, a screenshot will be automatically captured and saved with a timestamped filename.
  - `-lf`, `--log_to_file`: Enable logging of detection events to a file. Detection events will be logged to a file named `alerts.log`, creating a persistent record of detection events.
  - `-is`, `--display_inference_speed`: Display inference speed. This flag logs the rate of inferences per second, providing insight into the performance of the detection process.
  - `-dm`, `--download_model`: Download the Florence-2 model from the Hugging Face Hub. This option can be used to download and initialize the model if it is not already available locally.
  - `-pp`, `--pretty_print`: Enable pretty print for detections. This flag formats the output of detections for better readability, making it easier to interpret the results.
  - `-il`, `--inference_limit`: Limit the inference rate to a specified number of inferences per second. This can help manage performance and ensure the system is not overloaded, providing a smoother operation.
  - `-ic`, `--inference_chain`: Enable inference chain with specified phrases. Provide phrases in quotes, separated by spaces (e.g., `"Is it sunny?" "Is it raining?"`).
  - `-wi`, `--webcam_indices`: Specify the indices of the webcams to use (e.g., `0 1 2`). If not provided, the first webcam (index 0) will be used by default.
  - `-rtsp`, `--rtsp_urls`: Specify the RTSP URLs for the video streams.
  - `-r`, `--record`: Enable video recording and specify the recording mode: 'od' to start/stop based on object detection, 'infy' to start on 'yes' inference and stop on 'no', and 'infn' to start on 'no' inference and stop on 'yes'.





  The inference chain feature allows you to evaluate multiple inferences and determine an overall result based on a sequence of phrases. This capability leverages the power of the Florence-2 model to handle more complex logic that requires analyzing multiple aspects of the visual input.



  Vision-language models like Florence-2 examine each frame in isolation and can only answer simple, specific questions. By using an inference chain, you can string together multiple simple questions to examine more features and derive a more comprehensive understanding of the context. For example, asking the model if someone is sleeping isn't reliable just by the state of their eyelids; other context such as their posture or presence of a pillow is necessary.



  Imagine you want to determine if a person is working. This might involve checking several conditions:

  1. Is the person sitting?
  2. Is the person typing?
  3. Is the person awake?

  The inference chain feature allows you to evaluate multiple inferences and determine an overall result based on a sequence of phrases. By setting up an inference chain with these phrases, the system can evaluate each condition separately and provide an overall result based on the combined outcomes. This capability leverages the power of YO-FLO to process more complex logic than Florence-2 could on its own.



  To use the inference chain feature, specify the `--inference_chain` flag followed by the phrases you want to evaluate. Each phrase should be enclosed in quotes and separated by spaces.


  ```sh
  python yoflo.py --model_path /path/to/Florence-2-base-ft --inference_chain "Is the person wearing glasses?" "Is the person wearing headphones?" "Is the person smiling?" --headless --display_inference_speed
  ```




  To perform object detection and only display detections for specific classes such as `"person"`:
  ```sh
  python yoflo.py --model_path /path/to/Florence-2-base-ft --object_detection "person"
  ```


  To perform binary inference based on a yes/no question related to the visual input:
  ```sh
  python yoflo.py --model_path /path/to/Florence-2-base-ft --phrase "Is the person smiling?"
  ```


  To perform a sequence of inferences and determine overall results:
  ```sh
  python yoflo.py --model_path /path/to/Florence-2-base-ft --inference_chain "Is the person wearing glasses?" "Is the

   person wearing headphones?" "Is the person smiling?" --headless --display_inference_speed
  ```


  To run the tool in headless mode without displaying the video feed:
  ```sh
  python yoflo.py --model_path /path/to/Florence-2-base-ft --object_detection "person" --headless
  ```


  To enable screenshot capture whenever a target object is detected:
  ```sh
  python yoflo.py --model_path /path/to/Florence-2-base-ft --object_detection "person" --screenshot
  ```


  To log detection events to a file named `alerts.log`:
  ```sh
  python yoflo.py --model_path /path/to/Florence-2-base-ft --object_detection "person" --log_to_file
  ```


  To log and display the inference speed (inferences per second):
  ```sh
  python yoflo.py --model_path /path/to/Florence-2-base-ft --object_detection "person" --display_inference_speed
  ```


  To download the Florence-2 model from the Hugging Face Hub:
  ```sh
  python yoflo.py --download_model
  ```


  To enable formatted output of detections for better readability:
  ```sh
  python yoflo.py --model_path /path/to/Florence-2-base-ft --object_detection "person" --pretty_print
  ```


  To limit the inference rate to a specified number of inferences per second, for example, 5 inferences per second:
  ```sh
  python yoflo.py --model_path /path/to/Florence-2-base-ft --object_detection "person" --inference_limit 5
  ```


  To use multiple webcams for object detection or inference:
  ```sh
  python yoflo.py --model_path /path/to/Florence-2-base-ft --object_detection "person" --webcam_indices 0 1 --inference_limit 3
  ```


  To enable video recording based on object detection or inference results:
  ```sh
  python yoflo.py --model_path /path/to/Florence-2-base-ft --object_detection "person" --record od
  ```



  1. **Operating System**:
     - **Ubuntu 22.04** (or compatible Linux distribution)
     - **Windows 11** (Takes a lot of work, but it can be done!)

  2. **Minimum Hardware**:
     - **CPU**: Intel Core i7
     - **GPU**:  16 GB VRAM
     - **RAM**:  32 GB RAM
     - **Camera**: USB camera connected

  3. **Python Version**:
     - **Python 3.10**

  4. **CUDA Version**:
     - **CUDA 12.1**

  5. **Environment Variables**:
     - Set the following in your `~/.bashrc` or equivalent:
       ```bash
       export CUDA_HOME=/usr/local/cuda
       export PATH=$CUDA_HOME/bin:$PATH
       export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
       source ~/.bashrc
       ```

  6. **Required Python Packages**:
     - `torch`
     - `transformers>=4.38.0`
     - `Pillow`
     - `numpy`
     - `opencv-python`
     - `huggingface-hub`
     - `datasets`
     - `flash-attn`



  YOFLO-CLI has been successfully converted into a full Python package and is available on PyPI. The package currently supports object detection, binary inference based on referring expression comprehension, as well as inference trees consisting of multiple phrases. Future updates will focus on optimizations and adding new features as the project evolves.



  Contributions are welcome! Please fork the repository and submit a pull request with your changes. Make sure to follow the existing code style and add tests for any new features or bug fixes.



  This project is licensed under the MIT License.



  - The Florence-2 model is developed by Microsoft and is available on the Hugging Face Model Hub.
  - This project uses several open-source libraries, including PyTorch, Transformers, OpenCV, Pillow, and NumPy.


pkgId: 2d3344dbd1240001a596c3284442fcb0f554f89f58a2a47486001b18aa2b47b2
name: python-yolo-pyutils-help
arch: noarch
version: 0.1.40
epoch: 0
release: 1
summary: Development documents and examples for yolo-pyutils
url: https://github.com/TaoYang526/yolo-pyutils
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yolo-pyutils-0.1.40-1.src.rpm
location_href: Packages/python-yolo-pyutils-help-0.1.40-1.noarch.rpm
checksum_type: sha256
description:
  yolo-pyutils provides utility functions for IO, data-processing, scheduling, common structures etc.


  ```shell
  pip install yolo-pyutils
  ```

  Requirements:
  * Python 3.6 or higher


pkgId: 41aaf01adee67d449afdc875aa24917e9367d5b17d6bd423a80ff2a1bf0c894f
name: python-yookassa-help
arch: noarch
version: 3.4.3
epoch: 0
release: 1
summary: Development documents and examples for yookassa
url: https://git.yoomoney.ru/projects/SDK/repos/yookassa-sdk-python
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yookassa-3.4.3-1.src.rpm
location_href: Packages/python-yookassa-help-3.4.3-1.noarch.rpm
checksum_type: sha256
description:
  [![Build Status](https://travis-ci.org/yoomoney/yookassa-sdk-python.svg?branch=master)](https://travis-ci.org/yoomoney/yookassa-sdk-python)
  [![Latest Stable Version](https://img.shields.io/pypi/v/yookassa.svg)](https://pypi.org/project/yookassa/)
  [![Total Downloads](https://img.shields.io/pypi/dm/yookassa.svg)](https://pypi.org/project/yookassa/)
  [![License](https://img.shields.io/pypi/l/yookassa.svg)](https://git.yoomoney.ru/projects/SDK/repos/yookassa-sdk-python)

  [Russian](README.md) | English

  This product is used for managing payments under [The YooKassa API](https://yookassa.ru/en/developers/api)
  For usage by those who implemented YooKassa using the API method.



  * Version 3.x supports Python >=3.7. To work on earlier versions of Python, use versions of yookassa 2.x
  * Changing the directory/file structure affected some package imports. When switching from the version of yookassa 2.x, check the imports in your project:
    * `yookassa.domain.models.airline` → `yookassa.domain.models.payment_data.request.airline`
    * `yookassa.domain.models.authorization_details` → `yookassa.domain.models.payment_data.response.authorization_details`
    * `yookassa.domain.models.receipt_customer` → `yookassa.domain.models.receipt_data.receipt_customer`
    * `yookassa.domain.models.receipt_item` → `yookassa.domain.models.receipt_data.receipt_item`
    * `yookassa.domain.models.receipt_item_supplier` → `yookassa.domain.models.receipt_data.receipt_item_supplier`
    * `yookassa.domain.models.recipient` → `yookassa.domain.models.payment_data.recipient`
    * `yookassa.domain.models.refund_source` → `yookassa.domain.models.refund_data.refund_source`
  * `Settings.get_account_settings()` now returns the `Me` object. To support compatibility, object fields can be accessed as an array - `me.account_id = me['account_id']`
  * The `me.fiscalization_enabled` field is deprecated, but it is still supported. The `me.fiscalization` object has been added instead..


  1. Python >=3.7
  2. pip




  1. Install pip.
  2. In the console, run the following command:
  ```bash
  pip install --upgrade yookassa
  ```


  1. Install easy_install.
  2. In the console, run the following command:
  ```bash
  easy_install --upgrade yookassa
  ```



  1. Import module
  ```python
  import yookassa
  ```

  2. Configure a Client
  ```python
  from yookassa import Configuration

  Configuration.configure('<Account Id>', '<Secret Key>')
  ```

  or

  ```python
  from yookassa import Configuration

  Configuration.account_id = '<Account Id>'
  Configuration.secret_key = '<Secret Key>'
  ```

  or via oauth

  ```python
  from yookassa import Configuration

  Configuration.configure_auth_token('<Oauth Token>')
  ```

  If you agree to participate in the development of the SDK, you can submit data about your framework, cms or module:

  ```python
  from yookassa import Configuration
  from yookassa.domain.common.user_agent import Version

  Configuration.configure('<Account Id>', '<Secret Key>')
  Configuration.configure_user_agent(
      framework=Version('Django', '2.2.3'),
      cms=Version('Wagtail', '2.6.2'),
      module=Version('Y.CMS', '0.0.1')
  )
  ```

  3. Call the required API method. [More details in our documentation for the YooKassa API](https://yookassa.ru/en/developers/api)


pkgId: 4e3ce5d558c33a9a2f29047e270ae0e767ecc427b87da5fb4fbf4c7e17c12dbb
name: python-youqu-playbook-help
arch: noarch
version: 2024.12.22
epoch: 0
release: 1
summary: Development documents and examples for youqu-playbook
url: https://pypi.org/project/youqu-playbook/
rpm_license: GPL2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-youqu-playbook-2024.12.22-1.src.rpm
location_href: Packages/python-youqu-playbook-help-2024.12.22-1.noarch.rpm
checksum_type: sha256
description:
  YouQu 任务调度系统



  ```bash
  pip3 install youqu-playbook
  ```



  ```bash
  playbook -p path/to/json/file.json


  export PATH=$PATH:$HOME/.local/bin
  ```



  JSON 配置示例：
  ```json
  {
    "apps": [
      {
        "app_name": "autotest_dde_file_manager",
        "git_url": "git_url",
        "git_branch": "at-develop/eagle",
        "framework": "youqu2",
        "split_run": true,
        "order": 1,
        "device": "USB"
      },
      {
        "app_name": "kernel",
        "git_url": "git_url",
        "git_branch": "at-develop/v25",
        "framework": "youqu3",
        "split_run": false,
        "order": 2,
        "device": null
      },
      ...
    ],
    "clients": [
      {
        "host": "uos@10.8.xx.xx",
        "device": "USB"
      },
      {
        "host": "uos@10.8.xx.xx",
        "device": null
      },
      ...
    ],
    "tags": "xxxx",
    "task_id": "xxxx",
    "json_backfill_base_url": "xxxx",
    "json_backfill_user": "xxxx",
    "json_backfill_password": "xxxx",
    "pms_task_id": "xxxx",
    "pms_user": "xxxx",
    "pms_password": "xxxx"
  }
  ```

  说明：
  - `apps`: 应用列表，用于指定运行应用的应用。
    - `app_name`: 应用名称，对应 `app_name` 字段，用于区分应用，例如 `autotest_dde_file_manager`。
    - `git_url`: 应用 Git 仓库地址，用于下载应用代码。检查 `git_url` 是否正确，可以通过 `git clone ${git_url}` 命令进行验证。
    - `git_branch`: 应用 Git 分支，用于下载应用代码，例如 `at-develop/eagle`。
    - `framework`: 应用框架，用于区分应用框架，可选值有 `youqu2` 和 `youqu3`，分别对应 `youqu2` 和 `youqu3` 框架。
    - `split_run`: 是否启用多线程运行，boolean 类型， 默认为 `false`。
    - `order`: 应用运行顺序，int 类型，默认为 1。
    - `device`: 外设标签
  - `clients`: 客户端列表，用于指定运行应用的客户端。
  - `tags`: 任务标签，用于区分任务。
  - `task_id`: 任务 ID，用于区分任务。
  - `json_backfill_base_url`: 数据回填地址。
  - `json_backfill_user`: 数据回填用户名。
  - `json_backfill_password`: 数据回填密码。
  - `pms_task_id`: PMS 任务 ID，用于获取任务。
  - `pms_user`: PMS 用户名，用于获取任务。
  - `pms_password`: PMS 密码，用于获取任务。



  ![](./images/playbook.png)


pkgId: 20cb7cb48d62c6a9b8fbb6cf7a9a038750e408594b40e4fb00d4f3b15f17c94f
name: python-youtube-bulk-upload-help
arch: noarch
version: 0.4.2
epoch: 0
release: 1
summary: Development documents and examples for youtube-bulk-upload
url: https://github.com/beveradb/youtube-bulk-upload
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-youtube-bulk-upload-0.4.2-1.src.rpm
location_href: Packages/python-youtube-bulk-upload-help-0.4.2-1.noarch.rpm
checksum_type: sha256
description:
  ![PyPI - Version](https://img.shields.io/pypi/v/youtube-bulk-upload)

  **YouTube Bulk Upload** is a tool to facilitate the bulk uploading of video files to YouTube. This can be particularly useful for repopulating a channel after it has been unfairly terminated or when migrating content. The tool offers both a Command Line Interface (CLI) and a Graphical User Interface (GUI) to cater to different user preferences.

  <img src="images/logo-nopadding.png" alt="YouTube Bulk Upload Logo" height="100">


  - Bulk upload videos to YouTube from a specified directory.
  - Customize video metadata, including titles, descriptions, and keywords.
  - Dry run mode to preview actions without making changes.
  - Non-interactive mode for automated processes.
  - Support for thumbnail customization.



  YouTube Bulk Upload provides a Graphical User Interface (GUI) that can be launched from a stand-alone executable.

  The GUI allows you to configure all the options available and use the tool through a (somewhat) user-friendly interface.

  Download the executable (`.exe` or `.dmg`) for your operating system from the [Releases page](https://github.com/beveradb/youtube-bulk-upload/releases).



  Double-click the `.dmg` file to run the installer. Install the application by dragging the icon to your Applications folder:

  <img src="images/YouTubeBulkUpload-v0.3.4-Mac-GUI-Installer.png" alt="YouTube Bulk Upload GUI Example" height="300">

  Then run the application from your Applications folder as normal, it should look something like this:

  ![YouTube Bulk Upload GUI Example](images/YouTubeBulkUpload-v0.3.4-Mac-GUI-Example.png)



  Double-click the `.exe` file to run the application - it doesn't need to be installed first.

  Once it loads, it should look something like this:

  ![YouTube Bulk Upload GUI Example](images/YouTubeBulkUpload-v0.3.4-Windows-GUI-Example.png)



  To use this tool, you'll need an OAuth 2.0 Client Secret (JSON file) with scopes enabled for the YouTube Data API.
  This authenticates the app with Google's servers and allows you to interact with your own channel via the YouTube API.

  YouTube provide [these instructions](https://developers.google.com/youtube/registering_an_application) for how to do this, but those instructions aren't very detailed.



  Here's a screencast video demonstration of the instructions below:

  [![Video Demo: Creating a Client Secret](images/ClientSecretInstructionsVideoThumbnail.jpg)](https://www.youtube.com/watch?v=3Sor3kw3LX8)



  1) Log into the [Google Cloud Console](https://console.cloud.google.com) with your own Google Account. If you've never used GCP before, you'll probably need to click accept or something to enable it.

  2) Create a [Google Cloud project](https://console.cloud.google.com/projectcreate), if you don't already have one.

  3) Enable the [YouTube Data API](https://console.cloud.google.com/apis/library/youtube.googleapis.com). <img src="images/GCPEnableYouTubeDataAPI.png" alt="Enabling API client credential scopes" height="300">

  4) Configure the [OAuth Consent Screen](https://console.cloud.google.com/apis/credentials/consent/edit) with minimal details for "your app" such as name (e.g. "My YouTube Bulk Uploader") and your email address for both the "user support" and "developer contact", then click `Save and Continue`. <img src="images/GCPOAuthConsentScreenBasics.png" alt="GCP OAuth Consent Screen Basic Configuration" height="300">

  5) On the Scopes tab, click `Add or Remove Scopes`, select the "Manage your YouTube account" scope (`.../auth/youtube`) and click Update, then `Save and Continue`. <img src="images/GCPOAuthScopesYouTubeData.png" alt="GCP OAuth Consent Screen Scopes" height="300">

  6) On the `Test users`, add your own google account email address as a test user, then click `Save and Continue`. On the final confirmation screen, just click `Back to Dashboard`. <img src="images/GCPOAuthConsentScreenTestUsers.png" alt="GCP OAuth Consent Screen Test Users" height="300">

  7) From the [API Credentials](https://console.cloud.google.com/apis/credentials) page, click `Create Credentials` then `OAuth client ID`. Set the application type to `Desktop app` and give it a name, e.g. `My YouTube Bulk Uploader` <img src="images/GCPCreateOAuthClientID.png" alt="Creating OAuth client ID" height="300">

  8) Once you see the `OAuth client created` screen, click `Download JSON` - this is the file you should specify in the "Client Secret File" setting in the YouTube Bulk Upload GUI/CLI. <img src="images/GCPOAuthClientCreated.png" alt="Downloading OAuth client secret credentials JSON" height="300">




  👀 [Watch this tutorial video](https://youtu.be/9WklrdupZhg) for a better explanation and demonstration of how to use this tool.

  YouTube Bulk Upload helps you upload videos to YouTube in bulk from a single folder, with custom metadata derived from the video file names.

  Once you have a YouTube API client secret, you can point this tool at a directory of video files and it will upload them to YouTube, generating titles based on the filename, setting descriptions based on a template file, and optionally using a dedicated thumbnail image for each video in the same directory.

  I highly recommend testing it out with "Dry Run" enabled first, in which mode it will log exactly what it is doing but won't actually upload anything.

  Once you have confidence that your settings are correct and you're ready to execute it in bulk on a large number of files, tick the "Non-interactive" checkbox and it will no longer prompt you with popups asking for confirmation.

  The find/replace patterns for video titles, thumbnail filenames, and YouTube descriptions all support regular expressions and empty replacement strings, or they can be left blank if you don't need to use them.

  Hover over any element in the user interface for a tooltip popup explanation of that functionality.




  To install YouTube Bulk Upload, ensure you have Python 3.9 or newer installed on your system. You can then install the tool using pip:

  ```bash
  pip install youtube-bulk-upload
  ```

  This command installs the latest version of YouTube Bulk Upload along with its dependencies.


  The CLI offers a straightforward way to use YouTube Bulk Upload from your terminal or command prompt.

  **Basic Usage**
  To start a bulk upload with the default settings, navigate to the directory containing your video files and run:

  ```bash
  youtube-bulk-upload
  ```

  Refer to the CLI help for more options:

  ```bash
  youtube-bulk-upload --help
  ```



  You can also use YouTube Bulk Upload as a package in your own Python code. Here's a basic example of how to use it:

  ```bash
  from youtube_bulk_upload.bulk_upload import YouTubeBulkUpload

  uploader = YouTubeBulkUpload(
      source_directory="/path/to/videos",
      youtube_client_secrets_file="/path/to/client_secret.json",
      dry_run=True  # Set to False to perform actual uploads
  )

  uploaded_videos = uploader.process()
  ```

  This script initializes the uploader with a source directory and a client secrets file, then starts the upload process in dry run mode.

  All of the parameters available in the CLI (`youtube-bulk-upload --help`) are available in the `YouTubeBulkUpload` class.

  For details, see the code in `youtube_bulk_upload/bulk_upload.py`.
  For an example, see the CLI usage in `youtube_bulk_upload/cli.py`.


  YouTube Bulk Upload is released under the MIT License. See the LICENSE file for more details.


  Contributions are welcome! Please feel free to submit pull requests or open issues on the GitHub repository.


  This project is maintained by Andrew Beveridge <andrew@beveridge.uk>.
  Special thanks to all contributors and users for their support and feedback.


pkgId: 1a1e54879338e9c7325f05563f1207ac82573928445d0d25e13f1e0705534ac6
name: python-yt-dlp-bonus-help
arch: noarch
version: 0.0.2
epoch: 0
release: 1
summary: Development documents and examples for yt-dlp-bonus
url: https://github.com/Simatwa/yt-dlp-bonus
rpm_license: The Unlicense
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yt-dlp-bonus-0.0.2-1.src.rpm
location_href: Packages/python-yt-dlp-bonus-help-0.0.2-1.noarch.rpm
checksum_type: sha256
description:
  <h1 align="center">yt-dlp-bonus</h1>

  <p align="center">
  <a href="#"><img alt="Python version" src="https://img.shields.io/pypi/pyversions/yt-dlp-bonus"/></a>
  <a href="LICENSE"><img alt="License" src="https://img.shields.io/static/v1?logo=MIT&color=Blue&message=MIT&label=License"/></a>
  <a href="https://pypi.org/project/yt-dlp-bonus"><img alt="PyPi" src="https://img.shields.io/pypi/v/yt-dlp-bonus"></a>
  <a href="https://github.com/Simatwa/yt-dlp-bonus/releases"><img src="https://img.shields.io/github/v/release/Simatwa/yt-dlp-bonus?label=Release&logo=github" alt="Latest release"></img></a>
  <a href="https://github.com/psf/black"><img alt="Black" src="https://img.shields.io/badge/code%20style-black-000000.svg"/></a>
  <a href="https://pepy.tech/project/yt-dlp-bonus"><img src="https://static.pepy.tech/personalized-badge/yt-dlp-bonus?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads" alt="Downloads"></a>
  <a href="https://hits.seeyoufarm.com"><img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com/Simatwa/yt-dlp-bonus"/></a>
  </p>
  > A feature-rich command-line audio/video downloader bonus.



  ```sh
  pip install yt-dlp-bonus -U
  ```




  > [!IMPORTANT]
  > The package is at it's infancy stage. Interact with caution.



  ```python
  import logging
  from yt_dlp_bonus import YoutubeDLBonus, Download

  logging.basicConfig(format="s - s", level=logging.INFO)

  video_url = "https://youtu.be/S3wsCRJVUyg"

  download = Download(file_prefix="TEST_", clear_temps=False)

  yt_bonus = YoutubeDLBonus(params={"cookiefile": "/path/to/cookie/file.txt"})

  extracted_info = yt_bonus.extract_info_and_form_model(url=video_url)

  mp4_quality_formats = yt_bonus.get_videos_quality_by_extension(
      extracted_info=extracted_info, ext="mp4"
  )

  save_to = download.run(
      title=extracted_info.title,
      quality="360p",
      quality_infoFormat=mp4_quality_formats,
  )

  print(save_to)
  ```



  ```python
  import logging
  from yt_dlp_bonus import YoutubeDLBonus, Download

  logging.basicConfig(format="s - s", level=logging.INFO)

  video_url = "https://youtu.be/S3wsCRJVUyg"

  download = Download(file_prefix="TEST_", clear_temps=False)

  yt_bonus = YoutubeDLBonus(params={"cookiefile": "/path/to/cookie/file.txt"})

  extracted_info = yt_bonus.extract_info_and_form_model(url=video_url)

  mp4_quality_formats = yt_bonus.get_videos_quality_by_extension(
      extracted_info=extracted_info, ext="mp4"
  )

  saved_to = download.run(
      title=extracted_info.title,
      quality="medium",
      quality_infoFormat=mp4_quality_formats,
      audio_bitrates="192k"
  )

  print(saved_to)
  ```



  [The Unlicense](LICENSE)


pkgId: 65d9b44c2225b7b18546c3e7badb5fdf28887ebd78d6608d969a3f1b7740b5c9
name: python-yt-dlp-transcript-help
arch: noarch
version: 0.1.19
epoch: 0
release: 1
summary: Development documents and examples for yt-dlp-transcript
url: https://github.com/haron/yt-dlp-transcript
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yt-dlp-transcript-0.1.19-1.src.rpm
location_href: Packages/python-yt-dlp-transcript-help-0.1.19-1.noarch.rpm
checksum_type: sha256
description:
  A handy wrapper for `yt-dlp` to download transcripts for YouTube videos.



      uvx yt-dlp-transcript https://www.youtube.com/watch?v=dQw4w9WgXcQ

  or:

      pip install yt-dlp-transcript
      yt-dlp-transcript https://www.youtube.com/watch?v=dQw4w9WgXcQ



      > yt-dlp-transcript -h
      usage: yt-dlp-transcript [-h] [-l LANGUAGE] [-v] url

      positional arguments:
        url                   Youtube URL

      options:
        -h, --help            show this help message and exit
        -l LANGUAGE, --language LANGUAGE
                              subtitles language (default: en)
        -v, --verbose         verbose mode (default: False)



      from yt_dlp_transcript import yt_dlp_transcript
      print(yt_dlp_transcript("https://www.youtube.com/watch?v=dQw4w9WgXcQ"))


pkgId: e7954ee365de7fd0dde0912844f922a2f3b09d8ada6dc374144bc3c1b88c954f
name: python-yt-viewfinder-TheManWhoLikesToCode-help
arch: noarch
version: 2024.1.0
epoch: 0
release: 1
summary: Development documents and examples for yt-viewfinder-TheManWhoLikesToCode
url: https://pypi.org/project/yt-viewfinder-TheManWhoLikesToCode/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yt-viewfinder-TheManWhoLikesToCode-2024.1.0-1.src.rpm
location_href: Packages/python-yt-viewfinder-TheManWhoLikesToCode-help-2024.1.0-1.noarch.rpm
checksum_type: sha256
rpm_license:
  MIT License  Copyright (c) 2024 Jaydin_MacBook  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: 01686b85ea767a4c410db75615d6af713a1498c0afeba6239ce76f195af911ce
name: python-yta-multimedia-help
arch: noarch
version: 0.1.53
epoch: 0
release: 1
summary: Development documents and examples for yta-multimedia
url: https://pypi.org/project/yta-multimedia/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yta-multimedia-0.1.53-1.src.rpm
location_href: Packages/python-yta-multimedia-help-0.1.53-1.noarch.rpm
checksum_type: sha256
description:
  These are all the multimedia utils we need in the Youtube Autónomo project to work in a better way. This module includes audio, image and video generation and editing utilities.


pkgId: 95166d39836aecae2045eb33bcc82a4cdbe5c971339c8ee47a794e38fd3ca30a
name: python-ytdl-sub-help
arch: noarch
version: 2024.12.14
epoch: 0
release: 1
summary: Development documents and examples for ytdl-sub
url: https://github.com/jmbannon/ytdl-sub
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ytdl-sub-2024.12.14-1.src.rpm
location_href: Packages/python-ytdl-sub-help-2024.12.14-1.noarch.rpm
checksum_type: sha256
description:
  [<img src="https://img.shields.io/badge/readthedocs-link-blue?logo=readthedocs">](https://ytdl-sub.readthedocs.io/en/latest/index.html)
  [<img src="https://img.shields.io/discord/994270357957648404?logo=Discord">](https://discord.gg/v8j9RAHb4k)
  [![codecov](https://img.shields.io/codecov/c/github/jmbannon/ytdl-sub)](https://app.codecov.io/gh/jmbannon/ytdl-sub)
  ![Code Qaulity](https://img.shields.io/badge/pylint-10%2F10-brightgreen)
  ![Checks](https://img.shields.io/github/checks-status/jmbannon/ytdl-sub/master)
  ![License](https://img.shields.io/github/license/jmbannon/ytdl-sub?color=blue)

  `ytdl-sub` is a command-line tool that downloads media via
  [yt-dlp](https://github.com/yt-dlp/yt-dlp)
  and prepares it for your favorite media player, including
  [Kodi](https://github.com/xbmc/xbmc),
  [Jellyfin](https://github.com/jellyfin/jellyfin),
  [Plex](https://github.com/plexinc/pms-docker),
  [Emby](https://emby.media/),
  and modern music players. No additional plugins or external scrapers are needed.

  We recognize that everyone stores their
  media differently. Our approach for file and metadata formatting is to provide
  maximum flexibility while maintaining simplicity.



  ![unknown](https://user-images.githubusercontent.com/10107080/202107286-d8f38c7b-7caf-413a-b9a3-0bbbaded3646.png)


  ![jellyfin](https://user-images.githubusercontent.com/10107080/182677243-b4184e51-9780-4094-bd40-ea4ff58555d0.PNG)



  ![kodi](https://user-images.githubusercontent.com/10107080/182677268-d1bf2ff0-9b9c-4a04-98ec-443a67ada734.png)

  ![jelly_mv](https://user-images.githubusercontent.com/10107080/182677256-43aeb029-0c3f-4648-9fd2-352b9666b262.PNG)



  ![sc_mb](https://user-images.githubusercontent.com/10107080/182685415-06adf477-3dd3-475d-bbcd-53b0152b9f0a.PNG)


  ![bc_nav](https://user-images.githubusercontent.com/10107080/212503861-1d8748e6-6f6d-4043-b543-84226cd1f662.png)


  `ytdl-sub` uses YAML files to define subscriptions. Each subscription imports _presets_ that
  define how to handle and output media files. `ytdl-sub` comes packaged with many _prebuilt presets_
  that do the work of config-building, so you can start downloading immediately.

  ```yaml





  __preset__:
    overrides:
      
      tv_show_directory: "/tv_shows"

      
      music_directory: "/music"

      
      music_video_directory: "/music_videos"

      
      only_recent_date_range: "2months"
      only_recent_max_files: 30

    
    ytdl_options:
      cookiefile: "/config/cookie.txt"




  Plex TV Show by Date:

    
    = Documentaries:
      "NOVA PBS": "https://www.youtube.com/@novapbs"
      "National Geographic": "https://www.youtube.com/@NatGeo"
      "Cosmos - What If": "https://www.youtube.com/playlist?list=PLZdXRHYAVxTJno6oFF9nLGuwXNGYHmE8U"

    
    = Kids | = TV-Y:
      "Jake Trains": "https://www.youtube.com/@JakeTrains"
      "Kids Toys Play": "https://www.youtube.com/@KidsToysPlayChannel"

    = Music:
      
      "Rick Beato":
        - "https://www.youtube.com/@RickBeato"
        - "https://www.youtube.com/@rickbeato240"

    
    = News | Only Recent:
      "BBC News": "https://www.youtube.com/@BBCNews"

  Plex TV Show Collection:
    = Music:
      
      "~Beyond the Guitar":
        s01_name: "Videos"
        s01_url: "https://www.youtube.com/c/BeyondTheGuitar"
        s02_name: "Covers"
        s02_url: "https://www.youtube.com/playlist?list=PLE62gWlWZk5NWVAVuf0Lm9jdv_-_KXs0W"




  YouTube Releases:
    = Jazz:  # Sets genre tag to "Jazz"
      "Thelonious Monk": "https://www.youtube.com/@theloniousmonk3870/releases"

  YouTube Full Albums:
    = Lofi:
      "Game Chops": "https://www.youtube.com/playlist?list=PLBsm_SagFMmdWnCnrNtLjA9kzfrRkto4i"

  SoundCloud Discography:
    = Chill Hop:
      "UKNOWY": "https://soundcloud.com/uknowymunich"
    = Synthwave:
      "Lazerdiscs Records": "https://soundcloud.com/lazerdiscsrecords"
      "Earmake": "https://soundcloud.com/earmake"

  Bandcamp:
    = Lofi:
      "Emily Hopkins": "https://emilyharpist.bandcamp.com/"



  "Plex Music Videos":
    = Pop:  # Sets genre tag to "Pop"
      "Rick Astley": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc"
      "Michael Jackson": "https://www.youtube.com/playlist?list=OLAK5uy_mnY03zP6abNWH929q2XhGzWD_2uKJ_n8E"
  ```

  All of this can be downloaded and ready to import to your favorite player
  using the command
  ```commandline
  ytdl-sub sub subscriptions.yaml
  ```
  See our
  [example subscriptions](https://github.com/jmbannon/ytdl-sub/tree/master/examples)
  for more detailed examples and use-cases.


  After `ytdl-sub` runs, the end result will download and format the files into something ready
  to be consumed by your favorite media player/server.
  ```
  tv_shows/
    Jake Trains/
      Season 2021/
        s2021.e031701 - Pattys Day Video-thumb.jpg
        s2021.e031701 - Pattys Day Video.mp4
        s2021.e031701 - Pattys Day Video.nfo
        s2021.e031702 - Second Pattys Day Video-thumb.jpg
        s2021.e031702 - Second Pattys Day Video.mp4
        s2021.e031702 - Second Pattys Day Video.nfo
      Season 2022/
        s2022.e122501 - Merry Christmas-thumb.jpg
        s2022.e122501 - Merry Christmas.mp4
        s2022.e122501 - Merry Christmas.nfo
      poster.jpg
      fanart.jpg
      tvshow.nfo

  music/
    Artist/
      [2022] Some Single/
        01 - Some Single.mp3
        folder.jpg
      [2023] Latest Album/
        01 - Track Title.mp3
        02 - Another Track.mp3
        folder.jpg

  music_videos/
    Elton John/
      Elton John - Rocketman.jpg
      Elton John - Rocketman.mp4
  ```


  Any part of this process is modifiable by using custom configs. See our
  [walk-through guide](https://ytdl-sub.readthedocs.io/en/latest/guides/index.html)
  on how to build your first config from scratch. Ready-to-use
  [example configurations](https://github.com/jmbannon/ytdl-sub/tree/master/examples)
  can be found here alongside our
  [readthedocs](https://ytdl-sub.readthedocs.io/en/latest/index.html)
  for detailed information on all config fields.


  `ytdl-sub` can be installed on the following platforms.

  - [Docker Compose](https://ytdl-sub.readthedocs.io/en/latest/guides/install/docker.html#install-with-docker-compose)
    - [Web-GUI](https://ytdl-sub.readthedocs.io/en/latest/guides/install/docker.html#install-with-docker-compose)
    - [Headless](https://ytdl-sub.readthedocs.io/en/latest/guides/install/docker.html#install-with-docker-compose)
    - [CPU / GPU Passthrough](https://ytdl-sub.readthedocs.io/en/latest/guides/install/docker.html#device-passthrough)
  - [Docker CLI](https://ytdl-sub.readthedocs.io/en/latest/guides/install/docker.html#docker-cli)
  - [Windows](https://ytdl-sub.readthedocs.io/en/latest/guides/install/windows.html)
  - [Unraid](https://ytdl-sub.readthedocs.io/en/latest/guides/install/unraid.html)
  - [Linux](https://ytdl-sub.readthedocs.io/en/latest/guides/install/linux.html)
  - [Linux ARM](https://ytdl-sub.readthedocs.io/en/latest/guides/install/linux.html)
  - [PIP](https://ytdl-sub.readthedocs.io/en/latest/guides/install/agnostic.html#pip-install)
  - [Local Install](https://ytdl-sub.readthedocs.io/en/latest/guides/install/agnostic.html#local-install)
  - [Local Docker Build](https://ytdl-sub.readthedocs.io/en/latest/guides/install/agnostic.html#local-docker-build)


  Docker installs can be either headless or use the Web-GUI image, which comprises
  [LSIO's](https://www.linuxserver.io/)
  [code-server](https://hub.docker.com/r/linuxserver/code-server)
  Docker image with `ytdl-sub` preinstalled. This is the recommended way to use ``ytdl-sub``.

  ![image](https://github.com/jmbannon/ytdl-sub/assets/10107080/c2aac8a1-5443-4345-b438-be4b17187c80)



  There are many ways to contribute, even without coding. Please take a look in
  our [GitHub Issues](https://github.com/jmbannon/ytdl-sub/issues) to submit a feature request, or
  pick up a bug.


  We are pretty active in our
  [Discord channel](https://discord.gg/v8j9RAHb4k)
  if you have any questions. Also see our
  [FAQ](https://ytdl-sub.readthedocs.io/en/latest/faq/index.html)
  for commonly asked questions.

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


pkgId: 913275ac684c4e5691f5a16479aa3c0442671596c7df95f85a8b06fa24502706
name: python-ytmusicapi-help
arch: noarch
version: 1.9.0
epoch: 0
release: 1
summary: Development documents and examples for ytmusicapi
url: https://pypi.org/project/ytmusicapi/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ytmusicapi-1.9.0-1.src.rpm
location_href: Packages/python-ytmusicapi-help-1.9.0-1.noarch.rpm
checksum_type: sha256
description:
  | **Browsing**:
  * search (including all filters) and suggestions
  * get artist information and releases (songs, videos, albums, singles, related artists)
  * get user information (videos, playlists)
  * get albums
  * get song metadata
  * get watch playlists (next songs when you press play/radio/shuffle in YouTube Music)
  * get song lyrics
  | **Exploring music**:
  * get moods and genres playlists
  * get latest charts (globally and per country)
  | **Library management**:
  * get library contents: playlists, songs, artists, albums and subscriptions, podcasts, channels
  * add/remove library content: rate songs, albums and playlists, subscribe/unsubscribe artists
  * get and modify play history
  | **Playlists**:
  * create and delete playlists
  * modify playlists: edit metadata, add/move/remove tracks
  * get playlist contents
  * get playlist suggestions
  | **Podcasts**:
  * get podcasts
  * get episodes
  * get channels
  * get episodes playlists
  | **Uploads**:
  * upload songs and remove them again
  * list uploaded songs, artists and albums
  | **Localization**:
  * all regions are supported (see `locations FAQ <https://ytmusicapi.readthedocs.io/en/stable/faq.html#which-values-can-i-use-for-locations>`__
  * 16 languages are supported (see `languages FAQ <https://ytmusicapi.readthedocs.io/en/stable/faq.html#which-values-can-i-use-for-languages>`__
  If you find something missing or broken,
  check the `FAQ <https://ytmusicapi.readthedocs.io/en/stable/faq.html>`__ or
  feel free to create an `issue <https://github.com/sigma67/ytmusicapi/issues/new/choose>`__.

rpm_license:
  MIT License  Copyright (c) 2024 sigma67  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: 0230f5b3759c873e6e8d47548de29014e132b1c0db3ff3cff7b3ac246ad71778
name: python-ytsaurus-spyt-help
arch: noarch
version: 2.4.3
epoch: 0
release: 1
summary: Development documents and examples for ytsaurus-spyt
url: https://github.com/ytsaurus/ytsaurus/tree/main/yt/spark/spark-over-yt
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ytsaurus-spyt-2.4.3-1.src.rpm
location_href: Packages/python-ytsaurus-spyt-help-2.4.3-1.noarch.rpm
checksum_type: sha256
description:
  YTsaurus - is an open source big data platform for distributed storage and processing.

  SPYT was implemented as a library allowing to connect to YTsaurus from [Apache Spark](https://spark.apache.org/).

  Documentation is available on the [project web page](https://ytsaurus.tech/docs/en/user-guide/data-processing/spyt/overview).


pkgId: 3a3063082fe0864317cc0eb10b68a70dc40ab8725e6bf302badb611c84b5a32a
name: python-ytube-api-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for ytube-api
url: https://github.com/Simatwa/ytube-api
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ytube-api-0.1.0-1.src.rpm
location_href: Packages/python-ytube-api-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  <h1 align="center">ytube-api</h1>

  <p align="center">
  <a href="#"><img alt="Python version" src="https://img.shields.io/pypi/pyversions/ytube-api"/></a>
  <a href="https://github.com/Simatwa/ytube-api/actions/workflows/python-test.yml"><img src="https://github.com/Simatwa/ytube-api/actions/workflows/python-test.yml/badge.svg" alt="Python Test"/></a>
  <a href="LICENSE"><img alt="License" src="https://img.shields.io/static/v1?logo=MIT&color=Blue&message=MIT&label=License"/></a>
  <a href="https://pypi.org/project/ytube-api"><img alt="PyPi" src="https://img.shields.io/pypi/v/ytube-api"></a>
  <a href="https://github.com/Simatwa/ytube-api/releases"><img src="https://img.shields.io/github/v/release/Simatwa/ytube-api?label=Release&logo=github" alt="Latest release"></img></a>
  <a href="https://github.com/Simatwa/ytube-api/releases"><img src="https://img.shields.io/github/release-date/Simatwa/ytube-api?label=Release date&logo=github" alt="release date"></img></a>
  <a href="https://github.com/psf/black"><img alt="Black" src="https://img.shields.io/badge/code%20style-black-000000.svg"/></a>
  <a href="https://github.com/Simatwa/ytube-api/actions/workflows/python-publish.yml"><img src="https://github.com/Simatwa/ytube-api/actions/workflows/python-publish.yml/badge.svg" alt="Python-publish"/></a>
  <a href="https://pepy.tech/project/ytube-api"><img src="https://static.pepy.tech/personalized-badge/ytube-api?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads" alt="Downloads"></a>
  <a href="https://github.com/Simatwa/ytube-api/releases/latest"><img src="https://img.shields.io/github/downloads/Simatwa/ytube-api/total?label=Asset%20Downloads&color=success" alt="Downloads"></img></a>
  <a href="https://hits.seeyoufarm.com"><img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com/Simatwa/ytube-api"/></a>
  </p>

  > Download YouTube videos in `mp4` or `mp3` formats.

  ```python
  from ytube_api import Auto
  Auto(
    query = "Alan Walker - Alone"
  )



  ```

  ```python
  from ytube_api import Auto
  Auto(
    query = "Alan Walker - Alone",
    format = "mp3"
  )



  ```



  - [x] [Python>=3.9](https://python.org) (optional)



  Either of the following ways will get you ready.

  1. From pypi:

     ```sh
     $ pip install -U "ytube-api[cli]"
     ```

  2. From source:

     ```sh
     $ pip install git+http://github.com/Simatwa/ytube-api.git
     ```

  Alternatively, you can download standalone executable for your system from [here](https://github.com/Simatwa/ytube-api/releases/latest).



  <details>

  <summary>
  <h2>1. Developers</h2>
  </summary>





     ```python
     from ytube_api import Ytube
     yt = Ytube()
     videos = yt.search_videos(
        "Alan Walker songs"
     )
     print(videos)
     """
     SearchResults(query='Alan Walker songs', items=[SearchResultsItem(title='Alan Walker, Putri Ariani, Peder Elias - Who I Am (Official Music Video)', id='ccu6JuC21rk', size='2.91 MB', duration='3:32', channelTitle='Alan Walker', source='yt'), SearchResultsItem(title='Alan Walker - Faded', id='60ItHLz5WEA', size='2.93 MB', duration='3:33', channelTitle='Alan Walker', source='yt')], from_link=False)
     """
     ```



     ```python
     from ytube_api import Ytube
     yt = Ytube()
     videos = yt.search_videos(
        "https://youtu.be/oociIYNVdVQ?si=v1Ic_mcBq2bb_j8J"
     )
     print(videos)
     """
     SearchResults(query='https://youtu.be/oociIYNVdVQ?si=v1Ic_mcBq2bb_j8J', items=[SearchResultsItem(title=None, id='oociIYNVdVQ', size=None, duration=None, channelTitle=None, source=None)], from_link=True)
     """
     ```





     ```python
     from ytube_api import Ytube
     yt = Ytube()
     search_results = yt.search_videos(
        "Alan Walker songs"
     )
     target_video = search_results.items[0]
     download_link = yt.get_download_link(
        target_video,
        format="mp4",
        quality="1080"
        )
     print(
        download_link
     )
     """
     DownloadLink(status='tunnel', url='https://vgbh.nmnm.store/tunnel?id=svqwnZ5CJOJJZi12yXq0b&exp=1729856312453&sig=kcY69-AGCv--0t5cY0RZ93lyyI_rDDe88iGQo_fpJTc&sec=rrJnEyYU9sETaZG8kEbobbhGGfae7rU0SQNCkBidT90&iv=t9YVnta7aLw0qEh5GJW8Lg', filename='Alan Walker, Putri Ariani, Peder Elias - Who I Am (Official Music Video) - Alan Walker (1080p, h264, youtube).mp4')
     """
     ```



     ```python
     from ytube_api import Ytube
     yt = Ytube()
     search_results = yt.search_videos(
        "Alan Walker songs"
     )
     target_video = search_results.items[0]
     download_link = yt.get_download_link(
        target_video,
        format="mp3",
        quality="320"
        )
     print(
        download_link
     )
     """
     DownloadLink(status='tunnel', url='https://xdcf.nmnm.store/tunnel?id=5K8ZukESJDx0ov3liUj_N&exp=1729856389952&sig=D9ejkqecxpkBsxcXmBtIrYXo1BMIFyawLoBC1_X3J3Q&sec=L5EpDuWoxXk6dK2pLqK9jYyqNF0X06_YKtb9gLB6SVs&iv=YGnrLa_v5qh9uVQSe1x_Og', filename='Alan Walker, Putri Ariani, Peder Elias - Who I Am (Official Music Video) - Alan Walker (youtube).mp3')
     """
     ```



     ```python
     from ytube_api import Ytube
     yt = Ytube()
     search_results = yt.search_videos(
        "Alan Walker songs"
     )
     target_video = search_results.items[0]
     download_link = yt.get_download_link(
        target_video,
        format="mp3",
        quality="320"
        )
     saved_to = yt.download(
        download_link,
        progress_bar=True,
        quiet=False
     )
     print(saved_to)
     """
     /home/smartwa/git/smartwa/ytube-api/Alan Walker, Putri Ariani, Peder Elias - Who I Am (Official Music Video) - Alan Walker (youtube).mp3
     """
     ```



  ```python
  from ytube_api import Ytube
  yt = Ytube()

  suggestions = yt.suggest_queries(
      'Hello wor'
  )

  print(
      suggestions
  )

  """
  ['hello world', 'hello world song', 'hello world bump of chicken', 'hello world gwen stefani', 'hello worker', 'hello world louie zong', 'hello world in assembly language', 'hello world in different languages', 'hello world trailer', 'hello world english cover', 'hello world belle perez', 'hello world anime', 'hello world kekkai sensen', 'hello world lost game']
  """
  ```

  </details>

  <details>
    <summary>
     <h2>2. CLI</h2>
    </summary>

  `$ python -m ytube_api --help`

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

    Download YouTube videos in mp4 and mp3 formats

  Options:
    --version  Show the version and exit.
    --help     Show this message and exit.

  Commands:
    download     Search and download video in mp4 or mp3 formats
    interactive  Search and download videos/audio interactively
    suggest      Suggest videos based on your query

  ```

  > [!NOTE]
  > Shorthand for `python -m pytube_api` is `pytube`.



     ```sh
     $ ytube download <QUERY>
     
     ```

     _$ ytube download --help_

     ```
     Usage: ytube download [OPTIONS] QUERY

    Search and download video in mp4 or mp3 formats

  Options:
    -q, --quality [128|320|144|240|360|480|720|1080|128|720]
                                    Media download quality - 128|720
    --mp4 / --mp3                   Download audio (mp3) or video (mp4) -
                                    mp4
    --enable-progressbar / --disable-progressbar
                                    Show or hide progressbar
    -l, --limit INTEGER             Total number of items to be downloaded
                                    that matched the search - 1
    -t, --timeout INTEGER           Http request timeout - 20
    -c, --channels Name             Download videos posted by this channel
                                    titles - None.
    -d, --dir DIRECTORY             Directory for saving the contents to -
                                    pwd.
    -o, --output TEXT               Filename to save the contents under -
                                    None
    -b, --busy-bar INTEGER RANGE    Busy bar index - ['', '/','■█■■■',
                                    '⡿'] - 2  [0<=x<=3]
    --quiet                         Do not stdout informative messages
    --resume                        Resume incomplete download
    --confirm                       Ask user for permission to download a
                                    video/audio
    --help                          Show this message and exit.

     ```



  - Features live search 🔴 etc.

  ```
  Welcome to interactive ytube. Type 'help' or 'h' for usage info.
  Submit any bug at https://github.com/Simatwa/ytube/issues/new
  ╭─[Smartwa@YTUBE]~[🕒18:07:27-💻00:00:00-⚡0.0s]
  ╰─>Alan Walker
                 alan walker
                 alan walker faded
                 alan walker on my way live
                 alan walker sad sometimes
                 alan walker spectre
                 alan walker alone
                 alan walker mix

  ```

  <details>
  <summary><code>ytube interactive --help</code></summary>

  ```
  Usage: ytube interactive [OPTIONS] [QUERY]

    Search and download videos/audio interactively

  Options:
    -q, --quality [128|320|144|240|360|480|720|1080|128|720|128|720]
                                    Media download quality - 128|720
    --mp4 / --mp3                   Download audio (mp3) or video (mp4) -
                                    mp4
    -s, --suggestions-limit INTEGER
                                    Query suggestions limit - 10
    -l, --limit INTEGER             Total number of items to be downloaded
                                    that matched the search - 1
    -t, --timeout INTEGER           Http request timeout - 20
    -b, --busy-bar INTEGER RANGE    Busy bar index - ['', '/','■█■■■',
                                    '⡿'] - 2  [0<=x<=3]
    -d, --dir DIRECTORY             Directory for saving the contents to -
                                    pwd.
    --disable-coloring              Stdout interactive texts in white font
                                    color
    --select                        Prompt user download format and
                                    quality every time.
    --confirm                       Ask user for permission to download a
                                    video/audio
    --play                          Play the video/audio after completing
                                    download process
    --help                          Show this message and exit.
  ```

  </details>

  > [!NOTE]
  > **Interactive** is the default option incase no command/argument is supplied.
  > `$ ytube` is enough to kickoff.

  </details>



  This software is not affiliated with or endorsed by y2mate.tube or its parent company. By using this tool, you assume all risks associated with using this unofficial tool.It is your responsibility to ensure compliance with all relevant laws and regulations when using this tool. This software is provided "as-is" without warranty of any kind, express or implied.


pkgId: 3495626a0befdae187500dc5a68f4fa7dd460f9b72f69c9a8756c45c55b800ab
name: python-yundownload-help
arch: noarch
version: 0.4.10
epoch: 0
release: 1
summary: Development documents and examples for yundownload
url: https://pypi.org/project/yundownload/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-yundownload-0.4.10-1.src.rpm
location_href: Packages/python-yundownload-help-0.4.10-1.noarch.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/yundownload.svg)](https://badge.fury.io/py/yundownload)



  [Official documentation](https://2214372851.github.io/yundownload/)
  > This project is a file downloader, supporting dynamic download according to the size of the file to choose the
  > download mode, for the connection that supports breakpoint continuation will automatically break the connection, for
  > the
  > unsupported link will overwrite the previous content, the project includes retry mechanism, etc., currently supports:
  > streaming download, large file fragment download.



  `pip install yundownload`



  [yundownload GitHub](https://github.com/2214372851/yundownload)



  ```python
  from yundownload import DownloadPools, Request

  with DownloadPools() as pool:
      pool.push(Request(
          url='https://dldir1.qq.com/qqfile/qq/PCQQ9.7.17/QQ9.7.17.29225.exe',
          save_path='./1.exe'
      ))
  ```



  > In version 0.1.16, a command line tool was added, which can be used as follows:

  ```shell
  $ yundownload --help

  usage: yundownload [-h] {load,download} ...

  Yun Downloader

  positional arguments:
    {load,download}
      load           Load a request
      download       Download a file

  options:
    -h, --help       show this help message and exit
  ```

  命令行下载文件

  ```shell
  $ yundownload download 'https://dldir1.qq.com/qqfile/qq/PCQQ9.7.17/QQ9.7.17.29225.exe' './1.exe'

  QQ9.7.17.29225.exe:   6%|██████▎                      | 13.6M/214M [00:05<01:15, 2.65MB/s]
  ```

  fyd文件命令行读取下载（只适用于简单场景）

  ```shell
  $ yundownload load ./test.fyd
  ```

  fyd文件格式

  ```text
  save_path1<fyd>download_url1
  save_path2<fyd>download_url2
  ```



  - V 0.4.2
      - Fix retry progress
  - V 0.4.1
      - Added to file path creation
  - V 0.4.0
      - Refactor the core modules, optimize the code structure, and optimize the download speed
  - V 0.3.4
      - Fixed event loop duplicate creation
  - V 0.3.3
      - Fix progress bar not reset
  - V 0.3.2
      - Fixed the file length inconsistency caused by the request header
  - V 0.3.1
      - Added version attribute to the package.
        The command line tool wget parameter has also been added to give the request a default header
  - V 0.3.0
      - To optimize the performance of the code, need to pay attention to at the same time, in this version and later
        versions of the API changes, details please refer to
        the [official documentation](https://2214372851.github.io/yundownload/) description of V0.3 version
  - V 0.2.15
      - Big change, remove 'run' function, add 'download' function. See the documentation.
  - V 0.2.14
      - Modified the document and some prompts.
  - V 0.2.13
      - Fixed multiple file fragment download file name issue
  - V 0.2.12
      - Fixed a size issue with the last piece of the shard download file
  - V 0.2.11
      - Removes the compressed portion of the default request header
  - V 0.2.10
      - Agent added to support proxy
  - V 0.2.9
      - Fix known bugs
  - V 0.2.8
      - Fix known bugs and add warnings for subsequent optimization of large file shards
  - V 0.2.7
      - Fix known bugs
  - V 0.2.6
      - None Example Change the asynchronous writing of files in fragment download
  - V 0.2.5
      - Fix known bugs
  - V 0.2.4
      - Add the auth parameter to carry identity information
      - You can add the max_redirects parameter to limit the number of redirects
      - Add the retries parameter to specify the number of request tries
      - Add the verify parameter to specify whether to verify the SSL certificate
  - V 0.2.3
      - Remove the default log display and add a progress bar to the command line tool
  - V 0.2.2
      - Fixed exception handling of sharding download
  - V 0.2.1
      - Repair download failure displays complete
  - V 0.2.0
      - Fixed an issue with fragment breakpoint continuation in fragment download
  - V 0.1.19
      - Fix stream download breakpoint resume issue
  - V 0.1.18
      - Fix known bugs
  - V 0.1.17
      - Add forced streaming downloads
  - V 0.1.16
      - Add command line tools
  - V 0.1.15
      - Optimized fragmentation download breakpoint continuation
  - V 0.1.14
      - exclude
  - V 0.1.13
      - Troubleshooting Heartbeat detection
  - V 0.1.12
      - This version throws an exception after a retry failure
  - V 0.1.10
      - Optimized breakpoint continuation
      - Optimized concurrent downloads
      - Optimized heartbeat detection
      - Optimized error retry
      - This version still does not throw an exception after a retry failure



  - Provides webui or desktop applications
  - Asynchronous support for YunDownloader (although asynchronous is currently used internally, downloader cannot be used
    in asynchronous functions)


pkgId: 6b7d17dd41c3226b95c4ca2c9dcb9191c1b9508a9c90083135d717007643b735
name: python-z4d-certified-devices-help
arch: noarch
version: 5.350
epoch: 0
release: 1
summary: Development documents and examples for z4d-certified-devices
url: https://github.com/zigbeefordomoticz/z4d-certified-devices
rpm_license: "GPL-3.0"
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-z4d-certified-devices-5.350-1.src.rpm
location_href: Packages/python-z4d-certified-devices-help-5.350-1.noarch.rpm
checksum_type: sha256
description:
  This package is required for the [Zigbee for Domoticz](https://github.com/zigbeefordomoticz/Domoticz-Zigbee) plugin.
  It provides configuration files to optimized the pairing and behaviour of Zigbee devices connected to the plugin.
  This package is part of the Zigbee4Domoticz requirements and should be installed defacto.




  ```python
  sudo python3 -m pip install git+https://github.com/zigbeefordomoticz/z4d-certified-devices
  ```




  sudo python3 -m pip install z4d-certified-devices --upgrade



  We warmly invite Manufacturers and sellers to contribute by sending us samples of their devices for integration. Your support in this regard is greatly appreciated as it enables us to expand our compatibility and offer a more comprehensive solution.

  We extend our heartfelt gratitude to our generous donors whose contributions enable us to acquire additional equipment for rigorous testing and seamless integration. With your support, we can further enhance the plugin's capabilities and deliver an even more powerful and versatile experience for our users.

  * <img src="https://www.pipiche.fr//pp.svg" width="24" height="24" alt="Donate via Paypal"/> <a href="https://paypal.me/pipiche">Donate via PayPal</a>
  <br/>

                      GNU GENERAL PUBLIC LICENSE
                         Version 3, 29 June 2007

   Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
   Everyone is permitted to copy and distribute verbatim copies
   of this license document, but changing it is not allowed.

                              Preamble

    The GNU General Public License is a free, copyleft license for
  software and other kinds of works.

    The licenses for most software and other practical works are designed
  to take away your freedom to share and change the works.  By contrast,
  the GNU General Public License is intended to guarantee your freedom to
  share and change all versions of a program--to make sure it remains free
  software for all its users.  We, the Free Software Foundation, use the
  GNU General Public License for most of our software; it applies also to
  any other work released this way by its authors.  You can apply it to
  your programs, too.

    When we speak of free software, we are referring to freedom, not
  price.  Our General Public Licenses are designed to make sure that you
  have the freedom to distribute copies of free software (and charge for
  them if you wish), that you receive source code or can get it if you
  want it, that you can change the software or use pieces of it in new
  free programs, and that you know you can do these things.

    To protect your rights, we need to prevent others from denying you
  these rights or asking you to surrender the rights.  Therefore, you have
  certain responsibilities if you distribute copies of the software, or if
  you modify it: responsibilities to respect the freedom of others.

    For example, if you distribute copies of such a program, whether
  gratis or for a fee, you must pass on to the recipients the same
  freedoms that you received.  You must make sure that they, too, receive
  or can get the source code.  And you must show them these terms so they
  know their rights.

    Developers that use the GNU GPL protect your rights with two steps:
  (1) assert copyright on the software, and (2) offer you this License
  giving you legal permission to copy, distribute and/or modify it.

    For the developers' and authors' protection, the GPL clearly explains
  that there is no warranty for this free software.  For both users' and
  authors' sake, the GPL requires that modified versions be marked as
  changed, so that their problems will not be attributed erroneously to
  authors of previous versions.

    Some devices are designed to deny users access to install or run
  modified versions of the software inside them, although the manufacturer
  can do so.  This is fundamentally incompatible with the aim of
  protecting users' freedom to change the software.  The systematic
  pattern of such abuse occurs in the area of products for individuals to
  use, which is precisely where it is most unacceptable.  Therefore, we
  have designed this version of the GPL to prohibit the practice for those
  products.  If such problems arise substantially in other domains, we
  stand ready to extend this provision to those domains in future versions
  of the GPL, as needed to protect the freedom of users.

    Finally, every program is threatened constantly by software patents.
  States should not allow patents to restrict development and use of
  software on general-purpose computers, but in those that do, we wish to
  avoid the special danger that patents applied to a free program could
  make it effectively proprietary.  To prevent this, the GPL assures that
  patents cannot be used to render the program non-free.

    The precise terms and conditions for copying, distribution and
  modification follow.

                         TERMS AND CONDITIONS

    0. Definitions.

    "This License" refers to version 3 of the GNU General Public License.

    "Copyright" also means copyright-like laws that apply to other kinds of
  works, such as semiconductor masks.

    "The Program" refers to any copyrightable work licensed under this
  License.  Each licensee is addressed as "you".  "Licensees" and
  "recipients" may be individuals or organizations.

    To "modify" a work means to copy from or adapt all or part of the work
  in a fashion requiring copyright permission, other than the making of an
  exact copy.  The resulting work is called a "modified version" of the
  earlier work or a work "based on" the earlier work.

    A "covered work" means either the unmodified Program or a work based
  on the Program.

    To "propagate" a work means to do anything with it that, without
  permission, would make you directly or secondarily liable for
  infringement under applicable copyright law, except executing it on a
  computer or modifying a private copy.  Propagation includes copying,
  distribution (with or without modification), making available to the
  public, and in some countries other activities as well.

    To "convey" a work means any kind of propagation that enables other
  parties to make or receive copies.  Mere interaction with a user through
  a computer network, with no transfer of a copy, is not conveying.

    An interactive user interface displays "Appropriate Legal Notices"
  to the extent that it includes a convenient and prominently visible
  feature that (1) displays an appropriate copyright notice, and (2)
  tells the user that there is no warranty for the work (except to the
  extent that warranties are provided), that licensees may convey the
  work under this License, and how to view a copy of this License.  If
  the interface presents a list of user commands or options, such as a
  menu, a prominent item in the list meets this criterion.

    1. Source Code.

    The "source code" for a work means the preferred form of the work
  for making modifications to it.  "Object code" means any non-source
  form of a work.

    A "Standard Interface" means an interface that either is an official
  standard defined by a recognized standards body, or, in the case of
  interfaces specified for a particular programming language, one that
  is widely used among developers working in that language.

    The "System Libraries" of an executable work include anything, other
  than the work as a whole, that (a) is included in the normal form of
  packaging a Major Component, but which is not part of that Major
  Component, and (b) serves only to enable use of the work with that
  Major Component, or to implement a Standard Interface for which an
  implementation is available to the public in source code form.  A
  "Major Component", in this context, means a major essential component
  (kernel, window system, and so on) of the specific operating system
  (if any) on which the executable work runs, or a compiler used to
  produce the work, or an object code interpreter used to run it.

    The "Corresponding Source" for a work in object code form means all
  the source code needed to generate, install, and (for an executable
  work) run the object code and to modify the work, including scripts to
  control those activities.  However, it does not include the work's
  System Libraries, or general-purpose tools or generally available free
  programs which are used unmodified in performing those activities but
  which are not part of the work.  For example, Corresponding Source
  includes interface definition files associated with source files for
  the work, and the source code for shared libraries and dynamically
  linked subprograms that the work is specifically designed to require,
  such as by intimate data communication or control flow between those
  subprograms and other parts of the work.

    The Corresponding Source need not include anything that users
  can regenerate automatically from other parts of the Corresponding
  Source.

    The Corresponding Source for a work in source code form is that
  same work.

    2. Basic Permissions.

    All rights granted under this License are granted for the term of
  copyright on the Program, and are irrevocable provided the stated
  conditions are met.  This License explicitly affirms your unlimited
  permission to run the unmodified Program.  The output from running a
  covered work is covered by this License only if the output, given its
  content, constitutes a covered work.  This License acknowledges your
  rights of fair use or other equivalent, as provided by copyright law.

    You may make, run and propagate covered works that you do not
  convey, without conditions so long as your license otherwise remains
  in force.  You may convey covered works to others for the sole purpose
  of having them make modifications exclusively for you, or provide you
  with facilities for running those works, provided that you comply with
  the terms of this License in conveying all material for which you do
  not control copyright.  Those thus making or running the covered works
  for you must do so exclusively on your behalf, under your direction
  and control, on terms that prohibit them from making any copies of
  your copyrighted material outside their relationship with you.

    Conveying under any other circumstances is permitted solely under
  the conditions stated below.  Sublicensing is not allowed; section 10
  makes it unnecessary.

    3. Protecting Users' Legal Rights From Anti-Circumvention Law.

    No covered work shall be deemed part of an effective technological
  measure under any applicable law fulfilling obligations under article
  11 of the WIPO copyright treaty adopted on 20 December 1996, or
  similar laws prohibiting or restricting circumvention of such
  measures.

    When you convey a covered work, you waive any legal power to forbid
  circumvention of technological measures to the extent such circumvention
  is effected by exercising rights under this License with respect to
  the covered work, and you disclaim any intention to limit operation or
  modification of the work as a means of enforcing, against the work's
  users, your or third parties' legal rights to forbid circumvention of
  technological measures.

    4. Conveying Verbatim Copies.

    You may convey verbatim copies of the Program's source code as you
  receive it, in any medium, provided that you conspicuously and
  appropriately publish on each copy an appropriate copyright notice;
  keep intact all notices stating that this License and any
  non-permissive terms added in accord with section 7 apply to the code;
  keep intact all notices of the absence of any warranty; and give all
  recipients a copy of this License along with the Program.

    You may charge any price or no price for each copy that you convey,
  and you may offer support or warranty protection for a fee.

    5. Conveying Modified Source Versions.

    You may convey a work based on the Program, or the modifications to
  produce it from the Program, in the form of source code under the
  terms of section 4, provided that you also meet all of these conditions:

      a) The work must carry prominent notices stating that you modified
      it, and giving a relevant date.

      b) The work must carry prominent notices stating that it is
      released under this License and any conditions added under section
      7.  This requirement modifies the requirement in section 4 to
      "keep intact all notices".

      c) You must license the entire work, as a whole, under this
      License to anyone who comes into possession of a copy.  This
      License will therefore apply, along with any applicable section 7
      additional terms, to the whole of the work, and all its parts,
      regardless of how they are packaged.  This License gives no
      permission to license the work in any other way, but it does not
      invalidate such permission if you have separately received it.

      d) If the work has interactive user interfaces, each must display
      Appropriate Legal Notices; however, if the Program has interactive
      interfaces that do not display Appropriate Legal Notices, your
      work need not make them do so.

    A compilation of a covered work with other separate and independent
  works, which are not by their nature extensions of the covered work,
  and which are not combined with it such as to form a larger program,
  in or on a volume of a storage or distribution medium, is called an
  "aggregate" if the compilation and its resulting copyright are not
  used to limit the access or legal rights of the compilation's users
  beyond what the individual works permit.  Inclusion of a covered work
  in an aggregate does not cause this License to apply to the other
  parts of the aggregate.

    6. Conveying Non-Source Forms.

    You may convey a covered work in object code form under the terms
  of sections 4 and 5, provided that you also convey the
  machine-readable Corresponding Source under the terms of this License,
  in one of these ways:

      a) Convey the object code in, or embodied in, a physical product
      (including a physical distribution medium), accompanied by the
      Corresponding Source fixed on a durable physical medium
      customarily used for software interchange.

      b) Convey the object code in, or embodied in, a physical product
      (including a physical distribution medium), accompanied by a
      written offer, valid for at least three years and valid for as
      long as you offer spare parts or customer support for that product
      model, to give anyone who possesses the object code either (1) a
      copy of the Corresponding Source for all the software in the
      product that is covered by this License, on a durable physical
      medium customarily used for software interchange, for a price no
      more than your reasonable cost of physically performing this
      conveying of source, or (2) access to copy the
      Corresponding Source from a network server at no charge.

      c) Convey individual copies of the object code with a copy of the
      written offer to provide the Corresponding Source.  This
      alternative is allowed only occasionally and noncommercially, and
      only if you received the object code with such an offer, in accord
      with subsection 6b.

      d) Convey the object code by offering access from a designated
      place (gratis or for a charge), and offer equivalent access to the
      Corresponding Source in the same way through the same place at no
      further charge.  You need not require recipients to copy the
      Corresponding Source along with the object code.  If the place to
      copy the object code is a network server, the Corresponding Source
      may be on a different server (operated by you or a third party)
      that supports equivalent copying facilities, provided you maintain
      clear directions next to the object code saying where to find the
      Corresponding Source.  Regardless of what server hosts the
      Corresponding Source, you remain obligated to ensure that it is
      available for as long as needed to satisfy these requirements.

      e) Convey the object code using peer-to-peer transmission, provided
      you inform other peers where the object code and Corresponding
      Source of the work are being offered to the general public at no
      charge under subsection 6d.

    A separable portion of the object code, whose source code is excluded
  from the Corresponding Source as a System Library, need not be
  included in conveying the object code work.

    A "User Product" is either (1) a "consumer product", which means any
  tangible personal property which is normally used for personal, family,
  or household purposes, or (2) anything designed or sold for incorporation
  into a dwelling.  In determining whether a product is a consumer product,
  doubtful cases shall be resolved in favor of coverage.  For a particular
  product received by a particular user, "normally used" refers to a
  typical or common use of that class of product, regardless of the status
  of the particular user or of the way in which the particular user
  actually uses, or expects or is expected to use, the product.  A product
  is a consumer product regardless of whether the product has substantial
  commercial, industrial or non-consumer uses, unless such uses represent
  the only significant mode of use of the product.

    "Installation Information" for a User Product means any methods,
  procedures, authorization keys, or other information required to install
  and execute modified versions of a covered work in that User Product from
  a modified version of its Corresponding Source.  The information must
  suffice to ensure that the continued functioning of the modified object
  code is in no case prevented or interfered with solely because
  modification has been made.

    If you convey an object code work under this section in, or with, or
  specifically for use in, a User Product, and the conveying occurs as
  part of a transaction in which the right of possession and use of the
  User Product is transferred to the recipient in perpetuity or for a
  fixed term (regardless of how the transaction is characterized), the
  Corresponding Source conveyed under this section must be accompanied
  by the Installation Information.  But this requirement does not apply
  if neither you nor any third party retains the ability to install
  modified object code on the User Product (for example, the work has
  been installed in ROM).

    The requirement to provide Installation Information does not include a
  requirement to continue to provide support service, warranty, or updates
  for a work that has been modified or installed by the recipient, or for
  the User Product in which it has been modified or installed.  Access to a
  network may be denied when the modification itself materially and
  adversely affects the operation of the network or violates the rules and
  protocols for communication across the network.

    Corresponding Source conveyed, and Installation Information provided,
  in accord with this section must be in a format that is publicly
  documented (and with an implementation available to the public in
  source code form), and must require no special password or key for
  unpacking, reading or copying.

    7. Additional Terms.

    "Additional permissions" are terms that supplement the terms of this
  License by making exceptions from one or more of its conditions.
  Additional permissions that are applicable to the entire Program shall
  be treated as though they were included in this License, to the extent
  that they are valid under applicable law.  If additional permissions
  apply only to part of the Program, that part may be used separately
  under those permissions, but the entire Program remains governed by
  this License without regard to the additional permissions.

    When you convey a copy of a covered work, you may at your option
  remove any additional permissions from that copy, or from any part of
  it.  (Additional permissions may be written to require their own
  removal in certain cases when you modify the work.)  You may place
  additional permissions on material, added by you to a covered work,
  for which you have or can give appropriate copyright permission.

    Notwithstanding any other provision of this License, for material you
  add to a covered work, you may (if authorized by the copyright holders of
  that material) supplement the terms of this License with terms:

      a) Disclaiming warranty or limiting liability differently from the
      terms of sections 15 and 16 of this License; or

      b) Requiring preservation of specified reasonable legal notices or
      author attributions in that material or in the Appropriate Legal
      Notices displayed by works containing it; or

      c) Prohibiting misrepresentation of the origin of that material, or
      requiring that modified versions of such material be marked in
      reasonable ways as different from the original version; or

      d) Limiting the use for publicity purposes of names of licensors or
      authors of the material; or

      e) Declining to grant rights under trademark law for use of some
      trade names, trademarks, or service marks; or

      f) Requiring indemnification of licensors and authors of that
      material by anyone who conveys the material (or modified versions of
      it) with contractual assumptions of liability to the recipient, for
      any liability that these contractual assumptions directly impose on
      those licensors and authors.

    All other non-permissive additional terms are considered "further
  restrictions" within the meaning of section 10.  If the Program as you
  received it, or any part of it, contains a notice stating that it is
  governed by this License along with a term that is a further
  restriction, you may remove that term.  If a license document contains
  a further restriction but permits relicensing or conveying under this
  License, you may add to a covered work material governed by the terms
  of that license document, provided that the further restriction does
  not survive such relicensing or conveying.

    If you add terms to a covered work in accord with this section, you
  must place, in the relevant source files, a statement of the
  additional terms that apply to those files, or a notice indicating
  where to find the applicable terms.

    Additional terms, permissive or non-permissive, may be stated in the
  form of a separately written license, or stated as exceptions;
  the above requirements apply either way.

    8. Termination.

    You may not propagate or modify a covered work except as expressly
  provided under this License.  Any attempt otherwise to propagate or
  modify it is void, and will automatically terminate your rights under
  this License (including any patent licenses granted under the third
  paragraph of section 11).

    However, if you cease all violation of this License, then your
  license from a particular copyright holder is reinstated (a)
  provisionally, unless and until the copyright holder explicitly and
  finally terminates your license, and (b) permanently, if the copyright
  holder fails to notify you of the violation by some reasonable means
  prior to 60 days after the cessation.

    Moreover, your license from a particular copyright holder is
  reinstated permanently if the copyright holder notifies you of the
  violation by some reasonable means, this is the first time you have
  received notice of violation of this License (for any work) from that
  copyright holder, and you cure the violation prior to 30 days after
  your receipt of the notice.

    Termination of your rights under this section does not terminate the
  licenses of parties who have received copies or rights from you under
  this License.  If your rights have been terminated and not permanently
  reinstated, you do not qualify to receive new licenses for the same
  material under section 10.

    9. Acceptance Not Required for Having Copies.

    You are not required to accept this License in order to receive or
  run a copy of the Program.  Ancillary propagation of a covered work
  occurring solely as a consequence of using peer-to-peer transmission
  to receive a copy likewise does not require acceptance.  However,
  nothing other than this License grants you permission to propagate or
  modify any covered work.  These actions infringe copyright if you do
  not accept this License.  Therefore, by modifying or propagating a
  covered work, you indicate your acceptance of this License to do so.

    10. Automatic Licensing of Downstream Recipients.

    Each time you convey a covered work, the recipient automatically
  receives a license from the original licensors, to run, modify and
  propagate that work, subject to this License.  You are not responsible
  for enforcing compliance by third parties with this License.

    An "entity transaction" is a transaction transferring control of an
  organization, or substantially all assets of one, or subdividing an
  organization, or merging organizations.  If propagation of a covered
  work results from an entity transaction, each party to that
  transaction who receives a copy of the work also receives whatever
  licenses to the work the party's predecessor in interest had or could
  give under the previous paragraph, plus a right to possession of the
  Corresponding Source of the work from the predecessor in interest, if
  the predecessor has it or can get it with reasonable efforts.

    You may not impose any further restrictions on the exercise of the
  rights granted or affirmed under this License.  For example, you may
  not impose a license fee, royalty, or other charge for exercise of
  rights granted under this License, and you may not initiate litigation
  (including a cross-claim or counterclaim in a lawsuit) alleging that
  any patent claim is infringed by making, using, selling, offering for
  sale, or importing the Program or any portion of it.

    11. Patents.

    A "contributor" is a copyright holder who authorizes use under this
  License of the Program or a work on which the Program is based.  The
  work thus licensed is called the contributor's "contributor version".

    A contributor's "essential patent claims" are all patent claims
  owned or controlled by the contributor, whether already acquired or
  hereafter acquired, that would be infringed by some manner, permitted
  by this License, of making, using, or selling its contributor version,
  but do not include claims that would be infringed only as a
  consequence of further modification of the contributor version.  For
  purposes of this definition, "control" includes the right to grant
  patent sublicenses in a manner consistent with the requirements of
  this License.

    Each contributor grants you a non-exclusive, worldwide, royalty-free
  patent license under the contributor's essential patent claims, to
  make, use, sell, offer for sale, import and otherwise run, modify and
  propagate the contents of its contributor version.

    In the following three paragraphs, a "patent license" is any express
  agreement or commitment, however denominated, not to enforce a patent
  (such as an express permission to practice a patent or covenant not to
  sue for patent infringement).  To "grant" such a patent license to a
  party means to make such an agreement or commitment not to enforce a
  patent against the party.

    If you convey a covered work, knowingly relying on a patent license,
  and the Corresponding Source of the work is not available for anyone
  to copy, free of charge and under the terms of this License, through a
  publicly available network server or other readily accessible means,
  then you must either (1) cause the Corresponding Source to be so
  available, or (2) arrange to deprive yourself of the benefit of the
  patent license for this particular work, or (3) arrange, in a manner
  consistent with the requirements of this License, to extend the patent
  license to downstream recipients.  "Knowingly relying" means you have
  actual knowledge that, but for the patent license, your conveying the
  covered work in a country, or your recipient's use of the covered work
  in a country, would infringe one or more identifiable patents in that
  country that you have reason to believe are valid.

    If, pursuant to or in connection with a single transaction or
  arrangement, you convey, or propagate by procuring conveyance of, a
  covered work, and grant a patent license to some of the parties
  receiving the covered work authorizing them to use, propagate, modify
  or convey a specific copy of the covered work, then the patent license
  you grant is automatically extended to all recipients of the covered
  work and works based on it.

    A patent license is "discriminatory" if it does not include within
  the scope of its coverage, prohibits the exercise of, or is
  conditioned on the non-exercise of one or more of the rights that are
  specifically granted under this License.  You may not convey a covered
  work if you are a party to an arrangement with a third party that is
  in the business of distributing software, under which you make payment
  to the third party based on the extent of your activity of conveying
  the work, and under which the third party grants, to any of the
  parties who would receive the covered work from you, a discriminatory
  patent license (a) in connection with copies of the covered work
  conveyed by you (or copies made from those copies), or (b) primarily
  for and in connection with specific products or compilations that
  contain the covered work, unless you entered into that arrangement,
  or that patent license was granted, prior to 28 March 2007.

    Nothing in this License shall be construed as excluding or limiting
  any implied license or other defenses to infringement that may
  otherwise be available to you under applicable patent law.

    12. No Surrender of Others' Freedom.

    If conditions are imposed on you (whether by court order, agreement or
  otherwise) that contradict the conditions of this License, they do not
  excuse you from the conditions of this License.  If you cannot convey a
  covered work so as to satisfy simultaneously your obligations under this
  License and any other pertinent obligations, then as a consequence you may
  not convey it at all.  For example, if you agree to terms that obligate you
  to collect a royalty for further conveying from those to whom you convey
  the Program, the only way you could satisfy both those terms and this
  License would be to refrain entirely from conveying the Program.

    13. Use with the GNU Affero General Public License.

    Notwithstanding any other provision of this License, you have
  permission to link or combine any covered work with a work licensed
  under version 3 of the GNU Affero General Public License into a single
  combined work, and to convey the resulting work.  The terms of this
  License will continue to apply to the part which is the covered work,
  but the special requirements of the GNU Affero General Public License,
  section 13, concerning interaction through a network will apply to the
  combination as such.

    14. Revised Versions of this License.

    The Free Software Foundation may publish revised and/or new versions of
  the GNU General Public License from time to time.  Such new versions will
  be similar in spirit to the present version, but may differ in detail to
  address new problems or concerns.

    Each version is given a distinguishing version number.  If the
  Program specifies that a certain numbered version of the GNU General
  Public License "or any later version" applies to it, you have the
  option of following the terms and conditions either of that numbered
  version or of any later version published by the Free Software
  Foundation.  If the Program does not specify a version number of the
  GNU General Public License, you may choose any version ever published
  by the Free Software Foundation.

    If the Program specifies that a proxy can decide which future
  versions of the GNU General Public License can be used, that proxy's
  public statement of acceptance of a version permanently authorizes you
  to choose that version for the Program.

    Later license versions may give you additional or different
  permissions.  However, no additional obligations are imposed on any
  author or copyright holder as a result of your choosing to follow a
  later version.

    15. Disclaimer of Warranty.

    THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
  APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
  HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
  OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
  IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
  ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

    16. Limitation of Liability.

    IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
  WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
  THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
  GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
  USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
  DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
  PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
  EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
  SUCH DAMAGES.

    17. Interpretation of Sections 15 and 16.

    If the disclaimer of warranty and limitation of liability provided
  above cannot be given local legal effect according to their terms,
  reviewing courts shall apply local law that most closely approximates
  an absolute waiver of all civil liability in connection with the
  Program, unless a warranty or assumption of liability accompanies a
  copy of the Program in return for a fee.

                       END OF TERMS AND CONDITIONS

              How to Apply These Terms to Your New Programs

    If you develop a new program, and you want it to be of the greatest
  possible use to the public, the best way to achieve this is to make it
  free software which everyone can redistribute and change under these terms.

    To do so, attach the following notices to the program.  It is safest
  to attach them to the start of each source file to most effectively
  state the exclusion of warranty; and each file should have at least
  the "copyright" line and a pointer to where the full notice is found.

      <one line to give the program's name and a brief idea of what it does.>
      Copyright (C) <year>  <name of author>

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

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

      You should have received a copy of the GNU General Public License
      along with this program.  If not, see <https://www.gnu.org/licenses/>.

  Also add information on how to contact you by electronic and paper mail.

    If the program does terminal interaction, make it output a short
  notice like this when it starts in an interactive mode:

      <program>  Copyright (C) <year>  <name of author>
      This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
      This is free software, and you are welcome to redistribute it
      under certain conditions; type `show c' for details.

  The hypothetical commands `show w' and `show c' should show the appropriate
  parts of the General Public License.  Of course, your program's commands
  might be different; for a GUI interface, you would use an "about box".

    You should also get your employer (if you work as a programmer) or school,
  if any, to sign a "copyright disclaimer" for the program, if necessary.
  For more information on this, and how to apply and follow the GNU GPL, see
  <https://www.gnu.org/licenses/>.

    The GNU General Public License does not permit incorporating your program
  into proprietary programs.  If your program is a subroutine library, you
  may consider it more useful to permit linking proprietary applications with
  the library.  If this is what you want to do, use the GNU Lesser General
  Public License instead of this License.  But first, please read
  <https://www.gnu.org/licenses/why-not-lgpl.html>.


pkgId: fcab5075bf719a470237979f4ac3db9cad01ed8de049191e9e89f7638c1b5cd4
name: python-zabbix-cli-uio-help
arch: noarch
version: 3.4.2
epoch: 0
release: 1
summary: Development documents and examples for zabbix-cli-uio
url: https://pypi.org/project/zabbix-cli-uio/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-zabbix-cli-uio-3.4.2-1.src.rpm
location_href: Packages/python-zabbix-cli-uio-help-3.4.2-1.noarch.rpm
checksum_type: sha256
description:
  [![PyPI](https://img.shields.io/pypi/v/zabbix-cli-uio)](https://pypi.org/project/zabbix-cli-uio/)
  [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/zabbix-cli-uio)](<https://pypi.org/project/zabbix-cli-uio/>)
  [![PyPI - License](https://img.shields.io/pypi/l/zabbix-cli-uio)](<https://pypi.org/project/zabbix-cli-uio/>)
  ![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/unioslo/zabbix-cli/test.yml?branch=master&label=tests)

  <p align="center">
    <table>
      <tr>
          <td>
              <img width="100%" src="https://github.com/unioslo/zabbix-cli/blob/master/resources/help.png?raw=true">
          </td>
          <td>
              <img width="100%" src="https://github.com/unioslo/zabbix-cli/blob/master/resources/hosts.png?raw=true">
          </td>
      </tr>
      <tr>
          <td>
              <img width="100%" src="https://github.com/unioslo/zabbix-cli/blob/master/resources/host-inventory.png?raw=true">
          </td>
          <td>
              <img width="100%" src="https://github.com/unioslo/zabbix-cli/blob/master/resources/proxies.png?raw=true">
          </td>
      </tr>
    </table>
  </p>

  **Zabbix-CLI v3 has been completely rewritten from the ground up. The old version can be found [here](https://github.com/unioslo/zabbix-cli/tree/2.3.2).**



  Zabbix-cli is a command line interface for performing common administrative tasks tasks in [Zabbix monitoring system](https://www.zabbix.com/) via the [Zabbix API](https://www.zabbix.com/documentation/current/en/manual/api).

  The zabbix-cli code is written in [Python](https://www.python.org/) and distributed under the GNU General Public License v3. It has been developed and tested by [University Center for Information Technology](https://www.usit.uio.no/) at [the University of Oslo, Norway](https://www.uio.no/).

  The project home page is on [GitHub](https://github.com/unioslo/zabbix-cli). Please report any issues or improvements there.

  The manual is available online at <https://unioslo.github.io/zabbix-cli/>.





  > [!NOTE]
  > We are in the process of acquiring the name `zabbix-cli` on PyPI. Until then, installation must be done via the mirror package `zabbix-cli-uio`.



  ```bash
  uv tool install zabbix-cli-uio
  ```



  ```bash

  uvx --from zabbix-cli-uio zabbix-cli
  ```



  ```bash
  pipx install zabbix-cli-uio
  ```



  A homebrew package exists, but it is maintained by a third party. It can be installed with:

  ```bash
  brew install zabbix-cli
  ```



  Binaries built with PyInstaller can be found on the [releases page](https://github.com/unioslo/zabbix-cli/releases). We build binaries for Linux (x86), macOS (ARM & x86) and Windows (x86) for each release.



  Running `zabbix-cli` for the first time will prompt for a Zabbix URL, username and password. The URL should be the URL of the Zabbix web server without the `/api_jsonrpc.php` path.

  Running without arguments will start the REPL:

  ```bash
  zabbix-cli
  ```

  <img width="60%" src="https://github.com/unioslo/zabbix-cli/blob/master/resources/open-autocomplete.png?raw=true">



  Zabbix-cli is a command line interface for Zabbix. It can be used in three ways:

  1. **Interactive mode**: Start the REPL by running `zabbix-cli`. This will start a shell where you can run multiple commands in a persistent session.
  2. **Single command**: Run a single command by running `zabbix-cli COMMAND`. This will run the command and print the output.
  3. **Batch mode**: Run multiple commands from a file by running `zabbix-cli -f FILE`. The file should contain one command per line.

  Command reference can be found in the [online user guide](https://unioslo.github.io/zabbix-cli/commands/) or by running `zabbix-cli --help`.



  By default, the application will prompt for a username and password. Once authenticated, the application stores the session token in a file for future use.

  For more information about the various authentication methods, see the [authentication guide](https://unioslo.github.io/zabbix-cli/guide/authentication/).



  Zabbix-cli needs a config file. It is created when the application is started for the first time. The config file can be created manually with the `init` command:

  ```bash
  zabbix-cli init --zabbix-url https://zabbix.example.com/
  ```

  For more detailed information about the configuration file, see the [configuration guide](https://unioslo.github.io/zabbix-cli/guide/configuration/).



  Zabbix-cli supports two output formats: table and JSON. The default format is table, but it can be changed with the `--format` parameter:

  ```bash

  zabbix-cli show_hosts


  zabbix-cli --format json show_hosts


  > --format json show_hosts
  ```

  The default format can be configured with the `app.output.format` config option:

  ```toml
  [app.output]
  format = "json"
  ```



  <img width="60%" alt="format-table" src="https://github.com/user-attachments/assets/207fa12b-39c6-45b9-9f0e-7f217c723461">

  The default rendering mode is a [Rich](https://github.com/Textualize/rich) table that adapts to the width of the terminal.



  <img width="60%" alt="format-json" src="https://github.com/user-attachments/assets/680f507b-dc2a-41b2-87c4-c3a443d83979">

  The JSON output format is always in this format, where `ResultT` is the expected result type:

  ```json
  {
    "message": "",
    "errors": [],
    "return_code": "Done",
    "result": ResultT
  }
  ```

  The type of the `result` field varies based on the command run. For `show_host` it is a single Host object, while for `show_hosts` it is an _array_ of Host objects.

  <details>
    <summary><code>show_host foo.example.com*</code></summary>

    ```json
  {
    "message": "",
    "errors": [],
    "return_code": "Done",
    "result": {
      "hostid": "10648",
      "host": "foo.example.com",
      "description": "",
      "groups": [
        {
          "groupid": "22",
          "name": "All-hosts",
          "hosts": [],
          "flags": 0,
          "internal": null,
          "templates": []
        },
        {
          "groupid": "46",
          "name": "Source-foosource",
          "hosts": [],
          "flags": 0,
          "internal": null,
          "templates": []
        },
        {
          "groupid": "47",
          "name": "Hostgroup-bob-hosts",
          "hosts": [],
          "flags": 0,
          "internal": null,
          "templates": []
        },
        {
          "groupid": "48",
          "name": "Importance-X",
          "hosts": [],
          "flags": 0,
          "internal": null,
          "templates": []
        },
        {
          "groupid": "49",
          "name": "Hostgroup-alice-hosts",
          "hosts": [],
          "flags": 0,
          "internal": null,
          "templates": []
        }
      ],
      "templates": [],
      "inventory": {},
      "monitored_by": "proxy",
      "proxyid": "2",
      "proxy_groupid": "0",
      "maintenance_status": "0",
      "active_available": "0",
      "status": "0",
      "macros": [],
      "interfaces": [
        {
          "type": 1,
          "ip": "",
          "dns": "foo.example.com",
          "port": "10050",
          "useip": 0,
          "main": 1,
          "interfaceid": "49",
          "available": 0,
          "hostid": "10648",
          "bulk": null,
          "connection_mode": "Dns",
          "type_str": "Agent"
        }
      ],
      "proxy": {
        "proxyid": "2",
        "name": "proxy-prod02.example.com",
        "hosts": [],
        "status": null,
        "operating_mode": 0,
        "address": "127.0.0.1",
        "proxy_groupid": "1",
        "compatibility": 0,
        "version": 0,
        "local_address": "192.168.0.1",
        "local_port": "10051",
        "mode": "Active",
        "compatibility_str": "Undefined"
      },
      "zabbix_agent": "Unknown"
    }
  }
    ```

  </details>

  <details>
    <summary><code>show_hosts foo.*</code></summary>

    ```json
  {
    "message": "",
    "errors": [],
    "return_code": "Done",
    "result": [
      {
        "hostid": "10648",
        "host": "foo.example.com",
        "description": "",
        "groups": [
          {
            "groupid": "22",
            "name": "All-hosts",
            "hosts": [],
            "flags": 0,
            "internal": null,
            "templates": []
          },
          {
            "groupid": "46",
            "name": "Source-foosource",
            "hosts": [],
            "flags": 0,
            "internal": null,
            "templates": []
          },
          {
            "groupid": "47",
            "name": "Hostgroup-bob-hosts",
            "hosts": [],
            "flags": 0,
            "internal": null,
            "templates": []
          },
          {
            "groupid": "48",
            "name": "Importance-X",
            "hosts": [],
            "flags": 0,
            "internal": null,
            "templates": []
          },
          {
            "groupid": "49",
            "name": "Hostgroup-alice-hosts",
            "hosts": [],
            "flags": 0,
            "internal": null,
            "templates": []
          }
        ],
        "templates": [],
        "inventory": {},
        "monitored_by": "proxy",
        "proxyid": "2",
        "proxy_groupid": "0",
        "maintenance_status": "0",
        "active_available": "0",
        "status": "0",
        "macros": [],
        "interfaces": [],
        "proxy": {
          "proxyid": "2",
          "name": "proxy-prod02.example.com",
          "hosts": [],
          "status": null,
          "operating_mode": 0,
          "address": "127.0.0.1",
          "proxy_groupid": "1",
          "compatibility": 0,
          "version": 0,
          "local_address": "192.168.0.1",
          "local_port": "10051",
          "mode": "Active",
          "compatibility_str": "Undefined"
        },
        "zabbix_agent": "Unknown"
      }
    ]
  }
    ```

  </details>



  Zabbix-cli currently uses [uv](https://docs.astral.sh/uv/)  and [Hatch](https://hatch.pypa.io/latest/) for project management and packaging. To start off, clone the repository:

  ```bash
  git clone https://github.com/unioslo/zabbix-cli.git
  ```

  Then make a virtual environment using uv:

  ```bash
  uv venv
  ```

  This will create a new virtual environment, install the required dependencies and enter the environment.



  Run unit tests (without coverage):

  ```bash
  hatch run test
  ```

  Generate coverage report:

  ```bash
  hatch run cov
  ```



  To serve the documentation locally:

  ```bash
  hatch run docs:serve
  ```

  This will start a local web server on `http://localhost:8001` that is automatically refreshed when you make changes to the documentation. However, some hooks are only run on startup, such as the creation of pages for each command. Changes to command examples or docstrings will require a restart.


pkgId: 6aa1117dc76d592cef125281476007e7d4323927c04aa1c950036d0dbcf2c699
name: python-zabbixbackup-help
arch: noarch
version: 0.0.1b6
epoch: 0
release: 1
summary: Development documents and examples for zabbixbackup
url: https://www.zabbixbackup.com
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-zabbixbackup-0.0.1b6-1.src.rpm
location_href: Packages/python-zabbixbackup-help-0.0.1b6-1.noarch.rpm
checksum_type: sha256
description:
  *EXPERIMENTAL: use at your own risk!*

  Python script to perform zabbix dumps.

  See full project documentation at https://www.zabbixbackup.com.

  Inspired by the project https://github.com/npotorino/zabbix-backup.


  ```
  pip install zabbixbackup
  ```


  Create a backup connecting as user `postgres` to the db `zabbix` with schema `zabbix`

  `python -m zabbixbackup psql --host 127.0.0.1 --user postgres --passwd mypassword --database zabbix --schema zabbix`

  Create a tar archive dump and save standard zabbix configuration files along with it.

  `python -m zabbixbackup psql --host 127.0.0.1 --passwd mypassword --format tar --save-files`

  Create a "custom" archive and save it to a backup folder, rotate backups to retain
  only the last four.

  `python -m zabbixbackup psql --host 127.0.0.1 --passwd mypassword --format custom --rotate 4`

  Setup an authentication (`.pgpass`) file and use it to login in subsequent call.
  ```
  python -m zabbixbackup pgsql --host 127.0.0.1 \
            --passwd - --keep-login-file --dry-run
  [input password]
  mv .pgpass /root

  python -m zabbixbackup pgsql --host 127.0.0.1 --login-file /root/.pgpass
  ```

  Setup an authentication (`mylogin.cnf`) file and use it to login in subsequent call.
  ```
  python -m zabbixbackup mysql --host 127.0.0.1 \
            --passwd - --keep-login-file --dry-run
  [input password]
  mv mylogin.cnf /root

  python -m zabbixbackup mysql --host 127.0.0.1 --login-file /root/mylogin.cnf
  ```


  ```
  usage: zabbixbackup [-h] {psql,pgsql,mysql} ...

  options:
    -h, --help          show this help message and exit

  DBMS:
    {psql,pgsql,mysql}
      psql (pgsql)      (see zabbixbackup psql --help)
      mysql             (see zabbixbackup mysql --help)
  ```



  `zabbixbackup psql --help`
  ```
  usage: zabbixbackup psql [-h] [-z] [-Z ZBX_CONFIG] [-D] [-H HOST] [-P PORT]
                           [-u USER] [-p PASSWD] [--keep-login-file]
                           [--login-file LOGINFILE] [-d DBNAME] [-s SCHEMA] [-n]
                           [-U {dump,nodata,ignore,fail}] [-M {dump,nodata}]
                           [-N] [-x PGCOMPRESSION]
                           [-f {custom,directory,plain,tar}] [--save-files]
                           [--files FILES] [-a ARCHIVE] [-o OUTDIR] [-r ROTATE]
                           [-q | -v | -V | --debug]

  zabbix dump for psql inspired and directly translated from...

  options:
    -h, --help            show this help message and exit
    -z, --read-zabbix-config
                          try to read database host and credentials from Zabbix
                          config. Implicit if `--zabbix-config` is set.
                          (default: False)
    -Z ZBX_CONFIG, --zabbix-config ZBX_CONFIG
                          Zabbix config file path. Implicit if `--read-zabbix-
                          config` is set. (default:
                          /etc/zabbix/zabbix_server.conf)
    -D, --dry-run         Do not create the actual backup, only show dump
                          commands. Be aware that the database will be queried
                          for tables selection and temporary folders and files
                          will be created. (default: False)

  connection options:
    -H HOST, --host HOST  hostname/IP of DBMS server, to specify a blank value
                          pass '-'. If host starts with a slash it's interpreted
                          as a socket directory. Special rules might apply (see
                          postgre online documentation for sockets). (default:
                          127.0.0.1)
    -P PORT, --port PORT  DBMS port. (default: 5432)
    -u USER, --username USER
                          database login user. (default: zabbix)
    -p PASSWD, --passwd PASSWD
                          database login password (specify '-' for an
                          interactive prompt). (default: None)
    --keep-login-file     if a credential file is created (.pgpass) do not
                          delete it on exit. (default: False)
    --login-file LOGINFILE
                          use '.pgpass' file for the authentication. (default:
                          None)
    -d DBNAME, --database DBNAME
                          database name. (default: zabbix)
    -s SCHEMA, --schema SCHEMA
                          database schema. (default: public)
    -n, --reverse-lookup  (NOT IMPLEMENTED) perform a reverse lookup of the IP
                          address for the host. (default: True)

  dump action options:
    -U {dump,nodata,ignore,fail}, --unknown-action {dump,nodata,ignore,fail}
                          action for unknown tables. (default: ignore)
    -M {dump,nodata}, --monitoring-action {dump,nodata}
                          action for monitoring table (default: nodata)
    -N, --add-columns     add column names in INSERT clauses and quote them as
                          needed. (default: False)

  dump level compression options:
    -x PGCOMPRESSION, --pgcompression PGCOMPRESSION
                          passed as-is to pg_dump --compress, might be implied
                          by format. (default: None)
    -f {custom,directory,plain,tar}, --pgformat {custom,directory,plain,tar}
                          dump format, will mandate the file output format.
                          (default: custom)

  configuration files:
    --save-files          save folders and other files (see --files). (default:
                          False)
    --files FILES         save folders and other files as listed in this file.
                          One line per folder or file, non existant will be
                          ignored. Directory structure is replicated (copied via
                          'cp'). (default: -)

  output options:
    -a ARCHIVE, --archive ARCHIVE
                          archive level compression. 'tar' to create a tar
                          archive, '-' to leave the backup uncompressed as a
                          folder. Other available formats are xz, gzip and
                          bzip2. Use ':<LEVEL>' to set a compression level. I.e.
                          --archive xz:6 (default: -)
    -o OUTDIR, --outdir OUTDIR
                          save database dump to 'outdir'. (default: .)
    -r ROTATE, --rotate ROTATE
                          rotate backups while keeping up 'R' old backups.Uses
                          filename to match '0=keep everything'. (default: 0)

  verbosity:
    -q, --quiet           don't print anything except unrecoverable errors.
                          (default: False)
    -v, --verbose         print informations. (default: True)
    -V, --very-verbose    print even more informations. (default: False)
    --debug               print everything. (default: False)
  ```



  `zabbixbackup mysql --help`
  ```
  usage: zabbixbackup mysql [-h] [-z] [-Z ZBX_CONFIG] [-c] [-C MYSQL_CONFIG]
                            [-D] [-H HOST] [-P PORT] [-S SOCK] [-u USER]
                            [-p PASSWD] [--keep-login-file]
                            [--login-file LOGINFILE] [-d DBNAME] [-n]
                            [-U {dump,nodata,ignore,fail}] [-M {dump,nodata}]
                            [-N] [--mysqlcompression MYSQLCOMPRESSION]
                            [--save-files] [--files FILES] [-a ARCHIVE]
                            [-o OUTDIR] [-r ROTATE] [-q | -v | -V | --debug]

  zabbix dump for mysql inspired and directly translated from...

  options:
    -h, --help            show this help message and exit
    -z, --read-zabbix-config
                          try to read database host and credentials from Zabbix
                          config. Implicit if `--zabbix-config` is set.
                          (default: False)
    -Z ZBX_CONFIG, --zabbix-config ZBX_CONFIG
                          Zabbix config file path. Implicit if `--read-zabbix-
                          config` is set. (default:
                          /etc/zabbix/zabbix_server.conf)
    -c, --read-mysql-config
                          Read database host and credentials from MySQL config
                          file. Implicit if `--mysql-config` is set. (default:
                          False)
    -C MYSQL_CONFIG, --mysql-config MYSQL_CONFIG
                          MySQL config file path. Implicit if `--read-mysql-
                          config` is set. (default: /etc/mysql/my.cnf)
    -D, --dry-run         Do not create the actual backup, only show dump
                          commands. Be aware that the database will be queried
                          for tables selection and temporary folders and files
                          will be created. (default: False)

  connection options:
    -H HOST, --host HOST  hostname/IP of DBMS server, to specify a blank value
                          pass '-'. (default: 127.0.0.1)
    -P PORT, --port PORT  DBMS port. (default: 3306)
    -S SOCK, --socket SOCK
                          path to DBMS socket file. Alternative to specifying
                          host. (default: None)
    -u USER, --username USER
                          database login user. (default: zabbix)
    -p PASSWD, --passwd PASSWD
                          database login password (specify '-' for an
                          interactive prompt). (default: None)
    --keep-login-file     if a credential file is created (mylogin.cnf) do not
                          delete it on exit. (default: False)
    --login-file LOGINFILE
                          use 'mylogin.cnf' file for the authentication.
                          (default: None)
    -d DBNAME, --database DBNAME
                          database name. (default: zabbix)
    -n, --reverse-lookup  (NOT IMPLEMENTED) perform a reverse lookup of the IP
                          address for the host. (default: True)

  dump action options:
    -U {dump,nodata,ignore,fail}, --unknown-action {dump,nodata,ignore,fail}
                          action for unknown tables. (default: ignore)
    -M {dump,nodata}, --monitoring-action {dump,nodata}
                          action for monitoring table (default: nodata)
    -N, --add-columns     add column names in INSERT clauses and quote them as
                          needed. (default: False)

  dump level compression options:
    --mysqlcompression MYSQLCOMPRESSION
                          dump level compression. Available formats are xz, gzip
                          and bzip2. Use ':<LEVEL>' to set a compression level.
                          I.e. --archive xz:6. See documentation for the
                          details. (default: gzip:6)

  configuration files:
    --save-files          save folders and other files (see --files). (default:
                          False)
    --files FILES         save folders and other files as listed in this file.
                          One line per folder or file, non existant will be
                          ignored. Directory structure is replicated (copied via
                          'cp'). (default: -)

  output options:
    -a ARCHIVE, --archive ARCHIVE
                          archive level compression. 'tar' to create a tar
                          archive, '-' to leave the backup uncompressed as a
                          folder. Other available formats are xz, gzip and
                          bzip2. Use ':<LEVEL>' to set a compression level. I.e.
                          --archive xz:6 (default: -)
    -o OUTDIR, --outdir OUTDIR
                          save database dump to 'outdir'. (default: .)
    -r ROTATE, --rotate ROTATE
                          rotate backups while keeping up 'R' old backups.Uses
                          filename to match '0=keep everything'. (default: 0)

  verbosity:
    -q, --quiet           don't print anything except unrecoverable errors.
                          (default: False)
    -v, --verbose         print informations. (default: True)
    -V, --very-verbose    print even more informations. (default: False)
    --debug               print everything. (default: False)
  ```


pkgId: 81994f037ca1185c49242626909f568183477f496a2c9e313666cff197690229
name: python-zango-help
arch: noarch
version: 0.4.0
epoch: 0
release: 1
summary: Development documents and examples for zango
url: https://github.com/Healthlane-Technologies/zelthy3
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-zango-0.4.0-1.src.rpm
location_href: Packages/python-zango-help-0.4.0-1.noarch.rpm
checksum_type: sha256
description:
  <h1 align="center">
      <a target="_blank" href="https://www.zelthy.com/framework?referer=zelthy3-repo-landing">
          <img src="https://zelthy-dev-static.s3.ap-south-1.amazonaws.com/zango_logo_bk.svg" alt="ZCore" >
      </a>
  </h1>

  <hr>


  <a href="https://www.zango.dev/blog/architecting-microservices-as-a-tenant-on-a-monolith" target="_blank">Know more</a>
  <hr>
  <p align="center">
    <a href="#">
          <img alt="PyPI version" src="https://badge.fury.io/py/zango.svg"></a>
    <a href="#">
        <img alt="Build" src="https://github.com/Healthlane-Technologies/Zango/actions/workflows/release-zango.yml/badge.svg"></a>
    <a href="https://opensource.org/licenses/Apache-2.0" target="_blank">
        <img alt="License" src="https://img.shields.io/badge/License-Apache_2.0-blue.svg"> </a>
  </p>

  <p align="center">
    <a href="https://www.zango.dev" target="_blank">Website</a> |
    <a href="https://www.zango.dev/docs/category/getting-started" target="_blank">Getting Started </a>|
    <a href="https://zango.dev/docs" target="_blank">Docs</a> |
    <a href="https://discord.com/invite/WHvVjU23e7" target="_blank">Discord</a>
  </p>



  **Zango** is a web application development framework built upon Django, designed to enable rapid development of enterprise-ready business applications.


  - Leverage the strengths of Django, an already proven and battle-tested web framework
  - Make available the basics of business web apps/ microservices as part of the framework
  - Host multiple apps or microservices on a single monolith under the hood.
  - Security & Compliances are built in.
  - Suite of essential packages to serve as the building blocks of apps
  - Use case packages to build the industry-specific use cases

  [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Healthlane-Technologies/Zango/)



  Perform tasks such as configuring permissions, managing user roles, and much more.

  ![Zango App Panel](https://github.com/Healthlane-Technologies/Zango/assets/22682748/69f42dec-4ca1-4d19-974f-e83c2ddb7324)




  Zango redefines multi-tenancy by enabling multiple different apps to run on a single server. Say goodbye to the limitations of traditional scaling methods. With our platform, you can run multiple different applications on a single server, which helps in keeping the cost in check.

  ![Scaling](https://github.com/Healthlane-Technologies/Zango/assets/52698821/497837f7-5210-4cfd-8f36-961327c9c405)




  Star Zango on GitHub and be instantly notified of new releases.

  ![star us](https://github.com/Healthlane-Technologies/Zango/assets/12683350/15b97240-c381-472b-a112-7c701a29ccda)





  - [Gitpod](https://www.zango.dev/docs/core/getting-started/installing-zelthy/gitpod)
  - [Docker](https://www.zango.dev/docs/core/getting-started/installing-zelthy/docker)
  - [Manual](https://www.zango.dev/docs/core/getting-started/installing-zelthy/manual)



  A few essential packages are freely available. These packages enable development of a wide variety of applications and are available for installation from the App Panel.
  - [Basic Auth](https://www.zango.dev/docs/basic-auth/introduction)
  - [Frames](https://www.zango.dev/docs/frame/introduction)
  - [CRUD](https://www.zango.dev/docs/crud/introduction)
  - [Workflow](https://www.zango.dev/docs/workflow/overview)




  Join our community and help build **Zango**. Here's how you can get involved:

  - **Star the Repo:** Show your support by giving us a star! ⭐️
  - **Spread the Word:** Share Zango with your colleagues and friends. 📣
  - **Join the Conversation:** Share your brilliant ideas and suggestions on Discord [here](https://discord.com/invite/WHvVjU23e7). 💬
  - **Report Issues:** Notice something not quite right? Let us know by creating an issue. Your feedback is invaluable! 🐛
  - **Contribute Code:** Dive into open issues and send pull requests to help us squash bugs and implement exciting enhancements. 🛠️

  Together, let's build something incredible! ✨🚀


pkgId: d55829731922a30b2065c7200f8e8dd97ef7da359d6117542c62e933f3830350
name: python-zcmds-win32-help
arch: noarch
version: 1.2.27
epoch: 0
release: 1
summary: Development documents and examples for zcmds-win32
url: https://pypi.org/project/zcmds-win32/
rpm_license: BSD 3-Clause License
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-zcmds-win32-1.2.27-1.src.rpm
location_href: Packages/python-zcmds-win32-help-1.2.27-1.noarch.rpm
checksum_type: sha256
description:
  [![Linting](https://github.com/zackees/zcmds_win32/actions/workflows/lint.yml/badge.svg)](https://github.com/zackees/zcmds_win32/actions/workflows/lint.yml)
  [![Win_Tests](https://github.com/zackees/zcmds_win32/actions/workflows/push_win.yml/badge.svg)](https://github.com/zackees/zcmds_win32/actions/workflows/push_win.yml)

  Optional zcmds package for win32 to make it feel more like a linux distribution. This is a great package to use if you want to
  use things like `tee`, `grep` and unix commands and have it work on windows.



    * cat
    * cp
    * du
    * git-bash
    * grep
    * home
    * false
    * id
    * ls
    * md5sum
    * mv
    * nano
    * pico
    * ps
    * open
    * rm
    * true
    * test
    * tee
    * touch
    * unzip
    * which
    * wc
    * xargs
    * uniq
    * uname
    * fixvmmem
      * If CPU consumption for vmmem high, run this command to fix it.
    * yes



    * `python -m pip install zcmds`




    * `git clone https://github.com/zackees/zcmds_win32`
    * `cd zcmds_win32`
    * `python -pip install -e .`



    * 1.2.26: Adds missing dll files that aren't found coincidentally on some systems.
    * 1.2.24: Includes the tools in 1.2.21 for use.
    * 1.2.21: `basename`, `awk` and `[` for compatibility.
    * 1.2.19: `python3` and `pip3` now map to `python` and `pip`
    * 1.2.18: Better `bash`, which now paths the default git-bash `/usr/bin``
    * 1.2.17: Added `date`
    * 1.2.16: `open` now accepts double back slashes.
    * 1.2.15: Adds `realpath` and `uname` to git-bash utils.
    * 1.2.14: Fixes `bash` from missing file.
    * 1.2.13: Adds `bash` from git-bash and `dirname`.
    * 1.2.12: `sshpass` and now `zcmds_win32 --install` to force re-download of unix tools.
    * 1.2.10: `open` now handles git paths
    * 1.2.9: Fix `ssh-keygen` trampoline and other new ssh commands.
    * 1.2.8: Improved `open` command to now open extensionless text files
    * 1.2.7: Adds ssh related tools for windows from git-bash.
    * 1.2.4: Fixes `open` when passing in a '.' directory.
    * 1.2.3: `home` now works in non C: drive
    * 1.2.2: Adds `make` tool for building code.
    * 1.2.1: Adds tool `dig`
    * 1.0.26: When sublime is opened via `open` it now opens in it's own window.
    * 1.0.25: Fix `open` for python 3.9
    * 1.0.24: Add `sed`
    * 1.0.23: Yank 1.0.21/22
    * 1.0.20: Adds `uniq` and `uname`
    * 1.0.19: Change default text editor to sublime over textpad
    * 1.0.18: Adds `true` and `false` and `timeout`
    * 1.0.17: Minor fixes.
    * 1.0.16: Adds `xargs`, `ps`, `id`, `wc`, `md5sum`, `tee`
    * 1.0.15: fixed 'no' command, which doesn't exist.
    * 1.0.13: Adds `yes`
    * 1.0.12: open tries to find a text editor.
    * 1.0.11: Adds `sudo_win32[sudo]`
    * 1.0.10: Fixes `fixvmmem` which now uses elevated_exec
    * 1.0.9: Fixes `open` when using forward slashes
    * 1.0.8: Fixes `open` when using `open .`
    * 1.0.7: Fixes missing `fixvmmem`
    * 1.0.5: `open` now assumes current directory if no path is given
    * 1.0.4: `fixvmmem` now runs in elevated privledges
    * 1.0.3: Adds `fixvmmem`
    * 1.0.2: Adds `unzip`
    * 1.0.1: Adds `pico/nano`
    * 1.0.0: Moved zcmds_win32 from zcmds


pkgId: 596e01c12094edab7eaf0c1af5857bd1b73f1859f245794e039300971fe8d7ef
name: python-zdev-help
arch: noarch
version: 0.0.4
epoch: 0
release: 1
summary: Development documents and examples for zdev
url: https://github.com/zynt3c/zdev
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-zdev-0.0.4-1.src.rpm
location_href: Packages/python-zdev-help-0.0.4-1.noarch.rpm
checksum_type: sha256
description:
  Versatile collection of routines & tools for common development tasks.



  This library provides handy routines & tools for common tasks during development as well as for productive use in Python programs (e.g. stripping ```fileparts()```). Application focus is on *scripts for automation* as well as on *algorithmic functions*.

  The package is structured into the following modules:

  - **base**: init for Python console session & tools for automatic project deployment

  - **core**: main collection of development functions (e.g. for type-checks, info strings, mass file operations or dependency tracking)

  - **indexing**: helpers related to "find-type" of tasks (e.g. runlength sections or file-goto)

  - **parallel**: convenience functions that build on Python's native ```multiprocessing``` package and classes for controllable dispatching of jobs onto N cores

  - **plot**: routines for a single-line yet sophisticated control of figures based on ```matplotlib``` or ```plotly``` packages.
  *Note: In order to support ```zynamon.TimeSeries``` the underlying package must be known and accessible as well!*

  - **testing**: set of small dummy functions w/ and w/o arguments that can be used for testing (e.g. for routines in ```zdev.parallel```)

  - **validio**: functions for a robust I/O behaviour (i.e. automatic replacement of "problematic" characters etc)

  - **colors**: central definition of common color codes (RGB) in human-readable form (e.g. ```cPurple```)

  - **searchstr**: central definition of common strings used in regular expressions

  More specialized tools can be found in:

  - **ccnx**: "C-core nexus", providing simplified access to C-code DLLs (using ```ctypes``` package)
  - **libDSP**: support for access to "libDSP.dll" - a hand-crafted C-code library for signal processing
  - **xlcmp**: functions to compare rows or sheets of Excel workbooks and highlighting results in exported copies (using ```openpyxl``` package)
  - **sigproc**: some basic signal processing tests (ALPHA!)

  [ Dr. Marcus Zeller | dsp4444@gmail.com | Erlangen, Germany | 2019-2024 ]

rpm_license:
  This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation (GPL v3, or any later version).  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.  You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.


pkgId: 3c7e7cc75fcdd5fe7f75e62fdf2bf7e70402acba42dec63689a8d01e773c1954
name: python-zdt-stepper-help
arch: noarch
version: 0.1.1
epoch: 0
release: 1
summary: Development documents and examples for zdt-stepper
url: https://pypi.org/project/zdt-stepper/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-zdt-stepper-0.1.1-1.src.rpm
location_href: Packages/python-zdt-stepper-help-0.1.1-1.noarch.rpm
checksum_type: sha256
rpm_license:
  MIT License  Copyright (c) 2024 [Yehe Liu]  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: d6a346e8d6f20723d99b4cb3acb107d319303fd38972c22d2fa0c8ec088c987e
name: python-zeclient-help
arch: noarch
version: 1.1.8
epoch: 0
release: 1
summary: Development documents and examples for zeclient
url: http://www.ze.com
rpm_license: Please refer to the ZEMA license
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-zeclient-1.1.8-1.src.rpm
location_href: Packages/python-zeclient-help-1.1.8-1.noarch.rpm
checksum_type: sha256
description:
  The ZE Python Client provides a unified module - ZemaClient for retrieving data from ZEMA web services.



  Python 3.5 or above and the following packages

   * requests
   * lxml
   * pandas
   * zeep
   * dicttoxml

  The packages will be automatically installed during the installation.



  ```
  pip install zeclient
  ```



  ```python
    from zeclient.zema_client import ZemaClient

    
    datadirect_url = "http://host.company.com/datadirect";

    
    client = ZemaClient(datadirect_url, 'user.name', 'password', 'Client')

    or

    
    client = ZemaClient(datadirect_url, token)

    ZEMA API Token is created or renewed from DataDirect. Please refer to API Token Generation Guidelines in ZEMA Data Direct Web Services documentation.

    
    result = client.get_profile('user.name', 'profile group', 'profile name')
  ```


  Please report bugs to support@ze.com


pkgId: 16082b006c1dd262d1ac5e5793b625032553a159fb0b9dd00b7b79f1531b527c
name: python-zeek-client-help
arch: noarch
version: 1.4.0
epoch: 0
release: 1
summary: Development documents and examples for zeek-client
url: https://pypi.org/project/zeek-client/
rpm_license: 3-clause BSD License
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-zeek-client-1.4.0-1.src.rpm
location_href: Packages/python-zeek-client-help-1.4.0-1.noarch.rpm
checksum_type: sha256
description:
  [![Unit tests](https://github.com/zeek/zeek-client/actions/workflows/test.yml/badge.svg)](https://github.com/zeek/zeek-client/actions/workflows/test.yml)

  This is the recommended command-line client for interacting with Zeek's
  [Management framework](https://docs.zeek.org/en/master/frameworks/management.html).
  Built in Python and using Broker's [WebSocket pub/sub interface](https://docs.zeek.org/projects/broker/en/v2.3.0/web-socket.html), it
  connects to a cluster controller to execute management tasks. Here's what it looks like:

  ```console
  $ zeek-client --help
  usage: zeek-client [-h] [-c FILE] [--controller HOST:PORT] [--set SECTION.KEY=VAL] [--quiet | --verbose]
                     [--version]
                     {deploy,deploy-config,get-config,get-id-value,get-instances,get-nodes,monitor,restart,stage-config,show-settings,test-timeout}
                     ...

  A Zeek management client

  options:
    -h, --help            show this help message and exit
    -c FILE, --configfile FILE
                          Path to zeek-client config file. (Default: /home/christian/inst/opt/zeek/etc/zeek-
                          client.cfg)
    --controller HOST:PORT
                          Address and port of the controller, either of which may be omitted (default:
                          127.0.0.1:2150)
    --set SECTION.KEY=VAL
                          Adjust a configuration setting. Can use repeatedly. See show-settings.
    --quiet, -q           Suppress informational output to stderr.
    --verbose, -v         Increase informational output to stderr. Repeat for more output (e.g. -vvv).
    --version             Show version number and exit.

  commands:
    {deploy,deploy-config,get-config,get-id-value,get-instances,get-nodes,monitor,restart,stage-config,show-settings,test-timeout}
                          See `zeek-client <command> -h` for per-command usage info.
      deploy              Deploy a staged cluster configuration.
      deploy-config       Upload a cluster configuration and deploy it.
      get-config          Retrieve staged or deployed cluster configuration.
      get-id-value        Show the value of a given identifier in Zeek cluster nodes.
      get-instances       Show instances connected to the controller.
      get-nodes           Show active Zeek nodes at each instance.
      monitor             For troubleshooting: do nothing, just report events.
      restart             Restart cluster nodes.
      stage-config        Upload a cluster configuration for later deployment.
      show-settings       Show zeek-client's own configuration.
      test-timeout        Send timeout test event.

  environment variables:

      ZEEK_CLIENT_CONFIG_FILE:      Same as `--configfile` argument, but lower precedence.
      ZEEK_CLIENT_CONFIG_SETTINGS:  Same as a space-separated series of `--set` arguments, but lower precedence.
  ```



  The recommended way to run the client is to install it with Zeek, since the
  client is part of the distribution. You may also run it directly from the
  official Zeek [Docker image](https://hub.docker.com/r/zeekurity/zeek).

  The WebSocket-powered `zeek-client` currently requires Zeek built from
  the master branch, or via our [development Docker image](https://hub.docker.com/r/zeekurity/zeek-dev).
  `zeek-client` will officially become available as a standalone package,
  installable via `pip`, with Zeek 5.2.



  Run the following (as root) to launch an all-in-one management instance on your
  system:

  ```console

  ```

  The above will stay in the foreground. In a new shell, save the following
  content to a file ``cluster.cfg`` and adapt the worker's sniffing interfaces to
  your system:

  ```ini
  [manager]
  role = manager

  [logger]
  role = logger

  [worker-01]
  role = worker
  interface = lo

  [worker-02]
  role = worker
  interface = eth0
  ```

  Run the following command (as any user) to deploy the configuration:

  ```console
  $ zeek-client deploy-config cluster.cfg
  {
    "errors": [],
    "results": {
      "id": "9befc56c-f7e8-11ec-8626-7c10c94416bb",
      "nodes": {
        "logger": {
          "instance": "agent-testbox",
          "success": true
        },
        "manager": {
          "instance": "agent-testbox",
          "success": true
        },
        "worker-01": {
          "instance": "agent-testbox",
          "success": true
        },
        "worker-02": {
          "instance": "agent-testbox",
          "success": true
        }
      }
    }
  }
  ```

  You are now running a Zeek cluster on your system. Try ``zeek-client get-nodes``
  to see more details about the cluster's current status. (In the above, "testbox"
  is the system's hostname.)



  The [Zeek documentation](https://docs.zeek.org/en/master/frameworks/management.html)
  covers both the Management framework and the client's commands.


pkgId: 2213fca508a70d67393f08711049c9ef1051c85eec3e1cc284c11fb821227b41
name: python-zeekscript-help
arch: noarch
version: 1.3.0
epoch: 0
release: 1
summary: Development documents and examples for zeekscript
url: https://pypi.org/project/zeekscript/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-zeekscript-1.3.0-1.src.rpm
location_href: Packages/python-zeekscript-help-1.3.0-1.noarch.rpm
checksum_type: sha256
description:
  [![Build and test](https://github.com/zeek/zeekscript/actions/workflows/build_wheels.yml/badge.svg)](https://github.com/zeek/zeekscript/actions/workflows/build_wheels.yml)

  `zeekscript` is a Python package that provides tooling to operate on [Zeek](https://zeek.org)
  scripts. `zeekscript` comes with command line tools that make common tasks accessible,
  but its functionality is just an `import zeekscript` away in your own Python tools.

  `zeekscript` is powered by [Tree-Sitter](https://tree-sitter.github.io/tree-sitter/),
  its [Python bindings](https://github.com/tree-sitter/py-tree-sitter), and our
  [tree-sitter-zeek](https://github.com/zeek/tree-sitter-zeek) grammar.



  `zeekscript` supports Python 3.7+ on Linux, MacOS, and Windows. We recommend
  CPython. PyPy looks prone to crashing on Windows and MacOS, and we're not
  currently building PyPy wheels on those platforms. (We've not investigated PyPy
  in depth and feedback is welcome.)



  To install our ready-made Python wheels, say:

  ```console
  pip install zeekscript
  ```

  For a full list of available builds, you can check out the
  [PyPI downloads](https://pypi.org/project/zeekscript/#files) or take a look at our
  [CI build matrix](https://github.com/zeek/zeekscript/blob/main/.github/workflows/build_wheels.yml).

  The `zeekscript` package includes native code (the compiled [tree-sitter Zeek
  grammar](https://github.com/zeek/tree-sitter-zeek)). We strive to provide wheels
  for popular platforms and Python versions. In case your setup isn't covered, the
  installation process will build the package locally on your system, for which
  some dependencies need to be available. Read on for details, and feel free to
  file a ticket detailing your setup.



  If our build matrix doesn't cover your platform and Python version, or if you'd
  simply like to build and install the `zeekscript` package yourself, you need to
  provide two dependencies:

  * The [tree-sitter Python bindings](https://pypi.org/project/tree-sitter/),
    available via

    ```console
    pip install tree_sitter
    ```

  * A C compiler, such as `gcc` or `clang`.

  To obtain the sources, please clone this repository. **Note**: make sure to
  clone recursively (`git clone --recurse-submodules`), since this pulls in the
  needed Zeek grammar. We don't provide source packages on Github, but all
  releases are tagged in `git`.

  For installation from local sources, say:

  ```console
  pip install .
  ```

  The `zeekscript` package doesn't implement the Zeek grammar compilation itself,
  it outsources it to the `tree-sitter` Python bindings, which provide this
  ability directly from Python. `zeekscript` merely initiates compilation during
  the package build. See our
  [setup.py](https://github.com/zeek/zeekscript/blob/main/setup.py) for details.



  The package comes with a testsuite. To run it, say

  ```console
  make
  ```

  from the toplevel. For details on the tests, take a look at the `tests`
  directory.





  Most significantly, the package includes `zeek-format`, a tool that formats Zeek
  scripts. Our philosophy is similar to `gofmt` and the opposite of
  `clang-format`: there is only one way to layout Zeek scripts, and this tool
  provides it. Accordingly, it features zero options for tweaking the formatting:

  ```console
  $ zeek-format --help
  usage: zeek-format [-h] [--version] [--inplace] [--recursive] [FILES ...]

  A Zeek script formatter

  positional arguments:
    FILES            Zeek script(s) to process. Use "-" to specify stdin as a filename. Omitting filenames entirely implies
                     reading from stdin.

  options:
    -h, --help       show this help message and exit
    --version, -v    show version and exit
    --inplace, -i    change provided files instead of writing to stdout
    --recursive, -r  process *.zeek files recursively when provided directories instead of files. Requires --inplace.
  ```

  Parsing errors are not fatal, and `zeek-format` does its best to continue
  formatting in the presence of errors. When it encounters parser errors,
  `zeek-format` exits with a non-zero exit code and reports the trouble it
  encountered to stderr.

  ```console
  $ echo 'event  foo( a:count ) {print  "hi" ; }' | zeek-format
  event foo(a: count)
          {
          print "hi";
          }
  ```

  To format entire directory trees, combine `--inplace` and `--recursive`, and
  point it at a directory:

  ```console
  $ cd zeek
  $ zeek-format -ir scripts
  430 files processed successfully
  ```



  The `zeek-script` command is the Swiss army knife in the toolbox: it provides
  access to a range of script-processing tools (including formatting) via
  subcommands. (Okay, so far "range" == two, but expect that to grow in the future.)

  ```console
  $ zeek-script --help
  usage: zeek-script [-h] [--version] {format,parse} ...

  A Zeek script analyzer

  options:
    -h, --help      show this help message and exit
    --version, -v   show version and exit

  commands:
    {format,parse}  See `zeek-script <command> -h` for per-command usage info.
      format        Format/indent Zeek scripts
      parse         Show Zeek script parse tree with parser metadata.
  ```

  The `parse` command renders its script input as a parse tree. It resembles
  `tree-sitter parse`, but shows more context about the relevant snippets of
  content, including parsing errors.

  ```console
  $ echo 'event zeek_init() { }' | zeek-script parse
  source_file (0.0,1.0) 'event zeek_init() { }\n'
      decl (0.0,0.21) 'event zeek_init() { }'
          func_decl (0.0,0.21) 'event zeek_init() { }'
              func_hdr (0.0,0.17) 'event zeek_init()'
                  event (0.0,0.17) 'event zeek_init()'
                      event (0.0,0.5)
                      id (0.6,0.15) 'zeek_init'
                      func_params (0.15,0.17) '()'
                          ( (0.15,0.16)
                          ) (0.16,0.17)
              func_body (0.18,0.21) '{ }'
                  { (0.18,0.19)
                  } (0.20,0.21)
  ```

  Here's a syntax error:

  ```console
  $ echo 'event zeek_init)() { }' | zeek-script parse
  source_file (0.0,1.0) [error] 'event zeek_init)() { }\n'
      decl (0.0,0.22) [error] 'event zeek_init)() { }'
          func_decl (0.0,0.22) [error] 'event zeek_init)() { }'
              func_hdr (0.0,0.18) [error] 'event zeek_init)()'
                  event (0.0,0.18) [error] 'event zeek_init)()'
                      event (0.0,0.5)
                      id (0.6,0.15) 'zeek_init'
                      ERROR (0.15,0.16) [error] ')'
                          ) (0.15,0.16)
                      func_params (0.16,0.18) '()'
                          ( (0.16,0.17)
                          ) (0.17,0.18)
              func_body (0.19,0.22) '{ }'
                  { (0.19,0.20)
                  } (0.21,0.22)
  parse tree has problems: cannot parse line 0, col 15: ")"
  ```

  See `zeek-script parse --help` for more information.



  `zeekscript` features command-line auto-completion for users of
  [argcomplete](https://github.com/kislyuk/argcomplete).



  You can integrate `zeekscript` into any editor that supports the execution of
  shell commands on the currently edited files. The relevant `zeekscript` commands
  support reading from stdin or filename.



  We offer an [Emacs mode](https://github.com/zeek/emacs-zeek-mode) with support
  for script formatting and parse tree inspection via keyboard shortcuts.



  The following snippet hooks up `zeek-format` to format the current script:

  ```vim
  function RunZeekScript()
      " Create a new undo block for reverting formatting without changing cursor
      " position. https://github.com/rhysd/vim-clang-format/pull/55
      silent execute "noautocmd normal! ii\<esc>\"_x"
      let l:save = winsaveview()
      execute "%zeek-format"
      call winrestview(l:save)
  endfunction

  nnoremap <silent><buffer> <leader>cf :call RunZeekScript()<CR>
  ```



  Add this to your [`.pre-commit-config.yaml`](https://pre-commit.com/#adding-pre-commit-plugins-to-your-project):

  ```yaml
  - repo: https://github.com/zeek/zeekscript
    rev: ''  # Use the SHA/tag you want to point at.
    hooks:
    - id: zeek-format
  ```


pkgId: 5479443b0552ba501ffc10b9fab7e6c813bd50e9b991984aa2bd07707a161d3d
name: python-zen-garden-help
arch: noarch
version: 2.0.6
epoch: 0
release: 1
summary: Development documents and examples for zen-garden
url: https://github.com/ZEN-universe/ZEN-garden
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-zen-garden-2.0.6-1.src.rpm
location_href: Packages/python-zen-garden-help-2.0.6-1.noarch.rpm
checksum_type: sha256
description:
  ![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2FZEN-universe%2FZEN-garden%2Fmain%2Fpyproject.toml)

  [![GitHub Release](https://img.shields.io/github/v/release/ZEN-universe/ZEN-garden)](https://github.com/ZEN-universe/ZEN-garden/releases)
  [![PyPI - Version](https://img.shields.io/pypi/v/zen-garden)](https://pypi.org/project/zen-garden/)

  [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/ZEN-universe/ZEN-garden/pytest_with_conda.yml)](https://github.com/ZEN-universe/ZEN-garden/actions)
  [![Endpoint Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/jacob-mannhardt/30d479a5b4c591a63b7b0f41abbce6a0/raw/zen_garden_coverage.json)](https://github.com/ZEN-universe/ZEN-garden/actions)
  [![Read the Docs](https://img.shields.io/readthedocs/zen-garden?logo=readthedocs)](https://zen-garden.readthedocs.io/en/latest/index.html)

  [![GitHub forks](https://img.shields.io/github/forks/ZEN-universe/ZEN-garden)](https://github.com/ZEN-universe/ZEN-garden/forks)

  <img src="https://github.com/ZEN-universe/ZEN-garden/assets/114185605/d6a9aca9-74b0-4a82-8295-43e6a78b8450" alt="drawing" width="200"/>

  Welcome to the ZEN-garden! ZEN-garden is an optimization model of energy systems and value chains.
  It is currently used to model the electricity system, hydrogen value chains, and carbon capture, storage and utilization (CCUS) value chains.
  However, it is designed to be modular and flexible, and can be extended to model other types of energy systems, value chains or other network-based systems.

  ZEN-garden is developed by the [Reliability and Risk Engineering Laboratory](https://www.rre.ethz.ch/) at ETH Zurich.
  <hr style="height: 5px; background-color: black;">


  To get started with ZEN-garden, you can follow the instructions in the [installation guide](https://zen-garden.readthedocs.io/en/latest/files/user_guide/installation.html).

  If you want to use ZEN-garden without working on the codebase, run the following command:
  ```bash
  pip install zen-garden
  ```
  If you want to work on the codebase, fork and clone the repository and install the package in editable mode. More information on how to install the package in editable mode can be found in the [installation guide](https://zen-garden.readthedocs.io/en/latest/files/user_guide/installation.html).


  Please refer to the documentation of the ZEN-garden framework [on Read-the-Docs](https://zen-garden.readthedocs.io/en/latest/).

  In the file `documentation/how_to_ZEN-garden.md`, you can find additional information on how to use the framework.
  The `documentation/dataset_creation_tutorial.md` file contains a tutorial on how to create a simple dataset for the framework.
  Additionally, example datasets are available in the `dataset_examples` folder.

  More in-depth manuals are available in the [discussions forum](https://github.com/ZEN-universe/ZEN-garden/discussions) of our repo.


  Review recent modifications outlined in the [changelog](https://github.com/ZEN-universe/ZEN-garden/blob/main/CHANGELOG.md).


  If you use ZEN-garden for research please cite

  Ganter Alissa, Gabrielli Paolo, Sansavini, Giovanni (2024).
  Near-term infrastructure rollout and investment strategies for net-zero hydrogen supply chains
  2024. https://doi.org/10.1016/j.rser.2024.114314

  and use the following BibTeX:
  ```
  @article{GANTER2024114314,
  author = {Alissa Ganter and Paolo Gabrielli and Giovanni Sansavini}
  title = {Near-term infrastructure rollout and investment strategies for net-zero hydrogen supply chains},
  journal = {Renewable and Sustainable Energy Reviews},
  volume = {194},
  pages = {114314},
  year = {2024},
  issn = {1364-0321},
  doi = {https://doi.org/10.1016/j.rser.2024.114314},
  url = {https://www.sciencedirect.com/science/article/pii/S1364032124000376},
  }
  ```


pkgId: d45d24211b4b632c8a506701b9ded94fbd58401dd85e500acf03982e48e1fc9d
name: python-zenaura-help
arch: noarch
version: 0.15.2
epoch: 0
release: 1
summary: Development documents and examples for zenaura
url: https://pypi.org/project/zenaura/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-zenaura-0.15.2-1.src.rpm
location_href: Packages/python-zenaura-help-0.15.2-1.noarch.rpm
checksum_type: sha256
description:
  > [!WARNING]
  > This library is under development, it's going to change a lot from now on; breaking changes may occur. Please keep an eye on release notes.

  > [!NOTE]
  > Contribution is open , awesome features in the backlog so if you are intrested my email is linked to this profile.

  <img title="a title" alt="Alt text" src="./assets/logo.png" width="300" height="300" />

  Zenaura is a Python library built on top Pydide, PyScript, designed to empower Python developers to create light-weight, performant, stateful, component-based Single Page Applications (SPAs). By leveraging a virtual DOM implementation, Zenaura optimizes the performance, reactivity, responsiveness, and interactivity of web applications. This allows developers to build high-performance, dynamic web applications using familiar Python concepts and syntax.



  <a href="https://araldhafeeri.github.io/Zenaura/" target="_blank"> Zenaura documentation and API reference</a>

  note: hot-reloading is still under-development, it works, however working with cli, zenaura build after every change is better.





  - Python 3.11 or above.
  - pip
  - devolopment server requirements:
    - flask==2.3.3
    - watchdog==4.0.1
    - flask-sock==0.7.0
    - nest_asyncio==1.6.0

  ```bash
  pip install zenaura flask==2.3.3 watchdog==4.0.1 flask-sock==0.7.0
  ```

  This command will install zenaura library, client and server, CLI.



  In this example we will go over creating your first zenaura application, go over basic concepts as well.

  Once you installed the library, the library, it comes with simple CLI tool.



      - init: Will create simple zenaura application
      - build : Will build the application
      - run : Will run the development server

  First let's initials a basic zenaura application:

  ```bash
  zenaura init
  ```

  This command will auto generate basic zenaura application with the needed files auto generated for you, so you can get up to speed with the library.



  - build.py : used for building zenaura application.
  - index.py : simple zenaura server.
  - public/components.py: single zenaura component.
  - public/presentational.py: few zenaura presentational components created using builder interface.
  - public/main.py : main file where we import components, create pages and configure the client router.
  - public/routes.py : where your client side routes lives.
  - public/main.css : the main css file.
  - public/config.json: pyscript pydide configuration.



  ```bash
  zenaura build
  ```

  This command will build index.html.



  ```bash
  zenaura run
  ```

  This command will run the development server. Now open browser tab and go to localhost:5000.


pkgId: 63bef2e4bffa50b9c00428e8043b8de553a473bbaaaece919a682b71048da0d7
name: python-zendriver-flare-bypasser-help
arch: noarch
version: 0.2.6
epoch: 0
release: 1
summary: Development documents and examples for zendriver-flare-bypasser
url: https://pypi.org/project/zendriver-flare-bypasser/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-zendriver-flare-bypasser-0.2.6-1.src.rpm
location_href: Packages/python-zendriver-flare-bypasser-help-0.2.6-1.noarch.rpm
checksum_type: sha256
description:
  > This package is a fork of the [`ultrafunkamsterdam/nodriver`](https://github.com/ultrafunkamsterdam/nodriver/), created to add new features, compile unmerged bugfixes, and increase community engagement.

  **Documentation:** [https://slensky.com/zendriver](https://slensky.com/zendriver)

  Zendriver is a blazing fast, async-first, undetectable webscraping/web automation framework implemented using the Chrome Devtools Protocol. Visit websites, scrape content, and run JavaScript using a real browser (no Selenium/Webdriver) all with just a few lines of Python.

  **Docker support is here!** Check out [`stephanlensky/zendriver-docker`](https://github.com/stephanlensky/zendriver-docker) for an example of how to run Zendriver with a real, GPU-accelerated browser (not headless) in a Docker container. (Linux-only)



  - **Undetectable** - Zendriver uses the Chrome Devtools Protocol instead of Selenium/WebDriver, making it (almost) impossible to detect
  - **Blazing fast** - Chrome Devtools Protocol is _fast_, much faster than previous Selenium/WebDriver solutions. CDP combined with an async Python API makes Zendriver highly performant.
  - **Feature complete and easy to use** - Packed with allowing you to get up and running in just a few lines of code.
  - **First-class Docker support** - Traditionally, browser automation has been incredibly difficult to package with Docker, especially if you want to run real, GPU-accelerated Chrome (not headless). Now, deploying with Docker is easier than ever using the officially supported [zendriver-docker project template](https://github.com/stephanlensky/zendriver-docker).
  - **Automatic cookie and profile management** - By default, uses fresh profile on each run, cleaning up on exit. Or, save and load cookies to a file to avoid repeating tedious login steps.
  - **Smart element lookup** - Find elements selector or text, including iframe content. This could also be used as wait condition for a element to appear, since it will retry for the duration of `timeout` until found. Single element lookup by text using `tab.find()` accepts a `best_match flag`, which will not naively return the first match, but will match candidates by closest matching text length.
  - **Easy debugging** - Descriptive `repr` for elements, which represents the element as HTML, makes debugging much easier.



  To install, simply use `pip` (or your favorite package manager):

  ```sh
  pip install zendriver

  ```



  Example for visiting [https://www.browserscan.net/bot-detection](https://www.browserscan.net/bot-detection) and saving a screenshot of the results:

  ```python
  import asyncio

  import zendriver as zd


  async def main():
      browser = await zd.start()
      page = await browser.get("https://www.browserscan.net/bot-detection")
      await page.save_screenshot("browserscan.png")
      await browser.stop()


  if __name__ == "__main__":
      asyncio.run(main())
  ```

  Check out the [Quickstart](https://slensky.com/zendriver/quickstart/) for more information and examples.



  Zendriver remains committed to `nodriver`'s goals of staying undetected for all modern anti-bot solutions and also keeps with the batteries-included approach of its predecessor. Unfortunately, contributions to the original [`nodriver` repo](https://github.com/ultrafunkamsterdam/nodriver/) are heavily restricted, making it difficult to submit issues or pull requests. At the time of writing, there are several pull requests open to fix critical bugs which have beeen left unaddressed for many months.

  Zendriver aims to change this by:

  1. Including open pull requests in the original `nodriver` repo as part of the initial release
  2. Modernizing the development process to include static analysis tools such as [`ruff`](https://docs.astral.sh/ruff/) and [`mypy`](https://mypy-lang.org/), reducing the number of easy-to-catch bugs which make it through in the future
  3. Opening up the issue tracker and pull requests for community contributions, allowing the project to continue to grow along with its community.

  With these changes in place, we hope to further development of state-of-the-art open-source web automation tools even further, helping to once again make the web truly open for all.



  Contributions of all types are always welcome! Please see [CONTRIBUTING.md](https://github.com/stephanlensky/zendriver/blob/main/CONTRIBUTING.md) for details on how to contribute.



  If you have a question, bug report, or want to make a general inquiry about the project, please create a new GitHub issue. If you are having a problem with Zendriver, please make sure to include your operating system, Chrome version, code example demonstrating the issue, and any other information that may be relevant.

  Questions directed to any personal accounts outside of GitHub will be ignored.

rpm_license:
  GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007  Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.  Preamble  The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software.  The licenses for most software and other practical works are designed to take away your freedom to share and change the works.  By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users.  When we speak of free software, we are referring to freedom, not price.  Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.  Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software.  A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate.  Many developers of free software are heartened and encouraged by the resulting cooperation.  However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public.  The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community.  It requires the operator of a network server to provide the source code of the modified version running there to the users of that server.  Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version.  An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals.  This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license.  The precise terms and conditions for copying, distribution and modification follow.  TERMS AND CONDITIONS  0. Definitions.  "This License" refers to version 3 of the GNU Affero General Public License.  "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.  "The Program" refers to any copyrightable work licensed under this License.  Each licensee is addressed as "you".  "Licensees" and "recipients" may be individuals or organizations.  To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy.  The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work.  A "covered work" means either the unmodified Program or a work based on the Program.  To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy.  Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.  To "convey" a work means any kind of propagation that enables other parties to make or receive copies.  Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.  An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License.  If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.  1. Source Code.  The "source code" for a work means the preferred form of the work for making modifications to it.  "Object code" means any non-source form of a work.  A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.  The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form.  A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.  The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities.  However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work.  For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.  The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.  The Corresponding Source for a work in source code form is that same work.  2. Basic Permissions.  All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met.  This License explicitly affirms your unlimited permission to run the unmodified Program.  The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work.  This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.  You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force.  You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright.  Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.  Conveying under any other circumstances is permitted solely under the conditions stated below.  Sublicensing is not allowed; section 10 makes it unnecessary.  3. Protecting Users' Legal Rights From Anti-Circumvention Law.  No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.  When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.  4. Conveying Verbatim Copies.  You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.  You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.  5. Conveying Modified Source Versions.  You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:  a) The work must carry prominent notices stating that you modified it, and giving a relevant date.  b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices".  c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy.  This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged.  This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.  d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.  A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit.  Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.  6. Conveying Non-Source Forms.  You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:  a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.  b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.  c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source.  This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.  d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge.  You need not require recipients to copy the Corresponding Source along with the object code.  If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source.  Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.  e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.  A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.  A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling.  In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage.  For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product.  A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.  "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source.  The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.  If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information.  But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).  The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed.  Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.  Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.  7. Additional Terms.  "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law.  If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.  When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it.  (Additional permissions may be written to require their own removal in certain cases when you modify the work.)  You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.  Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:  a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or  b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or  c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or  d) Limiting the use for publicity purposes of names of licensors or authors of the material; or  e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or  f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.  All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10.  If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term.  If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.  If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.  Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.  8. Termination.  You may not propagate or modify a covered work except as expressly provided under this License.  Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).  However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.  Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.  Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License.  If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.  9. Acceptance Not Required for Having Copies.  You are not required to accept this License in order to receive or run a copy of the Program.  Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance.  However, nothing other than this License grants you permission to propagate or modify any covered work.  These actions infringe copyright if you do not accept this License.  Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.  10. Automatic Licensing of Downstream Recipients.  Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License.  You are not responsible for enforcing compliance by third parties with this License.  An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations.  If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.  You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License.  For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.  11. Patents.  A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based.  The work thus licensed is called the contributor's "contributor version".  A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version.  For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.  Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.  In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement).  To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.  If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients.  "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.  If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.  A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License.  You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.  Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.  12. No Surrender of Others' Freedom.  If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License.  If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all.  For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.  13. Remote Network Interaction; Use with the GNU General Public License.  Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software.  This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph.  Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work.  The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License.  14. Revised Versions of this License.  The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time.  Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.  Each version is given a distinguishing version number.  If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation.  If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation.  If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.  Later license versions may give you additional or different permissions.  However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.  15. Disclaimer of Warranty.  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.  16. Limitation of Liability.  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  17. Interpretation of Sections 15 and 16.  If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.  END OF TERMS AND CONDITIONS


