# packages

pkgId: 147fd4cea5bde79bb3663936e4765b43ade89b067b0002af0e8a51445aa62e14
name: python-pulumi-rabbitmq-help
arch: noarch
version: 3.3.8
epoch: 0
release: 1
summary: Development documents and examples for pulumi-rabbitmq
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-rabbitmq-3.3.8-1.src.rpm
location_href: Packages/python-pulumi-rabbitmq-help-3.3.8-1.noarch.rpm
checksum_type: sha256
description:
  [![Actions Status](https://github.com/pulumi/pulumi-rabbitmq/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-rabbitmq/actions)
  [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
  [![NPM version](https://badge.fury.io/js/%40pulumi%2Frabbitmq.svg)](https://www.npmjs.com/package/@pulumi/rabbitmq)
  [![Python version](https://badge.fury.io/py/pulumi-rabbitmq.svg)](https://pypi.org/project/pulumi-rabbitmq)
  [![NuGet version](https://badge.fury.io/nu/pulumi.rabbitmq.svg)](https://badge.fury.io/nu/pulumi.rabbitmq)
  [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-rabbitmq/sdk/v3/go)](https://pkg.go.dev/github.com/pulumi/pulumi-rabbitmq/sdk/v3/go)
  [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-rabbitmq/blob/master/LICENSE)



  The RabbitMQ resource provider for Pulumi lets you manage RabbitMQ resources in your cloud programs. To use
  this package, please [install the Pulumi CLI first](https://pulumi.io/).



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/rabbitmq

  or `yarn`:

      $ yarn add @pulumi/rabbitmq



  To use from Python, install using `pip`:

      $ pip install pulumi_rabbitmq



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-rabbitmq/sdk/v2



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.Rabbitmq



  The following configuration points are available:

  * `rabbitmq:endpoint` - (Required) The HTTP URL of the management plugin on the RabbitMQ server. The RabbitMQ management
     plugin must be enabled in order to use this provder. Note: This is not the IP address or hostname of the RabbitMQ server
     that you would use to access RabbitMQ directly. May be set via the `RABBITMQ_ENDPOINT` environment variable.
  * `rabbitmq:username` - (Required) Username to use to authenticate with the server. May be set via the `RABBITMQ_USERNAME`
     environment variable.
  * `rabbitmq:password` - (Optional) Password for the given user. May be set via the `RABBITMQ_PASSWORD` environment variable.
  * `rabbitmq:insecure` - (Optional) Trust self-signed certificates. May be set via the `RABBITMQ_INSECURE` environment variable.
  * `rabbitmq:cacertFile` - (Optional) The path to a custom CA / intermediate certificate. May be set via the `RABBITMQ_CACERT`
    environment variable.




  For further information, please visit [the RabbitMQ provider docs](https://www.pulumi.com/docs/intro/cloud-providers/rabbitmq) or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/rabbitmq).


pkgId: 24c471ee1b881537ce294bb9708b04cac1f4608b7e6ddb354196bdd4d5ec00d9
name: python-pulumi-rancher2-help
arch: noarch
version: 8.0.0
epoch: 0
release: 1
summary: Development documents and examples for pulumi-rancher2
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-rancher2-8.0.0-1.src.rpm
location_href: Packages/python-pulumi-rancher2-help-8.0.0-1.noarch.rpm
checksum_type: sha256
description:
  [![Actions Status](https://github.com/pulumi/pulumi-rancher2/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-rancher2/actions)
  [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
  [![NPM version](https://badge.fury.io/js/%40pulumi%2Francher2.svg)](https://www.npmjs.com/package/@pulumi/rancher2)
  [![Python version](https://badge.fury.io/py/pulumi-rancher2.svg)](https://pypi.org/project/pulumi-rancher2)
  [![NuGet version](https://badge.fury.io/nu/pulumi.rancher2.svg)](https://badge.fury.io/nu/pulumi.rancher2)
  [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-rancher2/sdk/v6/go)](https://pkg.go.dev/github.com/pulumi/pulumi-rancher2/sdk/v6/go)
  [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-rancher2/blob/master/LICENSE)



  The Rancher2 resource provider for Pulumi lets you manage Rancher2 resources in your cloud programs. To use
  this package, please [install the Pulumi CLI first](https://pulumi.io/).



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/rancher2

  or `yarn`:

      $ yarn add @pulumi/rancher2



  To use from Python, install using `pip`:

      $ pip install pulumi_rancher2



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-rancher2/sdk/v5



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.Rancher2



  The following configuration points are available for the `rancher2` provider:

  - `rancher2:apiUrl` (Required) - The URL to the rancher API. It must be provided, but it can also be sourced from the
    `RANCHER_URL` environment variable.
  - `rancher2:accessKey` (Optional) - API Key used to authenticate with the rancher server. It can also be sourced from the
    `RANCHER_ACCESS_KEY` environment variable.
  - `rancher2:secretKey` (Optional) - API secret used to authenticate with the rancher server. It can also be sourced from
    the `RANCHER_SECRET_KEY` environment variable.
  - `rancher2:tokenKey` (Optional) - API token used to authenticate with the rancher server. It can also be sourced from
    the `RANCHER_TOKEN_KEY` environment variable.
  - `rancher2:caCerts` (Optional) - CA certificates used to sign rancher server tls certificates. Mandatory if self signed
    tls and insecure option false. It can also be sourced from the `RANCHER_CA_CERTS` environment variable.
  - `rancher2:bootstrap` (Optional) - Bootstrap rancher server. Default value is `false`. It can also be sourced from the
    `RANCHER_BOOTSTRAP` environment variable.
  - `rancher2:insecure` (Optional) - Allow insecure connections to Rancher. Mandatory if self signed tls and no caCerts
    provided. Default value is `false`. It can also be sourced from the `RANCHER_INSECURE` environment variable.




  For further information, please visit [the Rancher2 provider docs](https://www.pulumi.com/docs/intro/cloud-providers/rancher2) or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/rancher2).


pkgId: 0ce8426ee59254bd0636cf79f41a2de25ede3bde45c9b0eea0caec437af600d2
name: python-pulumi-random-help
arch: noarch
version: 4.16.8
epoch: 0
release: 1
summary: Development documents and examples for pulumi-random
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-random-4.16.8-1.src.rpm
location_href: Packages/python-pulumi-random-help-4.16.8-1.noarch.rpm
checksum_type: sha256
description:
  [![Actions Status](https://github.com/pulumi/pulumi-random/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-random/actions)
  [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
  [![NPM version](https://badge.fury.io/js/%40pulumi%2Frandom.svg)](https://npmjs.com/package/@pulumi/random)
  [![NuGet version](https://badge.fury.io/nu/pulumi.random.svg)](https://badge.fury.io/nu/pulumi.random)
  [![Python version](https://badge.fury.io/py/pulumi-random.svg)](https://pypi.org/project/pulumi-random)
  [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-random/sdk/v4/go)](https://pkg.go.dev/github.com/pulumi/pulumi-random/sdk/v4/go)
  [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-random/blob/master/LICENSE)



  The random provider allows the safe use of randomness in a Pulumi program. This allows you to generate resource
  properties, such as names, that contain randomness in a way that works with Pulumi's goal state oriented approach.
  Using randomness as usual would not work well with Pulumi, because by definition, each time the program is evaluated,
  a new random state would be produced, necessitating re-convergence on the goal state. This provider understands
  how to work with the Pulumi resource lifecycle to accomplish randomness safely and in a way that works as desired.



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/random

  or `yarn`:

      $ yarn add @pulumi/random



  To use from Python, install using `pip`:

      $ pip install pulumi_random



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-random/sdk/v4/go/...



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.Random



  For example, to generate a random password, allocate a `RandomPassword` resource
  and then use its `result` output property (of type `Output<string>`) to pass
  to another resource.

  ```typescript
  import * as pulumi from "@pulumi/pulumi";
  import * as aws from "@pulumi/aws";
  import * as random from "@pulumi/random";

  const password = new random.RandomPassword("password", {
      length: 16,
      overrideSpecial: "_%@",
      special: true,
  });
  const example = new aws.rds.Instance("example", {
      password: password.result,
  });
  ```



  For further information, please visit [the random provider docs](https://www.pulumi.com/docs/intro/cloud-providers/random) or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/random).


pkgId: 59cf322f01e9fce4f96b60866990c9e56297c7ba370fd78cd9e49c36df2e73f0
name: python-pulumi-rke-help
arch: noarch
version: 3.6.0
epoch: 0
release: 1
summary: Development documents and examples for pulumi-rke
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-rke-3.6.0-1.src.rpm
location_href: Packages/python-pulumi-rke-help-3.6.0-1.noarch.rpm
checksum_type: sha256
description:
  [![Actions Status](https://github.com/pulumi/pulumi-rke/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-rke/actions)
  [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
  [![NPM version](https://badge.fury.io/js/%40pulumi%2Frke.svg)](https://www.npmjs.com/package/@pulumi/rke)
  [![Python version](https://badge.fury.io/py/pulumi-rke.svg)](https://pypi.org/project/pulumi-rke)
  [![NuGet version](https://badge.fury.io/nu/pulumi.rke.svg)](https://badge.fury.io/nu/pulumi.rke)
  [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-rke/sdk/v3/go)](https://pkg.go.dev/github.com/pulumi/pulumi-rke/sdk/v3/go)
  [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-rke/blob/master/LICENSE)



  The RKE provider is used to interact with Rancher Kubernetes Engine kubernetes clusters. To use
  this package, please [install the Pulumi CLI first](https://pulumi.io/).



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/rke

  or `yarn`:

      $ yarn add @pulumi/rke



  To use from Python, install using `pip`:

      $ pip install pulumi_rke



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-rke/sdk/v3



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.Rke



  The following configuration points are available:

  - `rke:debug` - (Optional) Enable RKE debug logs. It can also be sourced from the `RKE_DEBUG`
    environment variable. Default `false` (bool)
  - `rke:logFile` - (Optional) Save RKE logs to a file. It can also be sourced from the `RKE_LOG_FILE`
    environment variable (string)



  For further information, please visit [the RKE provider docs](https://www.pulumi.com/docs/intro/cloud-providers/rke) or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/rke).


pkgId: 5f458580681089f0d653dff7c736473f77e11c0a54a5a9522cda38c8a1b5be3b
name: python-pulumi-scm-help
arch: noarch
version: 0.1.7
epoch: 0
release: 1
summary: Development documents and examples for pulumi-scm
url: https://pulumi.com
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-scm-0.1.7-1.src.rpm
location_href: Packages/python-pulumi-scm-help-0.1.7-1.noarch.rpm
checksum_type: sha256
description:
  A Pulumi package for managing resources on a [Strata Cloud Manager](https://www.pulumi.com/registry/packages/scm/) instance.



  This package is available for several languages/platforms:



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

  ```bash
  npm install @pulumi/scm
  ```

  or `yarn`:

  ```bash
  yarn add @pulumi/scm
  ```



  To use from Python, install using `pip`:

  ```bash
  pip install pulumi_scm
  ```



  To use from Go, use `go get` to grab the latest version of the library:

  ```bash
  go get github.com/pulumi/pulumi-scm/sdk/go/...
  ```



  To use from .NET, install using `dotnet add package`:

  ```bash
  dotnet add package Pulumi.Scm
  ```



  For detailed reference documentation, please visit [the Pulumi registry](https://www.pulumi.com/registry/packages/scm/api-docs/).


pkgId: 3544606a287fbebd6f702b64e509218bf95c9e4e2c45804e970e5c81b4f8d818
name: python-pulumi-sdwan-help
arch: noarch
version: 0.2.3
epoch: 0
release: 1
summary: Development documents and examples for pulumi-sdwan
url: https://pulumi.com
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-sdwan-0.2.3-1.src.rpm
location_href: Packages/python-pulumi-sdwan-help-0.2.3-1.noarch.rpm
checksum_type: sha256
description:
  A Pulumi package for resources to interact with a Cisco Catalyst SD-WAN environment. It communicates with the SD-WAN Manager via the REST API.



  This package is available for several languages/platforms:



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

  ```bash
  npm install @pulumi/sdwan
  ```

  or `yarn`:

  ```bash
  yarn add @pulumi/sdwan
  ```



  To use from Python, install using `pip`:

  ```bash
  pip install pulumi_sdwan
  ```



  To use from Go, use `go get` to grab the latest version of the library:

  ```bash
  go get github.com/pulumi/pulumi-sdwan/sdk/go/...
  ```



  To use from .NET, install using `dotnet add package`:

  ```bash
  dotnet add package Pulumi.Sdwan
  ```



  For detailed reference documentation, please visit [the Pulumi registry](https://www.pulumi.com/registry/packages/sdwan/api-docs/).


pkgId: 18f83885153f4b2ba6003ceb5caa5038e527f9d681afbba57a095b46c56a2195
name: python-pulumi-signalfx-help
arch: noarch
version: 7.5.0
epoch: 0
release: 1
summary: Development documents and examples for pulumi-signalfx
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-signalfx-7.5.0-1.src.rpm
location_href: Packages/python-pulumi-signalfx-help-7.5.0-1.noarch.rpm
checksum_type: sha256
description:
  [![Actions Status](https://github.com/pulumi/pulumi-signalfx/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-signalfx/actions)
  [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
  [![NPM version](https://badge.fury.io/js/%40pulumi%2Fsignalfx.svg)](https://www.npmjs.com/package/@pulumi/signalfx)
  [![Python version](https://badge.fury.io/py/pulumi-signalfx.svg)](https://pypi.org/project/pulumi-signalfx)
  [![NuGet version](https://badge.fury.io/nu/pulumi.signalfx.svg)](https://badge.fury.io/nu/pulumi.signalfx)
  [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-signalfx/sdk/v7/go)](https://pkg.go.dev/github.com/pulumi/pulumi-signalfx/sdk/v7/go)
  [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-signalfx/blob/master/LICENSE)



  The SignalFx resource provider for Pulumi lets you manage SignalFx resources in your cloud programs. To use
  this package, please [install the Pulumi CLI first](https://pulumi.io/).



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/signalfx

  or `yarn`:

      $ yarn add @pulumi/signalfx



  To use from Python, install using `pip`:

      $ pip install pulumi_signalfx



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-signalfx/sdk/v7



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.Signalfx



  The following configuration points are available:

  - `signalfx:authToken` - (Required) The auth token for authentication. This can also be set via the `SFX_AUTH_TOKEN`
    environment variable.
  - `signalfx:apiUrl` - (Optional) The API URL to use for communicating with SignalFx. This is helpful for organizations
    who need to set their Realm or use a proxy. Note: You likely want to change `customAppUrl` too!
  - `signalfx:customAppUrl` - (Optional) The application URL that users should use to interact with assets in the browser.
    This is used by organizations using specific realms or those with a custom SSO domain.



  For further information, please visit [the SignalFx provider docs](https://www.pulumi.com/docs/intro/cloud-providers/signalfx) or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/signalfx).


pkgId: 8ddf448113f1e7800480b0b289bd610459571be91010c05ce6fe8b4efc5d57d4
name: python-pulumi-slack-help
arch: noarch
version: 0.4.10
epoch: 0
release: 1
summary: Development documents and examples for pulumi-slack
url: https://www.pulumi.com
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-slack-0.4.10-1.src.rpm
location_href: Packages/python-pulumi-slack-help-0.4.10-1.noarch.rpm
checksum_type: sha256
description:
  The Slack Provider enables you to manage Slack resources via Pulumi.



  This package is available for several languages/platforms:



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

  ```bash
  npm install @pulumi/slack
  ```

  or `yarn`:

  ```bash
  yarn add @pulumi/slack
  ```



  To use from Python, install using `pip`:

  ```bash
  pip install pulumi_slack
  ```



  To use from Go, use `go get` to grab the latest version of the library:

  ```bash
  go get github.com/pulumi/pulumi-slack/sdk/go/...
  ```



  To use from .NET, install using `dotnet add package`:

  ```bash
  dotnet add package Pulumi.Slack
  ```



  The following configuration points are available for the `slack` provider:

  - `slack:token` (environment: `SLACK_TOKEN`) - the token for your slack workspace



  For detailed reference documentation, please visit [the Pulumi registry](https://www.pulumi.com/registry/packages/slack/api-docs/).


pkgId: cb55ce5122400437cd589a0c847794ee823ed3f0f895acb4746a8952497a55a5
name: python-pulumi-snowflake-help
arch: noarch
version: 0.62.0
epoch: 0
release: 1
summary: Development documents and examples for pulumi-snowflake
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-snowflake-0.62.0-1.src.rpm
location_href: Packages/python-pulumi-snowflake-help-0.62.0-1.noarch.rpm
checksum_type: sha256
description:
  [![Actions Status](https://github.com/pulumi/pulumi-snowflake/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-snowflake/actions)
  [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
  [![NPM version](https://badge.fury.io/js/%40pulumi%2Fsnowflake.svg)](https://www.npmjs.com/package/@pulumi/snowflake)
  [![Python version](https://badge.fury.io/py/pulumi-snowflake.svg)](https://pypi.org/project/pulumi-snowflake)
  [![NuGet version](https://badge.fury.io/nu/pulumi.snowflake.svg)](https://badge.fury.io/nu/pulumi.snowflake)
  [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-snowflake/sdk/go)](https://pkg.go.dev/github.com/pulumi/pulumi-snowflake/sdk/go)
  [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-snowflake/blob/master/LICENSE)



  The Snowflake Resource Provider lets you manage Snowflake resources.



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/snowflake

  or `yarn`:

      $ yarn add @pulumi/snowflake



  To use from Python, install using `pip`:

      $ pip install pulumi_snowflake



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-snowflake/sdk



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.Snowflake



  The following configuration points are available:

  * `snowflake:account` - (required) The name of the Snowflake account. Can also come from the
    `SNOWFLAKE_ACCOUNT` environment variable.
  * `snowflake:username` - (required) Username for username+password authentication. Can come from the
    `SNOWFLAKE_USER` environment variable.
  * `snowflake:region` - (required) [Snowflake region](https://docs.snowflake.com/en/user-guide/intro-regions.html)
    to use. Can be sourced from the `SNOWFLAKE_REGION` environment variable.
  * `snowflake:password` - (optional) Password for username+password auth. Cannot be used with `browser_auth` or
    `snowflake:privateKeyPath`. Can be sourced from `SNOWFLAKE_PASSWORD` environment variable.
  * `snowflake:oauthAccessToken` - (optional) Token for use with OAuth. Generating the token is left to other
    tools. Cannot be used with `snowflake:browserAuth`, `snowflake:privateKeyPath`, `snowflake:oauthRefreshToken`
    or `snowflake:password`.
    Can be sourced from `SNOWFLAKE_OAUTH_ACCESS_TOKEN` environment variable.
  * `snowflake:oauthRefreshToken` - (optional) Token for use with OAuth. Setup and generation of the token is
    left to other tools. Should be used in conjunction with `snowflake:oauthClientId`, `snowflake:oauthClientSecret`,
    `snowflake:oauthEndpoint`, `snowflake:oauthRedirectUrl`. Cannot be used with `snowflake:browserAuth`,
    `snowflake:privateKeyPath`, `snowflake:oauthAccessToken` or `snowflake:password`. Can be sourced from
    `SNOWFLAKE_OAUTH_REFRESH_TOKEN` environment variable.
  * `snowflake:oauthClientId` - (optional) Required when `snowflake:oauthRefreshToken` is used. Can be sourced from
    `SNOWFLAKE_OAUTH_CLIENT_ID` environment variable.
  * `snowflake:oauthClientSecret` - (optional) Required when `snowflake:oauthRefreshToken` is used. Can be sourced from
    `SNOWFLAKE_OAUTH_CLIENT_SECRET` environment variable.
  * `snowflake:oauthEndpoint` - (optional) Required when `snowflake:oauthRefreshToken` is used. Can be sourced from
    `SNOWFLAKE_OAUTH_ENDPOINT` environment variable.
  * `snowflake:oauthRedirectUrl` - (optional) Required when `snowflake:oauthRefreshToken` is used. Can be sourced from
    `SNOWFLAKE_OAUTH_REDIRECT_URL` environment variable.
  * `snowflake:privateKeyPath` - (optional) Path to a private key for using keypair authentication.. Cannot be
    used with `snowflake:browserAuth`, `snowflake:oauthAccessToken` or `snowflake:password`. Can be source from
    `SNOWFLAKE_PRIVATE_KEY_PATH` environment variable.
  * `snowflake:role` - (optional) Snowflake role to use for operations. If left unset, default role for user
    will be used. Can come from the `SNOWFLAKE_ROLE` environment variable.



  For further information, please visit [the Snowflake provider docs](https://www.pulumi.com/docs/intro/cloud-providers/snowflake)
  or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/snowflake).


pkgId: 8b0c45e4a32220467f58f67504cc23e84fd73c650567d7e689eb6e55d79825e2
name: python-pulumi-splunk-help
arch: noarch
version: 1.2.15
epoch: 0
release: 1
summary: Development documents and examples for pulumi-splunk
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-splunk-1.2.15-1.src.rpm
location_href: Packages/python-pulumi-splunk-help-1.2.15-1.noarch.rpm
checksum_type: sha256
description:
  [![Actions Status](https://github.com/pulumi/pulumi-splunk/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-splunk/actions)
  [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
  [![NPM version](https://badge.fury.io/js/%40pulumi%2Fsplunk.svg)](https://www.npmjs.com/package/@pulumi/splunk)
  [![Python version](https://badge.fury.io/py/pulumi-splunk.svg)](https://pypi.org/project/pulumi-splunk)
  [![NuGet version](https://badge.fury.io/nu/pulumi.splunk.svg)](https://badge.fury.io/nu/pulumi.splunk)
  [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-splunk/sdk/go)](https://pkg.go.dev/github.com/pulumi/pulumi-splunk/sdk/go)
  [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-splunk/blob/master/LICENSE)



  The Splunk Resource Provider lets you manage Splunk resources.



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/splunk

  or `yarn`:

      $ yarn add @pulumi/splunk



  To use from Python, install using `pip`:

      $ pip install pulumi_splunk



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-splunk/sdk



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.Splunk



  The following configuration points are available:

  - `splunk:url` - (Required) The URL for the Splunk instance to be configured. (The provider uses `https` as the default schema as prefix to the URL)
    It can also be sourced from the `SPLUNK_URL` environment variable.
  - `splunk:username` - (Optional) The username to access the Splunk instance to be configured. It can also be sourced
    from the `SPLUNK_USERNAME` environment variable.
  - `splunk:password` - (Optional) The password to access the Splunk instance to be configured. It can also be sourced
    from the `SPLUNK_PASSWORD` environment variable.
  - `splunk:authToken` - (Optional) Use auth token instead of username and password to configure Splunk instance. If specified, auth token takes priority over username/password.
    It can also be sourced  from the `SPLUNK_AUTH_TOKEN` environment variable.
  - `splunk:insecureSkipVerify` -(Optional) Insecure skip verification flag (Defaults to `true`)
    It can also be sourced  from the `SPLUNK_INSECURE_SKIP_VERIFY` environment variable.
  - `splunk:timeout` - (Optional) Timeout when making calls to Splunk server. (Defaults to `60 seconds`)
    It can also be sourced  from the `SPLUNK_TIMEOUT` environment variable.



  For further information, please visit [the Splunk provider docs](https://www.pulumi.com/docs/intro/cloud-providers/splunk)
  or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/splunk).


pkgId: 39d251f92e4e9a741ef4d3c9689eb759654ea30a35965ced17d7f75d3721e94c
name: python-pulumi-spotinst-help
arch: noarch
version: 3.103.0
epoch: 0
release: 1
summary: Development documents and examples for pulumi-spotinst
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-spotinst-3.103.0-1.src.rpm
location_href: Packages/python-pulumi-spotinst-help-3.103.0-1.noarch.rpm
checksum_type: sha256
description:
  [![Actions Status](https://github.com/pulumi/pulumi-spotinst/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-spotinst/actions)
  [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
  [![NPM version](https://badge.fury.io/js/%40pulumi%2Fspotinst.svg)](https://www.npmjs.com/package/@pulumi/spotinst)
  [![Python version](https://badge.fury.io/py/pulumi-spotinst.svg)](https://pypi.org/project/pulumi-spotinst)
  [![NuGet version](https://badge.fury.io/nu/pulumi.spotinst.svg)](https://badge.fury.io/nu/pulumi.spotinst)
  [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-spotinst/sdk/v3/go)](https://pkg.go.dev/github.com/pulumi/pulumi-spotinst/sdk/v3/go)
  [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-spotinst/blob/master/LICENSE)



  The Spotinst resource provider for Pulumi lets you manage SpotInst resources in your cloud programs. To use
  this package, please [install the Pulumi CLI first](https://pulumi.io/).



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/spotinst

  or `yarn`:

      $ yarn add @pulumi/spotinst



  To use from Python, install using `pip`:

      $ pip install pulumi_spotinst



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-spotinst/sdk/v3



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.Spotinst



  The following configuration points are available for the `spotinst` provider:

  - `spotinst:account` (environment: `SPOTINST_ACCOUNT`) - the account for `spotinst`
  - `spotinst:token` (environment: `SPOTINST_TOKEN`) - the api token for `spotinst`


  For further information, please visit [the Spotinst provider docs](https://www.pulumi.com/docs/intro/cloud-providers/spotinst) or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/spotinst).


pkgId: 833dc19adb35c02def464a4ebedf37e0a969442f8b371f3c9f3f340e2875bac2
name: python-pulumi-sumologic-help
arch: noarch
version: 1.0.0
epoch: 0
release: 1
summary: Development documents and examples for pulumi-sumologic
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-sumologic-1.0.0-1.src.rpm
location_href: Packages/python-pulumi-sumologic-help-1.0.0-1.noarch.rpm
checksum_type: sha256
description:
  [![Actions Status](https://github.com/pulumi/pulumi-sumologic/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-sumologic/actions)
  [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
  [![NPM version](https://badge.fury.io/js/%40pulumi%2Fsumologic.svg)](https://www.npmjs.com/package/@pulumi/sumologic)
  [![Python version](https://badge.fury.io/py/pulumi-sumologic.svg)](https://pypi.org/project/pulumi-sumologic)
  [![NuGet version](https://badge.fury.io/nu/pulumi.sumologic.svg)](https://badge.fury.io/nu/pulumi.sumologic)
  [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-sumologic/sdk/go)](https://pkg.go.dev/github.com/pulumi/pulumi-sumologic/sdk/go)
  [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-sumologic/blob/master/LICENSE)



  The SumoLogic Resource Provider lets you manage SumoLogic resources.



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/sumologic

  or `yarn`:

      $ yarn add @pulumi/sumologic



  To use from Python, install using `pip`:

      $ pip install pulumi_sumologic



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-sumologic/sdk



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.SumoLogic



  The following configuration points are available:

  - `sumologic:accessId` - (Required) This is the Sumo Logic Access ID. It must be provided, but it can also be sourced
    from the `SUMOLOGIC_ACCESSID` environment variable.
  - `sumologic:accessKey` - (Required) This is the Sumo Logic Access Key. It must be provided, but it can also be
    sourced from the `SUMOLOGIC_ACCESSKEY` variable.
  - `sumologic:environment` - (Required) This is the API endpoint to use. See the [Sumo Logic documentation](https://help.sumologic.com/APIs/General_API_Information/Sumo_Logic_Endpoints_and_Firewall_Security) for details on
    which environment you should use. It must be provided, but it can be sourced from the `SUMOLOGIC_ENVIRONMENT` variable.



  For further information, please visit [the SumoLogic provider docs](https://www.pulumi.com/docs/intro/cloud-providers/sumologic)
  or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/sumologic).


pkgId: 8291028554a0120e8d0640f813398029818a1faf713c1a662e0f85137024a0bb
name: python-pulumi-tailscale-help
arch: noarch
version: 0.17.4
epoch: 0
release: 1
summary: Development documents and examples for pulumi-tailscale
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-tailscale-0.17.4-1.src.rpm
location_href: Packages/python-pulumi-tailscale-help-0.17.4-1.noarch.rpm
checksum_type: sha256
description:
  [![Actions Status](https://github.com/pulumi/pulumi-tailscale/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-tailscale/actions)
  [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
  [![NPM version](https://badge.fury.io/js/%40pulumi%2Ftailscale.svg)](https://www.npmjs.com/package/@pulumi/tailscale)
  [![Python version](https://badge.fury.io/py/pulumi-tailscale.svg)](https://pypi.org/project/pulumi-tailscale)
  [![NuGet version](https://badge.fury.io/nu/pulumi.tailscale.svg)](https://badge.fury.io/nu/pulumi.tailscale)
  [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-tailscale/sdk)](https://pkg.go.dev/github.com/pulumi/pulumi-tailscale/sdk)
  [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-tailscale/blob/master/LICENSE)



  The Tailscale Resource Provider lets you manage [Tailscale](https://tailscale.com/) resources.



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/tailscale

  or `yarn`:

      $ yarn add @pulumi/tailscale



  To use from Python, install using `pip`:

      $ pip install pulumi_tailscale



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-tailscale/sdk



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.Tailscale



  The following configuration points are available:

  - `tailscale:apiKey` - (Required) API key to authenticate with the Tailscale API. It must be provided, but it can also be sourced
    from the `TAILSCALE_API_KEY` environment variable.
  - `tailscale:tailnet` - (Required) Tailscale tailnet to manage resources for. It must be provided, but it can also be
    sourced from the `TAILSCALE_TAILNET` variable. A tailnet is the name of your Tailscale network. You can find it in
    the top left corner of the Admin Panel beside the Tailscale logo.
  - `tailscale:oauthClientId` - The OAuth application's ID when using OAuth client credentials. Can be set via the OAUTH_CLIENT_ID environment variable. Both 'oauthClientId' and 'oauthClientSecret' must be set. Conflicts with 'apiKey'.
  - `oauthClientSecret` - The OAuth application's secret when using OAuth client credentials. Can be set via the OAUTH_CLIENT_SECRET environment variable. Both 'oauthClientId' and 'oauthClientSecret' must be set. Conflicts with 'apiKey'.
  - `scopes` - The OAuth 2.0 scopes to request when for the access token generated using the supplied OAuth client credentials. See https://tailscale.com/kb/1215/oauth-clients/#scopes for available scopes. Only valid when both 'oauthClientId' and 'oauthClientSecret' are set.



  For further information, please visit [the Tailscale provider docs](https://www.pulumi.com/registry/packages/tailscale)
  or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/registry/packages/tailscale/api-docs/).


pkgId: 382c36255e51e8d8a8a65adfa92d6614ab36cf4754f70a59a38be029d9ffcd68
name: python-pulumi-tls-help
arch: noarch
version: 5.0.10
epoch: 0
release: 1
summary: Development documents and examples for pulumi-tls
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-tls-5.0.10-1.src.rpm
location_href: Packages/python-pulumi-tls-help-5.0.10-1.noarch.rpm
checksum_type: sha256
description:
  [![Actions Status](https://github.com/pulumi/pulumi-tls/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-tls/actions)
  [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
  [![NPM version](https://badge.fury.io/js/%40pulumi%2Ftls.svg)](https://www.npmjs.com/package/@pulumi/tls)
  [![Python version](https://badge.fury.io/py/pulumi-tls.svg)](https://pypi.org/project/pulumi-tls)
  [![NuGet version](https://badge.fury.io/nu/pulumi.tls.svg)](https://badge.fury.io/nu/pulumi.tls)
  [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-tls/sdk/v5/go)](https://pkg.go.dev/github.com/pulumi/pulumi-tls/sdk/v5/go)
  [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-tls/blob/master/LICENSE)



  The TLS resource provider for Pulumi lets you create TLS keys and certificates in your cloud programs.  To use
  this package, please [install the Pulumi CLI first](https://pulumi.io/).



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/tls

  or `yarn`:

      $ yarn add @pulumi/tls



  To use from Python, install using `pip`:

      $ pip install pulumi_tls



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-tls/sdk/v5



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.Tls



  The `@pulumi/tls` package provides a strongly-typed means to build cloud applications that create
  and interact closely with TLS resources.




  For further information, please visit [the TLS provider docs](https://www.pulumi.com/docs/intro/cloud-providers/tls) or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/tls).


pkgId: df54b493b5b2b56d41a9aff0eb98433fb2c8e6baada98814bc99d50ce187a476
name: python-pulumi-vault-help
arch: noarch
version: 6.4.0
epoch: 0
release: 1
summary: Development documents and examples for pulumi-vault
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-vault-6.4.0-1.src.rpm
location_href: Packages/python-pulumi-vault-help-6.4.0-1.noarch.rpm
checksum_type: sha256
description:
  [![Build Status](https://travis-ci.com/pulumi/pulumi-vault.svg?token=eHg7Zp5zdDDJfTjY8ejq&branch=master)](https://travis-ci.com/pulumi/pulumi-vault)



  The Vault resource provider for Pulumi lets you manage Vault resources in your cloud programs. To use
  this package, please [install the Pulumi CLI first](https://pulumi.io/).



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/vault

  or `yarn`:

      $ yarn add @pulumi/vault



  To use from Python, install using `pip`:

      $ pip install pulumi_vault



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-vault/sdk/v6



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.Vault



  The following configuration points are available:

  - `vault:address` - (Required) Origin URL of the Vault server. This is a URL with a scheme, a hostname and a port but with no path.
    May be set via the `VAULT_ADDR` environment variable.
  - `vault:token` - (Required) Vault token that will be used by the provider to authenticate. May be set via the `VAULT_TOKEN`
    environment variable. If none is otherwise supplied, the provider will attempt to read it from ~/.vault-token (where the vault
    command stores its current token). The provider will issue itself a new token that is a child of the one given, with a short TTL
    to limit the exposure of any requested secrets. Note that the given token must have the update capability on the `auth/token/create`
    path in Vault in order to create child tokens.
  - `vault:tokenName` - (Optional) Token name to use for creating the Vault child token. May be set via the `VAULT_TOKEN_NAME`
    environment variable.
  - `vault:ca_cert_file` - (Optional) Path to a file on local disk that will be used to validate the certificate presented by
    the Vault server. May be set via the `VAULT_CACERT` environment variable.
  - `vault:ca_cert_dir` - (Optional) Path to a directory on local disk that contains one or more certificate files that will
    be used to validate the certificate presented by the Vault server. May be set via the `VAULT_CAPATH` environment variable.
  - `vault:client_auth` - (Optional) A configuration block, described below, that provides credentials used by the provider
    to authenticate with the Vault server. At present there is little reason to set this, because the provider does not
    support the TLS certificate authentication mechanism.
      - `vault:cert_file` - (Required) Path to a file on local disk that contains the PEM-encoded certificate to present to the server.
      - `vault:key_file` - (Required) Path to a file on local disk that contains the PEM-encoded private key for which the
      authentication certificate was issued.
  - `vault:skip_tls_verify` - (Optional) Set this to true to disable verification of the Vault server's TLS certificate. This
    is strongly discouraged except in prototype or development environments, since it exposes the possibility that the provider
    can be tricked into writing secrets to a server controlled by an intruder. May be set via the `VAULT_SKIP_VERIFY` environment variable.
  - `vault:max_lease_ttl_seconds` - (Optional) Used as the duration for the intermediate Vault token the provider issues itself,
    which in turn limits the duration of secret leases issued by Vault. Defaults to `20` minutes and may be set via the
    `TERRAFORM_VAULT_MAX_TTL` environment variable. See the section above on Using Vault credentials in the provider configuration
    for the implications of this setting.
  - `vault:max_retries` - (Optional) Used as the maximum number of retries when a 5xx error code is encountered. Defaults to `2`
    retries and may be set via the VAULT_MAX_RETRIES environment variable.
  - `vault:namespace` - (Optional) Set the namespace to use. May be set via the `VAULT_NAMESPACE` environment variable. Available
    only for Vault Enterprise.



  For further information, please visit [the Vault provider docs](https://www.pulumi.com/docs/intro/cloud-providers/vault) or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/vault).


pkgId: 2b8b76142dc480aadb9ad34eba98a12002b6f7ef9316cc11c1428d39f753e55b
name: python-pulumi-venafi-help
arch: noarch
version: 1.10.5
epoch: 0
release: 1
summary: Development documents and examples for pulumi-venafi
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-venafi-1.10.5-1.src.rpm
location_href: Packages/python-pulumi-venafi-help-1.10.5-1.noarch.rpm
checksum_type: sha256
description:
  [![Actions Status](https://github.com/pulumi/pulumi-venafi/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-venafi/actions)
  [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
  [![NPM version](https://badge.fury.io/js/%40pulumi%2Fvenafi.svg)](https://www.npmjs.com/package/@pulumi/venafi)
  [![Python version](https://badge.fury.io/py/pulumi-venafi.svg)](https://pypi.org/project/pulumi-venafi)
  [![NuGet version](https://badge.fury.io/nu/pulumi.venafi.svg)](https://badge.fury.io/nu/pulumi.venafi)
  [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-venafi/sdk/go)](https://pkg.go.dev/github.com/pulumi/pulumi-venafi/sdk/go)
  [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-venafi/blob/master/LICENSE)



  The Venafi Resource Provider lets you manage Venafi resources.



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/venafi

  or `yarn`:

      $ yarn add @pulumi/venafi



  To use from Python, install using `pip`:

      $ pip install pulumi_venafi



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-venafi/sdk



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.Venafi



  The following configuration points are available:

  - `venafi:zone` - (Optional) Zone ID for Venafi Cloud or policy folder for Venafi Platform.
    It can also be sourced from the `VENAFI_ZONE` environment variable.
  - `venafi:url` - (Optional) Venafi URL (e.g. `https://tpp.venafi.example`). It can also be sourced
    from the `VENAFI_URL` environment variable.
  - `venafi:accessToken` - (Optional) authentication token for the API Application
    (applies only to Venafi Platform). It can also be sourced  from the `VENAFI_TOKEN` environment variable.
  - `venafi:apiKey` - (Optional) REST API key for authentication (applies only to Venafi Cloud).
    It can also be sourced  from the `VENAFI_API` environment variable.
  - `venafi:tppUsername` - (Optional) WebSDK account username for authentication (applies only to Venafi Platform).
    It can also be sourced  from the `VENAFI_USER` environment variable.
  - `venafi:tppPassword` - (Optional) WebSDK account password for authentication (applies only to Venafi Platform).
    It can also be sourced  from the `VENAFI_PASS` environment variable.
  - `venafi:trustBundle` - (Optional) PEM trust bundle for Venafi Platform server certificate.
  - `venafi:devMode` - (Optional) When `true` will test the provider without connecting to Venafi Platform or Venafi Cloud.
    It can also be sourced  from the `VENAFI_DEVMODE` environment variable.



  For further information, please visit [the Venafi provider docs](https://www.pulumi.com/docs/intro/cloud-providers/venafi)
  or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/venafi).


pkgId: 74314b7d1bfd0defec8ce371f3bc0271cb9a7cdaf54c8b22822c2a920c017e85
name: python-pulumi-vsphere-help
arch: noarch
version: 4.12.1
epoch: 0
release: 1
summary: Development documents and examples for pulumi-vsphere
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-vsphere-4.12.1-1.src.rpm
location_href: Packages/python-pulumi-vsphere-help-4.12.1-1.noarch.rpm
checksum_type: sha256
description:
  [![Actions Status](https://github.com/pulumi/pulumi-vsphere/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-vsphere/actions)
  [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
  [![NPM version](https://badge.fury.io/js/%40pulumi%2Fvsphere.svg)](https://www.npmjs.com/package/@pulumi/vsphere)
  [![Python version](https://badge.fury.io/py/pulumi-vsphere.svg)](https://pypi.org/project/pulumi-vsphere)
  [![NuGet version](https://badge.fury.io/nu/pulumi.vsphere.svg)](https://badge.fury.io/nu/pulumi.vsphere)
  [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-vsphere/sdk/v3/go)](https://pkg.go.dev/github.com/pulumi/pulumi-vsphere/sdk/v3/go)
  [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-vsphere/blob/master/LICENSE)



  The VSphere resource provider for Pulumi lets you use VSphere resources in your infrastructure
  programs. To use this package, please [install the Pulumi CLI first](https://pulumi.io/).



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/vsphere

  or `yarn`:

      $ yarn add @pulumi/vsphere



  To use from Python, install using `pip`:

      $ pip install pulumi-vsphere



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-vsphere/sdk/v3/



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.Vsphere



  The following configuration points are available:

  - `vsphere:user` - (Required) This is the username for vSphere API operations. Can also be specified with the `VSPHERE_USER`
    environment variable.
  - `vsphere:password` - (Required) This is the password for vSphere API operations. Can also be specified with the
    `VSPHERE_PASSWORD` environment variable.
  - `vsphere:vsphereServer` - (Required) This is the vCenter server name for vSphere API operations. Can also be specified
    with the `VSPHERE_SERVER` environment variable.
  - `vsphere:allowUnverifiedSsl` - (Optional) Boolean that can be set to true to disable SSL certificate verification.
    This should be used with care as it could allow an attacker to intercept your auth token. If omitted, default value is
    `false`. Can also be specified with the `VSPHERE_ALLOW_UNVERIFIED_SSL` environment variable.
  - `vsphere:vimKeepAlive` - (Optional) Keep alive interval in minutes for the VIM session. Standard session timeout in
    vSphere is 30 minutes. This defaults to `10` minutes to ensure that operations that take a longer than 30 minutes
    without API interaction do not result in a session timeout. Can also be specified with the `VSPHERE_VIM_KEEP_ALIVE`
    environment variable.
  - `vsphere:persistSession` - (Optional) Persist the SOAP and REST client sessions to disk. Default: false. Can also be
    specified by the `VSPHERE_PERSIST_SESSION` environment variable.
  - `vsphere:vimSessionPath` - (Optional) The direcotry to save the VIM SOAP API session to. Default: `${HOME}/.govmomi/sessions`.
    Can also be specified by the `VSPHERE_VIM_SESSION_PATH` environment variable.
  - `vsphere:restSessionPath` - (Optional) The directory to save the REST API session (used for tags) to. Default: `${HOME}/.govmomi/rest_sessions`.
    Can also be specified by the `VSPHERE_REST_SESSION_PATH` environment variable.
  - `vsphere:clientDebug` - (Optional) When `true`, the provider logs SOAP calls made to the vSphere API to disk. The log
    files are logged to `${HOME}/.govmomi`. Can also be specified with the `VSPHERE_CLIENT_DEBUG` environment variable.
  - `vsphere:clientDebugPath` - (Optional) Override the default log path. Can also be specified with the
    `VSPHERE_CLIENT_DEBUG_PATH` environment variable.
  - `vsphere:clientDebugPathRun` - (Optional) A specific subdirectory in `client_debug_path` to use for debugging calls for
    this particular provider configuration. All data in this directory is removed at the start of the provider run. Can also
    be specified with the `VSPHERE_CLIENT_DEBUG_PATH_RUN` environment variable.



  For further information, please visit [the vSphere provider docs](https://www.pulumi.com/docs/intro/cloud-providers/vsphere) or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/vsphere).


pkgId: 13d99a89e16465f4433baa06f19b58da30b4a811193c83337d6e194ce695730b
name: python-pulumi-wavefront-help
arch: noarch
version: 3.1.6
epoch: 0
release: 1
summary: Development documents and examples for pulumi-wavefront
url: https://pulumi.io
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-wavefront-3.1.6-1.src.rpm
location_href: Packages/python-pulumi-wavefront-help-3.1.6-1.noarch.rpm
checksum_type: sha256
description:
  [![Actions Status](https://github.com/pulumi/pulumi-wavefront/workflows/master/badge.svg)](https://github.com/pulumi/pulumi-wavefront/actions)
  [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com)
  [![NPM version](https://badge.fury.io/js/%40pulumi%2Fwavefront.svg)](https://www.npmjs.com/package/@pulumi/wavefront)
  [![Python version](https://badge.fury.io/py/pulumi-wavefront.svg)](https://pypi.org/project/pulumi-wavefront)
  [![NuGet version](https://badge.fury.io/nu/pulumi.wavefront.svg)](https://badge.fury.io/nu/pulumi.wavefront)
  [![PkgGoDev](https://pkg.go.dev/badge/github.com/pulumi/pulumi-wavefront/sdk/go)](https://pkg.go.dev/github.com/pulumi/pulumi-wavefront/sdk/go)
  [![License](https://img.shields.io/npm/l/%40pulumi%2Fpulumi.svg)](https://github.com/pulumi/pulumi-wavefront/blob/master/LICENSE)



  The Wavefront Resource Provider lets you manage Wavefront resources.



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

      $ npm install @pulumi/wavefront

  or `yarn`:

      $ yarn add @pulumi/wavefront



  To use from Python, install using `pip`:

      $ pip install pulumi_wavefront



  To use from Go, use `go get` to grab the latest version of the library

      $ go get github.com/pulumi/pulumi-wavefront/sdk/v3



  To use from .NET, install using `dotnet add package`:

      $ dotnet add package Pulumi.Wavefront



  The following configuration points are available:

  - `wavefront:token` - (Required) This is a either a Users token or Service Account token with permissions necessary to
    manage your Wavefront account. It can also be sourced from the `WAVEFRONT_TOKEN` environment variable.
  - `wavefront:address` - (Required) This is the URL of your cluster that you access Wavefront from without the leading `https://`
    or trailing `/` (e.g. `https://longboard.wavefront.com/` becomes `longboard.wavefront.com`). It can also be sourced
    from the `WAVEFRONT_ADDRESS` environment variable.



  For further information, please visit [the Wavefront provider docs](https://www.pulumi.com/docs/intro/cloud-providers/wavefront)
  or for detailed reference documentation, please visit [the API docs](https://www.pulumi.com/docs/reference/pkg/wavefront).


pkgId: fcee50cd3f7ff026a9fffe59b7eb80d6031b797a1e875f1508463cd91cee4a45
name: python-pulumi-xyz-help
arch: noarch
version: 1.1.72
epoch: 0
release: 1
summary: Development documents and examples for pulumi-xyz
url: https://www.pulumi.com
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumi-xyz-1.1.72-1.src.rpm
location_href: Packages/python-pulumi-xyz-help-1.1.72-1.noarch.rpm
checksum_type: sha256
description:
  The xyz Resource Provider lets you manage [xyz](http://example.com) resources.



  This package is available for several languages/platforms:



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

  ```bash
  npm install @pulumi/xyz
  ```

  or `yarn`:

  ```bash
  yarn add @pulumi/xyz
  ```



  To use from Python, install using `pip`:

  ```bash
  pip install pulumi_xyz
  ```



  To use from Go, use `go get` to grab the latest version of the library:

  ```bash
  go get github.com/pulumi/pulumi-xyz/sdk/go/...
  ```



  To use from .NET, install using `dotnet add package`:

  ```bash
  dotnet add package Pulumi.xyz
  ```



  The following configuration points are available for the `xyz` provider:

  - `xyz:region` (environment: `XYZ`) - the region in which to deploy resources



  For detailed reference documentation, please visit [the Pulumi registry](https://www.pulumi.com/registry/packages/xyz/api-docs/).


pkgId: 1659969e11c6f56fccf7a8cf66ae7ba59c96592375b95cef23ea36f7e907cc9d
name: python-pulumiverse-acme-help
arch: noarch
version: 0.6.2
epoch: 0
release: 1
summary: Development documents and examples for pulumiverse-acme
url: https://www.pulumi.com
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumiverse-acme-0.6.2-1.src.rpm
location_href: Packages/python-pulumiverse-acme-help-0.6.2-1.noarch.rpm
checksum_type: sha256
description:
  The ACME Resource Provider lets you manage ACME resources.
  [Let's Encrypt](https://letsencrypt.org/) is the biggest ACME CA in use.



  This package is available for several languages/platforms:



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

  ```bash
  npm install @pulumiverse/acme
  ```

  or `yarn`:

  ```bash
  yarn add @pulumiverse/acme
  ```



  To use from Python, install using `pip`:

  ```bash
  pip install pulumiverse_acme
  ```



  To use from Go, use `go get` to grab the latest version of the library:

  ```bash
  go get github.com/pulumiverse/pulumi-acme/sdk/go/...
  ```



  To use from .NET, install using `dotnet add package`:

  ```bash
  dotnet add package Pulumiverse.Acme
  ```



  For detailed reference documentation, please visit [the Pulumi registry](https://www.pulumi.com/registry/packages/acme/api-docs/).


pkgId: 58909f7a0ff1f880c7f9a7f1e46c955c1abe14c263e728e6cbf136e31bbbf345
name: python-pulumiverse-cockroach-help
arch: noarch
version: 0.9.0
epoch: 0
release: 1
summary: Development documents and examples for pulumiverse-cockroach
url: https://www.cockroachlabs.com/
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumiverse-cockroach-0.9.0-1.src.rpm
location_href: Packages/python-pulumiverse-cockroach-help-0.9.0-1.noarch.rpm
checksum_type: sha256
description:
  The cockroach resource provider for Pulumi lets you create resources in [Cockroach DB Cloud](https://www.cockroachlabs.com). To use
  this package, please [install the Pulumi CLI first](https://pulumi.com/).



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

  ```
  $ npm install @pulumiverse/cockroach
  ```

  or `yarn`:

  ```
  $ yarn add @pulumiverse/cockroach
  ```



  To use from Python, install using `pip`:

  ```
  $ pip install pulumiverse_cockroach
  ```



  To use from Go, use `go get` to grab the latest version of the library

  ```
  $ go get github.com/pulumiverse/pulumi-cockroach/sdk/go/...
  ```



  To use from Dotnet, use `dotnet add package` to install into your project. You must specify the version if it is a pre-release version.


  ```
  $ dotnet add package Pulumiverse.Cockroach
  ```



  See the Pulumi registry for API docs:

  https://www.pulumi.com/registry/packages/cockroach/api-docs/


pkgId: bbbad9bb0ac7da8d86cd8ba5298b6a5788eb10ceca65fc97aead646c315cdea3
name: python-pulumiverse-dynatrace-help
arch: noarch
version: 0.21.2
epoch: 0
release: 1
summary: Development documents and examples for pulumiverse-dynatrace
url: https://www.pulumi.com
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumiverse-dynatrace-0.21.2-1.src.rpm
location_href: Packages/python-pulumiverse-dynatrace-help-0.21.2-1.noarch.rpm
checksum_type: sha256
description:
  The Dynatrace resource provider for Pulumi lets you create resources in [Dynatrace](https://www.dynatrace.com/). To use
  this package, please [install the Pulumi CLI first](https://pulumi.com/).



  This package is available in many languages in standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

  ```
  $ npm install @pulumiverse/dynatrace
  ```

  or `yarn`:

  ```
  $ yarn add @pulumiverse/dynatrace
  ```



  To use from Python, install using `pip`:

  ```
  $ pip install pulumiverse-dynatrace
  ```



  To use from Go, use `go get` to grab the latest version of the library

  ```
  $ go get github.com/pulumiverse/pulumi-dynatrace/sdk/go/...
  ```



  To use from Dotnet, use `dotnet add package` to install into your project. You must specify the version if it is a pre-release version.


  ```
  $ dotnet add package Pulumiverse.Dynatrace
  ```



  See the Pulumi registry for API docs:

  https://www.pulumi.com/registry/packages/dynatrace/api-docs/


pkgId: dfa17383831c52a52708042db62a7b468c0a49f9aa0fe1f5e31bfca92fecfb8a
name: python-pulumiverse-grafana-help
arch: noarch
version: 0.9.1
epoch: 0
release: 1
summary: Development documents and examples for pulumiverse-grafana
url: https://grafana.com
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumiverse-grafana-0.9.1-1.src.rpm
location_href: Packages/python-pulumiverse-grafana-help-0.9.1-1.noarch.rpm
checksum_type: sha256
description:
  The grafana resource provider for Pulumi lets you creating resources in [grafana](https://www.grafana.com). To use
  this package, please [install the Pulumi CLI first](https://pulumi.com/).



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

  ```
  $ npm install @pulumiverse/grafana
  ```

  or `yarn`:

  ```
  $ yarn add @pulumiverse/grafana
  ```



  To use from Python, install using `pip`:

  ```
  $ pip install pulumiverse_grafana
  ```



  To use from Go, use `go get` to grab the latest version of the library

  ```
  $ go get github.com/pulumiverse/pulumi-grafana/sdk/go/...
  ```



  To use from Dotnet, use `dotnet add package` to install into your project. You must specify the version if it is a pre-release version.


  ```
  $ dotnet add package Pulumiverse.Grafana
  ```



  See the Pulumi registry for API docs:

  https://www.pulumi.com/registry/packages/grafana/api-docs/


pkgId: fc10b804a9fc55a5d24741be5cc6fb6fb563995e606240c0494deec2183f503c
name: python-pulumiverse-scaleway-help
arch: noarch
version: 1.21.1
epoch: 0
release: 1
summary: Development documents and examples for pulumiverse-scaleway
url: https://www.scaleway.com
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pulumiverse-scaleway-1.21.1-1.src.rpm
location_href: Packages/python-pulumiverse-scaleway-help-1.21.1-1.noarch.rpm
checksum_type: sha256
description:
  The Scaleway resource provider for Pulumi lets you creating resources in [Scaleway](https://www.scaleway.com). To use
  this package, please [install the Pulumi CLI first](https://pulumi.com/).



  This is a community maintained provider. Please file issues and feature requests here:

  [pulumiverse/pulumi-scaleway](https://github.com/pulumiverse/pulumi-scaleway/issues)

  You can also reach out on one of these channels:

  * `#pulumiverse` channel on the [Pulumi Community Slack](https://slack.pulumi.com)
  * `#pulumi` channel on the [Scaleway Community Slack](https://slack.scaleway.com)



  This package is available in many languages in the standard packaging formats.



  To use from JavaScript or TypeScript in Node.js, install using either `npm`:

  ```sh
  npm install @pulumiverse/scaleway
  ```

  or `yarn`:

  ```sh
  yarn add @pulumiverse/scaleway
  ```



  To use from Python, install using `pip`:

  ```sh
  pip install pulumiverse-scaleway
  ```



  To use from Go, use `go get` to grab the latest version of the library

  ```sh
  go get github.com/pulumiverse/pulumi-scaleway/sdk/go/...
  ```



  To use from Dotnet, use `dotnet add package` to install into your project. You must specify the version if it is a pre-release version.

  ```sh
  dotnet add package Pulumiverse.Scaleway
  ```



  See the Pulumi registry for [API documention](https://www.pulumi.com/registry/packages/scaleway/api-docs/).


pkgId: bcbba3c237b67e983d5c4d0bace122e07b8191be81f5b469b410ab850303aeeb
name: python-pvirie-utils-help
arch: noarch
version: 1.0.2
epoch: 0
release: 1
summary: Development documents and examples for pvirie-utils
url: https://github.com/PVirie/python-utils
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pvirie-utils-1.0.2-1.src.rpm
location_href: Packages/python-pvirie-utils-help-1.0.2-1.noarch.rpm
checksum_type: sha256
description:
  My personal collection of python utility functions.



  This module contains utility functions for working with Google Cloud Platform (GCP) services.



  1. Add environment `GCP_CREDENTIALS` with the path to the GCP credentials file.


pkgId: a1d036566a9113f879f56e2323600b46e10421b9239f59b84d7f096d357ca706
name: python-pvlib-help
arch: noarch
version: 0.11.2
epoch: 0
release: 1
summary: Development documents and examples for pvlib
url: https://github.com/pvlib/pvlib-python
rpm_license: BSD-3-Clause
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pvlib-0.11.2-1.src.rpm
location_href: Packages/python-pvlib-help-0.11.2-1.noarch.rpm
checksum_type: sha256
description:
  pvlib python is a community developed toolbox that provides a set of
  functions and classes for simulating the performance of photovoltaic
  energy systems and accomplishing related tasks.  The core mission of pvlib
  python is to provide open, reliable, interoperable, and benchmark
  implementations of PV system models.

  We need your help to make pvlib-python a great tool!

  Documentation: http://pvlib-python.readthedocs.io

  Source code: https://github.com/pvlib/pvlib-python


pkgId: 6708f1b3b29355837a7eecfbe0aa2850f33f96af65101b8aa8bcb3842375f1e8
name: python-pvlive-api-help
arch: noarch
version: 1.4.0
epoch: 0
release: 1
summary: Development documents and examples for pvlive-api
url: https://www.solar.sheffield.ac.uk/pvlive/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pvlive-api-1.4.0-1.src.rpm
location_href: Packages/python-pvlive-api-help-1.4.0-1.noarch.rpm
checksum_type: sha256
description:
  A Python implementation of the PV_Live web API. See https://www.solar.sheffield.ac.uk/pvlive/

  **Latest Version: 1.4.0**



  * This Python library provides a convenient interface for the PV_Live web API to facilitate accessing PV_Live results in Python code.
  * Developed and tested with Python 3.10, should work with Python 3.7+. Support for Python 2.7+ has been discontinued as of 2021-01-15.



  * Make sure you have Git installed - [Download Git](https://git-scm.com/downloads)
  * Run either:
      * `pip install pvlive-api`
      * `pip install git+https://github.com/SheffieldSolar/PV_Live-API`



  There are three methods for extracting raw data from the PV_Live API:

  |Method|Description|Docs Link|
  |------|-----------|---------|
  |`PVLive.latest(entity_type="pes", entity_id=0, extra_fields="", period=30, dataframe=False)`|Get the latest PV_Live generation result from the API.|[&#128279;](https://sheffieldsolar.github.io/PV_Live-API/build/html/modules.html#pvlive_api.pvlive.PVLive.latest)|
  |`PVLive.at_time(dt, entity_type="pes", entity_id=0, extra_fields="", period=30, dataframe=False)`|Get the PV_Live generation result for a given time from the API.|[&#128279;](https://sheffieldsolar.github.io/PV_Live-API/build/html/modules.html#pvlive_api.pvlive.PVLive.at_time)|
  |`PVLive.between(start, end, entity_type="pes", entity_id=0, extra_fields="", period=30, dataframe=False)`|Get the PV_Live generation result for a given time interval from the API.|[&#128279;](https://sheffieldsolar.github.io/PV_Live-API/build/html/modules.html#pvlive_api.pvlive.PVLive.between)|

  There are two methods for extracting derived statistics:

  |Method|Description|Docs Link|
  |------|-----------|---------|
  |`PVLive.day_peak(d, entity_type="pes", entity_id=0, extra_fields="", period=30, dataframe=False)`|Get the peak PV_Live generation result for a given day from the API.|[&#128279;](https://sheffieldsolar.github.io/PV_Live-API/build/html/modules.html#pvlive_api.pvlive.PVLive.day_peak)|
  |`PVLive.day_energy(d, entity_type="pes", entity_id=0)`|Get the cumulative PV generation for a given day from the API.|[&#128279;](https://sheffieldsolar.github.io/PV_Live-API/build/html/modules.html#pvlive_api.pvlive.PVLive.day_energy)|

  These methods include the following optional parameters:

  |Parameter|Usage|
  |---------|-----|
  |`entity_type`|Choose between `"pes"` or `"gsp"`. If querying for national data, this parameter can be set to either value (or left to it's default value) since setting `entity_id` to `0` will always return national data.|
  |`entity_id`|Set `entity_id=0` (the default value) to return nationally aggregated data. If `entity_type="pes"`, specify a _pes_id_ to retrieve data for, else if `entity_id="gsp"`, specify a _gsp_id_. For a full list of GSP and PES IDs, refer to the lookup table hosted on National Grid ESO's data portal [here](https://data.nationalgrideso.com/system/gis-boundaries-for-gb-grid-supply-points).|
  |`extra_fields`|Use this to extract additional fields from the API such as _installedcapacity_mwp_. For a full list of available fields, see the [PV_Live API Docs](https://www.solar.sheffield.ac.uk/pvlive/api/).|
  |`period`|Set the desired temporal resolution (in minutes) for PV outturn estimates. Options are 30 (default) or 5.|
  |`dataframe`|Set `dataframe=True` and the results will be returned as a Pandas DataFrame object which is generally much easier to work with. The columns of the DataFrame will be _pes_id_ or _gsp_id_, _datetime_gmt_, _generation_mw_, plus any extra fields specified.|

  There is also a method for extracting PV deployment (a.k.a capacity) data:
  |Method|Description|Docs Link|
  |------|-----------|---------|
  |`PVLive.deployment(region="gsp", include_history=False, by_system_size=False, release=0)`|Download PV deployment datasets from the API.|[&#128279;](https://sheffieldsolar.github.io/PV_Live-API/build/html/modules.html#pvlive_api.pvlive.PVLive.deployment)|




  See [pvlive_api_demo.py](https://github.com/SheffieldSolar/PV_Live-API/blob/master/pvlive_api_demo.py) for more example usage.

  The examples below assume you have imported the PVLive class and created a local instance called `pvl`:

  ```Python
  from datetime import datetime
  import pytz

  from pvlive_api import PVLive

  pvl = PVLive()
  ```

  |Example|Code|Example Output|
  |-------|----|------|
  |Get the latest nationally aggregated GB PV outturn|`pvl.latest()`|`(0, '2021-01-20T11:00:00Z', 203.0)`|
  |Get the latest aggregated outturn for **PES** region **23** (Yorkshire)|`pvl.latest(entity_id=23)`|`(23, '2021-01-20T14:00:00Z', 5.8833031)`
  |Get the latest aggregated outturn for **GSP** ID **120** (INDQ1 or "Indian Queens")|`pvl.latest(entity_type="gsp", entity_id=120)`|`(120, '2021-01-20T14:00:00Z', 1, 3.05604)`
  |Get the nationally aggregated GB PV outturn for all of 2020 as a DataFrame|`pvl.between(start=datetime(2020, 1, 1, 0, 30, tzinfo=pytz.utc), end=datetime(2021, 1, 1, tzinfo=pytz.utc), dataframe=True)`|![Screenshot of output](https://raw.githubusercontent.com/SheffieldSolar/PV_Live-API/master/misc/code_example_output.png)|
  |Get a list of GSP IDs|`pvl.gsp_ids`|`array([  0,   1,   2,   3,   ..., 315, 316, 317])`|
  |Get a list of PES IDs|`pvl.pes_ids`|`array([  0,  10,  11,  12,   ...,  21,  22,  23])`|

  To download data for all GSPs, use something like:

  ```python
  def download_pvlive_by_gsp(start, end, include_national=True, extra_fields=""):
      data = None
      pvl = PVLive()
      min_gsp_id = 0 if include_national else 1
      for gsp_id in pvl.gsp_ids:
          if gsp_id < min_gsp_id:
              continue
          data_ = pvl.between(start=start, end=end, entity_type="gsp", entity_id=gsp_id,
                              dataframe=True, extra_fields=extra_fields)
          if data is None:
              data = data_
          else:
              data = pd.concat((data, data_), ignore_index=True)
      return data
  ```





  This utility can be used to download data to a CSV file:

  ```
  >> pv_live -h
  usage: pv_live [-h] [-s "<yyyy-mm-dd HH:MM:SS>"] [-e "<yyyy-mm-dd HH:MM:SS>"]
                 [--entity_type <entity_type>] [--entity_id <entity_id>]
                 [--extra_fields <field1[,field2, ...]>] [--period <5|30>] [-q]
                 [-o </path/to/output/file>] [-http <http_proxy>] [-https <https_proxy>]

  This is a command line interface (CLI) for the PV_Live API module

  options:
    -h, --help            show this help message and exit
    -s "<yyyy-mm-dd HH:MM:SS>", --start "<yyyy-mm-dd HH:MM:SS>"
                          Specify a UTC start date in 'yyyy-mm-dd HH:MM:SS' format
                          (inclusive), default behaviour is to retrieve the latest outturn.
    -e "<yyyy-mm-dd HH:MM:SS>", --end "<yyyy-mm-dd HH:MM:SS>"
                          Specify a UTC end date in 'yyyy-mm-dd HH:MM:SS' format (inclusive),
                          default behaviour is to retrieve the latest outturn.
    --entity_type <entity_type>
                          Specify an entity type, either 'gsp' or 'pes'. Default is 'gsp'.
    --entity_id <entity_id>
                          Specify an entity ID, default is 0 (i.e. national).
    --extra_fields <field1[,field2, ...]>
                          Specify an extra_fields (as a comma-separated list to include when
                          requesting data from the API, defaults to 'installedcapacity_mwp'.
    --period <5|30>       Desired temporal resolution (in minutes) for PV outturn estimates.
                          Default is 30.
    -q, --quiet           Specify to not print anything to stdout.
    -o </path/to/output/file>, --outfile </path/to/output/file>
                          Specify a CSV file to write results to.
    -http <http_proxy>, --http-proxy <http_proxy>
                          HTTP Proxy address
    -https <https_proxy>, --https-proxy <https_proxy>
                          HTTPS Proxy address

  Jamie Taylor & Ethan Jones, 2018-06-04
  ```



  There is also a Docker Image hosted on Docker Hub which can be used to download data from the PV_Live API with minimal setup:

  ```
  >> docker run -it --rm sheffieldsolar/pv_live-api:<release> pv_live -h
  ```



  * [https://sheffieldsolar.github.io/PV_Live-API/](https://sheffieldsolar.github.io/PV_Live-API/)



  Sheffield Solar will endeavour to update this library in sync with the [PV_Live API](https://www.solar.sheffield.ac.uk/pvlive/api/ "PV_Live API webpage") and ensure the latest version of this library always supports the latest version of the PV_Live API, but cannot guarantee this. To make sure you are forewarned of upcoming changes to the API, you should email [solar@sheffield.ac.uk](mailto:solar@sheffield.ac.uk?subject=PV_Live%20API%20email%20updates "Email Sheffield Solar") and request to be added to the PV_Live user mailing list.

  To upgrade the code:
  * Run `pip install --upgrade pvlive-api`



  Users should be aware that Sheffield Solar computes continuous retrospective updates to PV_Live outturn estimates i.e. we regularly re-calculate outturn estimates retrospectively and these updated estimates are reflected immediately in the data delivered via the API.

  As of 2023-05-02, the first estimate of the PV outturn for a given settlement period is computed ~5 minutes after the end of the half hour in question and is typically available via the API within 6 minutes

  e.g. the initial estimate of the GB PV outturn for the period 14:30 - 15:00 UTC on 2023-05-02 (i.e. 15:30 - 16:00 BST) would become available at ~16:06 BST on 2023-05-02 and will be labelled using the timestamp at the end of the interval (in UTC): '2023-05-02 15:00:00'

  This outturn estimate is not final though - Sheffield Solar will continue to make retrospective revisions as

  - more PV sample data becomes available
  - better PV deployment data becomes available
  - the PV_Live methodology is refined

  Since the PV_Live model produces outturn estimates, they will never strictly speaking be final, as there will always be things we can do to refine the model and improve accuracy. That said, there are some notable/routine retrospective revisions to be aware of:

  - Outturns are re-computed in near-real-time every 5 minutes after the end of the half-hour for 3 hours, to allow for late arriving sample data
      - If all data ingestion pipelines are running smoothly, this does not result in any retrospective revisions
      - If some near-real-time sample data is late arriving, the outturn estimate will be revised at the next update
  - Outturns are re-computed on day+1 (typically between 10:30 and 10:35 and again between 22:30 and 22:35) to make use of sample data which only becomes available on day+1
  - Historical outturns may be re-computed periodically whenever our PV deployment dataset is updated retrospectively (usually every 3 - 6 months)

  In order to maintain a local copy of the PV_Live GB national outturn estimates that is as in sync with our own latest/best estimates as possible, we recommend the following polling cycle:

  - Every 5 minutes, pull the last 3 hours of outturns from the API
  - Every day, around 11am, re-download the previous 3 days of outturns
  - Every month, re-download all historical outturns



  * Jamie Taylor - [jamie.taylor@sheffield.ac.uk](mailto:jamie.taylor@sheffield.ac.uk "Email Jamie") - [SheffieldSolar](https://github.com/SheffieldSolar)



  * **Jamie Taylor** - [SheffieldSolar](https://github.com/SheffieldSolar)
  * **Ethan Jones** - [SheffieldSolar](https://github.com/SheffieldSolar)



  No license is defined yet - use at your own risk.


pkgId: 62aaa23130818a2bf85b9cf004cc21fd45477666428e473ec330b44abd4fcd1c
name: python-py-ab-experiment-help
arch: noarch
version: 0.3.2
epoch: 0
release: 1
summary: Development documents and examples for py-ab-experiment
url: https://github.com/gus-fr/py_ab
rpm_license: GPL-3.0-or-later
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-ab-experiment-0.3.2-1.src.rpm
location_href: Packages/python-py-ab-experiment-help-0.3.2-1.noarch.rpm
checksum_type: sha256
description:
  Framework to define and run AB tests within a python ecosystempy

  [![Documentation Status](https://readthedocs.org/projects/py-ab/badge/?version=latest)](https://py-ab.readthedocs.io/en/latest/?badge=latest)
  [![PyPi Version](https://img.shields.io/pypi/v/py-ab-experiment.svg)](https://pypi.python.org/pypi/py-ab-experiment/)


  `pip install py-ab-experiment` to install the library


  You first need a suitable configuration to set up an experiment. You can use one of the sample files provided in `src/tests/unit/test_programs`, or create your own using the configuration file format (see the [documentation](https://py-ab.readthedocs.io) for details)

  using the `splitter_test.pyab` definition, which is defined as
  ```
  def basic_experiment_1{
          //some splitter fields
          splitters: my_id
          if field_1 == 'a'{
                  return "Setting 1" weighted 4, "Setting 2" weighted 1
          }
          else{
                  return "Setting 1" weighted 1, "Setting 2" weighted 1
          }
  }
  ```



  You can then load an experiment in python by
  ```
  from pyab_experiment.experiment_evaluator import ExperimentEvaluator
  with open(file_name, "r") as fp:
      evaluator = ExperimentEvaluator(fp.read()) # load and compile the experiment code
  ```


  Then we run experiments by calling the experiment object with the fields needed
  ```
  experiment_group = evaluator(my_id=123,field1='a')
  ```

  The experiment group will return a "cohort" based on the 2 values defined in the configuration file. To Illustrate using the sample configuration defined above, when we repeatedly call `experiment` with `field1='a'`  we will get on average 'Setting 1' about 80% of the times (as long as my_id is uniformly distributed). If field1 is anything other than 'a' we will get on average a 50/50 split between 'Setting 1' and 'Setting 2'

  The determinism comes from the fact that the same my_id will always result in the same group assignment, (in our example, given the same field_1 value)


pkgId: 6d456a91251867a30439e45b69864ab631b19fd553073e2e8ad6369c2e2f2d09
name: python-py-aiger-help
arch: noarch
version: 7.0.0
epoch: 0
release: 1
summary: Development documents and examples for py-aiger
url: https://github.com/mvcisback/py-aiger
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-aiger-7.0.0-1.src.rpm
location_href: Packages/python-py-aiger-help-7.0.0-1.noarch.rpm
checksum_type: sha256
description:
  <figure>
    <img src="assets/logo_text.svg" alt="py-aiger logo" width=300px>
    <figcaption>
        pyAiger: A python library for manipulating sequential and
        combinatorial circuits.
    </figcaption>

  </figure>


  [![Build Status](https://cloud.drone.io/api/badges/mvcisback/py-aiger/status.svg)](https://cloud.drone.io/mvcisback/py-aiger)
  [![codecov](https://codecov.io/gh/mvcisback/py-aiger/branch/master/graph/badge.svg)](https://codecov.io/gh/mvcisback/py-aiger)
  [![PyPI version](https://badge.fury.io/py/py-aiger.svg)](https://badge.fury.io/py/py-aiger)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1405781.svg)](https://doi.org/10.5281/zenodo.1405781)

  <!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-generate-toc again -->
  **Table of Contents**

  - [About PyAiger](#about-pyaiger)
  - [Installation](#installation)
  - [Boolean Expression DSL](#boolean-expression-dsl)
  - [Sequential Circuit DSL](#sequential-circuit-dsl)
      - [Sequential composition](#sequential-composition)
      - [Parallel composition](#parallel-composition)
      - [Circuits with Latches/Feedback/Delay](#circuits-with-latchesfeedbackdelay)
      - [Relabeling](#relabeling)
      - [Evaluation](#evaluation)
      - [Useful circuits](#useful-circuits)
  - [Extra](#extra)
  - [Ecosystem](#ecosystem)
  - [Related Projects](#related-projects)
  - [Citing](#citing)

  <!-- markdown-toc end -->




  1. Q: How is Py-Aiger pronounced? A: Like "pie" + "grrr".
  2. Q: Why python? Aren't you worried about performance?! A: No. The goals of this library are ease of use and hackability.
  3. Q: No, I'm really concerned about performance! A: This library is not suited to implement logic solvers. For everything else, such as the creation and manipulation of circuits with many thousands of gates in between solver calls, the library is really fast enough.
  4. Q: Where does the name come from? A: <a href="http://fmv.jku.at/aiger/">Aiger</a> is a popular circuit format. The format is used in <a href="http://fmv.jku.at/hwmcc17/">hardware model checking</a>, <a href="http://www.syntcomp.org/">synthesis</a>, and is supported by <a href="https://github.com/berkeley-abc/abc">ABC</a>. The name is a combination of AIG (standing for <a href="https://en.wikipedia.org/wiki/And-inverter_graph">And-Inverter-Graph</a>) and the mountain <a href="https://en.wikipedia.org/wiki/Eiger">Eiger</a>.



  If you just need to use `aiger`, you can just run:

  `$ pip install py-aiger`

  For developers, note that this project uses the
  [poetry](https://poetry.eustace.io/) python package/dependency
  management tool. Please familarize yourself with it and then
  run:

  `$ poetry install`



  ```
  import aiger

  x, y, z, w = aiger.atoms('x', 'y', 'z', 'w')

  expr1 = z.implies(x & y)
  expr2 = z & w

  circ1 = expr1.with_output('z') \      # Get AIG for expr1 with output 'z'.
               .aig
  circ2 = circ1 >> circ2                # Feed outputs of circ1 into circ2.
  ```


  While powerful, when writing combinatorial circuits, the Sequential
  Circuit DSL can be somewhat clumsy. For this common usecase, we have
  developed the Boolean Expression DSL. All circuits generated this way
  have a single output.

  ```python
  import aiger
  x, y, z = aiger.atoms('x', 'y', 'z')
  expr1 = x & y  # circuit with inputs 'x', 'y' and 1 output computing x AND y.
  expr2 = x | y  # logical or.
  expr3 = x ^ y  # logical xor.
  expr4 = x == y  # logical ==, xnor.
  expr5 = x.implies(y)
  expr6 = ~x  # logical negation.
  expr7 = aiger.ite(x, y, z)  # if x then y else z.


  expr8 = x & True  # Equivalent to just x.
  expr9 = x & False # Equivalent to const False.



  expr10 = expr5.with_output('x_implies_y')
  assert expr10.output == 'x_implies_y'


  circ = x.aig


  expr10 = aiger.BoolExpr(circ)
  ```




  ```python
  import aiger
  from aiger import utils


  aig1 = aiger.load(path_to_aig1_file.aag)
  aig2 = aiger.load(path_to_aig2_file.aag)
  ```


  ```python
  aig3 = aig1 >> aig2
  ```


  ```python
  aig4 = aig1 | aig2
  ```


  Sometimes one requires some outputs to be feed back into the circuits
  as time delayed inputs. This can be accomplished using the `loopback`
  method. This method takes in a variable number of dictionaries
  encoding how to wire an input to an output. The wiring dictionaries
  with the following keys and default values:

  | Key         | Default | Meaning                          |
  | ----------- | ------- | -------------------------------- |
  | input       |         | Input port                       |
  | output      |         | Output port                      |
  | latch       | input   | Latch name                       |
  | init        | True    | Initial latch value              |
  | keep_output | True    | Keep loopbacked output as output |


  ```python


  aig5 = aig1.loopback({
    "input": "x", "output": "y",
  })

  aig6 = aig1.loopback({
    "input": "x", "output": "y",
  }, {
    "input": "z", "output": "z", "latch": "z_latch",
    "init": False, "keep_outputs": False
  })

  ```



  There are two syntaxes for relabeling. The first uses indexing
  syntax in a nod to [notation often used variable substition in math](https://mathoverflow.net/questions/243084/history-of-the-notation-for-substitution).

  The syntax is the relabel method, which is preferable when one wants
  to be explicit, even for those not familar with `py-aiger`.

  ```python

  aig1['i', {'x': 'z'}]
  aig1.relabel('input', {'x': 'z'})


  aig1['o', {'y': 'w'}]
  aig1.relabel('output', {'y': 'w'})


  aig1['l', {'l1': 'l2'}]
  aig1.relabel('latch', {'l1': 'l2'})
  ```


  ```python

  aig3(inputs={'x':True, 'y':False})


  sim = aig3.simulate([{'x': 0, 'y': 0},
                      {'x': 1, 'y': 2},
                      {'x': 3, 'y': 4}])


  sim = aig3.simulator()  # Coroutine
  next(sim)  # Initialize
  print(sim.send({'x': 0, 'y': 0}))
  print(sim.send({'x': 1, 'y': 2}))
  print(sim.send({'x': 3, 'y': 4}))



  aig4 = aig3.unroll(steps=10, init=True)
  ```


  ```python

  aig4 = aiger.source({'x': False}) >> aig3


  aig4 = aig3 >> aiger.sink(['y'])


  aig4 = aig3 >> aiger.tee({'y': ['y', 'w']})
  ```


  ```python
  aiger.common.eval_order(aig1)  # Returns topological ordering of circuit gates.


  aiger.to_aig(aig1)
  ```




  - [py-aiger-bv](https://github.com/mvcisback/py-aiger-bv): Extension of pyAiger for manipulating sequential bitvector circuits.
  - [py-aiger-cnf](https://github.com/mvcisback/py-aiger-cnf): BoolExpr to Object representing CNF. Mostly used for interfacing with py-aiger-sat.
  - [py-aiger-past-ltl](https://github.com/mvcisback/py-aiger-past-ltl): Converts Past Linear Temporal Logic to aiger circuits.
  - [py-aiger-coins](https://github.com/mvcisback/py-aiger-coins): Library for creating circuits that encode discrete distributions.
  - [py-aiger-sat](https://github.com/mvcisback/py-aiger-sat): Bridge between py-aiger and py-sat.
  - [py-aiger-bdd](https://github.com/mvcisback/py-aiger-bdd): Aiger <-> BDD bridge.
  - [py-aiger-gridworld](https://github.com/mvcisback/py-aiger-gridworld): Create aiger circuits representing gridworlds.
  - [py-aiger-dfa](https://pypi.org/project/py-aiger-dfa/): Convert between finite automata and sequential circuits.





  - [py-aiger-spectral](https://github.com/mvcisback/py-aiger-spectral): A tool for performing (Fourier) Analysis of Boolean Functions.
  - [py-aiger-abc](https://pypi.org/project/py-aiger-abc/): Aiger and abc bridge.


  - [pyAig](https://github.com/sterin/pyaig): Another python library
    for working with AIGER circuits.


pkgId: dc9b98f0b84e55c92e216eb10b0c4de843dcbf7245750c452c101236e6e62916
name: python-py-discord-html-transcripts-help
arch: noarch
version: 2.2.0
epoch: 0
release: 1
summary: Development documents and examples for py-discord-html-transcripts
url: https://github.com/FroostySnoowman/py-discord-html-transcripts
rpm_license: GPL-3.0-only
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-discord-html-transcripts-2.2.0-1.src.rpm
location_href: Packages/python-py-discord-html-transcripts-help-2.2.0-1.noarch.rpm
checksum_type: sha256
description:
  This code was NOT made by me, but is a fork and altered for my needs. All credit goes to the original developer.


pkgId: 5ab4eeb0097cbe71c916c2c42ada843db4fb225c6c91cc86d0115bf7dbc0bad2
name: python-py-entity-linking-el-help
arch: noarch
version: 0.1.4
epoch: 0
release: 1
summary: Development documents and examples for py-entity-linking-el
url: https://pypi.org/project/py-entity-linking-el/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-entity-linking-el-0.1.4-1.src.rpm
location_href: Packages/python-py-entity-linking-el-help-0.1.4-1.noarch.rpm
checksum_type: sha256
description:
  Lightweight entity linking solution for Greek language.

  **Please consider citing our works if you use code from this repository.**
  **Also, we recommend using a Colab T4 GPU for faster results.**


  * python>=3.10
  * numpy==1.26.4
  * SPARQLWrapper==2.0.0
  * sentence_transformers==3.1.1
  * aiohttp==3.9.5
  * openai==1.55.3
  * httpx==0.27.2
  * beautifulsoup4==4.12.2
  * fake-useragent==1.5.1
  * nest_asyncio==1.5.8


  ```
  from linking import main


  api_token = "YOUR_API_TOKEN"

  main.EL(api_token=api_token,
  	sentence="Χάρη στην ΕΦΓ, μια μηχανή μπορεί να 'καταλάβει' το περιεχόμενο των εγγράφων, συμπεριλαμβανομένων των αποχρώσεων του πλαισίου των της γλώσσας σε αυτά.",
  	mention="ΕΦΓ",
  	single="No",
  	combination="No",
  	disambiguation="Yes",
  	embedding_model="intfloat/multilingual-e5-large-instruct")
  ```

  ```
  The correct entity for 'ΕΦΓ' is:

  Wikipedia: https://el.wikipedia.org/wiki/Επεξεργασία_φυσικής_γλώσσας

  Wikidata: https://www.wikidata.org/wiki/Q30642

  DBpedia: http://dbpedia.org/resource/Natural_language_processing


  Execution Time: 00:00:29
  ```


  * **api_token**: Your API token from [here](https://github.com/marketplace/models/azure-openai/gpt-4o). **(Required)**
  * **sentence**: A Greek text. **(Required)**
  * **mention**: The mention you want to perform the linking, the mention should be from inside the provided sentence. **(Required)**
  * **disambiguation**: Used when the mention has acronyms or the mention has two different entities inside (e.g. PCA and FA), *(deafult="Yes")*, *(Values: "Yes", "No")*. *(Optional)*
  * **single**: Usually used for difficult mentions, it searches each word of the mention individually, *(deafult="No")*, *(Values: "Yes", "No")*. *(Optional)*
  * **combination**: Usually used for difficult mentions, it makes combinations for each word of the mention, *(deafult="No")*, *(Values: "Yes", "No")*. *(Optional)*
  * **embedding_model**: A [sentence-transformers](https://sbert.net/) model to perform text similarity, *(deafault="intfloat/multilingual-e5-large-instruct")*, *(Values: str of the name of any sentence-transformers model that supports Greek)*. *(Optional)*


  This library is licensed under the [CC-BY-NC 4.0 license](https://creativecommons.org/licenses/by-nc/4.0/).


pkgId: 52fe363317060cfcd634b90d9770d0fc0d7f8ea104ccdf2ae02c1f710112423c
name: python-py-entity-linking-help
arch: noarch
version: 0.1.4
epoch: 0
release: 1
summary: Development documents and examples for py-entity-linking
url: https://pypi.org/project/py-entity-linking/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-entity-linking-0.1.4-1.src.rpm
location_href: Packages/python-py-entity-linking-help-0.1.4-1.noarch.rpm
checksum_type: sha256
description:
  Lightweight entity linking solution for the English language.

  **Please consider citing our works if you use code from this repository.**
  **Also, we recommend using a Colab T4 GPU for faster results.**


  * python>=3.10
  * numpy==1.26.4
  * SPARQLWrapper==2.0.0
  * sentence_transformers==3.1.1
  * aiohttp==3.9.5
  * openai==1.55.3
  * httpsx==0.27.2
  * beautifulsoup4==4.12.2
  * fake-useragent==1.5.1
  * nest_asyncio==1.5.8


  ```
  from linking import main


  api_token = "YOUR_API_TOKEN"

  main.EL(api_token=api_token,
  	sentence="We used PCA and FA for our experiments.",
  	mention="PCA and FA",
  	single="No",
  	combination="No",
  	disambiguation="Yes",
  	embedding_model="Lajavaness/bilingual-embedding-large")
  ```

  ```
  The correct entity for 'PCA' is:

  Wikipedia: https://en.wikipedia.org/wiki/Principal_component_analysis

  Wikidata: https://www.wikidata.org/wiki/Q2873

  DBpedia: http://dbpedia.org/resource/Principal_component_analysis



  The correct entity for 'FA' is:

  Wikipedia: https://en.wikipedia.org/wiki/Factor_analysis

  Wikidata: https://www.wikidata.org/wiki/Q726474

  DBpedia: http://dbpedia.org/resource/Factor_analysis

  Execution Time: 00:00:35
  ```


  * **api_token**: Your API token from [here](https://github.com/marketplace/models/azure-openai/gpt-4o). **(Required)**
  * **sentence**: An English text. **(Required)**
  * **mention**: The mention you want to perform the linking, the mention should be from inside the provided sentence. **(Required)**
  * **disambiguation**: Used when the mention has acronyms or the mention has two different entities inside (e.g. PCA and FA), *(deafult="Yes")*, *(Values: "Yes", "No")*. *(Optional)*
  * **single**: Usually used for difficult mentions, it searches each word of the mention individually, *(deafult="No")*, *(Values: "Yes", "No")*. *(Optional)*
  * **combination**: Usually used for difficult mentions, it makes combinations for each word of the mention, *(deafult="No")*, *(Values: "Yes", "No")*. *(Optional)*
  * **embedding_model**: A [sentence-transformers](https://sbert.net/) model to perform text similarity, *(deafault="Lajavaness/bilingual-embedding-large")*, *(Values: str of the name of any sentence-transformers model)*. *(Optional)*


  This library is licensed under the [CC-BY-NC 4.0 license](https://creativecommons.org/licenses/by-nc/4.0/).


pkgId: 4590aaa5fd281bcc839fb4d11b4b1991d956dfa54b5664c023818dd32e51925b
name: python-py-ewr-help
arch: noarch
version: 2.3.2
epoch: 0
release: 1
summary: Development documents and examples for py-ewr
url: https://github.com/MDBAuth/EWR_tool
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-ewr-2.3.2-1.src.rpm
location_href: Packages/python-py-ewr-help-2.3.2-1.noarch.rpm
checksum_type: sha256
description:
  [![CI](https://github.com/MDBAuth/EWR_tool/actions/workflows/test-release.yml/badge.svg)]()
  [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/py-ewr)](https://pypi.org/project/py-ewr/)
  [![PyPI](https://img.shields.io/pypi/v/py-ewr)](https://pypi.org/project/py-ewr/)
  [![DOI](https://zenodo.org/badge/342122359.svg)](https://zenodo.org/badge/latestdoi/342122359)




  - CLLMM_c and CLLMM_d ewrs are now able to be calculated without all barrage level gauges being present in the model file.
  - Including draft objective mapping files in the package (see below sub heading **Objective mapping** for more information). Objective mapping has been therefore pulled out of the parameter sheet
  - Including an example parallel processing script for running the EWR tool
  - Adding handling for cases where there are single MDBA bigmod site IDs mapping to multiple different gauges
  - Fix SDL resource unit mapping in the parameter sheet
  - Adding lat and lon to the parameter sheet
  - ten thousand year handling - this has been brought back online.
  - Remove TQDM loading bars
  - Adding new model format handling - 'IQQM - netcdf'
  - Standard time-series handling added - each column needs a gauge, followed by and underscore, followed by either flow or level (e.g. 409025_flow). This handling also has missing date filling - so any missing dates will be filled with NaN values in all columns.
  - bug fixes: spells of length equal to the minimum required spell length were getting filtered out of the successful events table and successful interevents table, fixed misclassification of some gauges to flow, level, and lake level categories
  - New EWRs: New Qld EWRs - SF_FD and BF_FD used to look into the FD EWRs in closer detail.
  - Adding state and Surface Water SDL (SWSDL) to py-ewr output tables



  Note - requires Python 3.9 to 3.13 (inclusive)

  Step 1.
  Upgrade pip
  ```bash
  python -m pip install –-upgrade pip
  ```

  Step 2.
  ```bash
  pip install py-ewr
  ```


  The EWR tool will use a second program called gauge getter to first download the river data at the locations and dates selected and then run this through the EWR tool

  ```python

  from datetime import datetime



  dates = {'start_date': datetime(YYYY, 7, 1),
          'end_date': datetime(YYYY, 6, 30)}

  gauges = ['Gauge1', 'Gauge2']



  ```

  ```python

  from py_ewr.observed_handling import ObservedHandler


  ewr_oh = ObservedHandler(gauges=gauges, dates=dates)



  ewr_results = ewr_oh.get_ewr_results()


  yearly_ewr_results = ewr_oh.get_yearly_ewr_results()


  all_events = ewr_oh.get_all_events()


  all_interEvents = ewr_oh.get_all_interEvents()


  all_successfulEvents = ewr_oh.get_all_successful_events()


  all_successful_interEvents = ewr_oh.get_all_successful_interEvents()

  ```



  1. Tell the tool where the model files are (can either be local or in a remote location)
  2. Tell the tool what format the model files are in. The current model format options are:
      - 'Bigmod - MDBA'
          Bigmod formatted outputs
      - 'Source - NSW (res.csv)'
          Source res.csv formatted outputs
      - 'Standard time-series'
          The first column header should be *Date* with the date values in the YYYY-MM-DD format.
          The next columns should have the *gauge* followed by *_* followed by either *flow* or *level*
          E.g.
          | Date | 409025_flow | 409025_level | 414203_flow |
          | --- | --- | --- | --- |
          | 1895-07-01 | 8505 | 5.25 | 8500 |
          | 1895-07-02 | 8510 | 5.26 | 8505 |

      - 'ten thousand year'
          This has the same formatting requirements as the 'Standard time-series'. This can handle ten thousand years worth of hydrology data.
          The first column header should be *Date* with the date values in the YYYY-MM-DD format.
          The next columns should have the *gauge* followed by *_* followed by either *flow* or *level*
          E.g.
          | Date | 409025_flow | 409025_level | 414203_flow |
          | --- | --- | --- | --- |
          | 105-07-01 | 8505 | 5.25 | 8500 |
          | 105-07-02 | 8510 | 5.26 | 8505 |


  ```python



  scenarios = {'Scenario1': ['file/location/1', 'file/location/2', 'file/location/3'],
               'Scenario2': ['file/location/1', 'file/location/2', 'file/location/3']}

  model_format = 'Bigmod - MDBA'



  ```

  ``` python
  from py_ewr.scenario_handling import ScenarioHandler
  import pandas as pd

  ewr_results_dict = {}
  yearly_results_dict = {}
  all_events_dict = {}
  all_interEvents_dict = {}
  all_successful_Events_dict = {}
  all_successful_interEvents_dict = {}

  for scenario_name, scenario_list in scenarios.items():
      ewr_results = pd.DataFrame()
      yearly_ewr_results = pd.DataFrame()
      all_events = pd.DataFrame()
      all_interEvents = pd.DataFrame()
      all_successful_Events = pd.DataFrame()
      all_successful_interEvents = pd.DataFrame()
      for file in scenarios[scenario_name]:

          
          ewr_sh = ScenarioHandler(scenario_file = file,
                                  model_format = model_format)

          
          
          temp_ewr_results = ewr_sh.get_ewr_results()
          ewr_results = pd.concat([ewr_results, temp_ewr_results], axis = 0)
          
          temp_yearly_ewr_results = ewr_sh.get_yearly_ewr_results()
          yearly_ewr_results = pd.concat([yearly_ewr_results, temp_yearly_ewr_results], axis = 0)
          
          temp_all_events = ewr_sh.get_all_events()
          all_events = pd.concat([all_events, temp_all_events], axis = 0)
          
          temp_all_interEvents = ewr_sh.get_all_interEvents()
          all_interEvents = pd.concat([all_interEvents, temp_all_interEvents], axis = 0)
          
          temp_all_successfulEvents = ewr_sh.get_all_successful_events()
          all_successful_Events = pd.concat([all_successful_Events, temp_all_successfulEvents], axis = 0)
          
          temp_all_successful_interEvents = ewr_sh.get_all_successful_interEvents()
          all_successful_interEvents = pd.concat([all_successful_interEvents, temp_all_successful_interEvents], axis = 0)


      
      ewr_results.to_csv(scenario_name + 'all_results.csv')
      yearly_ewr_results.to_csv(scenario_name + 'yearly_ewr_results.csv')
      all_events.to_csv(scenario_name + 'all_events.csv')
      all_interEvents.to_csv(scenario_name + 'all_interevents.csv')
      all_successful_Events.to_csv(scenario_name + 'all_successful_Events.csv')
      all_successful_interEvents.to_csv(scenario_name + 'all_successful_interEvents.csv')

      
      ewr_results_dict[scenario_name] = ewr_results
      yearly_results_dict[scenario_name] = yearly_ewr_results
      all_events_dict[scenario_name] = all_events_dict
      all_interEvents_dict[scenario_name] = all_interEvents
      all_successful_Events_dict[scenario_name] = all_successful_Events
      all_successful_interEvents_dict[scenario_name] = all_successful_interEvents


  ```



  This tool has two purposes:
  1. Operational: Tracking EWR success at gauges of interest in real time - option 1 above.
  2. Planning: Comparing EWR success between scenarios (i.e. model runs) - option 2 above.

  **Support**
  For issues relating to the script, a tutorial, or feedback please contact Lara Palmer at lara.palmer@mdba.gov.au, Martin Job at martin.job@mdba.gov.au, or Joel Bailey at joel.bailey@mdba.gov.au


  **Disclaimer**
  Every effort has been taken to ensure the EWR database represents the original EWRs from state Long Term Water Plans (LTWPs) and Environmental Water Management Plans (EWMPs) as best as possible, and that the code within this tool has been developed to interpret and analyse these EWRs in an accurate way. However, there may still be unresolved bugs in the EWR parameter sheet and/or EWR tool. Please report any bugs to the issues tab under the GitHub project so we can investigate further.


  **Notes on development of the dataset of EWRs**
  The MDBA has worked with Basin state representatives to ensure scientific integrity of EWRs has been maintained when translating from raw EWRs in the Basin state LTWPs and EWMPs to the machine readable format found in the parameter sheet within this tool.

  **Compatibility**

  NSW:
  - All Queensland catchments
  - All New South Wales catchments
  - All South Australian catchments
  - All EWRs from river based Environmental Water Management Plans (EWMPs) in Victoria*

  *Currently the wetland EWMPS and mixed wetland-river EWMPs in Victoria contain EWRs that cannot be evaluated by an automated EWR tool so the EWRs from these plans have been left out for now. The MDBA will work with our Victorian colleagues to ensure any updated EWRs in these plans are integrated into the tool where possible.

  **Input data**

  - Gauge data from the relevant Basin state websites and the Bureau of Meteorology website
  - Scenario data input by the user
  - Model metadata for location association between gauge ID's and model nodes
  - EWR parameter sheet

  **Running the tool**

  Consult the user manual for instructions on how to run the tool. Please email the above email addresses for a copy of the user manual.

  **Objective mapping**
  Objective mapping csv files are now included in the EWR tool package. Currently this objective mapping is in an early draft format. The objective mapping will be finalised after consultation with relevant state representatives. The files are intended to be used together to link EWRs to the detailed objectives, theme level targets and specific goals. The three sheets are located in the py_ewr/parameter_metadata folder:
  - ewr2obj.csv: For each planning unit, gauge, ewr combination there are either one or many env_obj codes. These env_obj codes come under one of five different theme level targets (Native Fish, Native vegetation, Waterbirds, Other species or Ecosystem functions)
  - obj2target.csv: env_obj's are unique to their planning unit in the LTWP (noting there are often a lot of similarities between env_obj's in the same states). The plain english wording of the env objectives is also contained in this csv. The LTWP, planning unit and env_obj rows are repeated for each specific goal related to that LTWP, planning unit and env_obj.
  - obj2yrtarget.csv: The environmental objectives are related to 5, 10 and 20 year targets


pkgId: 96dfe1e5a78ae9c4ffc491ca0dd872b0395ce9088f3edfa433ce2a985de1a54a
name: python-py-gitea-opensuse-org-help
arch: noarch
version: 1.22.4.post1
epoch: 0
release: 1
summary: Development documents and examples for py-gitea-opensuse-org
url: https://github.com/dcermak/py-gitea-opensuse-org
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-gitea-opensuse-org-1.22.4.post1-1.src.rpm
location_href: Packages/python-py-gitea-opensuse-org-help-1.22.4.post1-1.noarch.rpm
checksum_type: sha256
description:
  *ActivitypubApi* | [**activitypub_person**](docs/ActivitypubApi.md#activitypub_person) | **GET** /activitypub/user-id/{user-id} | Returns the Person actor for a user
  *ActivitypubApi* | [**activitypub_person_inbox**](docs/ActivitypubApi.md#activitypub_person_inbox) | **POST** /activitypub/user-id/{user-id}/inbox | Send to the inbox
  *AdminApi* | [**admin_add_user_badges**](docs/AdminApi.md#admin_add_user_badges) | **POST** /admin/users/{username}/badges | Add a badge to a user
  *AdminApi* | [**admin_adopt_repository**](docs/AdminApi.md#admin_adopt_repository) | **POST** /admin/unadopted/{owner}/{repo} | Adopt unadopted files as a repository
  *AdminApi* | [**admin_create_hook**](docs/AdminApi.md#admin_create_hook) | **POST** /admin/hooks | Create a hook
  *AdminApi* | [**admin_create_org**](docs/AdminApi.md#admin_create_org) | **POST** /admin/users/{username}/orgs | Create an organization
  *AdminApi* | [**admin_create_public_key**](docs/AdminApi.md#admin_create_public_key) | **POST** /admin/users/{username}/keys | Add a public key on behalf of a user
  *AdminApi* | [**admin_create_repo**](docs/AdminApi.md#admin_create_repo) | **POST** /admin/users/{username}/repos | Create a repository on behalf of a user
  *AdminApi* | [**admin_create_user**](docs/AdminApi.md#admin_create_user) | **POST** /admin/users | Create a user
  *AdminApi* | [**admin_cron_list**](docs/AdminApi.md#admin_cron_list) | **GET** /admin/cron | List cron tasks
  *AdminApi* | [**admin_cron_run**](docs/AdminApi.md#admin_cron_run) | **POST** /admin/cron/{task} | Run cron task
  *AdminApi* | [**admin_delete_hook**](docs/AdminApi.md#admin_delete_hook) | **DELETE** /admin/hooks/{id} | Delete a hook
  *AdminApi* | [**admin_delete_unadopted_repository**](docs/AdminApi.md#admin_delete_unadopted_repository) | **DELETE** /admin/unadopted/{owner}/{repo} | Delete unadopted files
  *AdminApi* | [**admin_delete_user**](docs/AdminApi.md#admin_delete_user) | **DELETE** /admin/users/{username} | Delete a user
  *AdminApi* | [**admin_delete_user_badges**](docs/AdminApi.md#admin_delete_user_badges) | **DELETE** /admin/users/{username}/badges | Remove a badge from a user
  *AdminApi* | [**admin_delete_user_public_key**](docs/AdminApi.md#admin_delete_user_public_key) | **DELETE** /admin/users/{username}/keys/{id} | Delete a user&#39;s public key
  *AdminApi* | [**admin_edit_hook**](docs/AdminApi.md#admin_edit_hook) | **PATCH** /admin/hooks/{id} | Update a hook
  *AdminApi* | [**admin_edit_user**](docs/AdminApi.md#admin_edit_user) | **PATCH** /admin/users/{username} | Edit an existing user
  *AdminApi* | [**admin_get_all_emails**](docs/AdminApi.md#admin_get_all_emails) | **GET** /admin/emails | List all emails
  *AdminApi* | [**admin_get_all_orgs**](docs/AdminApi.md#admin_get_all_orgs) | **GET** /admin/orgs | List all organizations
  *AdminApi* | [**admin_get_hook**](docs/AdminApi.md#admin_get_hook) | **GET** /admin/hooks/{id} | Get a hook
  *AdminApi* | [**admin_get_runner_registration_token**](docs/AdminApi.md#admin_get_runner_registration_token) | **GET** /admin/runners/registration-token | Get an global actions runner registration token
  *AdminApi* | [**admin_list_hooks**](docs/AdminApi.md#admin_list_hooks) | **GET** /admin/hooks | List system&#39;s webhooks
  *AdminApi* | [**admin_list_user_badges**](docs/AdminApi.md#admin_list_user_badges) | **GET** /admin/users/{username}/badges | List a user&#39;s badges
  *AdminApi* | [**admin_rename_user**](docs/AdminApi.md#admin_rename_user) | **POST** /admin/users/{username}/rename | Rename a user
  *AdminApi* | [**admin_search_emails**](docs/AdminApi.md#admin_search_emails) | **GET** /admin/emails/search | Search all emails
  *AdminApi* | [**admin_search_users**](docs/AdminApi.md#admin_search_users) | **GET** /admin/users | Search users according filter conditions
  *AdminApi* | [**admin_unadopted_list**](docs/AdminApi.md#admin_unadopted_list) | **GET** /admin/unadopted | List unadopted repositories
  *IssueApi* | [**issue_add_label**](docs/IssueApi.md#issue_add_label) | **POST** /repos/{owner}/{repo}/issues/{index}/labels | Add a label to an issue
  *IssueApi* | [**issue_add_subscription**](docs/IssueApi.md#issue_add_subscription) | **PUT** /repos/{owner}/{repo}/issues/{index}/subscriptions/{user} | Subscribe user to issue
  *IssueApi* | [**issue_add_time**](docs/IssueApi.md#issue_add_time) | **POST** /repos/{owner}/{repo}/issues/{index}/times | Add tracked time to a issue
  *IssueApi* | [**issue_check_subscription**](docs/IssueApi.md#issue_check_subscription) | **GET** /repos/{owner}/{repo}/issues/{index}/subscriptions/check | Check if user is subscribed to an issue
  *IssueApi* | [**issue_clear_labels**](docs/IssueApi.md#issue_clear_labels) | **DELETE** /repos/{owner}/{repo}/issues/{index}/labels | Remove all labels from an issue
  *IssueApi* | [**issue_create_comment**](docs/IssueApi.md#issue_create_comment) | **POST** /repos/{owner}/{repo}/issues/{index}/comments | Add a comment to an issue
  *IssueApi* | [**issue_create_issue**](docs/IssueApi.md#issue_create_issue) | **POST** /repos/{owner}/{repo}/issues | Create an issue. If using deadline only the date will be taken into account, and time of day ignored.
  *IssueApi* | [**issue_create_issue_attachment**](docs/IssueApi.md#issue_create_issue_attachment) | **POST** /repos/{owner}/{repo}/issues/{index}/assets | Create an issue attachment
  *IssueApi* | [**issue_create_issue_blocking**](docs/IssueApi.md#issue_create_issue_blocking) | **POST** /repos/{owner}/{repo}/issues/{index}/blocks | Block the issue given in the body by the issue in path
  *IssueApi* | [**issue_create_issue_comment_attachment**](docs/IssueApi.md#issue_create_issue_comment_attachment) | **POST** /repos/{owner}/{repo}/issues/comments/{id}/assets | Create a comment attachment
  *IssueApi* | [**issue_create_issue_dependencies**](docs/IssueApi.md#issue_create_issue_dependencies) | **POST** /repos/{owner}/{repo}/issues/{index}/dependencies | Make the issue in the url depend on the issue in the form.
  *IssueApi* | [**issue_create_label**](docs/IssueApi.md#issue_create_label) | **POST** /repos/{owner}/{repo}/labels | Create a label
  *IssueApi* | [**issue_create_milestone**](docs/IssueApi.md#issue_create_milestone) | **POST** /repos/{owner}/{repo}/milestones | Create a milestone
  *IssueApi* | [**issue_delete**](docs/IssueApi.md#issue_delete) | **DELETE** /repos/{owner}/{repo}/issues/{index} | Delete an issue
  *IssueApi* | [**issue_delete_comment**](docs/IssueApi.md#issue_delete_comment) | **DELETE** /repos/{owner}/{repo}/issues/comments/{id} | Delete a comment
  *IssueApi* | [**issue_delete_comment_deprecated**](docs/IssueApi.md#issue_delete_comment_deprecated) | **DELETE** /repos/{owner}/{repo}/issues/{index}/comments/{id} | Delete a comment
  *IssueApi* | [**issue_delete_comment_reaction**](docs/IssueApi.md#issue_delete_comment_reaction) | **DELETE** /repos/{owner}/{repo}/issues/comments/{id}/reactions | Remove a reaction from a comment of an issue
  *IssueApi* | [**issue_delete_issue_attachment**](docs/IssueApi.md#issue_delete_issue_attachment) | **DELETE** /repos/{owner}/{repo}/issues/{index}/assets/{attachment_id} | Delete an issue attachment
  *IssueApi* | [**issue_delete_issue_comment_attachment**](docs/IssueApi.md#issue_delete_issue_comment_attachment) | **DELETE** /repos/{owner}/{repo}/issues/comments/{id}/assets/{attachment_id} | Delete a comment attachment
  *IssueApi* | [**issue_delete_issue_reaction**](docs/IssueApi.md#issue_delete_issue_reaction) | **DELETE** /repos/{owner}/{repo}/issues/{index}/reactions | Remove a reaction from an issue
  *IssueApi* | [**issue_delete_label**](docs/IssueApi.md#issue_delete_label) | **DELETE** /repos/{owner}/{repo}/labels/{id} | Delete a label
  *IssueApi* | [**issue_delete_milestone**](docs/IssueApi.md#issue_delete_milestone) | **DELETE** /repos/{owner}/{repo}/milestones/{id} | Delete a milestone
  *IssueApi* | [**issue_delete_stop_watch**](docs/IssueApi.md#issue_delete_stop_watch) | **DELETE** /repos/{owner}/{repo}/issues/{index}/stopwatch/delete | Delete an issue&#39;s existing stopwatch.
  *IssueApi* | [**issue_delete_subscription**](docs/IssueApi.md#issue_delete_subscription) | **DELETE** /repos/{owner}/{repo}/issues/{index}/subscriptions/{user} | Unsubscribe user from issue
  *IssueApi* | [**issue_delete_time**](docs/IssueApi.md#issue_delete_time) | **DELETE** /repos/{owner}/{repo}/issues/{index}/times/{id} | Delete specific tracked time
  *IssueApi* | [**issue_edit_comment**](docs/IssueApi.md#issue_edit_comment) | **PATCH** /repos/{owner}/{repo}/issues/comments/{id} | Edit a comment
  *IssueApi* | [**issue_edit_comment_deprecated**](docs/IssueApi.md#issue_edit_comment_deprecated) | **PATCH** /repos/{owner}/{repo}/issues/{index}/comments/{id} | Edit a comment
  *IssueApi* | [**issue_edit_issue**](docs/IssueApi.md#issue_edit_issue) | **PATCH** /repos/{owner}/{repo}/issues/{index} | Edit an issue. If using deadline only the date will be taken into account, and time of day ignored.
  *IssueApi* | [**issue_edit_issue_attachment**](docs/IssueApi.md#issue_edit_issue_attachment) | **PATCH** /repos/{owner}/{repo}/issues/{index}/assets/{attachment_id} | Edit an issue attachment
  *IssueApi* | [**issue_edit_issue_comment_attachment**](docs/IssueApi.md#issue_edit_issue_comment_attachment) | **PATCH** /repos/{owner}/{repo}/issues/comments/{id}/assets/{attachment_id} | Edit a comment attachment
  *IssueApi* | [**issue_edit_issue_deadline**](docs/IssueApi.md#issue_edit_issue_deadline) | **POST** /repos/{owner}/{repo}/issues/{index}/deadline | Set an issue deadline. If set to null, the deadline is deleted. If using deadline only the date will be taken into account, and time of day ignored.
  *IssueApi* | [**issue_edit_label**](docs/IssueApi.md#issue_edit_label) | **PATCH** /repos/{owner}/{repo}/labels/{id} | Update a label
  *IssueApi* | [**issue_edit_milestone**](docs/IssueApi.md#issue_edit_milestone) | **PATCH** /repos/{owner}/{repo}/milestones/{id} | Update a milestone
  *IssueApi* | [**issue_get_comment**](docs/IssueApi.md#issue_get_comment) | **GET** /repos/{owner}/{repo}/issues/comments/{id} | Get a comment
  *IssueApi* | [**issue_get_comment_reactions**](docs/IssueApi.md#issue_get_comment_reactions) | **GET** /repos/{owner}/{repo}/issues/comments/{id}/reactions | Get a list of reactions from a comment of an issue
  *IssueApi* | [**issue_get_comments**](docs/IssueApi.md#issue_get_comments) | **GET** /repos/{owner}/{repo}/issues/{index}/comments | List all comments on an issue
  *IssueApi* | [**issue_get_comments_and_timeline**](docs/IssueApi.md#issue_get_comments_and_timeline) | **GET** /repos/{owner}/{repo}/issues/{index}/timeline | List all comments and events on an issue
  *IssueApi* | [**issue_get_issue**](docs/IssueApi.md#issue_get_issue) | **GET** /repos/{owner}/{repo}/issues/{index} | Get an issue
  *IssueApi* | [**issue_get_issue_attachment**](docs/IssueApi.md#issue_get_issue_attachment) | **GET** /repos/{owner}/{repo}/issues/{index}/assets/{attachment_id} | Get an issue attachment
  *IssueApi* | [**issue_get_issue_comment_attachment**](docs/IssueApi.md#issue_get_issue_comment_attachment) | **GET** /repos/{owner}/{repo}/issues/comments/{id}/assets/{attachment_id} | Get a comment attachment
  *IssueApi* | [**issue_get_issue_reactions**](docs/IssueApi.md#issue_get_issue_reactions) | **GET** /repos/{owner}/{repo}/issues/{index}/reactions | Get a list reactions of an issue
  *IssueApi* | [**issue_get_label**](docs/IssueApi.md#issue_get_label) | **GET** /repos/{owner}/{repo}/labels/{id} | Get a single label
  *IssueApi* | [**issue_get_labels**](docs/IssueApi.md#issue_get_labels) | **GET** /repos/{owner}/{repo}/issues/{index}/labels | Get an issue&#39;s labels
  *IssueApi* | [**issue_get_milestone**](docs/IssueApi.md#issue_get_milestone) | **GET** /repos/{owner}/{repo}/milestones/{id} | Get a milestone
  *IssueApi* | [**issue_get_milestones_list**](docs/IssueApi.md#issue_get_milestones_list) | **GET** /repos/{owner}/{repo}/milestones | Get all of a repository&#39;s opened milestones
  *IssueApi* | [**issue_get_repo_comments**](docs/IssueApi.md#issue_get_repo_comments) | **GET** /repos/{owner}/{repo}/issues/comments | List all comments in a repository
  *IssueApi* | [**issue_list_blocks**](docs/IssueApi.md#issue_list_blocks) | **GET** /repos/{owner}/{repo}/issues/{index}/blocks | List issues that are blocked by this issue
  *IssueApi* | [**issue_list_issue_attachments**](docs/IssueApi.md#issue_list_issue_attachments) | **GET** /repos/{owner}/{repo}/issues/{index}/assets | List issue&#39;s attachments
  *IssueApi* | [**issue_list_issue_comment_attachments**](docs/IssueApi.md#issue_list_issue_comment_attachments) | **GET** /repos/{owner}/{repo}/issues/comments/{id}/assets | List comment&#39;s attachments
  *IssueApi* | [**issue_list_issue_dependencies**](docs/IssueApi.md#issue_list_issue_dependencies) | **GET** /repos/{owner}/{repo}/issues/{index}/dependencies | List an issue&#39;s dependencies, i.e all issues that block this issue.
  *IssueApi* | [**issue_list_issues**](docs/IssueApi.md#issue_list_issues) | **GET** /repos/{owner}/{repo}/issues | List a repository&#39;s issues
  *IssueApi* | [**issue_list_labels**](docs/IssueApi.md#issue_list_labels) | **GET** /repos/{owner}/{repo}/labels | Get all of a repository&#39;s labels
  *IssueApi* | [**issue_post_comment_reaction**](docs/IssueApi.md#issue_post_comment_reaction) | **POST** /repos/{owner}/{repo}/issues/comments/{id}/reactions | Add a reaction to a comment of an issue
  *IssueApi* | [**issue_post_issue_reaction**](docs/IssueApi.md#issue_post_issue_reaction) | **POST** /repos/{owner}/{repo}/issues/{index}/reactions | Add a reaction to an issue
  *IssueApi* | [**issue_remove_issue_blocking**](docs/IssueApi.md#issue_remove_issue_blocking) | **DELETE** /repos/{owner}/{repo}/issues/{index}/blocks | Unblock the issue given in the body by the issue in path
  *IssueApi* | [**issue_remove_issue_dependencies**](docs/IssueApi.md#issue_remove_issue_dependencies) | **DELETE** /repos/{owner}/{repo}/issues/{index}/dependencies | Remove an issue dependency
  *IssueApi* | [**issue_remove_label**](docs/IssueApi.md#issue_remove_label) | **DELETE** /repos/{owner}/{repo}/issues/{index}/labels/{id} | Remove a label from an issue
  *IssueApi* | [**issue_replace_labels**](docs/IssueApi.md#issue_replace_labels) | **PUT** /repos/{owner}/{repo}/issues/{index}/labels | Replace an issue&#39;s labels
  *IssueApi* | [**issue_reset_time**](docs/IssueApi.md#issue_reset_time) | **DELETE** /repos/{owner}/{repo}/issues/{index}/times | Reset a tracked time of an issue
  *IssueApi* | [**issue_search_issues**](docs/IssueApi.md#issue_search_issues) | **GET** /repos/issues/search | Search for issues across the repositories that the user has access to
  *IssueApi* | [**issue_start_stop_watch**](docs/IssueApi.md#issue_start_stop_watch) | **POST** /repos/{owner}/{repo}/issues/{index}/stopwatch/start | Start stopwatch on an issue.
  *IssueApi* | [**issue_stop_stop_watch**](docs/IssueApi.md#issue_stop_stop_watch) | **POST** /repos/{owner}/{repo}/issues/{index}/stopwatch/stop | Stop an issue&#39;s existing stopwatch.
  *IssueApi* | [**issue_subscriptions**](docs/IssueApi.md#issue_subscriptions) | **GET** /repos/{owner}/{repo}/issues/{index}/subscriptions | Get users who subscribed on an issue.
  *IssueApi* | [**issue_tracked_times**](docs/IssueApi.md#issue_tracked_times) | **GET** /repos/{owner}/{repo}/issues/{index}/times | List an issue&#39;s tracked times
  *IssueApi* | [**move_issue_pin**](docs/IssueApi.md#move_issue_pin) | **PATCH** /repos/{owner}/{repo}/issues/{index}/pin/{position} | Moves the Pin to the given Position
  *IssueApi* | [**pin_issue**](docs/IssueApi.md#pin_issue) | **POST** /repos/{owner}/{repo}/issues/{index}/pin | Pin an Issue
  *IssueApi* | [**unpin_issue**](docs/IssueApi.md#unpin_issue) | **DELETE** /repos/{owner}/{repo}/issues/{index}/pin | Unpin an Issue
  *MiscellaneousApi* | [**get_gitignore_template_info**](docs/MiscellaneousApi.md#get_gitignore_template_info) | **GET** /gitignore/templates/{name} | Returns information about a gitignore template
  *MiscellaneousApi* | [**get_label_template_info**](docs/MiscellaneousApi.md#get_label_template_info) | **GET** /label/templates/{name} | Returns all labels in a template
  *MiscellaneousApi* | [**get_license_template_info**](docs/MiscellaneousApi.md#get_license_template_info) | **GET** /licenses/{name} | Returns information about a license template
  *MiscellaneousApi* | [**get_node_info**](docs/MiscellaneousApi.md#get_node_info) | **GET** /nodeinfo | Returns the nodeinfo of the Gitea application
  *MiscellaneousApi* | [**get_signing_key**](docs/MiscellaneousApi.md#get_signing_key) | **GET** /signing-key.gpg | Get default signing-key.gpg
  *MiscellaneousApi* | [**get_version**](docs/MiscellaneousApi.md#get_version) | **GET** /version | Returns the version of the Gitea application
  *MiscellaneousApi* | [**list_gitignores_templates**](docs/MiscellaneousApi.md#list_gitignores_templates) | **GET** /gitignore/templates | Returns a list of all gitignore templates
  *MiscellaneousApi* | [**list_label_templates**](docs/MiscellaneousApi.md#list_label_templates) | **GET** /label/templates | Returns a list of all label templates
  *MiscellaneousApi* | [**list_license_templates**](docs/MiscellaneousApi.md#list_license_templates) | **GET** /licenses | Returns a list of all license templates
  *MiscellaneousApi* | [**render_markdown**](docs/MiscellaneousApi.md#render_markdown) | **POST** /markdown | Render a markdown document as HTML
  *MiscellaneousApi* | [**render_markdown_raw**](docs/MiscellaneousApi.md#render_markdown_raw) | **POST** /markdown/raw | Render raw markdown as HTML
  *MiscellaneousApi* | [**render_markup**](docs/MiscellaneousApi.md#render_markup) | **POST** /markup | Render a markup document as HTML
  *NotificationApi* | [**notify_get_list**](docs/NotificationApi.md#notify_get_list) | **GET** /notifications | List users&#39;s notification threads
  *NotificationApi* | [**notify_get_repo_list**](docs/NotificationApi.md#notify_get_repo_list) | **GET** /repos/{owner}/{repo}/notifications | List users&#39;s notification threads on a specific repo
  *NotificationApi* | [**notify_get_thread**](docs/NotificationApi.md#notify_get_thread) | **GET** /notifications/threads/{id} | Get notification thread by ID
  *NotificationApi* | [**notify_new_available**](docs/NotificationApi.md#notify_new_available) | **GET** /notifications/new | Check if unread notifications exist
  *NotificationApi* | [**notify_read_list**](docs/NotificationApi.md#notify_read_list) | **PUT** /notifications | Mark notification threads as read, pinned or unread
  *NotificationApi* | [**notify_read_repo_list**](docs/NotificationApi.md#notify_read_repo_list) | **PUT** /repos/{owner}/{repo}/notifications | Mark notification threads as read, pinned or unread on a specific repo
  *NotificationApi* | [**notify_read_thread**](docs/NotificationApi.md#notify_read_thread) | **PATCH** /notifications/threads/{id} | Mark notification thread as read by ID
  *OrganizationApi* | [**create_org_repo**](docs/OrganizationApi.md#create_org_repo) | **POST** /orgs/{org}/repos | Create a repository in an organization
  *OrganizationApi* | [**create_org_repo_deprecated**](docs/OrganizationApi.md#create_org_repo_deprecated) | **POST** /org/{org}/repos | Create a repository in an organization
  *OrganizationApi* | [**create_org_variable**](docs/OrganizationApi.md#create_org_variable) | **POST** /orgs/{org}/actions/variables/{variablename} | Create an org-level variable
  *OrganizationApi* | [**delete_org_secret**](docs/OrganizationApi.md#delete_org_secret) | **DELETE** /orgs/{org}/actions/secrets/{secretname} | Delete a secret in an organization
  *OrganizationApi* | [**delete_org_variable**](docs/OrganizationApi.md#delete_org_variable) | **DELETE** /orgs/{org}/actions/variables/{variablename} | Delete an org-level variable
  *OrganizationApi* | [**get_org_variable**](docs/OrganizationApi.md#get_org_variable) | **GET** /orgs/{org}/actions/variables/{variablename} | Get an org-level variable
  *OrganizationApi* | [**get_org_variables_list**](docs/OrganizationApi.md#get_org_variables_list) | **GET** /orgs/{org}/actions/variables | Get an org-level variables list
  *OrganizationApi* | [**org_add_team_member**](docs/OrganizationApi.md#org_add_team_member) | **PUT** /teams/{id}/members/{username} | Add a team member
  *OrganizationApi* | [**org_add_team_repository**](docs/OrganizationApi.md#org_add_team_repository) | **PUT** /teams/{id}/repos/{org}/{repo} | Add a repository to a team
  *OrganizationApi* | [**org_conceal_member**](docs/OrganizationApi.md#org_conceal_member) | **DELETE** /orgs/{org}/public_members/{username} | Conceal a user&#39;s membership
  *OrganizationApi* | [**org_create**](docs/OrganizationApi.md#org_create) | **POST** /orgs | Create an organization
  *OrganizationApi* | [**org_create_hook**](docs/OrganizationApi.md#org_create_hook) | **POST** /orgs/{org}/hooks | Create a hook
  *OrganizationApi* | [**org_create_label**](docs/OrganizationApi.md#org_create_label) | **POST** /orgs/{org}/labels | Create a label for an organization
  *OrganizationApi* | [**org_create_team**](docs/OrganizationApi.md#org_create_team) | **POST** /orgs/{org}/teams | Create a team
  *OrganizationApi* | [**org_delete**](docs/OrganizationApi.md#org_delete) | **DELETE** /orgs/{org} | Delete an organization
  *OrganizationApi* | [**org_delete_avatar**](docs/OrganizationApi.md#org_delete_avatar) | **DELETE** /orgs/{org}/avatar | Delete Avatar
  *OrganizationApi* | [**org_delete_hook**](docs/OrganizationApi.md#org_delete_hook) | **DELETE** /orgs/{org}/hooks/{id} | Delete a hook
  *OrganizationApi* | [**org_delete_label**](docs/OrganizationApi.md#org_delete_label) | **DELETE** /orgs/{org}/labels/{id} | Delete a label
  *OrganizationApi* | [**org_delete_member**](docs/OrganizationApi.md#org_delete_member) | **DELETE** /orgs/{org}/members/{username} | Remove a member from an organization
  *OrganizationApi* | [**org_delete_team**](docs/OrganizationApi.md#org_delete_team) | **DELETE** /teams/{id} | Delete a team
  *OrganizationApi* | [**org_edit**](docs/OrganizationApi.md#org_edit) | **PATCH** /orgs/{org} | Edit an organization
  *OrganizationApi* | [**org_edit_hook**](docs/OrganizationApi.md#org_edit_hook) | **PATCH** /orgs/{org}/hooks/{id} | Update a hook
  *OrganizationApi* | [**org_edit_label**](docs/OrganizationApi.md#org_edit_label) | **PATCH** /orgs/{org}/labels/{id} | Update a label
  *OrganizationApi* | [**org_edit_team**](docs/OrganizationApi.md#org_edit_team) | **PATCH** /teams/{id} | Edit a team
  *OrganizationApi* | [**org_get**](docs/OrganizationApi.md#org_get) | **GET** /orgs/{org} | Get an organization
  *OrganizationApi* | [**org_get_all**](docs/OrganizationApi.md#org_get_all) | **GET** /orgs | Get list of organizations
  *OrganizationApi* | [**org_get_hook**](docs/OrganizationApi.md#org_get_hook) | **GET** /orgs/{org}/hooks/{id} | Get a hook
  *OrganizationApi* | [**org_get_label**](docs/OrganizationApi.md#org_get_label) | **GET** /orgs/{org}/labels/{id} | Get a single label
  *OrganizationApi* | [**org_get_runner_registration_token**](docs/OrganizationApi.md#org_get_runner_registration_token) | **GET** /orgs/{org}/actions/runners/registration-token | Get an organization&#39;s actions runner registration token
  *OrganizationApi* | [**org_get_team**](docs/OrganizationApi.md#org_get_team) | **GET** /teams/{id} | Get a team
  *OrganizationApi* | [**org_get_user_permissions**](docs/OrganizationApi.md#org_get_user_permissions) | **GET** /users/{username}/orgs/{org}/permissions | Get user permissions in organization
  *OrganizationApi* | [**org_is_member**](docs/OrganizationApi.md#org_is_member) | **GET** /orgs/{org}/members/{username} | Check if a user is a member of an organization
  *OrganizationApi* | [**org_is_public_member**](docs/OrganizationApi.md#org_is_public_member) | **GET** /orgs/{org}/public_members/{username} | Check if a user is a public member of an organization
  *OrganizationApi* | [**org_list_actions_secrets**](docs/OrganizationApi.md#org_list_actions_secrets) | **GET** /orgs/{org}/actions/secrets | List an organization&#39;s actions secrets
  *OrganizationApi* | [**org_list_activity_feeds**](docs/OrganizationApi.md#org_list_activity_feeds) | **GET** /orgs/{org}/activities/feeds | List an organization&#39;s activity feeds
  *OrganizationApi* | [**org_list_current_user_orgs**](docs/OrganizationApi.md#org_list_current_user_orgs) | **GET** /user/orgs | List the current user&#39;s organizations
  *OrganizationApi* | [**org_list_hooks**](docs/OrganizationApi.md#org_list_hooks) | **GET** /orgs/{org}/hooks | List an organization&#39;s webhooks
  *OrganizationApi* | [**org_list_labels**](docs/OrganizationApi.md#org_list_labels) | **GET** /orgs/{org}/labels | List an organization&#39;s labels
  *OrganizationApi* | [**org_list_members**](docs/OrganizationApi.md#org_list_members) | **GET** /orgs/{org}/members | List an organization&#39;s members
  *OrganizationApi* | [**org_list_public_members**](docs/OrganizationApi.md#org_list_public_members) | **GET** /orgs/{org}/public_members | List an organization&#39;s public members
  *OrganizationApi* | [**org_list_repos**](docs/OrganizationApi.md#org_list_repos) | **GET** /orgs/{org}/repos | List an organization&#39;s repos
  *OrganizationApi* | [**org_list_team_activity_feeds**](docs/OrganizationApi.md#org_list_team_activity_feeds) | **GET** /teams/{id}/activities/feeds | List a team&#39;s activity feeds
  *OrganizationApi* | [**org_list_team_member**](docs/OrganizationApi.md#org_list_team_member) | **GET** /teams/{id}/members/{username} | List a particular member of team
  *OrganizationApi* | [**org_list_team_members**](docs/OrganizationApi.md#org_list_team_members) | **GET** /teams/{id}/members | List a team&#39;s members
  *OrganizationApi* | [**org_list_team_repo**](docs/OrganizationApi.md#org_list_team_repo) | **GET** /teams/{id}/repos/{org}/{repo} | List a particular repo of team
  *OrganizationApi* | [**org_list_team_repos**](docs/OrganizationApi.md#org_list_team_repos) | **GET** /teams/{id}/repos | List a team&#39;s repos
  *OrganizationApi* | [**org_list_teams**](docs/OrganizationApi.md#org_list_teams) | **GET** /orgs/{org}/teams | List an organization&#39;s teams
  *OrganizationApi* | [**org_list_user_orgs**](docs/OrganizationApi.md#org_list_user_orgs) | **GET** /users/{username}/orgs | List a user&#39;s organizations
  *OrganizationApi* | [**org_publicize_member**](docs/OrganizationApi.md#org_publicize_member) | **PUT** /orgs/{org}/public_members/{username} | Publicize a user&#39;s membership
  *OrganizationApi* | [**org_remove_team_member**](docs/OrganizationApi.md#org_remove_team_member) | **DELETE** /teams/{id}/members/{username} | Remove a team member
  *OrganizationApi* | [**org_remove_team_repository**](docs/OrganizationApi.md#org_remove_team_repository) | **DELETE** /teams/{id}/repos/{org}/{repo} | Remove a repository from a team
  *OrganizationApi* | [**org_update_avatar**](docs/OrganizationApi.md#org_update_avatar) | **POST** /orgs/{org}/avatar | Update Avatar
  *OrganizationApi* | [**organization_block_user**](docs/OrganizationApi.md#organization_block_user) | **PUT** /orgs/{org}/blocks/{username} | Block a user
  *OrganizationApi* | [**organization_check_user_block**](docs/OrganizationApi.md#organization_check_user_block) | **GET** /orgs/{org}/blocks/{username} | Check if a user is blocked by the organization
  *OrganizationApi* | [**organization_list_blocks**](docs/OrganizationApi.md#organization_list_blocks) | **GET** /orgs/{org}/blocks | List users blocked by the organization
  *OrganizationApi* | [**organization_unblock_user**](docs/OrganizationApi.md#organization_unblock_user) | **DELETE** /orgs/{org}/blocks/{username} | Unblock a user
  *OrganizationApi* | [**team_search**](docs/OrganizationApi.md#team_search) | **GET** /orgs/{org}/teams/search | Search for teams within an organization
  *OrganizationApi* | [**update_org_secret**](docs/OrganizationApi.md#update_org_secret) | **PUT** /orgs/{org}/actions/secrets/{secretname} | Create or Update a secret value in an organization
  *OrganizationApi* | [**update_org_variable**](docs/OrganizationApi.md#update_org_variable) | **PUT** /orgs/{org}/actions/variables/{variablename} | Update an org-level variable
  *PackageApi* | [**delete_package**](docs/PackageApi.md#delete_package) | **DELETE** /packages/{owner}/{type}/{name}/{version} | Delete a package
  *PackageApi* | [**get_package**](docs/PackageApi.md#get_package) | **GET** /packages/{owner}/{type}/{name}/{version} | Gets a package
  *PackageApi* | [**list_package_files**](docs/PackageApi.md#list_package_files) | **GET** /packages/{owner}/{type}/{name}/{version}/files | Gets all files of a package
  *PackageApi* | [**list_packages**](docs/PackageApi.md#list_packages) | **GET** /packages/{owner} | Gets all packages of an owner
  *RepositoryApi* | [**accept_repo_transfer**](docs/RepositoryApi.md#accept_repo_transfer) | **POST** /repos/{owner}/{repo}/transfer/accept | Accept a repo transfer
  *RepositoryApi* | [**create_current_user_repo**](docs/RepositoryApi.md#create_current_user_repo) | **POST** /user/repos | Create a repository
  *RepositoryApi* | [**create_fork**](docs/RepositoryApi.md#create_fork) | **POST** /repos/{owner}/{repo}/forks | Fork a repository
  *RepositoryApi* | [**create_repo_variable**](docs/RepositoryApi.md#create_repo_variable) | **POST** /repos/{owner}/{repo}/actions/variables/{variablename} | Create a repo-level variable
  *RepositoryApi* | [**delete_repo_secret**](docs/RepositoryApi.md#delete_repo_secret) | **DELETE** /repos/{owner}/{repo}/actions/secrets/{secretname} | Delete a secret in a repository
  *RepositoryApi* | [**delete_repo_variable**](docs/RepositoryApi.md#delete_repo_variable) | **DELETE** /repos/{owner}/{repo}/actions/variables/{variablename} | Delete a repo-level variable
  *RepositoryApi* | [**generate_repo**](docs/RepositoryApi.md#generate_repo) | **POST** /repos/{template_owner}/{template_repo}/generate | Create a repository using a template
  *RepositoryApi* | [**get_annotated_tag**](docs/RepositoryApi.md#get_annotated_tag) | **GET** /repos/{owner}/{repo}/git/tags/{sha} | Gets the tag object of an annotated tag (not lightweight tags)
  *RepositoryApi* | [**get_blob**](docs/RepositoryApi.md#get_blob) | **GET** /repos/{owner}/{repo}/git/blobs/{sha} | Gets the blob of a repository.
  *RepositoryApi* | [**get_repo_variable**](docs/RepositoryApi.md#get_repo_variable) | **GET** /repos/{owner}/{repo}/actions/variables/{variablename} | Get a repo-level variable
  *RepositoryApi* | [**get_repo_variables_list**](docs/RepositoryApi.md#get_repo_variables_list) | **GET** /repos/{owner}/{repo}/actions/variables | Get repo-level variables list
  *RepositoryApi* | [**get_tree**](docs/RepositoryApi.md#get_tree) | **GET** /repos/{owner}/{repo}/git/trees/{sha} | Gets the tree of a repository.
  *RepositoryApi* | [**list_forks**](docs/RepositoryApi.md#list_forks) | **GET** /repos/{owner}/{repo}/forks | List a repository&#39;s forks
  *RepositoryApi* | [**reject_repo_transfer**](docs/RepositoryApi.md#reject_repo_transfer) | **POST** /repos/{owner}/{repo}/transfer/reject | Reject a repo transfer
  *RepositoryApi* | [**repo_add_collaborator**](docs/RepositoryApi.md#repo_add_collaborator) | **PUT** /repos/{owner}/{repo}/collaborators/{collaborator} | Add a collaborator to a repository
  *RepositoryApi* | [**repo_add_push_mirror**](docs/RepositoryApi.md#repo_add_push_mirror) | **POST** /repos/{owner}/{repo}/push_mirrors | add a push mirror to the repository
  *RepositoryApi* | [**repo_add_team**](docs/RepositoryApi.md#repo_add_team) | **PUT** /repos/{owner}/{repo}/teams/{team} | Add a team to a repository
  *RepositoryApi* | [**repo_add_topic**](docs/RepositoryApi.md#repo_add_topic) | **PUT** /repos/{owner}/{repo}/topics/{topic} | Add a topic to a repository
  *RepositoryApi* | [**repo_apply_diff_patch**](docs/RepositoryApi.md#repo_apply_diff_patch) | **POST** /repos/{owner}/{repo}/diffpatch | Apply diff patch to repository
  *RepositoryApi* | [**repo_cancel_scheduled_auto_merge**](docs/RepositoryApi.md#repo_cancel_scheduled_auto_merge) | **DELETE** /repos/{owner}/{repo}/pulls/{index}/merge | Cancel the scheduled auto merge for the given pull request
  *RepositoryApi* | [**repo_change_files**](docs/RepositoryApi.md#repo_change_files) | **POST** /repos/{owner}/{repo}/contents | Modify multiple files in a repository
  *RepositoryApi* | [**repo_check_collaborator**](docs/RepositoryApi.md#repo_check_collaborator) | **GET** /repos/{owner}/{repo}/collaborators/{collaborator} | Check if a user is a collaborator of a repository
  *RepositoryApi* | [**repo_check_team**](docs/RepositoryApi.md#repo_check_team) | **GET** /repos/{owner}/{repo}/teams/{team} | Check if a team is assigned to a repository
  *RepositoryApi* | [**repo_compare_diff**](docs/RepositoryApi.md#repo_compare_diff) | **GET** /repos/{owner}/{repo}/compare/{basehead} | Get commit comparison information
  *RepositoryApi* | [**repo_create_branch**](docs/RepositoryApi.md#repo_create_branch) | **POST** /repos/{owner}/{repo}/branches | Create a branch
  *RepositoryApi* | [**repo_create_branch_protection**](docs/RepositoryApi.md#repo_create_branch_protection) | **POST** /repos/{owner}/{repo}/branch_protections | Create a branch protections for a repository
  *RepositoryApi* | [**repo_create_file**](docs/RepositoryApi.md#repo_create_file) | **POST** /repos/{owner}/{repo}/contents/{filepath} | Create a file in a repository
  *RepositoryApi* | [**repo_create_hook**](docs/RepositoryApi.md#repo_create_hook) | **POST** /repos/{owner}/{repo}/hooks | Create a hook
  *RepositoryApi* | [**repo_create_key**](docs/RepositoryApi.md#repo_create_key) | **POST** /repos/{owner}/{repo}/keys | Add a key to a repository
  *RepositoryApi* | [**repo_create_pull_request**](docs/RepositoryApi.md#repo_create_pull_request) | **POST** /repos/{owner}/{repo}/pulls | Create a pull request
  *RepositoryApi* | [**repo_create_pull_review**](docs/RepositoryApi.md#repo_create_pull_review) | **POST** /repos/{owner}/{repo}/pulls/{index}/reviews | Create a review to an pull request
  *RepositoryApi* | [**repo_create_pull_review_requests**](docs/RepositoryApi.md#repo_create_pull_review_requests) | **POST** /repos/{owner}/{repo}/pulls/{index}/requested_reviewers | create review requests for a pull request
  *RepositoryApi* | [**repo_create_release**](docs/RepositoryApi.md#repo_create_release) | **POST** /repos/{owner}/{repo}/releases | Create a release
  *RepositoryApi* | [**repo_create_release_attachment**](docs/RepositoryApi.md#repo_create_release_attachment) | **POST** /repos/{owner}/{repo}/releases/{id}/assets | Create a release attachment
  *RepositoryApi* | [**repo_create_status**](docs/RepositoryApi.md#repo_create_status) | **POST** /repos/{owner}/{repo}/statuses/{sha} | Create a commit status
  *RepositoryApi* | [**repo_create_tag**](docs/RepositoryApi.md#repo_create_tag) | **POST** /repos/{owner}/{repo}/tags | Create a new git tag in a repository
  *RepositoryApi* | [**repo_create_wiki_page**](docs/RepositoryApi.md#repo_create_wiki_page) | **POST** /repos/{owner}/{repo}/wiki/new | Create a wiki page
  *RepositoryApi* | [**repo_delete**](docs/RepositoryApi.md#repo_delete) | **DELETE** /repos/{owner}/{repo} | Delete a repository
  *RepositoryApi* | [**repo_delete_avatar**](docs/RepositoryApi.md#repo_delete_avatar) | **DELETE** /repos/{owner}/{repo}/avatar | Delete avatar
  *RepositoryApi* | [**repo_delete_branch**](docs/RepositoryApi.md#repo_delete_branch) | **DELETE** /repos/{owner}/{repo}/branches/{branch} | Delete a specific branch from a repository
  *RepositoryApi* | [**repo_delete_branch_protection**](docs/RepositoryApi.md#repo_delete_branch_protection) | **DELETE** /repos/{owner}/{repo}/branch_protections/{name} | Delete a specific branch protection for the repository
  *RepositoryApi* | [**repo_delete_collaborator**](docs/RepositoryApi.md#repo_delete_collaborator) | **DELETE** /repos/{owner}/{repo}/collaborators/{collaborator} | Delete a collaborator from a repository
  *RepositoryApi* | [**repo_delete_file**](docs/RepositoryApi.md#repo_delete_file) | **DELETE** /repos/{owner}/{repo}/contents/{filepath} | Delete a file in a repository
  *RepositoryApi* | [**repo_delete_git_hook**](docs/RepositoryApi.md#repo_delete_git_hook) | **DELETE** /repos/{owner}/{repo}/hooks/git/{id} | Delete a Git hook in a repository
  *RepositoryApi* | [**repo_delete_hook**](docs/RepositoryApi.md#repo_delete_hook) | **DELETE** /repos/{owner}/{repo}/hooks/{id} | Delete a hook in a repository
  *RepositoryApi* | [**repo_delete_key**](docs/RepositoryApi.md#repo_delete_key) | **DELETE** /repos/{owner}/{repo}/keys/{id} | Delete a key from a repository
  *RepositoryApi* | [**repo_delete_pull_review**](docs/RepositoryApi.md#repo_delete_pull_review) | **DELETE** /repos/{owner}/{repo}/pulls/{index}/reviews/{id} | Delete a specific review from a pull request
  *RepositoryApi* | [**repo_delete_pull_review_requests**](docs/RepositoryApi.md#repo_delete_pull_review_requests) | **DELETE** /repos/{owner}/{repo}/pulls/{index}/requested_reviewers | cancel review requests for a pull request
  *RepositoryApi* | [**repo_delete_push_mirror**](docs/RepositoryApi.md#repo_delete_push_mirror) | **DELETE** /repos/{owner}/{repo}/push_mirrors/{name} | deletes a push mirror from a repository by remoteName
  *RepositoryApi* | [**repo_delete_release**](docs/RepositoryApi.md#repo_delete_release) | **DELETE** /repos/{owner}/{repo}/releases/{id} | Delete a release
  *RepositoryApi* | [**repo_delete_release_attachment**](docs/RepositoryApi.md#repo_delete_release_attachment) | **DELETE** /repos/{owner}/{repo}/releases/{id}/assets/{attachment_id} | Delete a release attachment
  *RepositoryApi* | [**repo_delete_release_by_tag**](docs/RepositoryApi.md#repo_delete_release_by_tag) | **DELETE** /repos/{owner}/{repo}/releases/tags/{tag} | Delete a release by tag name
  *RepositoryApi* | [**repo_delete_tag**](docs/RepositoryApi.md#repo_delete_tag) | **DELETE** /repos/{owner}/{repo}/tags/{tag} | Delete a repository&#39;s tag by name
  *RepositoryApi* | [**repo_delete_team**](docs/RepositoryApi.md#repo_delete_team) | **DELETE** /repos/{owner}/{repo}/teams/{team} | Delete a team from a repository
  *RepositoryApi* | [**repo_delete_topic**](docs/RepositoryApi.md#repo_delete_topic) | **DELETE** /repos/{owner}/{repo}/topics/{topic} | Delete a topic from a repository
  *RepositoryApi* | [**repo_delete_wiki_page**](docs/RepositoryApi.md#repo_delete_wiki_page) | **DELETE** /repos/{owner}/{repo}/wiki/page/{pageName} | Delete a wiki page
  *RepositoryApi* | [**repo_dismiss_pull_review**](docs/RepositoryApi.md#repo_dismiss_pull_review) | **POST** /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/dismissals | Dismiss a review for a pull request
  *RepositoryApi* | [**repo_download_commit_diff_or_patch**](docs/RepositoryApi.md#repo_download_commit_diff_or_patch) | **GET** /repos/{owner}/{repo}/git/commits/{sha}.{diffType} | Get a commit&#39;s diff or patch
  *RepositoryApi* | [**repo_download_pull_diff_or_patch**](docs/RepositoryApi.md#repo_download_pull_diff_or_patch) | **GET** /repos/{owner}/{repo}/pulls/{index}.{diffType} | Get a pull request diff or patch
  *RepositoryApi* | [**repo_edit**](docs/RepositoryApi.md#repo_edit) | **PATCH** /repos/{owner}/{repo} | Edit a repository&#39;s properties. Only fields that are set will be changed.
  *RepositoryApi* | [**repo_edit_branch_protection**](docs/RepositoryApi.md#repo_edit_branch_protection) | **PATCH** /repos/{owner}/{repo}/branch_protections/{name} | Edit a branch protections for a repository. Only fields that are set will be changed
  *RepositoryApi* | [**repo_edit_git_hook**](docs/RepositoryApi.md#repo_edit_git_hook) | **PATCH** /repos/{owner}/{repo}/hooks/git/{id} | Edit a Git hook in a repository
  *RepositoryApi* | [**repo_edit_hook**](docs/RepositoryApi.md#repo_edit_hook) | **PATCH** /repos/{owner}/{repo}/hooks/{id} | Edit a hook in a repository
  *RepositoryApi* | [**repo_edit_pull_request**](docs/RepositoryApi.md#repo_edit_pull_request) | **PATCH** /repos/{owner}/{repo}/pulls/{index} | Update a pull request. If using deadline only the date will be taken into account, and time of day ignored.
  *RepositoryApi* | [**repo_edit_release**](docs/RepositoryApi.md#repo_edit_release) | **PATCH** /repos/{owner}/{repo}/releases/{id} | Update a release
  *RepositoryApi* | [**repo_edit_release_attachment**](docs/RepositoryApi.md#repo_edit_release_attachment) | **PATCH** /repos/{owner}/{repo}/releases/{id}/assets/{attachment_id} | Edit a release attachment
  *RepositoryApi* | [**repo_edit_wiki_page**](docs/RepositoryApi.md#repo_edit_wiki_page) | **PATCH** /repos/{owner}/{repo}/wiki/page/{pageName} | Edit a wiki page
  *RepositoryApi* | [**repo_get**](docs/RepositoryApi.md#repo_get) | **GET** /repos/{owner}/{repo} | Get a repository
  *RepositoryApi* | [**repo_get_all_commits**](docs/RepositoryApi.md#repo_get_all_commits) | **GET** /repos/{owner}/{repo}/commits | Get a list of all commits from a repository
  *RepositoryApi* | [**repo_get_archive**](docs/RepositoryApi.md#repo_get_archive) | **GET** /repos/{owner}/{repo}/archive/{archive} | Get an archive of a repository
  *RepositoryApi* | [**repo_get_assignees**](docs/RepositoryApi.md#repo_get_assignees) | **GET** /repos/{owner}/{repo}/assignees | Return all users that have write access and can be assigned to issues
  *RepositoryApi* | [**repo_get_branch**](docs/RepositoryApi.md#repo_get_branch) | **GET** /repos/{owner}/{repo}/branches/{branch} | Retrieve a specific branch from a repository, including its effective branch protection
  *RepositoryApi* | [**repo_get_branch_protection**](docs/RepositoryApi.md#repo_get_branch_protection) | **GET** /repos/{owner}/{repo}/branch_protections/{name} | Get a specific branch protection for the repository
  *RepositoryApi* | [**repo_get_by_id**](docs/RepositoryApi.md#repo_get_by_id) | **GET** /repositories/{id} | Get a repository by id
  *RepositoryApi* | [**repo_get_combined_status_by_ref**](docs/RepositoryApi.md#repo_get_combined_status_by_ref) | **GET** /repos/{owner}/{repo}/commits/{ref}/status | Get a commit&#39;s combined status, by branch/tag/commit reference
  *RepositoryApi* | [**repo_get_commit_pull_request**](docs/RepositoryApi.md#repo_get_commit_pull_request) | **GET** /repos/{owner}/{repo}/commits/{sha}/pull | Get the merged pull request of the commit
  *RepositoryApi* | [**repo_get_contents**](docs/RepositoryApi.md#repo_get_contents) | **GET** /repos/{owner}/{repo}/contents/{filepath} | Gets the metadata and contents (if a file) of an entry in a repository, or a list of entries if a dir
  *RepositoryApi* | [**repo_get_contents_list**](docs/RepositoryApi.md#repo_get_contents_list) | **GET** /repos/{owner}/{repo}/contents | Gets the metadata of all the entries of the root dir
  *RepositoryApi* | [**repo_get_editor_config**](docs/RepositoryApi.md#repo_get_editor_config) | **GET** /repos/{owner}/{repo}/editorconfig/{filepath} | Get the EditorConfig definitions of a file in a repository
  *RepositoryApi* | [**repo_get_git_hook**](docs/RepositoryApi.md#repo_get_git_hook) | **GET** /repos/{owner}/{repo}/hooks/git/{id} | Get a Git hook
  *RepositoryApi* | [**repo_get_hook**](docs/RepositoryApi.md#repo_get_hook) | **GET** /repos/{owner}/{repo}/hooks/{id} | Get a hook
  *RepositoryApi* | [**repo_get_issue_config**](docs/RepositoryApi.md#repo_get_issue_config) | **GET** /repos/{owner}/{repo}/issue_config | Returns the issue config for a repo
  *RepositoryApi* | [**repo_get_issue_templates**](docs/RepositoryApi.md#repo_get_issue_templates) | **GET** /repos/{owner}/{repo}/issue_templates | Get available issue templates for a repository
  *RepositoryApi* | [**repo_get_key**](docs/RepositoryApi.md#repo_get_key) | **GET** /repos/{owner}/{repo}/keys/{id} | Get a repository&#39;s key by id
  *RepositoryApi* | [**repo_get_languages**](docs/RepositoryApi.md#repo_get_languages) | **GET** /repos/{owner}/{repo}/languages | Get languages and number of bytes of code written
  *RepositoryApi* | [**repo_get_latest_release**](docs/RepositoryApi.md#repo_get_latest_release) | **GET** /repos/{owner}/{repo}/releases/latest | Gets the most recent non-prerelease, non-draft release of a repository, sorted by created_at
  *RepositoryApi* | [**repo_get_note**](docs/RepositoryApi.md#repo_get_note) | **GET** /repos/{owner}/{repo}/git/notes/{sha} | Get a note corresponding to a single commit from a repository
  *RepositoryApi* | [**repo_get_pull_request**](docs/RepositoryApi.md#repo_get_pull_request) | **GET** /repos/{owner}/{repo}/pulls/{index} | Get a pull request
  *RepositoryApi* | [**repo_get_pull_request_by_base_head**](docs/RepositoryApi.md#repo_get_pull_request_by_base_head) | **GET** /repos/{owner}/{repo}/pulls/{base}/{head} | Get a pull request by base and head
  *RepositoryApi* | [**repo_get_pull_request_commits**](docs/RepositoryApi.md#repo_get_pull_request_commits) | **GET** /repos/{owner}/{repo}/pulls/{index}/commits | Get commits for a pull request
  *RepositoryApi* | [**repo_get_pull_request_files**](docs/RepositoryApi.md#repo_get_pull_request_files) | **GET** /repos/{owner}/{repo}/pulls/{index}/files | Get changed files for a pull request
  *RepositoryApi* | [**repo_get_pull_review**](docs/RepositoryApi.md#repo_get_pull_review) | **GET** /repos/{owner}/{repo}/pulls/{index}/reviews/{id} | Get a specific review for a pull request
  *RepositoryApi* | [**repo_get_pull_review_comments**](docs/RepositoryApi.md#repo_get_pull_review_comments) | **GET** /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/comments | Get a specific review for a pull request
  *RepositoryApi* | [**repo_get_push_mirror_by_remote_name**](docs/RepositoryApi.md#repo_get_push_mirror_by_remote_name) | **GET** /repos/{owner}/{repo}/push_mirrors/{name} | Get push mirror of the repository by remoteName
  *RepositoryApi* | [**repo_get_raw_file**](docs/RepositoryApi.md#repo_get_raw_file) | **GET** /repos/{owner}/{repo}/raw/{filepath} | Get a file from a repository
  *RepositoryApi* | [**repo_get_raw_file_or_lfs**](docs/RepositoryApi.md#repo_get_raw_file_or_lfs) | **GET** /repos/{owner}/{repo}/media/{filepath} | Get a file or it&#39;s LFS object from a repository
  *RepositoryApi* | [**repo_get_release**](docs/RepositoryApi.md#repo_get_release) | **GET** /repos/{owner}/{repo}/releases/{id} | Get a release
  *RepositoryApi* | [**repo_get_release_attachment**](docs/RepositoryApi.md#repo_get_release_attachment) | **GET** /repos/{owner}/{repo}/releases/{id}/assets/{attachment_id} | Get a release attachment
  *RepositoryApi* | [**repo_get_release_by_tag**](docs/RepositoryApi.md#repo_get_release_by_tag) | **GET** /repos/{owner}/{repo}/releases/tags/{tag} | Get a release by tag name
  *RepositoryApi* | [**repo_get_repo_permissions**](docs/RepositoryApi.md#repo_get_repo_permissions) | **GET** /repos/{owner}/{repo}/collaborators/{collaborator}/permission | Get repository permissions for a user
  *RepositoryApi* | [**repo_get_reviewers**](docs/RepositoryApi.md#repo_get_reviewers) | **GET** /repos/{owner}/{repo}/reviewers | Return all users that can be requested to review in this repo
  *RepositoryApi* | [**repo_get_runner_registration_token**](docs/RepositoryApi.md#repo_get_runner_registration_token) | **GET** /repos/{owner}/{repo}/actions/runners/registration-token | Get a repository&#39;s actions runner registration token
  *RepositoryApi* | [**repo_get_single_commit**](docs/RepositoryApi.md#repo_get_single_commit) | **GET** /repos/{owner}/{repo}/git/commits/{sha} | Get a single commit from a repository
  *RepositoryApi* | [**repo_get_tag**](docs/RepositoryApi.md#repo_get_tag) | **GET** /repos/{owner}/{repo}/tags/{tag} | Get the tag of a repository by tag name
  *RepositoryApi* | [**repo_get_wiki_page**](docs/RepositoryApi.md#repo_get_wiki_page) | **GET** /repos/{owner}/{repo}/wiki/page/{pageName} | Get a wiki page
  *RepositoryApi* | [**repo_get_wiki_page_revisions**](docs/RepositoryApi.md#repo_get_wiki_page_revisions) | **GET** /repos/{owner}/{repo}/wiki/revisions/{pageName} | Get revisions of a wiki page
  *RepositoryApi* | [**repo_get_wiki_pages**](docs/RepositoryApi.md#repo_get_wiki_pages) | **GET** /repos/{owner}/{repo}/wiki/pages | Get all wiki pages
  *RepositoryApi* | [**repo_list_actions_secrets**](docs/RepositoryApi.md#repo_list_actions_secrets) | **GET** /repos/{owner}/{repo}/actions/secrets | List an repo&#39;s actions secrets
  *RepositoryApi* | [**repo_list_activity_feeds**](docs/RepositoryApi.md#repo_list_activity_feeds) | **GET** /repos/{owner}/{repo}/activities/feeds | List a repository&#39;s activity feeds
  *RepositoryApi* | [**repo_list_all_git_refs**](docs/RepositoryApi.md#repo_list_all_git_refs) | **GET** /repos/{owner}/{repo}/git/refs | Get specified ref or filtered repository&#39;s refs
  *RepositoryApi* | [**repo_list_branch_protection**](docs/RepositoryApi.md#repo_list_branch_protection) | **GET** /repos/{owner}/{repo}/branch_protections | List branch protections for a repository
  *RepositoryApi* | [**repo_list_branches**](docs/RepositoryApi.md#repo_list_branches) | **GET** /repos/{owner}/{repo}/branches | List a repository&#39;s branches
  *RepositoryApi* | [**repo_list_collaborators**](docs/RepositoryApi.md#repo_list_collaborators) | **GET** /repos/{owner}/{repo}/collaborators | List a repository&#39;s collaborators
  *RepositoryApi* | [**repo_list_git_hooks**](docs/RepositoryApi.md#repo_list_git_hooks) | **GET** /repos/{owner}/{repo}/hooks/git | List the Git hooks in a repository
  *RepositoryApi* | [**repo_list_git_refs**](docs/RepositoryApi.md#repo_list_git_refs) | **GET** /repos/{owner}/{repo}/git/refs/{ref} | Get specified ref or filtered repository&#39;s refs
  *RepositoryApi* | [**repo_list_hooks**](docs/RepositoryApi.md#repo_list_hooks) | **GET** /repos/{owner}/{repo}/hooks | List the hooks in a repository
  *RepositoryApi* | [**repo_list_keys**](docs/RepositoryApi.md#repo_list_keys) | **GET** /repos/{owner}/{repo}/keys | List a repository&#39;s keys
  *RepositoryApi* | [**repo_list_pinned_issues**](docs/RepositoryApi.md#repo_list_pinned_issues) | **GET** /repos/{owner}/{repo}/issues/pinned | List a repo&#39;s pinned issues
  *RepositoryApi* | [**repo_list_pinned_pull_requests**](docs/RepositoryApi.md#repo_list_pinned_pull_requests) | **GET** /repos/{owner}/{repo}/pulls/pinned | List a repo&#39;s pinned pull requests
  *RepositoryApi* | [**repo_list_pull_requests**](docs/RepositoryApi.md#repo_list_pull_requests) | **GET** /repos/{owner}/{repo}/pulls | List a repo&#39;s pull requests
  *RepositoryApi* | [**repo_list_pull_reviews**](docs/RepositoryApi.md#repo_list_pull_reviews) | **GET** /repos/{owner}/{repo}/pulls/{index}/reviews | List all reviews for a pull request
  *RepositoryApi* | [**repo_list_push_mirrors**](docs/RepositoryApi.md#repo_list_push_mirrors) | **GET** /repos/{owner}/{repo}/push_mirrors | Get all push mirrors of the repository
  *RepositoryApi* | [**repo_list_release_attachments**](docs/RepositoryApi.md#repo_list_release_attachments) | **GET** /repos/{owner}/{repo}/releases/{id}/assets | List release&#39;s attachments
  *RepositoryApi* | [**repo_list_releases**](docs/RepositoryApi.md#repo_list_releases) | **GET** /repos/{owner}/{repo}/releases | List a repo&#39;s releases
  *RepositoryApi* | [**repo_list_stargazers**](docs/RepositoryApi.md#repo_list_stargazers) | **GET** /repos/{owner}/{repo}/stargazers | List a repo&#39;s stargazers
  *RepositoryApi* | [**repo_list_statuses**](docs/RepositoryApi.md#repo_list_statuses) | **GET** /repos/{owner}/{repo}/statuses/{sha} | Get a commit&#39;s statuses
  *RepositoryApi* | [**repo_list_statuses_by_ref**](docs/RepositoryApi.md#repo_list_statuses_by_ref) | **GET** /repos/{owner}/{repo}/commits/{ref}/statuses | Get a commit&#39;s statuses, by branch/tag/commit reference
  *RepositoryApi* | [**repo_list_subscribers**](docs/RepositoryApi.md#repo_list_subscribers) | **GET** /repos/{owner}/{repo}/subscribers | List a repo&#39;s watchers
  *RepositoryApi* | [**repo_list_tags**](docs/RepositoryApi.md#repo_list_tags) | **GET** /repos/{owner}/{repo}/tags | List a repository&#39;s tags
  *RepositoryApi* | [**repo_list_teams**](docs/RepositoryApi.md#repo_list_teams) | **GET** /repos/{owner}/{repo}/teams | List a repository&#39;s teams
  *RepositoryApi* | [**repo_list_topics**](docs/RepositoryApi.md#repo_list_topics) | **GET** /repos/{owner}/{repo}/topics | Get list of topics that a repository has
  *RepositoryApi* | [**repo_merge_pull_request**](docs/RepositoryApi.md#repo_merge_pull_request) | **POST** /repos/{owner}/{repo}/pulls/{index}/merge | Merge a pull request
  *RepositoryApi* | [**repo_migrate**](docs/RepositoryApi.md#repo_migrate) | **POST** /repos/migrate | Migrate a remote git repository
  *RepositoryApi* | [**repo_mirror_sync**](docs/RepositoryApi.md#repo_mirror_sync) | **POST** /repos/{owner}/{repo}/mirror-sync | Sync a mirrored repository
  *RepositoryApi* | [**repo_new_pin_allowed**](docs/RepositoryApi.md#repo_new_pin_allowed) | **GET** /repos/{owner}/{repo}/new_pin_allowed | Returns if new Issue Pins are allowed
  *RepositoryApi* | [**repo_pull_request_is_merged**](docs/RepositoryApi.md#repo_pull_request_is_merged) | **GET** /repos/{owner}/{repo}/pulls/{index}/merge | Check if a pull request has been merged
  *RepositoryApi* | [**repo_push_mirror_sync**](docs/RepositoryApi.md#repo_push_mirror_sync) | **POST** /repos/{owner}/{repo}/push_mirrors-sync | Sync all push mirrored repository
  *RepositoryApi* | [**repo_search**](docs/RepositoryApi.md#repo_search) | **GET** /repos/search | Search for repositories
  *RepositoryApi* | [**repo_signing_key**](docs/RepositoryApi.md#repo_signing_key) | **GET** /repos/{owner}/{repo}/signing-key.gpg | Get signing-key.gpg for given repository
  *RepositoryApi* | [**repo_submit_pull_review**](docs/RepositoryApi.md#repo_submit_pull_review) | **POST** /repos/{owner}/{repo}/pulls/{index}/reviews/{id} | Submit a pending review to an pull request
  *RepositoryApi* | [**repo_test_hook**](docs/RepositoryApi.md#repo_test_hook) | **POST** /repos/{owner}/{repo}/hooks/{id}/tests | Test a push webhook
  *RepositoryApi* | [**repo_tracked_times**](docs/RepositoryApi.md#repo_tracked_times) | **GET** /repos/{owner}/{repo}/times | List a repo&#39;s tracked times
  *RepositoryApi* | [**repo_transfer**](docs/RepositoryApi.md#repo_transfer) | **POST** /repos/{owner}/{repo}/transfer | Transfer a repo ownership
  *RepositoryApi* | [**repo_un_dismiss_pull_review**](docs/RepositoryApi.md#repo_un_dismiss_pull_review) | **POST** /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/undismissals | Cancel to dismiss a review for a pull request
  *RepositoryApi* | [**repo_update_avatar**](docs/RepositoryApi.md#repo_update_avatar) | **POST** /repos/{owner}/{repo}/avatar | Update avatar
  *RepositoryApi* | [**repo_update_file**](docs/RepositoryApi.md#repo_update_file) | **PUT** /repos/{owner}/{repo}/contents/{filepath} | Update a file in a repository
  *RepositoryApi* | [**repo_update_pull_request**](docs/RepositoryApi.md#repo_update_pull_request) | **POST** /repos/{owner}/{repo}/pulls/{index}/update | Merge PR&#39;s baseBranch into headBranch
  *RepositoryApi* | [**repo_update_topics**](docs/RepositoryApi.md#repo_update_topics) | **PUT** /repos/{owner}/{repo}/topics | Replace list of topics for a repository
  *RepositoryApi* | [**repo_validate_issue_config**](docs/RepositoryApi.md#repo_validate_issue_config) | **GET** /repos/{owner}/{repo}/issue_config/validate | Returns the validation information for a issue config
  *RepositoryApi* | [**topic_search**](docs/RepositoryApi.md#topic_search) | **GET** /topics/search | search topics via keyword
  *RepositoryApi* | [**update_repo_secret**](docs/RepositoryApi.md#update_repo_secret) | **PUT** /repos/{owner}/{repo}/actions/secrets/{secretname} | Create or Update a secret value in a repository
  *RepositoryApi* | [**update_repo_variable**](docs/RepositoryApi.md#update_repo_variable) | **PUT** /repos/{owner}/{repo}/actions/variables/{variablename} | Update a repo-level variable
  *RepositoryApi* | [**user_current_check_subscription**](docs/RepositoryApi.md#user_current_check_subscription) | **GET** /repos/{owner}/{repo}/subscription | Check if the current user is watching a repo
  *RepositoryApi* | [**user_current_delete_subscription**](docs/RepositoryApi.md#user_current_delete_subscription) | **DELETE** /repos/{owner}/{repo}/subscription | Unwatch a repo
  *RepositoryApi* | [**user_current_put_subscription**](docs/RepositoryApi.md#user_current_put_subscription) | **PUT** /repos/{owner}/{repo}/subscription | Watch a repo
  *RepositoryApi* | [**user_tracked_times**](docs/RepositoryApi.md#user_tracked_times) | **GET** /repos/{owner}/{repo}/times/{user} | List a user&#39;s tracked times in a repo
  *SettingsApi* | [**get_general_api_settings**](docs/SettingsApi.md#get_general_api_settings) | **GET** /settings/api | Get instance&#39;s global settings for api
  *SettingsApi* | [**get_general_attachment_settings**](docs/SettingsApi.md#get_general_attachment_settings) | **GET** /settings/attachment | Get instance&#39;s global settings for Attachment
  *SettingsApi* | [**get_general_repository_settings**](docs/SettingsApi.md#get_general_repository_settings) | **GET** /settings/repository | Get instance&#39;s global settings for repositories
  *SettingsApi* | [**get_general_ui_settings**](docs/SettingsApi.md#get_general_ui_settings) | **GET** /settings/ui | Get instance&#39;s global settings for ui
  *UserApi* | [**create_current_user_repo**](docs/UserApi.md#create_current_user_repo) | **POST** /user/repos | Create a repository
  *UserApi* | [**create_user_variable**](docs/UserApi.md#create_user_variable) | **POST** /user/actions/variables/{variablename} | Create a user-level variable
  *UserApi* | [**delete_user_secret**](docs/UserApi.md#delete_user_secret) | **DELETE** /user/actions/secrets/{secretname} | Delete a secret in a user scope
  *UserApi* | [**delete_user_variable**](docs/UserApi.md#delete_user_variable) | **DELETE** /user/actions/variables/{variablename} | Delete a user-level variable which is created by current doer
  *UserApi* | [**get_user_settings**](docs/UserApi.md#get_user_settings) | **GET** /user/settings | Get user settings
  *UserApi* | [**get_user_variable**](docs/UserApi.md#get_user_variable) | **GET** /user/actions/variables/{variablename} | Get a user-level variable which is created by current doer
  *UserApi* | [**get_user_variables_list**](docs/UserApi.md#get_user_variables_list) | **GET** /user/actions/variables | Get the user-level list of variables which is created by current doer
  *UserApi* | [**get_verification_token**](docs/UserApi.md#get_verification_token) | **GET** /user/gpg_key_token | Get a Token to verify
  *UserApi* | [**update_user_secret**](docs/UserApi.md#update_user_secret) | **PUT** /user/actions/secrets/{secretname} | Create or Update a secret value in a user scope
  *UserApi* | [**update_user_settings**](docs/UserApi.md#update_user_settings) | **PATCH** /user/settings | Update user settings
  *UserApi* | [**update_user_variable**](docs/UserApi.md#update_user_variable) | **PUT** /user/actions/variables/{variablename} | Update a user-level variable which is created by current doer
  *UserApi* | [**user_add_email**](docs/UserApi.md#user_add_email) | **POST** /user/emails | Add email addresses
  *UserApi* | [**user_block_user**](docs/UserApi.md#user_block_user) | **PUT** /user/blocks/{username} | Block a user
  *UserApi* | [**user_check_following**](docs/UserApi.md#user_check_following) | **GET** /users/{username}/following/{target} | Check if one user is following another user
  *UserApi* | [**user_check_user_block**](docs/UserApi.md#user_check_user_block) | **GET** /user/blocks/{username} | Check if a user is blocked by the authenticated user
  *UserApi* | [**user_create_hook**](docs/UserApi.md#user_create_hook) | **POST** /user/hooks | Create a hook
  *UserApi* | [**user_create_o_auth2_application**](docs/UserApi.md#user_create_o_auth2_application) | **POST** /user/applications/oauth2 | creates a new OAuth2 application
  *UserApi* | [**user_create_token**](docs/UserApi.md#user_create_token) | **POST** /users/{username}/tokens | Create an access token
  *UserApi* | [**user_current_check_following**](docs/UserApi.md#user_current_check_following) | **GET** /user/following/{username} | Check whether a user is followed by the authenticated user
  *UserApi* | [**user_current_check_starring**](docs/UserApi.md#user_current_check_starring) | **GET** /user/starred/{owner}/{repo} | Whether the authenticated is starring the repo
  *UserApi* | [**user_current_delete_follow**](docs/UserApi.md#user_current_delete_follow) | **DELETE** /user/following/{username} | Unfollow a user
  *UserApi* | [**user_current_delete_gpg_key**](docs/UserApi.md#user_current_delete_gpg_key) | **DELETE** /user/gpg_keys/{id} | Remove a GPG key
  *UserApi* | [**user_current_delete_key**](docs/UserApi.md#user_current_delete_key) | **DELETE** /user/keys/{id} | Delete a public key
  *UserApi* | [**user_current_delete_star**](docs/UserApi.md#user_current_delete_star) | **DELETE** /user/starred/{owner}/{repo} | Unstar the given repo
  *UserApi* | [**user_current_get_gpg_key**](docs/UserApi.md#user_current_get_gpg_key) | **GET** /user/gpg_keys/{id} | Get a GPG key
  *UserApi* | [**user_current_get_key**](docs/UserApi.md#user_current_get_key) | **GET** /user/keys/{id} | Get a public key
  *UserApi* | [**user_current_list_followers**](docs/UserApi.md#user_current_list_followers) | **GET** /user/followers | List the authenticated user&#39;s followers
  *UserApi* | [**user_current_list_following**](docs/UserApi.md#user_current_list_following) | **GET** /user/following | List the users that the authenticated user is following
  *UserApi* | [**user_current_list_gpg_keys**](docs/UserApi.md#user_current_list_gpg_keys) | **GET** /user/gpg_keys | List the authenticated user&#39;s GPG keys
  *UserApi* | [**user_current_list_keys**](docs/UserApi.md#user_current_list_keys) | **GET** /user/keys | List the authenticated user&#39;s public keys
  *UserApi* | [**user_current_list_repos**](docs/UserApi.md#user_current_list_repos) | **GET** /user/repos | List the repos that the authenticated user owns
  *UserApi* | [**user_current_list_starred**](docs/UserApi.md#user_current_list_starred) | **GET** /user/starred | The repos that the authenticated user has starred
  *UserApi* | [**user_current_list_subscriptions**](docs/UserApi.md#user_current_list_subscriptions) | **GET** /user/subscriptions | List repositories watched by the authenticated user
  *UserApi* | [**user_current_post_gpg_key**](docs/UserApi.md#user_current_post_gpg_key) | **POST** /user/gpg_keys | Create a GPG key
  *UserApi* | [**user_current_post_key**](docs/UserApi.md#user_current_post_key) | **POST** /user/keys | Create a public key
  *UserApi* | [**user_current_put_follow**](docs/UserApi.md#user_current_put_follow) | **PUT** /user/following/{username} | Follow a user
  *UserApi* | [**user_current_put_star**](docs/UserApi.md#user_current_put_star) | **PUT** /user/starred/{owner}/{repo} | Star the given repo
  *UserApi* | [**user_current_tracked_times**](docs/UserApi.md#user_current_tracked_times) | **GET** /user/times | List the current user&#39;s tracked times
  *UserApi* | [**user_delete_access_token**](docs/UserApi.md#user_delete_access_token) | **DELETE** /users/{username}/tokens/{token} | delete an access token
  *UserApi* | [**user_delete_avatar**](docs/UserApi.md#user_delete_avatar) | **DELETE** /user/avatar | Delete Avatar
  *UserApi* | [**user_delete_email**](docs/UserApi.md#user_delete_email) | **DELETE** /user/emails | Delete email addresses
  *UserApi* | [**user_delete_hook**](docs/UserApi.md#user_delete_hook) | **DELETE** /user/hooks/{id} | Delete a hook
  *UserApi* | [**user_delete_o_auth2_application**](docs/UserApi.md#user_delete_o_auth2_application) | **DELETE** /user/applications/oauth2/{id} | delete an OAuth2 Application
  *UserApi* | [**user_edit_hook**](docs/UserApi.md#user_edit_hook) | **PATCH** /user/hooks/{id} | Update a hook
  *UserApi* | [**user_get**](docs/UserApi.md#user_get) | **GET** /users/{username} | Get a user
  *UserApi* | [**user_get_current**](docs/UserApi.md#user_get_current) | **GET** /user | Get the authenticated user
  *UserApi* | [**user_get_heatmap_data**](docs/UserApi.md#user_get_heatmap_data) | **GET** /users/{username}/heatmap | Get a user&#39;s heatmap
  *UserApi* | [**user_get_hook**](docs/UserApi.md#user_get_hook) | **GET** /user/hooks/{id} | Get a hook
  *UserApi* | [**user_get_o_auth2_application**](docs/UserApi.md#user_get_o_auth2_application) | **GET** /user/applications/oauth2/{id} | get an OAuth2 Application
  *UserApi* | [**user_get_oauth2_application**](docs/UserApi.md#user_get_oauth2_application) | **GET** /user/applications/oauth2 | List the authenticated user&#39;s oauth2 applications
  *UserApi* | [**user_get_runner_registration_token**](docs/UserApi.md#user_get_runner_registration_token) | **GET** /user/actions/runners/registration-token | Get an user&#39;s actions runner registration token
  *UserApi* | [**user_get_stop_watches**](docs/UserApi.md#user_get_stop_watches) | **GET** /user/stopwatches | Get list of all existing stopwatches
  *UserApi* | [**user_get_tokens**](docs/UserApi.md#user_get_tokens) | **GET** /users/{username}/tokens | List the authenticated user&#39;s access tokens
  *UserApi* | [**user_list_activity_feeds**](docs/UserApi.md#user_list_activity_feeds) | **GET** /users/{username}/activities/feeds | List a user&#39;s activity feeds
  *UserApi* | [**user_list_blocks**](docs/UserApi.md#user_list_blocks) | **GET** /user/blocks | List users blocked by the authenticated user
  *UserApi* | [**user_list_emails**](docs/UserApi.md#user_list_emails) | **GET** /user/emails | List the authenticated user&#39;s email addresses
  *UserApi* | [**user_list_followers**](docs/UserApi.md#user_list_followers) | **GET** /users/{username}/followers | List the given user&#39;s followers
  *UserApi* | [**user_list_following**](docs/UserApi.md#user_list_following) | **GET** /users/{username}/following | List the users that the given user is following
  *UserApi* | [**user_list_gpg_keys**](docs/UserApi.md#user_list_gpg_keys) | **GET** /users/{username}/gpg_keys | List the given user&#39;s GPG keys
  *UserApi* | [**user_list_hooks**](docs/UserApi.md#user_list_hooks) | **GET** /user/hooks | List the authenticated user&#39;s webhooks
  *UserApi* | [**user_list_keys**](docs/UserApi.md#user_list_keys) | **GET** /users/{username}/keys | List the given user&#39;s public keys
  *UserApi* | [**user_list_repos**](docs/UserApi.md#user_list_repos) | **GET** /users/{username}/repos | List the repos owned by the given user
  *UserApi* | [**user_list_starred**](docs/UserApi.md#user_list_starred) | **GET** /users/{username}/starred | The repos that the given user has starred
  *UserApi* | [**user_list_subscriptions**](docs/UserApi.md#user_list_subscriptions) | **GET** /users/{username}/subscriptions | List the repositories watched by a user
  *UserApi* | [**user_list_teams**](docs/UserApi.md#user_list_teams) | **GET** /user/teams | List all the teams a user belongs to
  *UserApi* | [**user_search**](docs/UserApi.md#user_search) | **GET** /users/search | Search for users
  *UserApi* | [**user_unblock_user**](docs/UserApi.md#user_unblock_user) | **DELETE** /user/blocks/{username} | Unblock a user
  *UserApi* | [**user_update_avatar**](docs/UserApi.md#user_update_avatar) | **POST** /user/avatar | Update Avatar
  *UserApi* | [**user_update_o_auth2_application**](docs/UserApi.md#user_update_o_auth2_application) | **PATCH** /user/applications/oauth2/{id} | update an OAuth2 Application, this includes regenerating the client secret
  *UserApi* | [**user_verify_gpg_key**](docs/UserApi.md#user_verify_gpg_key) | **POST** /user/gpg_key_verify | Verify a GPG key

   - [APIError](docs/APIError.md)
   - [AccessToken](docs/AccessToken.md)
   - [ActionVariable](docs/ActionVariable.md)
   - [Activity](docs/Activity.md)
   - [ActivityPub](docs/ActivityPub.md)
   - [AddCollaboratorOption](docs/AddCollaboratorOption.md)
   - [AddTimeOption](docs/AddTimeOption.md)
   - [AnnotatedTag](docs/AnnotatedTag.md)
   - [AnnotatedTagObject](docs/AnnotatedTagObject.md)
   - [Attachment](docs/Attachment.md)
   - [Badge](docs/Badge.md)
   - [Branch](docs/Branch.md)
   - [BranchProtection](docs/BranchProtection.md)
   - [ChangeFileOperation](docs/ChangeFileOperation.md)
   - [ChangeFilesOptions](docs/ChangeFilesOptions.md)
   - [ChangedFile](docs/ChangedFile.md)
   - [CombinedStatus](docs/CombinedStatus.md)
   - [Comment](docs/Comment.md)
   - [Commit](docs/Commit.md)
   - [CommitAffectedFiles](docs/CommitAffectedFiles.md)
   - [CommitDateOptions](docs/CommitDateOptions.md)
   - [CommitMeta](docs/CommitMeta.md)
   - [CommitStats](docs/CommitStats.md)
   - [CommitStatus](docs/CommitStatus.md)
   - [CommitUser](docs/CommitUser.md)
   - [Compare](docs/Compare.md)
   - [ContentsResponse](docs/ContentsResponse.md)
   - [CreateAccessTokenOption](docs/CreateAccessTokenOption.md)
   - [CreateBranchProtectionOption](docs/CreateBranchProtectionOption.md)
   - [CreateBranchRepoOption](docs/CreateBranchRepoOption.md)
   - [CreateEmailOption](docs/CreateEmailOption.md)
   - [CreateFileOptions](docs/CreateFileOptions.md)
   - [CreateForkOption](docs/CreateForkOption.md)
   - [CreateGPGKeyOption](docs/CreateGPGKeyOption.md)
   - [CreateHookOption](docs/CreateHookOption.md)
   - [CreateIssueCommentOption](docs/CreateIssueCommentOption.md)
   - [CreateIssueOption](docs/CreateIssueOption.md)
   - [CreateKeyOption](docs/CreateKeyOption.md)
   - [CreateLabelOption](docs/CreateLabelOption.md)
   - [CreateMilestoneOption](docs/CreateMilestoneOption.md)
   - [CreateOAuth2ApplicationOptions](docs/CreateOAuth2ApplicationOptions.md)
   - [CreateOrUpdateSecretOption](docs/CreateOrUpdateSecretOption.md)
   - [CreateOrgOption](docs/CreateOrgOption.md)
   - [CreatePullRequestOption](docs/CreatePullRequestOption.md)
   - [CreatePullReviewComment](docs/CreatePullReviewComment.md)
   - [CreatePullReviewOptions](docs/CreatePullReviewOptions.md)
   - [CreatePushMirrorOption](docs/CreatePushMirrorOption.md)
   - [CreateReleaseOption](docs/CreateReleaseOption.md)
   - [CreateRepoOption](docs/CreateRepoOption.md)
   - [CreateStatusOption](docs/CreateStatusOption.md)
   - [CreateTagOption](docs/CreateTagOption.md)
   - [CreateTeamOption](docs/CreateTeamOption.md)
   - [CreateUserOption](docs/CreateUserOption.md)
   - [CreateVariableOption](docs/CreateVariableOption.md)
   - [CreateWikiPageOptions](docs/CreateWikiPageOptions.md)
   - [Cron](docs/Cron.md)
   - [DeleteEmailOption](docs/DeleteEmailOption.md)
   - [DeleteFileOptions](docs/DeleteFileOptions.md)
   - [DeployKey](docs/DeployKey.md)
   - [DismissPullReviewOptions](docs/DismissPullReviewOptions.md)
   - [EditAttachmentOptions](docs/EditAttachmentOptions.md)
   - [EditBranchProtectionOption](docs/EditBranchProtectionOption.md)
   - [EditDeadlineOption](docs/EditDeadlineOption.md)
   - [EditGitHookOption](docs/EditGitHookOption.md)
   - [EditHookOption](docs/EditHookOption.md)
   - [EditIssueCommentOption](docs/EditIssueCommentOption.md)
   - [EditIssueOption](docs/EditIssueOption.md)
   - [EditLabelOption](docs/EditLabelOption.md)
   - [EditMilestoneOption](docs/EditMilestoneOption.md)
   - [EditOrgOption](docs/EditOrgOption.md)
   - [EditPullRequestOption](docs/EditPullRequestOption.md)
   - [EditReactionOption](docs/EditReactionOption.md)
   - [EditReleaseOption](docs/EditReleaseOption.md)
   - [EditRepoOption](docs/EditRepoOption.md)
   - [EditTeamOption](docs/EditTeamOption.md)
   - [EditUserOption](docs/EditUserOption.md)
   - [Email](docs/Email.md)
   - [ExternalTracker](docs/ExternalTracker.md)
   - [ExternalWiki](docs/ExternalWiki.md)
   - [FileCommitResponse](docs/FileCommitResponse.md)
   - [FileDeleteResponse](docs/FileDeleteResponse.md)
   - [FileLinksResponse](docs/FileLinksResponse.md)
   - [FileResponse](docs/FileResponse.md)
   - [FilesResponse](docs/FilesResponse.md)
   - [GPGKey](docs/GPGKey.md)
   - [GPGKeyEmail](docs/GPGKeyEmail.md)
   - [GeneralAPISettings](docs/GeneralAPISettings.md)
   - [GeneralAttachmentSettings](docs/GeneralAttachmentSettings.md)
   - [GeneralRepoSettings](docs/GeneralRepoSettings.md)
   - [GeneralUISettings](docs/GeneralUISettings.md)
   - [GenerateRepoOption](docs/GenerateRepoOption.md)
   - [GitBlobResponse](docs/GitBlobResponse.md)
   - [GitEntry](docs/GitEntry.md)
   - [GitHook](docs/GitHook.md)
   - [GitObject](docs/GitObject.md)
   - [GitTreeResponse](docs/GitTreeResponse.md)
   - [GitignoreTemplateInfo](docs/GitignoreTemplateInfo.md)
   - [Hook](docs/Hook.md)
   - [Identity](docs/Identity.md)
   - [InternalTracker](docs/InternalTracker.md)
   - [Issue](docs/Issue.md)
   - [IssueConfig](docs/IssueConfig.md)
   - [IssueConfigContactLink](docs/IssueConfigContactLink.md)
   - [IssueConfigValidation](docs/IssueConfigValidation.md)
   - [IssueDeadline](docs/IssueDeadline.md)
   - [IssueFormField](docs/IssueFormField.md)
   - [IssueLabelsOption](docs/IssueLabelsOption.md)
   - [IssueMeta](docs/IssueMeta.md)
   - [IssueTemplate](docs/IssueTemplate.md)
   - [Label](docs/Label.md)
   - [LabelTemplate](docs/LabelTemplate.md)
   - [LicenseTemplateInfo](docs/LicenseTemplateInfo.md)
   - [LicensesTemplateListEntry](docs/LicensesTemplateListEntry.md)
   - [MarkdownOption](docs/MarkdownOption.md)
   - [MarkupOption](docs/MarkupOption.md)
   - [MergePullRequestOption](docs/MergePullRequestOption.md)
   - [MigrateRepoOptions](docs/MigrateRepoOptions.md)
   - [Milestone](docs/Milestone.md)
   - [NewIssuePinsAllowed](docs/NewIssuePinsAllowed.md)
   - [NodeInfo](docs/NodeInfo.md)
   - [NodeInfoServices](docs/NodeInfoServices.md)
   - [NodeInfoSoftware](docs/NodeInfoSoftware.md)
   - [NodeInfoUsage](docs/NodeInfoUsage.md)
   - [NodeInfoUsageUsers](docs/NodeInfoUsageUsers.md)
   - [Note](docs/Note.md)
   - [NotificationCount](docs/NotificationCount.md)
   - [NotificationSubject](docs/NotificationSubject.md)
   - [NotificationThread](docs/NotificationThread.md)
   - [OAuth2Application](docs/OAuth2Application.md)
   - [Organization](docs/Organization.md)
   - [OrganizationPermissions](docs/OrganizationPermissions.md)
   - [PRBranchInfo](docs/PRBranchInfo.md)
   - [Package](docs/Package.md)
   - [PackageFile](docs/PackageFile.md)
   - [PayloadCommit](docs/PayloadCommit.md)
   - [PayloadCommitVerification](docs/PayloadCommitVerification.md)
   - [PayloadUser](docs/PayloadUser.md)
   - [Permission](docs/Permission.md)
   - [PublicKey](docs/PublicKey.md)
   - [PullRequest](docs/PullRequest.md)
   - [PullRequestMeta](docs/PullRequestMeta.md)
   - [PullReview](docs/PullReview.md)
   - [PullReviewComment](docs/PullReviewComment.md)
   - [PullReviewRequestOptions](docs/PullReviewRequestOptions.md)
   - [PushMirror](docs/PushMirror.md)
   - [Reaction](docs/Reaction.md)
   - [Reference](docs/Reference.md)
   - [Release](docs/Release.md)
   - [RenameUserOption](docs/RenameUserOption.md)
   - [RepoCollaboratorPermission](docs/RepoCollaboratorPermission.md)
   - [RepoCommit](docs/RepoCommit.md)
   - [RepoCreateReleaseAttachmentRequest](docs/RepoCreateReleaseAttachmentRequest.md)
   - [RepoTopicOptions](docs/RepoTopicOptions.md)
   - [RepoTransfer](docs/RepoTransfer.md)
   - [Repository](docs/Repository.md)
   - [RepositoryMeta](docs/RepositoryMeta.md)
   - [SearchResults](docs/SearchResults.md)
   - [Secret](docs/Secret.md)
   - [ServerVersion](docs/ServerVersion.md)
   - [StopWatch](docs/StopWatch.md)
   - [SubmitPullReviewOptions](docs/SubmitPullReviewOptions.md)
   - [Tag](docs/Tag.md)
   - [Team](docs/Team.md)
   - [TeamSearch200Response](docs/TeamSearch200Response.md)
   - [TimelineComment](docs/TimelineComment.md)
   - [TopicName](docs/TopicName.md)
   - [TopicResponse](docs/TopicResponse.md)
   - [TrackedTime](docs/TrackedTime.md)
   - [TransferRepoOption](docs/TransferRepoOption.md)
   - [UpdateFileOptions](docs/UpdateFileOptions.md)
   - [UpdateRepoAvatarOption](docs/UpdateRepoAvatarOption.md)
   - [UpdateUserAvatarOption](docs/UpdateUserAvatarOption.md)
   - [UpdateVariableOption](docs/UpdateVariableOption.md)
   - [User](docs/User.md)
   - [UserBadgeOption](docs/UserBadgeOption.md)
   - [UserHeatmapData](docs/UserHeatmapData.md)
   - [UserSearch200Response](docs/UserSearch200Response.md)
   - [UserSettings](docs/UserSettings.md)
   - [UserSettingsOptions](docs/UserSettingsOptions.md)
   - [WatchInfo](docs/WatchInfo.md)
   - [WikiCommit](docs/WikiCommit.md)
   - [WikiCommitList](docs/WikiCommitList.md)
   - [WikiPage](docs/WikiPage.md)
   - [WikiPageMetaData](docs/WikiPageMetaData.md)
  <a id="documentation-for-authorization"></a>

  Authentication schemes defined for the API:
  <a id="AccessToken"></a>

  - **Type**: API key
  - **API key parameter name**: access_token
  - **Location**: URL query string
  <a id="AuthorizationHeaderToken"></a>

  - **Type**: API key
  - **API key parameter name**: Authorization
  - **Location**: HTTP header
  <a id="BasicAuth"></a>

  - **Type**: HTTP basic authentication
  <a id="SudoHeader"></a>

  - **Type**: API key
  - **API key parameter name**: Sudo
  - **Location**: HTTP header
  <a id="SudoParam"></a>

  - **Type**: API key
  - **API key parameter name**: sudo
  - **Location**: URL query string
  <a id="TOTPHeader"></a>

  - **Type**: API key
  - **API key parameter name**: X-GITEA-OTP
  - **Location**: HTTP header
  <a id="Token"></a>

  - **Type**: API key
  - **API key parameter name**: token
  - **Location**: URL query string


pkgId: ee487538ceb532b6cd23692195ab2696a19d4de10d3bf62b11d888ff70a5be49
name: python-py-hydroweb-help
arch: noarch
version: 1.0.2
epoch: 0
release: 1
summary: Development documents and examples for py-hydroweb
url: https://pypi.org/project/py-hydroweb/
rpm_license: Apache 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-hydroweb-1.0.2-1.src.rpm
location_href: Packages/python-py-hydroweb-help-1.0.2-1.noarch.rpm
checksum_type: sha256
description:
  **py_hydroweb** is a simple library providing python facilities to search and download hydrological data from the [hydroweb.next](https://hydroweb.next.theia-land.fr) platform.

  [![hydroweb.next](https://hydroweb.next.theia-land.fr/auth/resources/n5ga4/login/theme-hnext/img/hydrowebnext_full.svg)](https://hydroweb.next.theia-land.fr)

  For more information about the platform, to create an account and an API key, visit our website at https://hydroweb.next.theia-land.fr.


  ```python
  >>> import py_hydroweb
  >>> client = py_hydroweb.Client("<my_personal_hydroweb_api_key>")
  >>> basket = py_hydroweb.DownloadBasket("my_download_basket")
  >>> basket.add_collection("HYDROWEB_LAKES_OPE", bbox=[17.6123, 4.53676, 54.7998, 18.04142])
  >>> client.submit_and_download_zip(basket)
  ```

  After you created your account and your api key on the website, this simple piece of code will download (in your current folder) a zip file containing the collection(s) you asked for.
  Products are filtered according to how you called `add_collection` (in this example with a simple bbox, but no temporal filter).



  Py Hydroweb is available on PyPI and can be installed like any other Python package (also works with conda or other environment managers):

  ```console
  $ python -m pip install py_hydroweb
  ```

  Py Hydroweb officially supports Python 3.8+.



  To prepare and run a download request, follow step by step instruction below.



  ```python
  >>> client: py_hydroweb.Client = py_hydroweb.Client(
          hydroweb_api_url="<an_hydroweb_api_endpoint>",
          api_key="<my_personal_hydroweb_api_key>"
      )
  ```

  Client's constructor parameters:
  - `hydroweb_api_url: str` (optional) Hydroweb API base URL. Default value is https://hydroweb.next.theia-land.fr/api and except for test purpose, there is no need to change it.
  - `api_key: str = None` (optional) Hydroweb API Key that you can get from our website once you created your account

  __Alternative__: if **not** passed in the above constructor, the API Key **must be** defined by setting the **HYDROWEB_API_KEY** environment variable: `export HYDROWEB_API_KEY=<my_personal_hydroweb_api_key>`



  ```python
  >>> basket: py_hydroweb.DownloadBasket = py_hydroweb.DownloadBasket(download_name="my_download_basket")
  ```

  DownloadBasket's constructor parameters:
  - `download_name: str` (mandatory) Name for the download to be prepared



  ```python
  >>> basket.add_collection(
          collection_id="HYDROWEB_LAKES_OPE",
          bbox=[17.6123, 4.53676, 54.7998, 18.04142]
      )
  >>> basket.add_collection(
          collection_id="LIS_SNT_YEARLY",
          correlation_id="LIS_SNT_YEARLY",
          folder="lis/snt/",
          bbox=[17.6123, 4.53676, 54.7998, 18.04142],
          intersects={
              "coordinates": [
                  [[21.282, 17.656], [21.282, 14.221], [26.797, 14.221], [26.797, 17.656], [21.282, 17.656]]
              ],
              "type": "Polygon",
          },
          datetime="2022-01-01T00:00:00Z/2022-12-31T23:59:59Z",
          query={
              "start_datetime": {"lte": "2024-02-03T00:00:00.000Z"},
              "end_datetime": {"gte": "2023-02-02T00:00:00.000Z"},
          },
      )
  ```

  add_collection method parameters:
  - `collection_id: str` (mandatory) Collection identifier (as specified by hydroweb.next platform, browse [here](https://radiantearth.github.io/stac-browser/#/external/hydroweb.next.theia-land.fr/api/catalog/stac) to discover available collection ids)
  - `correlation_id: str = None` (optional) Correlation identifier (in case we find several time the same collection ID in the same download basket)
  - `folder: str = None` (optional) Desired folder subpath in the resulting zip to be downloaded
  - `bbox: List[float] = None` (optional) Geographical bounding box
      - for more information see [here](https://github.com/radiantearth/stac-api-spec/blob/release/v1.0.0/item-search/README.md)
  - `intersects: dict = None` (optional) Geojson geometry to search for items by performing intersection between their own geometry and this geometry
      - for more information see [here](https://github.com/radiantearth/stac-api-spec/blob/release/v1.0.0/item-search/README.md)
  - `datetime: str = None` (optional) Single date+time, or a range ('/' separator)
      - for more information see [here](https://github.com/radiantearth/stac-api-spec/blob/release/v1.0.0/item-search/README.md)
      - **warning**: this parameter refers to the **ingestion** datetime of the data in the catalog and should generally not be used. If you want to refer to product date and time, use the `query` parameter below
  - `query: dict = None` (optional) Json query as specified by the query plugin of STAC API
      - for more information see [here](https://github.com/stac-api-extensions/query/blob/v1.0.0/README.md)
      - **warning 1**: start_datetime and end_datetime refer to the **product** datetime. They are common-metadata as defined [here](https://github.com/radiantearth/stac-api-spec/blob/v1.0.0/stac-spec/item-spec/common-metadata.md#date-and-time-range).
      - **warning 2**: in case of a "reference collection" (without a temporal dimension), start_datetime and end_datetime will be ignored.







  Once you are done adding collections to your basket, you can now submit your download request.

  This will return an identifier that you will be able to use later to download your zip file.

  ```python
  >>> download_id: str = client.submit_download(download_basket=basket)
  ```

  submit_download method parameters:
  - `download_basket: DownloadBasket` (mandatory) Download basket containing requested collections

  submit_download return value:
  - `download_id: str` identifier of your download request



  Once you submitted your download request, you can ask to download the resulting zip file.

  This method automatically waits for your download request to be ready before it proceeds with zip download.

  ```python
  >>> downloaded_zip_path: str = client.download_zip(
          download_id=download_id, zip_filename="my_data.zip", output_folder="./output"
      )
  ```

  download_zip method parameters:
  - `download_id: str` (mandatory) The identifier of the previously submitted download request
  - `zip_filename: str = None` (optional) An output file name for the resulting zip - if not provided, file name will be <download_id>.zip
  - `output_folder: str = None` (optional) A (relative or absolute) path to an **existing** folder - if not provided, download will happen in current folder

  download_zip return value:
  - `downloaded_zip_path: str` The (relative or absolute) path of the downloaded zip file





  Alternatively, once you are done adding collections to your basket, you can all together submit your download request, wait for it to be ready and proceed with zip download.

  ```python
  >>> downloaded_zip_path: str = client.submit_and_download_zip(
          download_basket=basket, zip_filename="my_data.zip", output_folder="./output"
      )
  ```

  submit_and_download_zip method parameters:
  - `download_basket: DownloadBasket` (mandatory) Download basket containing requested collections
  - `zip_filename: str = None` (optional) An output file name for the resulting zip - if not provided, file name will be <download_id>.zip
  - `output_folder: str = None` (optional) A (relative or absolute) path to an **existing** folder - if not provided, download will happen in current folder

  submit_and_download_zip return value:
  - `downloaded_zip_path: str` The (relative or absolute) path of the downloaded zip file





  ```python
  >>> status: py_hydroweb.DownloadInfo = client.get_download_info(download_id=download_id)
  ```

  get_download_info method parameters:
  - `download_id: str` (mandatory) The identifier of the previously submitted download request

  get_download_info return value:
  - `status: py_hydroweb.DownloadInfo` Object containing a status (CREATED, RUNNING, COMPLETED, FAILED, ...) and a percentage of progress



  ```python
  >>> last_update = datetime.now() + timedelta(hours=-1)
  >>> statuses: dict[str, py_hydroweb.DownloadInfo] = client.get_downloads_info(
          last_update=last_update, page=0, size=20
      )
  ```

  get_downloads_info method parameters:
  - `last_update: date = None` (optional) An optional date to retrieve only download requests updated after this date - if not provided, all your requests will be retrieved
  - `page: int = None` (optional) Pagination parameter: index (starting at 0) of the page we want to retrieve - if neither `page` nor `size` are provided, there will be no pagination and all results will be returned at once
  - `size: int = None` (optional) Pagination parameter: number of elements per page - if neither `page` nor `size` are provided, there will be no pagination and all results will be returned at once

  get_downloads_info return value:
  - `statuses: dict[str, py_hydroweb.DownloadInfo]` Dict where keys are download id and values are objects containing a status (CREATED, RUNNING, COMPLETED, FAILED, ...) and a percentage of progress



  The history of your download requests will automatically get cleaned after a certain amout of time.
  You can also clean it manually provided that status is no longer CREATED nor RUNNING.

  ```python
  >>> client.delete_download(download_id=download_id)
  ```

  delete_download method parameters:
  - `download_id: str` (mandatory) The identifier of the download request to be removed


pkgId: 894a9f0bfc24baaa0f0639186d532c5b8c30a4badee0f7c3c26cfbf3d713ef30
name: python-py-img-processor-help
arch: noarch
version: 1.1.0
epoch: 0
release: 1
summary: Development documents and examples for py-img-processor
url: https://github.com/SkylerHu/py-img-processor.git
rpm_license: MIT Licence
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-img-processor-1.1.0-1.src.rpm
location_href: Packages/python-py-img-processor-help-1.1.0-1.noarch.rpm
checksum_type: sha256
description:
  [![PyPI - Version](https://img.shields.io/pypi/v/py-img-processor)](https://github.com/SkylerHu/py-img-processor)
  [![GitHub Actions Workflow Status](https://github.com/SkylerHu/py-img-processor/actions/workflows/pre-commit.yml/badge.svg?branch=master)](https://github.com/SkylerHu/py-img-processor)
  [![GitHub Actions Workflow Status](https://github.com/SkylerHu/py-img-processor/actions/workflows/test-py3.yml/badge.svg?branch=master)](https://github.com/SkylerHu/py-img-processor)
  [![Coveralls](https://img.shields.io/coverallsCoverage/github/SkylerHu/py-img-processor?branch=master)](https://github.com/SkylerHu/py-img-processor)
  [![PyPI - Wheel](https://img.shields.io/pypi/wheel/py-img-processor)](https://github.com/SkylerHu/py-img-processor)
  [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/py-img-processor)](https://github.com/SkylerHu/py-img-processor)
  [![PyPI - Implementation](https://img.shields.io/pypi/implementation/py-img-processor)](https://github.com/SkylerHu/py-img-processor)
  [![GitHub License](https://img.shields.io/github/license/SkylerHu/py-img-processor)](https://github.com/SkylerHu/py-img-processor)


  Image editor using Python and Pillow.

  依赖Pillow开发的Python库，用于图像编辑处理。




  	pip install py-img-processor

  依赖：

  - `Python >= 3.9`
  - `Pillow >= 8.0.0`

  可查看版本变更记录 [ChangeLog](https://github.com/SkylerHu/py-img-processor/blob/master/docs/CHANGELOG-1.x.md)



  具体使用说明查看 [readthedocs](https://py-img-processor.readthedocs.io/) 。


  可以通过指定环境变量`PY_SETTINGS_MODULE`加载配置文件：

      export PY_SETTINGS_MODULE=${your_project.settings_file.py}

  支持的配置项有：

  | 配置项 | 类型 | 说明 | 默认值 |
  | - | - | - | - |
  | DEBUG | bool | 是否debug开发模式 | False |
  | PROCESSOR_MAX_FILE_SIZE | int | 处理原图的大小限制， 单位 MB | 20 |
  | PROCESSOR_MAX_W_H | int | 处理图像，原图宽高像素限制 | 30000 |
  | PROCESSOR_MAX_PIXEL | int | width x height总像素3亿，处理前后的值都被此配置限制 | 300000000 |
  | PROCESSOR_DEFAULT_QUALITY | int | 图像处理后的默认质量 | 75 |
  | PROCESSOR_TEXT_FONT | str | 默认字体文件，默认从系统中寻找；也可以直接传递字体文件路径 | Arial Unicode.ttf |

  > `注意`：`PROCESSOR_TEXT_FONT` 字体的设置是文字水印必要参数，需保证系统已安装该字体。默认值 `Arial Unicode.ttf` 是MacOS系统存在的字体，建议设置字体文件路径。



  测试图片 `lenna-400x225.jpg` (像素400x225)

  ![](https://github.com/SkylerHu/py-img-processor/blob/master/docs/imgs/lenna-400x225.jpg)



  `process_image_by_path(input_path, out_path, params)`

  参数说明：

  - `input_path` str，输入图像文件路径
  - `out_path` str, 输出图像保存路径
  - `params` str or json，图像处理参数，参数说明详见 [Reference.md](https://github.com/SkylerHu/py-img-processor/blob/master/docs/Reference.md)




  - 斜线 `/` 隔开，区分不同的操作；
  - 逗号 `,` 隔开，区分操作中不同的参数；
  - 下划线 `_` 隔开，`key_value` 的形式，区分参数的Key和Value；
  - `value`是复杂参数时，需要进行`base64url_encode`，是否需要encode查看文档参数详细说明；

  ```python
  from imgprocessor.utils import base64url_encode
  from imgprocessor.processor import process_image_by_path

  process_image_by_path(
      "docs/imgs/lenna-400x225.jpg",
      "/tmp/output.png",
      
      f"resize,s_200/crop,w_200,h_200,g_center/watermark,text_{base64url_encode('Hello 世界')},color_FFF,size_20/circle,r_10/format,png",
  )
  ```

  输出图像 (像素200x200)：

  ![](https://github.com/SkylerHu/py-img-processor/blob/master/docs/imgs/lenna-edit.png)


  - 只是形式不同，参数和字符串形式无本质区别；
  - `format`、`quality`、`interlace`三个值在JSON第一层，直接按照`key: value`的形式设置；
  - 其他参数都放在 `actions` 数组中；

  ```python
  process_image_by_path(
      "docs/imgs/lenna-400x225.jpg",
      "/tmp/output.png",
      {
          "actions": [
              {"key": "resize", "s": 200},
              {"key": "crop", "w": 200, "h": 200, "g": "center"},
              
              {"key": "watermark", "text": "Hello 世界", "color": "FFF", "size": 20},
              {"key": "circle", "r": 10},
          ],
          "format": "png",
      },
  )
  ```
  该操作与上述字符串示例参数等效。


  安装库后 有可执行命令 `img-processor` 可以使用，通过 `img-processor -h` 查看参数说明。

  ```shell
  usage: img-processor [-h] [-V] -P PATH [--action ACTION [ACTION ...]] -O OUTPUT [--overwrite]

  图像处理

  optional arguments:
    -h, --help            show this help message and exit
    -V, --version         show program's version number and exit
    -P PATH, --path PATH  输入图像的文件路径/目录，若是目录则批量处理目录下所有图像
    --action ACTION [ACTION ...]
                          操作参数，可对同一个文件多组操作
    -O OUTPUT, --output OUTPUT
                          输出图像路径，多个图像或多个操作时请设置已存在的目录
    --overwrite           是否覆盖输出路径中已有文件
  ```

  示例：
  ```shell

  img-processor -P docs/imgs/lenna-400x225.jpg -O /tmp/ --action resize,s_200/format,webp resize,s_225/crop,w_225,h_225,g_center/circle/format,png --overwrite
  ```

  > 注意：action参数仅支持字符串表达形式。

  会输出2个图像文件：

  `/tmp/lenna-400x225-0.webp` (像素355x200)

  ![](https://github.com/SkylerHu/py-img-processor/blob/master/docs/imgs/lenna-400x225-0.webp)

  `/tmp/lenna-400x225-1.png` (像素225x225)

  ![](https://github.com/SkylerHu/py-img-processor/blob/master/docs/imgs/lenna-400x225-1.png)



  ```python
  from imgprocessor.processor import extract_main_color

  extract_main_color("docs/imgs/lenna-400x225.jpg")

  ```


pkgId: 78b3fabce6a5817e391fdb87fe012326a01541dea9c77518ce8ed42e1d5d188a
name: python-py-ldlm-help
arch: noarch
version: 1.0.0
epoch: 0
release: 1
summary: Development documents and examples for py-ldlm
url: https://pypi.org/project/py-ldlm/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-ldlm-1.0.0-1.src.rpm
location_href: Packages/python-py-ldlm-help-1.0.0-1.noarch.rpm
checksum_type: sha256
description:
  An LDLM (http://github.com/imoore76/go-ldlm) client library providing Python sync and async clients.



  ```
  pip3 install py-ldlm
  ```




  ```python
  from ldlm import Client

  c = Client("server:3144")
  ```

  or an asyncio client

  ```python
  from ldlm import AsyncClient

  c = AsyncClient("server:3144")
  ```



  | Name | Default | Description |
  |:--- | :--- | :--- |
  | `password` | `None` | Password to use for LDLM server |
  | `retries ` | `-1` | Number or times to retry an RPC call when the LDLM server is down. `-1` for infinite |
  | `retry_delay_seconds` | `5` | Number of seconds to wait between retry attempts |
  | `auto_refresh_locks` | `True` | Automatically refresh locks in a background thread (or async task) when a lock timeout is specified for a lock |
  | `tls` | `None` | An `ldlm.TLSConfig` instance or `None` to disable TLS |




  `ldlm.TLSConfig` options. All default to `None`.
  | Name | Description |
  | :--- | :--- |
  | `ca_file` | Path to the CA certificate file to use. |
  | `cert_file` | Path to the client certificate file to use when LDLM is configured for two-way TLS |
  | `key_file` | Path to the file containing the key for the `cert_file` |

  If you do not need to specify any of these, but your LDLM server is configured to use TLS, use an empty `TLSConfig()` object.



  Locks in an LDLM server generally live until the client unlocks the lock or disconnects. If a client dies while holding a lock, the disconnection is detected and handled in LDLM by releasing the lock.

  Depending on your LDLM server configuration, this feature may be disabled and `lock_timeout_seconds` would be used to specify the maximum amount of time a lock can remain locked without being refreshed. If you've specified (or left unspecified) `auto_refresh_locks=True` when instantiating the LDLM client, it will take care of refreshing locks in the background for you. Otherwise, you must periodically call `c.refresh_lock()` yourself &lt; the lock timeout interval.

  To `unlock()` or refresh a lock, you must use the lock key that was issued from the lock request's response. This is exemplified further in the examples.



  `lock()` attempts to acquire a lock in LDLM. It will block until the lock is acquired or until `wait_timeout_seconds` has elapsed (if specified).

  If you have set `wait_timeout_seconds`, the lock returned may not be locked because `wait_timeout_seconds` seconds have elapsed. In this case, be sure to check the `locked` property of the returned lock to determine when the lock was acquired or not. Locks returned without a `wait_timeout_seconds` will always be locked.

  Locks also have a `size` (default: 1), which is the maximum number of concurrent locks that can be held. The size of a lock is set by the first client that obtains the lock. If subsequent calls to a acquire this lock (from the same or other clients) specify a different size, a `LockSizeMismatchError` exception will be raised.



  Simple lock
  ```python
  lock = c.lock("my-task")



  c.unlock("my-task", key=lock.key)
  ```

  Async lock
  ```python
  lock = await c.lock("my-task")



  await c.unlock("my-task", lock.key)
  ```

  Wait timeout
  ```python
  lock = c.lock("my-task", wait_timeout_seconds=30)

  if not lock.locked:
      print("Could not obtain lock within the wait timeout")
      return



  c.unlock("my-task", lock.key)
  ```

  Async wait timeout
  ```python
  lock = await c.lock("my-task", wait_timeout_seconds=30)

  if not lock.locked:
      print("Could not obtain lock within the wait timeout")
      return



  await c.unlock("my-task", lock.key)
  ```


  `lock_context()` behaves exactly like `lock()`, but will will unlock the lock for you when the context is exited.


  Simple lock context
  ```python
  with c.lock_context("my-task"):
      

  ```

  Async lock context
  ```python
  async with c.lock_context("my-task")
      

  ```

  Wait timeout context
  ```python
  with c.lock_context("my-task", wait_timeout_seconds=30) as lock

      if not lock.locked:
          print("Could not obtain lock within the wait timeout")
          return

      

  ```

  Async wait timeout context
  ```python
  async with c.lock_context("my-task", wait_timeout_seconds=30) as lock:

      if not lock.locked:
          print("Could not obtain lock within the wait timeout")
          return

      

  ```


  `try_lock()` attempts to acquire a lock and immediately returns; whether the lock was acquired or not. You must inspect the returned lock's `locked` property to determine if it was acquired.



  Simple try lock
  ```python
  lock = c.try_lock("my-task")

  if not lock.locked:
      return



  c.unlock("my-task", key=lock.key)
  ```

  Async lock
  ```python
  lock = await c.try_lock("my-task")

  if not lock.locked:
      return



  await c.unlock("my-task", lock.key)
  ```


  `try_lock_context()` behaves exactly like `try_lock_context()`, but will will unlock the lock for you (if the lock was acquired) when the context is exited.


  Simple try lock context
  ```python
  with c.try_lock_context("my-task") as lock:
      if lock.locked:
          

  ```

  Async try lock context
  ```python
  async with c.try_lock_context("my-task") as lock:
      if lock.locked:
          

  ```


  `unlock()` unlocks the specified lock and stops any lock refresh job that may be associated with the lock. It must be passed the key that was issued when the lock was acquired. Using a different key will result in an error returned from LDLM and an exception raised in the client.



  Simple unlock
  ```python
  unlock("my_task", lock.key)
  ```

  Async unlock
  ```python
  await unlock("my_task", lock.key)
  ```


  As explained in [Basic Concepts](#basic-concepts), you may specify a lock timeout using a `lock_timeout_seconds` argument to any of the `*lock*()` methods. When you do this and leave the client option `auto_refresh_locks=True`, the client will refresh the lock in the background (using a background thread or async task) without you having to do anything. If, for some reason, you want to disable auto refresh, you will have to refresh the lock before it times out using the `refresh_lock()` method. It takes the following arguments

  * `name` - name of the lock
  * `key` - key for the lock
  * `lock_timeout_seconds` - the new lock expiration timeout (or the same timeout if you'd like)


  ```python
  lock = c.lock("task1-lock", lock_timeout_seconds=300)



  c.refresh_lock("task1-lock", l.key, lock_timeout_seconds=300)



  c.refresh_lock("task1-lock", l.key, lock_timeout_seconds=300)



  c.unlock("task1-lock", l.key)
  ```





  Using a lock, it is relatively simple to implement primary / secondary (or secondaries) failover by running something similar to the following in each server application:
  ```python
  lock = client.lock("application-primary")

  if not lock.locked:
      
      raise RuntimeException("error: lock returned but not locked")

  logger.info("Became primary. Performing work...")



  ```



  In some queue / worker patterns it may be necessary to lock tasks while they are being performed to avoid duplicate work. This can be done using try lock:

  ```python

  while True:

      work_item = queue.Get()

      lock = client.try_lock(work_item.name)
      if not lock.locked:
          log.debug(f"Work {work_item.name} already in progress");
          continue

      

      client.unlock(lock.name, lock.key)
  ```



  In some applications it may be necessary to limit the number of concurrent operations on a resource. This can be implemented using lock size:

  ```python

  lock = client1.lock("ElasticSearchSlot", size=10)

  if not lock.locked:
      raise RuntimeException("error: lock returned but not locked")



  client1.unlock(lock.name, lock.key)
  ```

  Remember - the size of a lock is set by the first client that obtains the lock. All subsequent calls to obtain that lock must use the same size parameter.



  The following exceptions are defined in the `exceptions` module and may raised by the client:

  | Exception | Description |
  | :--- | :--- |
  | `LDLMError` | An unknown error (or error that doesn't have a specific code) occurred. Inspect `message` |
  | `LockDoesNotExistError` | The lock attempted to unlock or refresh does not exist |
  | `InvalidLockKeyError` | The supplied key was not valid for the lock |
  | `NotLockedError` | The lock was not locked when `unlock()` was called. |
  | `LockDoesNotExistOrInvalidKeyError` | The lock does not exist or the key is not valid when refreshing a lock |
  | `LockSizeMismatchError` | The lock Size specified does not match the actual size of the lock |
  | `InvalidLockSizeError` | The lock size specified is not > 0 |

  All exceptions are subclasses of `LDLMError`.



  Apache 2.0; see [`LICENSE`](LICENSE) for details.



  See [`CONTRIBUTING.md`](CONTRIBUTING.md) for details.



  This project is not an official Google project. It is not supported by Google and Google specifically disclaims all warranties as to its quality, merchantability, or fitness for a particular purpose.

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


pkgId: eafcddd95aa9f1afe7655e8b9133c4a6f0dbeda0bc12c3f211e9a88fe2d4f707
name: python-py-machineid-help
arch: noarch
version: 0.7.0
epoch: 0
release: 1
summary: Development documents and examples for py-machineid
url: https://github.com/keygen-sh/py-machineid
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-machineid-0.7.0-1.src.rpm
location_href: Packages/python-py-machineid-help-0.7.0-1.noarch.rpm
checksum_type: sha256
description:
  [![CI](https://github.com/keygen-sh/py-machineid/actions/workflows/test.yml/badge.svg)](https://github.com/keygen-sh/py-machineid/actions)
  [![PyPI version](https://badge.fury.io/py/py-machineid.svg)](https://badge.fury.io/py/py-machineid)

  Get the unique machine ID of any host (without admin privileges).

  Sponsored by:

  <a href="https://keygen.sh?ref=py-machineid">
    <div>
      <img src="https://keygen.sh/images/logo-pill.png" width="200" alt="Keygen">
    </div>
  </a>

  _A fair source software licensing and distribution API._



  Install using [`pip`](https://docs.python.org/3/installing/index.html):

  ```bash
  python3 -m pip install py-machineid
  ```



  To obtain the raw GUID of the device, use `id() -> str`:

  ```python
  import machineid

  print(machineid.id())
  ```

  To obtain an anonymized (hashed) version of the GUID, see below. The
  `hashed_id(str) -> str` function takes an optional application ID,
  which will ensure a unique ID per-app for the same device.

  ```python
  import machineid

  print(machineid.hashed_id('myappid'))
  print(machineid.hashed_id())
  ```

  Both `id()` and `hashed_id()` accept a `winregistry: bool` kwarg,
  which can be used to disable the registry query on Windows (enabled
  by default). Depending on your security posture, disabling the
  registry query may help prevent machine fingerprints from
  being manually modified by a bad actor.



  To run tests, invoke `unittest`:

  ```bash
  python3 -m unittest
  ```



  To build a release, run:

  ```bash
  python3 setup.py sdist bdist_wheel
  ```



  To publish a release, run:

  ```bash
  twine upload dist/*
  ```



  Special thanks to Denis Brodbeck for his Go package, [`machineid`](https://github.com/denisbrodbeck/machineid).


pkgId: 75cdc48b5ca0af378e20dd99519791bdfc8f195d90edb89453bda0faa413ee3a
name: python-py-netgear-plus-help
arch: noarch
version: 0.2.14
epoch: 0
release: 1
summary: Development documents and examples for py-netgear-plus
url: https://github.com/foxey/py-netgear-plus
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-netgear-plus-0.2.14-1.src.rpm
location_href: Packages/python-py-netgear-plus-help-0.2.14-1.noarch.rpm
checksum_type: sha256
description:
  Grabs statistical network data from [supported NETGEAR Switches](#supported-and-tested-netgear-modelsproducts-and-firmwares) from the
  [Plus Managed Network Switch](https://www.netgear.com/business/wired/switches/plus/) line. These switches can only be managed using a
  Web interface and not through SNMP or cli. This library uses web scraping to collect the switch configuration, statistics and
  some basic configuration updates.



  1. Detecting Switch Model/Product in login.cgi
  2. Connects to the Switch and asks for a cookie (`http://IP_OF_SWITCH/login.cgi`)
  3. HTTP-Request send to the Switch twice (`http://IP_OF_SWITCH/portStatistics.cgi`) and compared with previous data ("in response time")



  | Name                          | key from `get_switch_infos()`      | Unit                                |
  | ----------------------------- | ---------------------------------- | ----------------------------------- |
  | Port {port} Traffic Received  | `port_{port}_traffic_rx_mbytes`    | MB (in response time)               |
  | Port {port} Traffic Sent      | `port_{port}_traffic_tx_mbytes`    | MB (in response time)               |
  | Port {port} Receiving         | `port_{port}_speed_rx_mbytes`      | MB/s                                |
  | Port {port} Transferring      | `port_{port}_speed_tx_mbytes`      | MB/s                                |
  | Port {port} IO                | `port_{port}_speed_io_mbytes`      | MB/s                                |
  | Port {port} Total Received    | `port_{port}_sum_rx_mbytes`        | MB (since last switch reboot/reset) |
  | Port {port} Total Transferred | `port_{port}_sum_tx_mbytes`        | MB (since last switch reboot/reset) |
  | Port {port} Connection Speed  | `port_{port}_connection_speed`     | MB/s                                |
  | Port {port} Status            | `port_{port}_status`               | "on"/"off"                          |
  | Port {poe_port} POE Power     | `port_{poe_port}_poe_power_active` | "on"/"off"                          |



  | Sensor Name             | key from `get_switch_infos()` | Unit                  |
  | ----------------------- | ----------------------------- | --------------------- |
  | Switch IO               | `sum_port_speed_bps_io`       | MB/s                  |
  | Switch Traffic Received | `sum_port_traffic_rx`         | MB (in response time) |
  | Switch Traffic Sent     | `sum_port_traffic_tx`         | MB (in response time) |



  | Model    | Ports | Firmware versions                      | Bootloader versions |
  | -------- | ----- | -------------------------------------- | ------------------- |
  | GS105E   | 5     | ?                                      |                     |
  | GS108E   | 8     | V1.00.11                               | V1.00.03            |
  | GS105Ev3 | 5     | ?                                      |                     |
  | GS108Ev3 | 8     | V2.00.05, V2.06.10, V2.06.17, V2.06.24 | V2.06.01 - V2.06.03 |
  | GS305EP  | 5     | V1.0.1.1                               |                     |
  | GS308EP  | 8     | V1.0.0.10, V1.0.1.4                    |                     |
  | GS308EPP | 8     | ?                                      |                     |

  Supported firmware languages: GR (German), EN (English)



  | Model     | Support status                                         |
  | --------- | ------------------------------------------------------ |
  | GS108PEv3 | Not yet started                                        |
  | GS316EP   | Login is supported, statistics and PoE control not yet |
  | GS316EPP  | Login is supported, statistics and PoE control not yet |





  ```shell
  python3 -m venv .venv
  source .venv/bin/activate
  pip install lxml requests
  ```

  Using this VENV go to your local source folder



  ```shell
  cd src
  python3
  ```

  ```python
  ip = '192.168.178.68' # replace with IP address of your switch
  p = 'fyce4gKZemkqjDY' # replace with your password
  import py_netgear_plus
  sw = py_netgear_plus.NetgearSwitchConnector(ip, p)
  sw.autodetect_model()
  sw.get_login_cookie()

  data = sw.get_switch_infos()
  print(sw.switch_model.MODEL_NAME)
  print(data["port_1_sum_rx_mbytes"])
  print(data)
  ```


pkgId: 53ffbd41ab46e878f6d5c5e867e239510c25f0abb2bb47ac68b8642528866f4b
name: python-py-pg-notify-help
arch: noarch
version: 0.1.1
epoch: 0
release: 1
summary: Development documents and examples for py-pg-notify
url: https://github.com/DSSanjaya5/py-pg-notify
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-pg-notify-0.1.1-1.src.rpm
location_href: Packages/python-py-pg-notify-help-0.1.1-1.noarch.rpm
checksum_type: sha256
description:
  - 🔊 **PostgreSQL Notifications**: Easy-to-use interfaces for `LISTEN/NOTIFY`.
  - 🔄 **Asynchronous**: Fully asynchronous with support for multiple listeners and channels.
  - 📦 **Lightweight**: Built on top of `asyncpg`, offering high performance.

rpm_license:
  MIT License  Copyright (c) 2024 DSSanjaya5  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: 7da3dc18b9f5744a4ecbc774ba6f341dd72afab51cb71bc6bbfa18f6066cc517
name: python-py-renogy-help
arch: noarch
version: 1.0.0
epoch: 0
release: 1
summary: Development documents and examples for py-renogy
url: https://github.com/firstof9/py-renogy
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-renogy-1.0.0-1.src.rpm
location_href: Packages/python-py-renogy-help-1.0.0-1.noarch.rpm
checksum_type: sha256
description:
  ![Codecov branch](https://img.shields.io/codecov/c/github/firstof9/py-renogy/main?style=flat-square)
  ![GitHub commit activity (branch)](https://img.shields.io/github/commit-activity/m/firstof9/py-renogy?style=flat-square)
  ![GitHub last commit](https://img.shields.io/github/last-commit/firstof9/py-renogy?style=flat-square)
  ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/firstof9/py-renogy?style=flat-square)

  Python Library for Renogy API

  A python library for communicating with the Renogy API.


pkgId: 40e7cd3dd58f63e705ca34189ed8e160dcfe51569f8094416c589df3046d73c6
name: python-py-spectrogram-tools-help
arch: noarch
version: 0.0.1
epoch: 0
release: 1
summary: Development documents and examples for py-spectrogram-tools
url: https://pypi.org/project/py-spectrogram-tools/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-spectrogram-tools-0.0.1-1.src.rpm
location_href: Packages/python-py-spectrogram-tools-help-0.0.1-1.noarch.rpm
checksum_type: sha256
description:
  Spectrogram Recorder Library
  A Python library for recording audio, generating spectrograms, and managing session data. This library helps you capture audio, visualize it as spectrograms, save those images, and organize them into session folders. It also offers utilities to manage and delete session folders and calculate their sizes.

  Features
  Audio Recording: Record audio data using the sounddevice library.
  Spectrogram Generation: Plot spectrograms from recorded audio.
  Session Management: Create and manage folders for each recording session.
  Cross-platform Support: Compatible with Windows, macOS, and Linux.
  Directory Management: Automatically selects default directories based on the OS.
  File Size Calculation: Calculate and print the size of directories and session folders.

  Installation:
  You can install using pip:
  ```bash
  pip install py-spectrogram-tools
  ```
  or using git:
  ```bash
  git clone https://github.com/Ampter/py-spectrogram-tools
  cd py-spectrogram-tools
  pip install .
  ```
  Dependencies:
  numpy
  sounddevice
  matplotlib
  shutil (comes with Python)
  platform (comes with Python)

  The recommended way to import is:
  ```python
  import py-spectrogram-tools as pst
  ```

  Functions
  ```python
  pst.get_default_directory()
  ```
  Returns the default directory for saving spectrograms based on the current operating system.

  Example:
  ```python
  default_directory = pst.get_default_directory()
  print(default_directory)
  pst.create_session_folder(directory=None)
  ```
  Creates a new session folder inside the provided directory (or default directory if None). The folder is named with a unique session number.

  Parameters:
  directory: Optional; path to the directory where session folders will be created.
  Returns:
  The path to the newly created session folder.
  Example:
  ```python
  session_folder = pst.create_session_folder()
  print(f"Session created at {session_folder}")

  ```python
  pst.get_latest_session_folder(directory=None)
  ```
  Finds the session folder with the highest number and returns its path.

  Parameters:
  directory: Optional; path to the directory where session folders are stored.
  Returns:
  The path to the latest session folder, or None if no sessions exist.
  Example:
  ```python
  latest_session = pst.get_latest_session_folder()
  print(f"Latest session folder: {latest_session}")
  ```

  ```python
  pst.plot_spectrogram(audio_data, rate=44100)
  ```
  Generates and plots a spectrogram for the given audio data.

  Parameters:
  audio_data: Audio data to generate the spectrogram.
  rate: Sampling rate (default is 44100).
  Returns:
  fig: Matplotlib figure object.
  ax: Matplotlib axis object.
  Example:
  ```python
  audio_data = np.random.randn(44100 * 3)  # Simulate 3 seconds of audio
  fig, ax = pst.plot_spectrogram(audio_data)
  plt.show()
  pst.save_spectrogram(fig, session_folder)
  ```
  Saves the spectrogram figure to the session folder with a timestamped filename.

  Parameters:
  fig: The Matplotlib figure object to save.
  session_folder: The path to the session folder where the figure will be saved.
  Returns:
  The filename of the saved spectrogram.
  Example:
  ```python
  pst.save_spectrogram(fig, session_folder)
  pst.record_audio(duration=3, rate=44100, channels=1)
  ```
  Records audio for a specified duration and returns the audio data.


  Parameters:
  duration: Duration of the recording in seconds (default is 3 seconds).
  rate: Sampling rate (default is 44100).
  channels: Number of audio channels (default is 1).
  Returns:
  audio_data: A numpy array containing the recorded audio data.
  Example:
  ```python
  audio_data = pst.record_audio()
  pst.delete_latest_session_folder(directory=None)
  ```
  Deletes the latest session folder.

  Parameters:
  directory: Optional; path to the directory where session folders are stored.
  Example:
  ```python
  pst.delete_latest_session_folder()
  ```

  ```python
  pst.get_folder_size(directory=None)
  ```
  Calculates the total size of a directory by summing the sizes of all files inside it.


  Parameters:
  directory: Optional; path to the directory whose size will be calculated.
  Returns:
  Total size of the directory in bytes.
  Example:
  ```python
  folder_size = pst.get_folder_size(session_folder)
  print(f"Folder size: {folder_size / (1024 * 1024):.2f} MB")
  pst.print_folder_size(directory=None)
  ```
  Prints the total size of the latest session folder.

  Parameters:
  directory: Optional; path to the directory where session folders are stored.
  Example:
  ```python
  pst.print_folder_size()
  ```
  Platform Support
  The library automatically selects the default directory based on your operating system:

  Windows: C:\Users\<username>\SOUNDS\spectrograms
  macOS: /Users/<username>/SOUNDS/spectrograms
  Linux: /home/<username>/SOUNDS/spectrograms


  Usage Example:
  ```python
  import py-spectrogram-tools as pst

  audio_data = pst.record_audio(duration=5)


  session_folder = pst.create_session_folder()


  fig, ax = pst.plot_spectrogram(audio_data)


  pst.save_spectrogram(fig, session_folder)


  pst.print_folder_size(session_folder)
  ```

  Contrributing:
  You are free to contribute

  License
  This project is licensed under the MIT License - see the LICENSE file for details.


pkgId: 256f524a4ac393f8f65e77033d5821c260ef009eab77928379638aabc7dbfb9d
name: python-py-telegram-notifier
arch: noarch
version: 1.0.0
epoch: 0
release: 1
url: https://github.com/jon-edward/py-telegram-notifier
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-telegram-notifier-1.0.0-1.src.rpm
location_href: Packages/python-py-telegram-notifier-1.0.0-1.noarch.rpm
checksum_type: sha256
summary:
  A tool using the Telegram Bot API for sending messages to a Telegram chat by a context manager, function call, or CLI.

description:
  [![PyPI Downloads](https://static.pepy.tech/badge/py-telegram-notifier)](https://pepy.tech/projects/py-telegram-notifier)

  A tool using the Telegram Bot API for sending messages to a Telegram chat by
  a context manager, function call, or CLI.



  The purpose of this module is to provide a simple way to send messages to a Telegram chat using the Telegram Bot API.
  This is especially useful for long-running automation scripts, where the user may not be around to check the logs.

  This is not a wrapper for the Telegram Bot API, but rather a utility for notifying users of enter/exit events with a
  context manager.



      pip install py-telegram-notifier



  In order for the module to function, you must supply it with a bot
  [token](https://core.telegram.org/bots/api#authorizing-your-bot) and a
  [chat id](https://core.telegram.org/bots/api#getupdates). Full instructions on creating a bot
  can be found [here](https://core.telegram.org/bots#3-how-do-i-create-a-bot).



  Firstly, set up the config for your Notifier. Bot token and chat id are required and must be set as environment
  variables (`TELEGRAM_TOKEN` and `TELEGRAM_CHAT_ID`, respectively). It's strongly recommended to use a git-ignored `.env`
  file for this purpose, an example file can be found [here](https://github.com/jon-edward/py-telegram-notifier/blob/main/.env.example).



  ```python
  import dotenv
  from telegram_notifier import Notifier


  dotenv.load_dotenv()

  with Notifier("Test case") as notifier:
      
      notifier.send_message("This is a progress update")

  ```



  ```python
  import dotenv
  from telegram_notifier import Notifier


  dotenv.load_dotenv()

  notifier = Notifier()
  notifier.send_message("Test message")

  ```



  ```bash
  TELEGRAM_TOKEN=0000000000 TELEGRAM_CHAT_ID=0000000000 python -m telegram_notifier "Test message"
  ```



  This module treats all messages as `MarkdownV2` by default, and escapes known reserved characters. See [`Notifier.send_message()`](https://github.com/jon-edward/py-telegram-notifier/blob/main/telegram_notifier/notifier.py) for more information.




  The author of this software is not affiliated, associated, authorized, endorsed by, or in any
  way officially connected with Telegram or any of its affiliates and is independently owned and
  created.


pkgId: fcd0c955517ae1402f024c132785fc1304db40d1168fccc62a0b7d651195184b
name: python-py-thumbpad-help
arch: noarch
version: 1.0.5
epoch: 0
release: 1
summary: Development documents and examples for py-thumbpad
url: https://github.com/kerodekroma/py-thumbpad
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-thumbpad-1.0.5-1.src.rpm
location_href: Packages/python-py-thumbpad-help-1.0.5-1.noarch.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/py-thumbpad.svg?version=latest)](https://badge.fury.io/py/py-thumbpad)

  PyThumbPad is a customizable virtual thumb pad for directional input, designed for use in Pygame projects. It features a central donut-shaped control area and a movable button pad, making it ideal for mobile games or any application requiring a thumb stick-style input.



  - **Customizable Appearance**: Easily change colors and sizes for the donut and button pad.
  - **Directional Input**: Supports 4 or 8 directional quadrants for precise input.
  - **Simple Integration**: Easy to add to any Pygame project with minimal setup.
  - **Responsive Input Handling**: Smoothly tracks user input and updates the direction accordingly.



  You can install the `py_thumbpad` package directly from PyPI using pip:

  ```bash
  pip install py_thumbpad
  ```



  Clone the repository and include the `py_thumbpad` package in your Pygame project.

  ```bash
  git clone https://github.com/kerodekroma/py-thumbpad.git
  ```



  If you've already installed the `py_thumbpad` package and want to update it to the latest version, you can easily do so using `pip`. Run the following command in your terminal or command prompt:

  ```bash
  pip install --upgrade py_thumbpad
  ```


  Here's a basic example of how to use PyThumbPad in your Pygame project:

  ```py
  from py_thumbpad import PyThumbPad, PY_THUMBPAD_Directions


  thumbpad = PyThumbPad((400, 300), {})


  running = True
  while running:
      for event in pygame.event.get():
          if event.type == pygame.QUIT:
              running = False

          thumbpad.listen_events(event)

      
      if PY_THUMBPAD_Directions.TOP in thumbpad.directions:
          print("Moving UP!")
      elif PY_THUMBPAD_Directions.BOTTOM in thumbpad.directions:
          print("Moving DOWN!")
      elif PY_THUMBPAD_Directions.LEFT in thumbpad.directions:
          print("Moving LEFT!")
      elif PY_THUMBPAD_Directions.RIGHT in thumbpad.directions:
          print("Moving RIGHT!")

      
      thumbpad.update()
      thumbpad.render(screen)

      pygame.display.flip()

  pygame.quit()
  ```



  When initializing PyThumbPad, you can pass a dictionary of options to customize the appearance and behavior:

  - `quadrants`: The number of directional quadrants (4 for up, down, left, right; 8 for diagonals as well). Default is 4.

  - `donut_color`: The color of the donut-shaped pad. Default is (123, 157, 243).

  - `button_color`: The color of the movable button pad. Default is (255, 255, 0).

  - `donut_bg_color`: The background color of the donut. Default is (0, 0, 0).

  Example:

  ```py
  thumb_pad = PyThumbPad((400, 300), {
      "quadrants": 8,
      "donut_color": (200, 100, 100),
      "button_color": (100, 200, 100),
      "donut_bg_color": (50, 50, 50)
  })
  ```



  `update()`
  Updates the state of the button pad. This method should be called within the game loop.

  `render(screen)`
  Renders the thumb pad on the provided Pygame surface.

  `listen_events(event)`
  Handles Pygame input events and updates the thumb pad's state.

  `get_directions(current_angle)`
  Returns the direction based on the current angle and the number of quadrants. This method is used internally by listen_events.



  Contributions are welcome! Feel free to submit a pull request or open an issue to discuss any changes or improvements.


  This project is licensed under the MIT License - see the MIT-LICENSE.txt file for details.


pkgId: 3e8586f8a309c8b9f00f1aa03ee196c160a9861a42e53d333ca964f4b42b5982
name: python-py-unhcr-help
arch: noarch
version: 0.1.2
epoch: 0
release: 1
summary: Development documents and examples for py-unhcr
url: https://github.com/chapig/py-unhcr
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-unhcr-0.1.2-1.src.rpm
location_href: Packages/python-py-unhcr-help-0.1.2-1.noarch.rpm
checksum_type: sha256
description:
  This is a wrapper for the UNHCR API. It is written in Python and uses the requests library to make HTTP requests to the API.



  You can install the package using pip:

  ```bash
  pip install py-unhcr
  ```


  To use the wrapper, you need to import the `UNHCR` class and create an instance of it. You can then use the methods provided by the class to interact
  with the API. Here is an example:

  ```python
  from py_unhcr import UNHCR


  unhcr = UNHCR()


  data = unhcr.set_filter(coo="AFG", year_from=2020).asylum_applications(dataframe=True)
  ```


  The `@dataframe` decorator can be used to automatically convert the response data to a pandas DataFrame. Here is an example:

  ```python
  from py_unhcr import UNHCR, dataframe

  unhcr_client = UNHCR()


  @dataframe
  def get_data():
      data = unhcr_client.set_filter(coo="VEN", year_from=2021).asylum_applications()
      return data


  data = get_data()
  ```


  To plot the data, you can use matplotlib. Here is an example:

  ```python
  import matplotlib.pyplot as plt
  from py_unhcr import UNHCR

  unhcr_client = UNHCR()
  unhcr = unhcr_client.set_filter(coo="VEN", year_from=2000, year_to=2024, coa_all=True).asylum_applications(
      dataframe=True)


  yearly_data = unhcr.groupby('year')['applied'].sum()


  plt.figure(figsize=(12, 6))  # Increase figure size for better readability
  yearly_data.plot(kind='line', marker='o')


  plt.title('Total Applications Over the Years')
  plt.xlabel('Year')
  plt.ylabel('Total Applications')


  plt.xticks(rotation=45)


  plt.xticks(ticks=range(min(yearly_data.index), max(yearly_data.index) + 1, 1))


  for x, y in zip(yearly_data.index, yearly_data):
      plt.text(x, y, str(x), fontsize=10, ha='right', va='bottom')


  plt.grid(True)


  plt.show()
  ```

  This would output a line plot showing the total number of applications over the years for the specified country.
  ![Total Applications Over the Years](https://github.com/chapig/py-unhcr/blob/main/example/output.png?raw=true)


  This project is a work in progress and more features will be added in the future. If you have any suggestions or feedback, feel free to open an issue or submit a pull request.

rpm_license:
  MIT License  Copyright (c) 2024 Luis Alfredo Chaparro Gomez  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: 9b3e3fa548aeb7d749f3b59fe65fcab69578d98648dbe1643a0e7508a2ceeff8
name: python-py-utls-help
arch: noarch
version: 0.3.0
epoch: 0
release: 1
summary: Development documents and examples for py-utls
url: https://github.com/cyrildever/py-utls
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-utls-0.3.0-1.src.rpm
location_href: Packages/python-py-utls-help-0.3.0-1.noarch.rpm
checksum_type: sha256
description:
  _Utilities for Python_

  ![PyPI](https://img.shields.io/pypi/v/py-utls)
  ![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/cyrildever/py-utls)
  ![GitHub last commit](https://img.shields.io/github/last-commit/cyrildever/py-utls)
  ![GitHub issues](https://img.shields.io/github/issues/cyrildever/py-utls)
  ![GitHub](https://img.shields.io/github/license/cyrildever/py-utls)

  `py-utls` is a small Python repository where I put all the useful stuff I regularly need in my projects. \
  Feel free to use at your discretion with the appropriate license mentions.

  _NB: I've developed the same kind of libraries for both [Go](https://github.com/cyrildever/go-utls) and [TypeScript](https://www.npmjs.com/package/ts-utls)._



  ```console
  pip install py-utls
  ```

  This repository contains the following modules:
  * `hex`:
    - `from_hex`: builds the byte array from a string;
    - `to_hex`: creates the hexadecimal representation of a byte array;
  * `list`:
    - `chunk`: split a list into chunks of a maximum size;
    - `flatten`: transforms a list of list of items to a list of items;
  * `number`:
    - `euclidean_division`: compute the euclidean division of the passed integers.


  ```python
  from pyutls.hex import from_hex, to_hex
  from pyutls.list import chunk, flatten
  from pyutls.number import euclidean_division


  barray = from_hex('1234abcd')
  hex_string = to_hex(barray)
  assertEqual(hex_string == '1234abcd')


  chunks = chunk(some_list, size)
  flat_list = flatten(chunks)
  assertListEqual(flat_list == some_list)


  quotient, remainder = euclidean_division(numerator, denominator)
  assertEqual(quotient * denominator + remainder == numerator)
  ```




  ```console
  $ python3 -m unittest discover
  ```




  These modules are distributed under a MIT license. \
  See the [LICENSE](LICENSE) file.


  <hr />
  &copy; 2022-2024 Cyril Dever. All rights reserved.


pkgId: 764e54069d49468de69134166ab0910e621b29bae6421f9bff4956d6eead8e76
name: python-py-visual-cobol-help
arch: noarch
version: 1.1.7
epoch: 0
release: 1
summary: Development documents and examples for py-visual-cobol
url: https://pypi.org/project/py-visual-cobol/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-visual-cobol-1.1.7-1.src.rpm
location_href: Packages/python-py-visual-cobol-help-1.1.7-1.noarch.rpm
checksum_type: sha256
description:
  ```bash
  py-visual-cobol
  │
  ├───py_visual_cobol
  │   ├───record_extractor.py
  │   ├───__init__.py
  │   │
  │   ├───constants
  │   │   ├───params.py
  │   │   └───__init__.py
  │   │
  │   └───utils
  │       ├───bytes_converter.py
  │       ├───segment_patterns_generator.py
  │       └─── __init__.py
  ├───tests
  │   │   test_bytes_converter.py
  │   │   test_segment_patterns_generator.py
  │   └───__init__.py
  │
  ├───poetry.lock
  ├───pyproject.toml
  └───README.md
  ```


  ```python
  from pyspark.sql.types import StructType, StructField, IntegerType, BinaryType
  from py_visual_cobol.record_extractor import record_header_extractor
  from pyspark.sql import SparkSession,functions as F
  from pyspark import StorageLevel
  import argparse
  import mmap


  def parse_args():
      """Parse command line arguments."""
      parser = argparse.ArgumentParser(description="Process a microfile.")
      parser.add_argument("file_path", type=str, help="Path to the microfile.")
      return parser.parse_args()

  if __name__ == "__main__":
      
      args = parse_args()

      
      with open(args.file_path, mode="rb") as file:
          
          with mmap.mmap(file.fileno(), length=0, access=mmap.ACCESS_READ) as mmapped_file:
              
              content = mmapped_file[:]  # Only extract bytes as needed

      records_length = [
              126,
              836,
              96,
              694,
              302,
          ]

      
      records = record_header_extractor(content,records_length=records_length,debug=True)

      print(len(records))
      spark = SparkSession.builder \
          .appName('app') \
          .config("spark.executor.memory", "8g") \
          .config("spark.driver.memory", "8g") \
          .config("spark.executor.cores", "8") \
          .config("spark.driver.maxResultSize", "0") \
          .config("spark.dynamicAllocation.enabled", "true") \
          .getOrCreate()


      


      schema = StructType([
          StructField("rdw", IntegerType(), True),
          StructField("value", BinaryType(), True)
      ])

      df = spark.createDataFrame(records, schema=schema)

      records.clear()

      df.persist(StorageLevel.DISK_ONLY)

      df.write.partitionBy("rdw").mode("overwrite").parquet("data", compression="snappy")
      df.unpersist(True)
      spark.stop()
  ```


pkgId: 6a41ec7048108998985a77b5bb1a2ccaf8cb18cd81e7bf43c2deb066839e9ba1
name: python-py-vomit-help
arch: noarch
version: 1.0.0
epoch: 0
release: 1
summary: Development documents and examples for py-vomit
url: https://pypi.org/project/py-vomit/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-vomit-1.0.0-1.src.rpm
location_href: Packages/python-py-vomit-help-1.0.0-1.noarch.rpm
checksum_type: sha256
description:
  [![Tests](https://github.com/bhmt/vomit/actions/workflows/tests.yml/badge.svg)](https://github.com/bhmt/vomit/actions/workflows/tests.yml)

  Make your python code somewhat unintelligible but still readable and still **functional**.

  Change the utf8 encoding of class names, function names, function args, and name nodes with a fitting unicode representation.
  Or switch those back from unicode to utf8.

  The ast is used and does not keep formating.

  The changes are inplace if using a file or a directory for input.



  The package is available on pypi and can be installed using pip.
  Activate a virtual environment and run

  ```

  pip install py-vomit

  ```



  As a module run vomit with a required option to either encode or decode.
  For input use a a stdin + stdout, a file, or a directory.
  Add more extensions if `.py` is not enough.
  Ignore node names, files, or directories if it keeps the code functional.


  ```shell

  usage: python -m vomit [-h] (-e | -d) [-f FILE] [-s SOURCE] [-i [IGNORE ...]] [-r [IGNORE_REGEX ...]] [-n [IGNORE_NAMES ...]] [-t [EXT ...]] [-v]

  options:
    -h, --help            show this help message and exit
    -e, --encode          indicate the file should be encoded
    -d, --decode          indicate the file should be decoded
    -f FILE, --file FILE  the file to encode or decode, defaults to stdin
    -s SOURCE, --source SOURCE
                          the directory to encode or decode files recursively
    -i [IGNORE ...], --ignore [IGNORE ...]
                          list of files and directories to skip when using source as input
    -r [IGNORE_REGEX ...], --ignore-regex [IGNORE_REGEX ...]
                          list of files and directories as regex patterns to skip when using source as input
    -n [IGNORE_NAMES ...], --ignore-names [IGNORE_NAMES ...]
                          list of node names to skip
    -t [EXT ...], --ext [EXT ...]
                          list of extensions to include along ".py" when using source as input
    -v, --verbose         verbose output used for file or source as input

  ```


  or use vomit as a library

  ```py

  from vomit import to_unicode
  from vomit import to_utf8
  from vomit import UNICODE_MAP

  print(to_utf8('🯳'))

  print(to_unicode('1'))

  print(UNICODE_MAP['2'])


  ```

rpm_license:
  MIT License  Copyright (c) 2023 bhmt  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: 08e99b93f857a8e9b76480f7e5db2ba8751dbeaeafba159b8394045498ef22e9
name: python-py-wifi-helper-help
arch: noarch
version: 2.0.1
epoch: 0
release: 1
summary: Development documents and examples for py-wifi-helper
url: https://github.com/changyy/py-wifi-helper
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py-wifi-helper-2.0.1-1.src.rpm
location_href: Packages/python-py-wifi-helper-help-2.0.1-1.noarch.rpm
checksum_type: sha256
description:
  This is a Python tool/library developed for macOS 13.5, Ubuntu 22.04, and Windows 10/11, primarily providing operations for wireless interfaces. It includes functionalities such as listing available wireless interfaces, scanning for WiFi signals using a specified wireless interface, connecting a chosen wireless interface to a specific WiFi access point, retrieving information about the connected WiFi access points for the specified wireless interface, and disconnecting the specified wireless interface.






  ```bash
  pip install pywifi comtypes
  ```


  ```bash
  pip install "pyobjc-core>=9.2" "pyobjc-framework-Cocoa>=9.2" "pyobjc-framework-CoreWLAN>=9.2"
  ```


  Requires `nmcli` to be installed:
  ```bash
  sudo apt-get install network-manager
  ```



  ```
  % py-wifi-helper --help
  usage: py-wifi-helper [-h] [--action {device,scan,connect,disconnect}] [--device DEVICE] [--ssid SSID] [--password PASSWORD] [--scanner-path SCANNER_PATH]

  options:
    -h, --help            show this help message and exit
    --action {device,scan,connect,disconnect}
                          command action
    --device DEVICE       interface
    --ssid SSID          ssid
    --password PASSWORD   password
    --scanner-path SCANNER_PATH
                          Path to WiFiScanner.app (macOS only)
  ```



  ```powershell
  > py-wifi-helper
  {
      "version": "1.0.0",
      "device": {
          "default": "Intel(R) Wi-Fi 6 AX201 160MHz",
          "list": [
              "Intel(R) Wi-Fi 6 AX201 160MHz"
          ],
          "error": null,
          "select": "Intel(R) Wi-Fi 6 AX201 160MHz"
      },
      "connection": {
          "default": {
              "ssid": "MyWiFi",
              "log": null
          },
          "Intel(R) Wi-Fi 6 AX201 160MHz": {
              "ssid": "MyWiFi",
              "log": null
          }
      },
      "action": {
          "name": "device",
          "status": true,
          "error": null,
          "log": null
      }
  }
  ```



  ```
  $ lsb_release -a
  No LSB modules are available.
  Distributor ID:	Ubuntu
  Description:	Ubuntu 22.04.3 LTS
  Release:	22.04
  Codename:	jammy

  $ sudo py-wifi-helper
  {
      "version": "1.0.0",
      "device": {
          "default": "wlxd1234567890",
          "list": [
              "wlxd1234567890"
          ],
          "error": null,
          "select": "wlxd1234567890"
      },
      "connection": {
          "default": {
              "ssid": null,
              "log": null
          },
          "wlxd1234567890": {
              "ssid": null,
              "log": null
          }
      },
      "action": {
          "name": "device",
          "status": true,
          "error": null,
          "log": null
      }
  }
  ```




  Starting from macOS 15+, scanning WiFi networks requires Location Services permission. You need to set up WiFiScanner.app first:

  ```bash

  py-wifi-helper-macos-setup


  py-wifi-helper-macos-setup --target-path ~/Applications/WiFiScanner.app
  ```

  After setup, you'll need to:
  1. Allow Location Services access when prompted
  2. Or manually enable Location Services for WiFiScanner in System Settings > Privacy & Security > Location Services



  ```
  % sw_vers
  ProductName:		macOS
  ProductVersion:		13.5
  BuildVersion:		22G74

  % py-wifi-helper
  {
      "version": "1.0.0",
      "device": {
          "default": "en0",
          "list": [
              "en0"
          ],
          "error": null,
          "select": "en0"
      },
      "connection": {
          "default": {
              "ssid": "MyHomeWIFIAP",
              "log": null
          },
          "en0": {
              "ssid": "MyHomeWIFIAP",
              "log": null
          }
      },
      "action": {
          "name": "device",
          "status": true,
          "error": null,
          "log": null
      }
  }
  ```

  For scanning operations, you can either use the default WiFiScanner.app location or specify a custom path:
  ```bash

  py-wifi-helper --action scan


  py-wifi-helper --action scan --scanner-path ~/Applications/WiFiScanner.app
  ```




  ```bash
  py-wifi-helper --action scan
  ```


  ```bash
  py-wifi-helper --action connect --ssid "MyWiFi" --password "12345678"
  ```


  ```bash
  py-wifi-helper --action disconnect
  ```


  ```bash
  py-wifi-helper --action scan --device "wlan0"
  ```



  - Windows requires administrator privileges for some operations
  - Ubuntu requires sudo for network operations
  - macOS requires Location Services permission for WiFi scanning (set up using `py-wifi-helper-macos-setup`)



  - Windows 10/11 (via pywifi)
  - macOS 13.5+ (via CoreWLAN)
  - Ubuntu 22.04+ (via nmcli)


pkgId: c993b00f8bce0b1deefe8ebe32e79a25230354e82e5fa14b41791198be86264d
name: python-py2fa-cli-help
arch: noarch
version: 1.1.1
epoch: 0
release: 1
summary: Development documents and examples for py2fa-cli
url: https://github.com/arcctgx/py2fa-cli
rpm_license: GPLv3
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py2fa-cli-1.1.1-1.src.rpm
location_href: Packages/python-py2fa-cli-help-1.1.1-1.noarch.rpm
checksum_type: sha256
description:
  [![PyPI version](https://img.shields.io/pypi/v/py2fa-cli?logo=python&label=PyPI)](https://pypi.org/project/py2fa-cli/)
  [![PePy downloads](https://img.shields.io/pepy/dt/py2fa-cli?logo=python&label=Downloads&color=%230C7DBE)](https://pepy.tech/project/py2fa-cli)

  Calculates and displays time-based one-time passwords (TOTP) for two-factor
  authentication:

  ```sh
  $ py2fa pypi.org
  One-time password: 123456 (valid for 13.7 seconds)
  ```



  For typical use:

  ```sh
  python3 -m pip install py2fa-cli
  ```

  For development:

  ```sh
  git clone https://github.com/arcctgx/py2fa-cli
  cd py2fa-cli
  python3 -m pip install --editable .
  ```



  * `pyotp`
  * `pyxdg`

  These dependencies will be installed automatically when `py2fa-cli` is installed
  by `pip`.



  TOTP secrets are stored in user's XDG configuration directory. Unless you
  changed your `XDG_CONFIG_HOME`, that will be `.config/py2fa/secrets.json` in
  your `$HOME`. The secrets file must not be world-accessible (readable, writable
  or executable): in such case `py2fa` will refuse to load it.

  The secrets file is a dictionary represented in JSON format, e.g.:

  ```json
  {
      "pypi.org": "MYPYPITOTPSECRET",
      "test.pypi.org": "MYTESTPYPITOTPSECRET",
      "example.com": "otpauth://totp/ExampleLLC:you@example.com?secret=HUNTER2&issuer=ExampleLLC&period=15"
  }
  ```

  The dictionary key is what you provide in the command-line, so just use any
  name that's convenient. The value is the shared TOTP secret in base32 format,
  or an `otpauth://` URI.



  It is not possible to extract the shared secret from the Microsoft Authenticator
  application once it's been configured. You can only obtain the shared secret
  during the initial setup of the authenticator app.

  When setting up 2FA and presented with a QR code, **do not** scan it directly
  with Microsoft Authenticator. Instead, use a generic QR code scanner app to
  retrieve the `otpauth://` URI, which will look similar to the example shown
  above. Store this URI in your `secrets.json` file. Afterward, you can still
  scan the QR code with Microsoft Authenticator if desired - both `py2fa` and
  the app will generate the same TOTP codes.

  A [known issue] with `otpauth://` URIs generated by Microsoft MFA is that they
  may not fully comply with the URI specification: the issuer parameter may differ
  from the issuer label. To work around this, you can either manually align the
  issuer parameter with the issuer label in your configuration file, or simply
  remove the issuer parameter from the URI.

  The example in the Configuration section above shows a compliant URI, where
  the issuer label (the part immediately following `totp/` and before the colon)
  matches the value of the `&issuer=` parameter.

  [known issue]: https://github.com/pyauth/pyotp/issues/120


pkgId: d035c0d349929dd45c8df5e99727fee3beb470c1cc76a8b29fc17b35528a40e6
name: python-py2nut-help
arch: noarch
version: 4.2.7
epoch: 0
release: 1
summary: Development documents and examples for py2nut
url: https://github.com/Laurent-Tupin/py2nut
rpm_license: Copyright 2022-2035
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py2nut-4.2.7-1.src.rpm
location_href: Packages/python-py2nut-help-4.2.7-1.noarch.rpm
checksum_type: sha256
description:
  It provides various functions to simplify the users life.




  You can install the package from [PyPI](https://pypi.org/project/py2nut/):

      python -m pip install py2nut

  The package is supported on Python 3.7 and above.






  You can call a function as this example:

      $ ----------------------------------------------------
      >>> from py2Nut import nutDate
      >>> nutDate.today()



  This is the libraries I am using with the package

      $ ----------------------------------------------------
      >>> beautifulsoup4==4.7.1
      >>> exchangelib==4.7.2
      >>> openpyxl==3.0.5
      >>> pandas==1.1.3
      >>> paramiko==2.6.0
      >>> psutil==5.9.0
      >>> pyodbc==4.0.32
      >>> pywin32==303
      >>> selenium==3.141.0
      >>> xlrd==1.2.0
      >>> XlsxWriter==1.3.5
      >>> xlwings==0.20.8



  To use nutAPI / Selenium Functionnalities:

      from py2Nut import nutApi as Api

      
      
      
      
      
      
      
      
      





  Temporary documentation for nutDate :

      from py2Nut import nutDate as dat

      dte_date = dat.fDte_formatToDate(dte_date, str_dateFormat = '%d/%m/%Y')
      """ fDte_formatToDate makes sure you will have a varable with a date format
          The first Argument is the Variable (date), and the format of the string if it is a sting
          It allows you to avoid testing the type of the variable and get your get Date anyhow"""

      int_dateDiff = dat.fInt_dateDifference(dte_date1, dte_date2)
      """ fInt_dateDifference give you the difference in days between 2 dates"""

      Date2 = dat.fDte_convertExcelInteger(Date)
      """ fDte_convertExcelInteger takes an integer as input,
          This is the integer you can find in Excel when it is a date
          And return the associated date  """


  Temporary documentation for nutDataframe :

      import py2Nut.nutDataframe as dframe

      bl_isempty = dframe.fBl_isDataframeEmpty(df_simple)
      """ Test if a Dataframe is empty"""

      df_simple = dframe.fDf_createSimpleDataframe()
      """ Create a simple dataframe to make test"""

      bl_compare, df_compare = dframe.fBl_compareDfCol({'df': df_1, 'colJoin': 'colJoin','colToCompare':'data'},
                                                        {'df': df_2,'colJoin': 'colJoin','colToCompare':'data'})
      """ compare 2 dataframe one a numeric column by joining the df and returning the difference """

      df_1['DataRounded'] = df_1['DataToBeRounded'].apply(lambda x: dframe.round_down(x))
      """ Use the Math Function floor() - Able to add a decimals like in Excel
          floor() rounds down. int() truncates.
          The difference is clear when you use negative numbers
          math.floor(-3.5)    -4
          int(-3.5)           -3"""

      df_2['DataRounded'] = df_2['DataToBeRounded'].apply(lambda x: dframe.round_up(x))
      """ Use the Math Function ceil() - Able to add a decimals like in Excel"""

      df_data = dframe.fDf_readCsv_enhanced(path, bl_header = None, str_sep = '|', l_names = range(33))
      """ Use the pandas method read_csv
          but resolving Parse Error and will try again after displaying a message
          Also resolving UnicodeDecodeError by detecting the encoding and trying again accordingly """

      df2 = dframe.fDf_removeDoublons(df1)
      """ Remove all rows that are exactly the same"""

      df2 = dframe.fDf_DropRowsIfNa_resetIndex(df1, l_colToDropNA = ['col1'])
      """ Drop the rows where all defined columns will be Nan
          And reset the index"""

      df2 = dframe.dDf_fillNaColumn(df1, 'col2', 'col1')
      """ Replace Nan in a column by the value in another column or a Constant """

      df2 = dframe.fDf_fillColUnderCondition(df1, 'NameColApply', df1['data'], 'NameColC', 'YES', bl_except = False)
      ''' Transform DF with condition
          ValueToApply can be a value or a lambda function'''


  Temporary documentation for nutOther :

      from py2Nut import nutOther as oth

      1. Decorators

      @oth.dec_singletonsClass
      class CLASS_TO_DECORATE():
      ''' Singeltons decorators: always use the first instance
          Example: connection to database, FTP (keep the same connection for performance and possibly Access issue)
          '''

      @oth.dec_getTimePerf(int_secondesLimitDisplay = 2)
      def function_TO_DECORATE(*args, **kwarks):
      ''' Time Performance Decorators on a function
          You can calculate and compare Performance on any function just by decorating it
          It will show nothing if the performance is better than a specific threshold you will defined
          '''

      @oth.dec_stopProcessTimeOut(int_secondesLimit = 10, returnIfTimeOut = False)
      def function_TO_DECORATE(*args, **kwarks):
      ''' This decorators allow to stop a process if it is too long
          For example, testing a folder existence might be very very long...'''


  Temporary documentation for nutApi :

      from py2Nut import nutApi as Api

      1. Class

      inst_getAPI = Api.C_API_simple( (str_uid, str_pwd) )
      inst_getAPI.api_connect_json( url )
      inst_getAPI.api_returnDataFrame( l_url_keyword = ['data', 'price'] )
      df_data = inst_getAPI.df_return
      """ The class inherit from C_API
              allows the user to read an URL and get back a dataframe from JSON format
          Is decorated to be a singleton"""


  Temporary documentation for nutEmail :

      DESIGN PATTERN: BUILDER for OUTLOOK / EXCHANGELIB
      Allow you to manage all relating to Emails with few lines of code

      from py2Nut import nutEmail as email

      1. Send an email with OUTLOOK

      o_builder_emailSend =   email.c_Outlook_send(**dic_param)
      o_otlk_Director =       email.c_otlk_Director(o_builder_emailSend)
      o_otlk_Director.SendMail()
      bl_success = o_otlk_Director._builder.bl_success
          OR
      bl_success = email.fBl_SendMail_desPatt(**dic_param)

      WHERE

      dic_param = dict(bl_draft = True, l_pathAttach=['path1_fileToEnclose'], str_message = 'Hello',
                       str_from='', str_to='', str_cc='', str_bcc='',str_subject='Subject')

      2. Download files from Received Email on Outlook

      o_builder_emailDwld =   email.c_Outlook_dwld(**dic_param)
      inst_Director =    email.c_otlk_Director(o_builder_emailDwld)
      inst_Director.Download_fMail()

      WHERE

      dic_param = dict(str_outAcctName = 'laurent@gmail.com', str_inbox = 'Inbox', l_folders = [],
                       str_subject = 'Sujet', str_to = '', str_cc = '', str_folder = 'PathForSaveFile',
                       str_File_startW = 'file_', str_File_endW = '_01.csv')

      3. Download files from Received Email with Excahngelib (not on Outlook)

      o_builder_emailDwld = 	email.c_Webmail_dwld(**dic_param)
      inst_Director =  	    email.c_otlk_Director(o_builder_emailDwld)
      inst_Director.Download_fMail()

      WHERE

      dic_param = dict(str_outAcctName = 'laurent@gmail.com', str_pwd = '*****', str_inbox = 'Inbox', l_folders = [],
                       str_subject = 'Sujet', str_to = '', str_cc = '', str_folder = 'PathForSaveFile',
                       str_File_startW = 'file_', str_File_endW = '_01.csv')


  Temporary documentation for nutFtp :

      Class c_FTP and c_SFTP allow you to Download / Upload on a server
      Decorated to be a singleton as to keep the same instance / connection
      FTP uses the ftplib library, SFTP paramiko

      from py2Nut import nutFtp as ftp

      1.1. Download FTP

      ftp.fBl_ftpDownFileBinary(host, uid, pwd, ['FTP Folder'], fileName, folderToSave, bl_ssl = False)
          OR
      _ftp = ftp.ftp_prep(host, uid, pwd, ['FTP Folder'], bl_ssl = False)
      _ftp.ftp_DownloadFile(fileName, folderToSave)

      1.2. Download SFTP

      ftp.ssh_downFile(host, uid, pwd, ['FTP Folder'], fileName, folderToSave, int_port = 10022)
          OR
      _sftp = sftp_prep(host, uid, pwd, ['FTP Folder'], int_timeout = -1, int_port = 10022)
      _sftp.sftp_DownloadFile(fileName, folderToSave)

      2.1 Upload FTP

      ftp.fBl_ftpUpFile_Bi(host, uid, pwd, ['FTP Folder'], fileName, folderToSave,  bl_ssl = False)
          OR
      _ftp = ftp_prep(host, uid, pwd, ['FTP Folder'], bl_ssl = False)
      _ftp.ftp_UploadFile(fileName, folderToSave)

      2.2 Upload SFTP

      bl_success = ftp.ssh_upFile(host, uid, pwd, ['FTP Folder'], fileName, folderToSave, int_port = 10022)
          OR
      _sftp = sftp_prep(host, uid, pwd, ['FTP Folder'], int_port = 10022)
      _sftp.sftp_UploadFile(fileName, folderToSave)


  Temporary documentation for nutDb :

      from py2Nut import nutDb as db

      1. Lite Db

      db_lite = db.c_db_lite(r'\db_param.db')
      db_lite.connect()
      df_UID = db_lite.getDataframe("SELECT * FROM tbl_Table")
      db_lite.closeConnection()
      """ This class allows you to manage simple lite database"""

      2. SQL Server (pyodbc)

      dbServer =  db.c_db_withLog()
      
      dbServer.dataframeCredentials(df_UID)

      
      db.db_SelectReq("SELECT top 10 * FROM tbl_Table")
      print(dbServer.df_result)

      
      db.db_EXEC('EXEC Stored_Procedure')


  Temporary documentation for nutFiles :

      from py2Nut import nutFiles as fl

      1. Functions

      fileName = fl.fStr_myFileName(__file__)
      ''' Get the Python File Name '''

      myPath = fl.fStr_myPath(__file__)
      ''' Get the path of the Python File'''

      EnvUserName = fl.fStr_GetEnvUserName()
      ''' Get the Environment of the USERPROFILE'''

      UserEmail = fl.fStr_GetUserEmail(str_emailExtension = '@corporation.com')
      ''' Get the Corporate Email of the user '''

      folder = fl.fStr_GetFolderFromPath(myPath)
      ''' Get the Folder from a file path '''

      FileName = fl.fStr_GetFileFromPath(myPath)
      ''' Get the file Name from a file path '''

      l_files =   fl.fL_listFile(myFolder)
      """ Listing all files and folder in a folder using the library glob """

      l_files =   fl.fList_FileInDir(myFolder)
      """ Listing all files and folder in a folder using the library os """

      if not fl.fBl_FileExist(_path):
      """ Test if a file exist. Giving a path, return a Boolean """

      if not fl.fBl_FolderExist(_path):
      """ Test if a folder exist. Giving a folder path, return a Boolean """

      if not fl.fBl_FolderExist_timeout(_path):
      """ Test if a folder exist. Giving a folder path, return a Boolean
          The function is decorated not to search for more than 10 secondes """

      fl.TrimTxtFile(str_path, bl_right = True)
      """ This function will Trim the space in a text file
          We can decide to Trim only the space on the left or right
          By default, the Trim is both side"""

      fl.Act_Rename(str_newFolder, str_oldName, str_newName, False)
      """ Renaming a file and if it failed using the lib os, it will MOVE the file with shutil """

      newName = fl.fStr_TransformFilName_fromXXX_forGlobFunction(fileName, bl_exactNumberX = False)
      """ Change a string with unknown characters (XXXX) into sth understandable by the glob library
          'file_{*}_1.zip' ==> 'file_*_1.zip'     ( bl_exactNumberX = False)
          'file_{XXXX}_1.zip' ==> 'file_????.zip' ( bl_exactNumberX = True)
          'file_{XXXX}.zip' ==> 'file_*.zip'      ( bl_exactNumberX = False)
          """

      L_filIn =   fl.fL_GetFileListInFolder(myFolder, fileName_X, bl_searchOnly, bl_exactNb)
      """ Return the list of files in a folder that match the pattern given of the fileName
          with {*} or {XXX} within """

      fileName = fl.fStr_GetMostRecentFile_InFolder(folder, fileName_X)
      """ Return the list of files in a folder that match the pattern given of the fileName
          with {*} or {XXX} within
          AND take the most recent one"""

      l_files_X = fl.fL_GetFileList_withinModel(l_files, str_fileName)
      """ If you have in memory a list of File Name
          you want to return the list of those who match the pattern given of the fileName
          with {*} or {XXX} within"""

      dte_modif = fl.fDte_GetModificationDate(myPath)
      """ Function Get the Modification Date of a file
          Useful for Update of App """

      l_pathReturn = fl.fL_KeepFiles_wTimeLimit(l_files, dte_after = 100)
      """ Filter a list of file Path to return the files that has been updated
          after X days in the past and before Y days in the past
          dte_after and dte_before can be date or integer of days in the past"""

      bl_creation = fl.fBl_createDir(myFolder)
      """ Create a Directory
          Return False if Directory exists, True if the folder has been created """

      o_file = fl.fO_readfile_parquet(str_pathFile, **d_options)
      """ fO_readfile_parquet reads parquet - require the libraries : pyarrow / fastparquet
          options: use_threads, engine='fastparquet', ... """

      str_sqlRequest = fl.fStr_ReadFile_sql(path)
      """ fStr_ReadFile_sql Opens and read the file as a single buffer"""

      df_data = fl.fDf_readExcelWithPassword(path, SheetName, ExcelPwd, 'A1:M400')
      """ You can read an Excel file protected with password - Requires to open the Excel App
          Also, for performance issue (and in order not to open Excel App again)
          it will create a csv copy named: fileName_sheetName.csv
          Once the csv created, the same function will only use |pd.read_csv()|
          Return a Dataframe"""

      d_data = fl.fDic_readExcelWithPassword_sevSh(path, ExcelPwd, d_shName_areaToLoad)
      """ You can read an Excel file protected with password - Requires to open the Excel App
          Also, for performance issue (and in order not to open Excel App again)
          it will create 1 CSV per sheet in the spredsheet named: fileName_sheetName.csv
          Once all the csv created, the same function will only use |pd.read_csv()|
          Return a sictionary of Dataframe, key will be the SheetNames
          """

      df_data = pd_read_excel(str_path, str_SheetName, bl_header)
      """ To be able to read xlsx files with the function: |pd.read_excel|
          You need to have a previous xlrd version (xlrd==1.2.0)
          And replace the file xlsx.py (/Lib/site-packages/xlrd) by the one in this library !!!
          If it fails the engine openxyl will be used
          You can pass a sheet_name and a header as input
          """

      fl.fStr_createExcel_1Sh(path, '', df_PCF, str_SheetName = '', bl_header = False)
      """ Create a single sheet Excel file"""

      fl.fStr_createExcel_SevSh(path, '', l_dfData, l_SheetName, bl_header = True)
      """ Create a several sheets Excel file, Input is a list of Dataframe
          Will use pd.ExcelWriter and will no return any error depending of the version of xlrd
          if |options = d_options| wont work, |engine_kwargs = {'options' : d_options}| will be tried as well
          """

      fl.fStr_createExcel_SevSh_celByCel(path, '', l_dfData, l_SheetName)
      """ Create a several sheets Excel file
          Input is a list of Dataframe and list of Sheet Names
          Will use xlsxwriter and fill the Excel Cell by Cell
          Performance may be pretty low
          Preferable to use the function : fStr_createExcel_SevSh
          """

      fl.fStr_fillExcel_InsertNewSheet(path, '', df_data, str_SheetName)
      """ Take an existing  Excel file and insert a new sheet
          Input is a list of Dataframe - Will use pd.ExcelWriter
          INSERT SHEET: 1 file out - 1 Dataframe - 1 Sheet """

      fl.fStr_fillXls_df_xlWgs_sevSh(folder, FileName, l_dfData, l_SheetName = l_shName)
      """ Take an existing Excel file and an existing sheet and fill it with new data
          Input is a Dataframe - Will use c_xlApp_xlwings class
          1 file out - 1 Dataframe - 1 Sheet"""

      str_path = fl.fStr_fillXls_df_xlWgs_sevSh(folder, FileName, l_dfData, l_SheetName = l_shName)
      """ Take an existing Excel file and several existing sheet and fill it with new data
          Input is a list of Dataframe, SheetNames - Will use c_win32_xlApp class
          1 fileout - n Dataframe - n Sheet"""

      Act_win32_SaveAsCleanFile(path, pathNew)
      """ Sometimes an Excel file is an old version and might be corrupted
          By Passing your file through this function, Excel App will be open, SaveAs and Close
          so the new File will be useable by Python after"""

      df_donnee = fl.fDf_convertToXlsx(path, SheetName, bl_header = None)
      """ Will use Act_win32_SaveAsCleanFile to make sure the file is not corrupted
          and SaveAs XLSX instead of XLS
          Read it and return the dataframe """

      df_donnee = fl.fDf_overwriteXlsx(path, SheetName, bl_header = None)
      """ Will use Act_win32_SaveAsCleanFile to save a non-corrupted XLSX file
          Read it and return the dataframe """

      fl.Act_convertToXls_fromXlsx(path)
      """ Will use Act_win32_SaveAsCleanFile to make sure the file is not corrupted
          and SaveAs XLS instead of XLSX """

      fl.Act_win32OConvertXls_pdf(path)
      """ Will open an Excel file and convert it into PDF"""

      bl_tooOld = fl.fBl_fileTooOld(path, int_dayHisto = 10)
      """ Return a boolean to know if a file is older than N days in the past """

      fl.del_fichier_ifOldEnought(path,'', int_dayToKeep = 10)
      """ Check is a file is older than N days in the past
          And if so, delete it
          If the folder where the file is supposed to be does not exist, the function will create it"""

      fl.ZipExtractFile(ZipPath, pathDest, FileName, bl_extractAll=False, str_zipPassword='')
      """ Will read a ZIP file and extract its content in a destination folder
          It can take password
          It can extract all or only a file"""

      fl.Act_StyleIntoExcel(path, format, sheetName)
      """ Take an Excel Spreadsheet and a sheet and apply a format to it
          str_format is a dictionary within a string,
          the dictionary will be build by the fucntion eval
          Example of format:
              "{'A1:M500':{'font':{'name':'Calibri', 'size':9}},
              'B3:B5':{'font':{'name':'Calibri', 'size':10, 'bold':True,'color':styl.colors.WHITE},
                      'alignment':{'horizontal':'right'},
                      'fill':{'patternType':'solid', 'fill_type':'solid', 'fgColor': 'F2F2F2'}},
              'Column_size':{'A':50,'B':35,'C':10,'D':10,'E':15,'F':15,'G':18,'H':10},
              'Table_bord':{'A3:A11':'normBlack', 'B3:B11':'normBlack'},
              'Table_bord_full':{'A1:B1':'normBlack'},
              'Table_bord_EndDown_full':{'A13':'normBlack'},
              'num_format':{'B6:B6':'#,##0.0000', 'B7:B8':'#,##0'},
              'num_format_col':{'G13':'#,##0.00',  'H13':'0.00%'}
              }"
          """

      Act_KillExcel()
      """ This function kills all session of Excel
          Including the 'ghost' session you would kill from the Task Manager """


      2. Class

      inst_xlWings = c_xlApp_xlwings()
      inst_xlWings.FindXlApp(bl_visible = True, bl_screen_updating = False, bl_display_alerts = False)
      inst_xlWings.OpenWorkbook(path)
      inst_xlWings.DefineWorksheet(SheetName, i + 1)
      inst_xlWings.InsertDf_inRange(df_data)
      inst_xlWings.close_Book(bl_saveBeforeClose = True)
      """ The class allow you to manage excel with the library xlwings which might work better than win32
          Open the Excel Office App, Close, Save, define / rename / create sheet, fill an area
          The class is decorated to be a singleton so we always use the same instance of Excel
          DOC: https://docs.xlwings.org/en/stable/api.html
          """

      inst_xlApp = fl.c_win32_xlApp()
      inst_xlApp.FindXlApp(bl_visible = True)
      inst_xlApp.OpenWorkbook(str_path)
      inst_xlApp.xlApp.DisplayAlerts = False
      inst_xlApp.ConvertToPdf()
      inst_xlApp.CloseWorkbook(bl_saveBeforeClose = True)
      """ The class allow you to manage excel with the library win32com.client
          Open the Excel Office App, Close, Save, define / rename / create sheet, fill an area
          The class is decorated to be a singleton so we always use the same instance of Excel
          """


  ***END***


pkgId: 0f8d793b83b5c00c4ca239e056d78cb2a9e5c04b6d7e4306d6c500148dc629da
name: python-py3-wget-help
arch: noarch
version: 1.0.5
epoch: 0
release: 1
summary: Development documents and examples for py3-wget
url: https://pypi.org/project/py3-wget/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py3-wget-1.0.5-1.src.rpm
location_href: Packages/python-py3-wget-help-1.0.5-1.noarch.rpm
checksum_type: sha256
description:
  A tool like wget for python, supporting a (optional) progress bar, cksum, timeout, retry failed download.


  ![Demo](assets/e1.gif)


  If errors occur, py3_wget re-runs the download


  Already existing files won't be downloaded by default
  ![Demo](assets/e3.gif)


  py3_wget can automatically check the correctness of the download through cksum, MD5 or SHA256
  ![Demo](assets/e4.gif)


  Install with
  ```
  pip install py3_wget
  ```


  ```
  py3_wget.download_file(
      url,
      output_path=None,
      overwrite=False,
      verbose=True,
      cksum=None,
      md5=None,
      sha256=None,
      max_tries=5,
      block_size_bytes=8192,
      retry_seconds=2,
      timeout_seconds=60,
  )
  ```


  - [ ] Optionally resume from partial download
  - [x] Optionally pass cksum to downloader to ensure file is correctly downloaded
  - [x] Optionally turn off tqdm (silent download)
  - [x] Optionally set timeout for download request


pkgId: 285569f1e7fb12709b467ccc01d421519b7e070d9f3762975750d03fc59512fc
name: python-py50-help
arch: noarch
version: 1.0.10
epoch: 0
release: 1
summary: Development documents and examples for py50
url: https://pypi.org/project/py50/
rpm_license: GPL-3.0-only
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py50-1.0.10-1.src.rpm
location_href: Packages/python-py50-help-1.0.10-1.noarch.rpm
checksum_type: sha256
description:
  ![py50_full.png](img/py50_full.png)



  ![Static Badge](https://img.shields.io/badge/py50_v1.0.9-13406E)
  [![Streamlit](https://img.shields.io/badge/Streamlit-1.34.0-FF4B4B.svg?style=flat&logo=Streamlit&logoColor=white)](https://py50-app.streamlit.app)
  ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/py50?style=flat&logo=python&logoColor=white)
  [![Documentation Status](https://readthedocs.org/projects/py50/badge/?version=latest)](https://py50.readthedocs.io/en/latest/?badge=latest)
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
  [![DOI](https://zenodo.org/badge/716929963.svg)](https://zenodo.org/doi/10.5281/zenodo.10183912)



  The aim of py50 is to make the generation of dose-respnose curves and annotated plots with statistics. The project was
  created primarily for my personal use and for my coworkers/classmates. I found many of my classmates/coworkers were
  using a program that I find to be unfriendly in generating dose-response curves or with calculating statistics and
  plots. During my search, I found other helpful repositories that can generate dose-response curves, calculate
  statistics, or make annotated plots. However, I found that these packages did not meet my requirements:

  1. Use Pandas for the Data so that it can be easily plugged into a Jupyter Notebook or Python scripts
  2. Adaptable to user needs
  3. Easy to use (hopefully!)

  The dose-response curves in py50 are built using the four parameter logistic regression model:
  $$Y = \text{Min} + \frac{\text{Max} - \text{Min}}{1 + \left(\frac{X}{\text{IC50}}\right)^{\text{Hill coefficient}}}$$
  where min is the minimum response value, max is the maximum response value, Y is the response values of the curves, and
  X is the concentration.

  The statistics and annotated plots are wrapped from [Pingouin](https://github.com/raphaelvallat/pingouin)
  and [Statannotations](https://github.com/trevismd/statannotations).
  This may have been done inelegantly and will be updated based on my use or recommendations by other. As things stand,
  this project meets my and the needs of my classmates/coworkers. Hopefully it can meet the needs of others.



  ```
  pip install py50
  ```

  Pacakge can be upgraded specifically using pip with the following:

  ```
  pip install py50 -U
  ```



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

  A Jupyter Notebook demoing the code can be found [here](https://github.com/tlint101/py50/tree/main/tutorials).

  A blog post demoing the code can be found at [Practice in Code](https://tlint101.github.io/practice-in-code/)



  For those who are not versed in python coding, py50 has been converted into a web application using Streamlit!

  The web application can be found here: [py50-app](https://py50-app.streamlit.app)

  The repository for the Streamlit app version can be found
  here: [py50-streamlit](https://github.com/tlint101/py50-streamlit)

  **NOTE:** Updates to the web application take more time. Updates will be made when possible or upon request.



  With the release of py50 v1.0.0, I have finished a project that has been on my mind for the past six months. My aim now
  will be to reformat the code for maintainability and to fix any bugs that I find or others report. I plan on maintaining
  py50 for the foreseeable future. As such, my current "To-Do" list (in no particular order) are as follows:

  - [ ] Complete To-Do notes in Python script
  - [X] Update Tutorials for clarity
  - [X] Update py50 Streamlit to version 1.0.0
  - [ ] Refactor code for maintainability
  - [ ] **Add error messages!**
  - [ ] (Bonus Points) Provide KNIME workflow?



  If you are interested in citing the repository, I have generated a DOI link using Zenodo
  here: [![DOI](https://zenodo.org/badge/716929963.svg)](https://zenodo.org/doi/10.5281/zenodo.10183912)

  For those using a citation manager, there is also a compressed endnote file that is available and can be
  downloaded [here](https://github.com/tlint101/py50/tree/v1.0.4/citation)

  Thanks for your interest!


pkgId: 6db6f148dec70cc4f638fd3f330e33d9ea57489fab914e042c3a7addbc39d825
name: python-py8chan-help
arch: noarch
version: 0.2.2
epoch: 0
release: 1
summary: Development documents and examples for py8chan
url: http://github.com/bibanon/py8chan
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-py8chan-0.2.2-1.src.rpm
location_href: Packages/python-py8chan-help-0.2.2-1.noarch.rpm
checksum_type: sha256
description:
  The Bibliotheca Anonoma’s **complete Python Wrapper for the 8chan API.**
  Uses requests, respects if-modified-since headers on updating threads.
  Caches thread objects. Fun stuff.
  An absolute must if you want to interface with or scrape from 8chan or
  other vichan-based imageboards/textboards, using a Python script.
  `Hosted
  Documentation <http://py8chan.readthedocs.org/en/latest/index.html>`__
  `Github Repository <https://github.com/bibanon/py8chan>`__
  You can install this library `straight from
  PyPi <https://pypi.python.org/pypi/py8chan>`__ with:
     pip install py8chan

rpm_license:
  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004  Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>  Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed.  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION  0. You just DO WHAT THE FUCK YOU WANT TO.


pkgId: 7b6323ab53433d93861b35a74f10f8e0d44e58276f8199705d3d4e09a5dea7d5
name: python-pyBiocFileCache-help
arch: noarch
version: 0.5.1
epoch: 0
release: 1
summary: Development documents and examples for pyBiocFileCache
url: https://github.com/epiviz/pyBiocFileCache
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyBiocFileCache-0.5.1-1.src.rpm
location_href: Packages/python-pyBiocFileCache-help-0.5.1-1.noarch.rpm
checksum_type: sha256
description:
  [![Project generated with PyScaffold](https://img.shields.io/badge/-PyScaffold-005CA0?logo=pyscaffold)](https://pyscaffold.org/)
  [![PyPI-Server](https://img.shields.io/pypi/v/pyBiocFileCache.svg)](https://pypi.org/project/pyBiocFileCache/)
  ![Unit tests](https://github.com/BiocPy/pyBiocFileCache/actions/workflows/pypi-test.yml/badge.svg)



  `pyBiocFileCache` is a Python package that provides a robust file caching system with resource validation, cache size management, file compression, and resource tagging. Compatible with [BiocFileCache R package](https://github.com/Bioconductor/BiocFileCache).



  Install from [PyPI](https://pypi.org/project/pyBiocFileCache/),

  ```bash
  pip install pybiocfilecache
  ```



  ```python
  from pybiocfilecache import BiocFileCache


  cache = BiocFileCache("path/to/cache/directory")


  resource = cache.add("myfile", "path/to/file.txt")


  resource = cache.get("myfile")


  print(resource.rpath)  # Path to cached file
  ```





  ```python
  from pybiocfilecache import BiocFileCache, CacheConfig
  from datetime import timedelta
  from pathlib import Path


  config = CacheConfig(
      cache_dir=Path("cache_directory"),
      max_size_bytes=1024 * 1024 * 1024,  # 1GB
      cleanup_interval=timedelta(days=7),
      compression=True
  )


  cache = BiocFileCache(config=config)
  ```



  ```python

  from datetime import datetime, timedelta

  resource = cache.add(
      "myfile",
      "path/to/file.txt",
      tags=["data", "raw"],
      expires=datetime.now() + timedelta(days=30)
  )


  resources = cache.list_resources(tag="data")


  results = cache.search("myfile", field="rname")


  cache.update("myfile", "path/to/new_file.txt")


  cache.remove("myfile")
  ```



  ```python

  stats = cache.get_stats()
  print(stats)


  removed_count = cache.cleanup()


  cache.purge()
  ```


pkgId: 607497259f690ca2a2a842da4eda562e38369a4df4394748b7ed83b293d855a6
name: python-pyBiocFileCache-help
arch: noarch
version: 0.6.0
epoch: 0
release: 1
summary: Development documents and examples for pyBiocFileCache
url: https://github.com/epiviz/pyBiocFileCache
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyBiocFileCache-0.6.0-1.src.rpm
location_href: Packages/python-pyBiocFileCache-help-0.6.0-1.noarch.rpm
checksum_type: sha256
description:
  [![Project generated with PyScaffold](https://img.shields.io/badge/-PyScaffold-005CA0?logo=pyscaffold)](https://pyscaffold.org/)
  [![PyPI-Server](https://img.shields.io/pypi/v/pyBiocFileCache.svg)](https://pypi.org/project/pyBiocFileCache/)
  ![Unit tests](https://github.com/BiocPy/pyBiocFileCache/actions/workflows/pypi-test.yml/badge.svg)



  `pyBiocFileCache` is a Python package that provides a robust file caching system with resource validation, cache size management, file compression, and resource tagging. Compatible with [BiocFileCache R package](https://github.com/Bioconductor/BiocFileCache).



  Install from [PyPI](https://pypi.org/project/pyBiocFileCache/),

  ```bash
  pip install pybiocfilecache
  ```



  ```python
  from pybiocfilecache import BiocFileCache


  cache = BiocFileCache("path/to/cache/directory")


  resource = cache.add("myfile", "path/to/file.txt")


  resource = cache.get("myfile")


  print(resource.rpath)  # Path to cached file
  ```





  ```python
  from pybiocfilecache import BiocFileCache, CacheConfig
  from datetime import timedelta
  from pathlib import Path


  config = CacheConfig(
      cache_dir=Path("cache_directory"),
      cleanup_interval=timedelta(days=7),
  )


  cache = BiocFileCache(config=config)
  ```



  ```python

  from datetime import datetime, timedelta

  resource = cache.add(
      "myfile",
      "path/to/file.txt",
      tags=["data", "raw"],
      expires=datetime.now() + timedelta(days=30)
  )


  resources = cache.list_resources(tag="data")


  results = cache.search("myfile", field="rname")


  cache.update("myfile", "path/to/new_file.txt")


  cache.remove("myfile")
  ```



  ```python

  stats = cache.get_stats()
  print(stats)


  removed_count = cache.cleanup()


  cache.purge()
  ```


pkgId: 5b24513fea7aebffa0aa4be3a5b620cbce296f6860eb90c321be3b2ad75ab25d
name: python-pyBlindOpt-help
arch: noarch
version: 0.1.3.4
epoch: 0
release: 1
summary: Development documents and examples for pyBlindOpt
url: https://github.com/mariolpantunes/pyBlindOpt
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyBlindOpt-0.1.3.4-1.src.rpm
location_href: Packages/python-pyBlindOpt-help-0.1.3.4-1.noarch.rpm
checksum_type: sha256
description:
  A library that implements several derivation-free optimization algorithms (such as genetic optimization).
  Currently, it implements six different algorithms:
  1. Hill climbing is a mathematical optimization technique that belongs to the family of local search. It is an iterative algorithm that starts with an arbitrary solution to a problem and then attempts to find a better solution by making an incremental change to the solution.
  2. Simulated annealing is a probabilistic technique for approximating the global optimum of a given function. Specifically, it is a metaheuristic to approximate global optimization in a large search space for an optimization problem.
  3. Genetic algorithm is a metaheuristic inspired by the process of natural selection that belongs to the larger class of evolutionary algorithms (EA). Genetic algorithms are commonly used to generate high-quality solutions to optimization and search problems by relying on biologically inspired operators such as mutation, crossover, and selection.
  4. Differential evolution is a method that optimizes a problem by iteratively trying to improve a candidate solution with regard to a given measure of quality. Such methods are commonly known as metaheuristics as they make few or no assumptions about the problem being optimized and can search very large spaces of candidate solutions.
  5. Particle swarm optimization is a computational method that optimizes a problem by iteratively trying to improve a candidate solution with regard to a given measure of quality. It solves a problem by having a population of candidate solutions, here dubbed particles, and moving these particles around in the search space according to simple mathematical formula over the particle's position and velocity. Each particle's movement is influenced by its local best-known position but is also guided toward the best-known positions in the search space, which are updated as better positions are found by other particles.
  6. Grey Wolf Optimization (GWO) is a population-based meta-heuristics algorithm that simulates the leadership hierarchy and hunting mechanism of grey wolves in nature.

  All the algorithms take advantage of the [joblib](https://joblib.readthedocs.io/en/latest/) library to speed up the objective function and cache the results.
  The code was optimized to a certain degree but was made for teaching purposes.
  Please consider other libraries if you are looking for a stable implementation, such as [pymoo](https://pymoo.org/).
  Regardless, any reported issues will be fixed as possible.


  The library can be used by adding this line to the requirement.txt file:

  ```bash
  git+https://github.com/mariolpantunes/pyBlindOpt@main#egg=pyBlindOpt
  ```

  Or add the following line to the requirements.txt file:

  ```bash
  pyBlindOpt>=0.1.3
  ```


  This library was documented using the google style docstring, it can be accessed [here](https://mariolpantunes.github.io/pyBlindOpt/). Run the following commands to produce the documentation for this library.

  ```bash
  pdoc --math -d google -o docs pyBlindOpt
  ```



  * **Mário Antunes** - [mariolpantunes](https://github.com/mariolpantunes)



  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details



  ![Python CI](https://github.com/mariolpantunes/optimization/workflows/Python%20CI/badge.svg)

  MIT License

  Copyright (c) 2021 Mário Antunes

  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: 29b0555980b9bb5140ded0eaa5913544e3b3441fcd2debbede2d70b84e78a451
name: python-pyExploitDb-help
arch: noarch
version: 0.2.59
epoch: 0
release: 1
summary: Development documents and examples for pyExploitDb
url: https://github.com/Hackman238/pyExploitDb
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyExploitDb-0.2.59-1.src.rpm
location_href: Packages/python-pyExploitDb-help-0.2.59-1.noarch.rpm
checksum_type: sha256
description:
  This is the new home of "pyExploidDb".



  pyExploitDb (https://shanewilliamscott.com)
  ==
  [![Python package](https://github.com/Hackman238/pyExploitDb/actions/workflows/master.yml/badge.svg)](https://github.com/Hackman238/pyExploitDb/actions/workflows/master.yml)
  [![Known Vulnerabilities](https://snyk.io/test/github/Hackman238/pyExploitDb/badge.svg?targetFile=requirements.txt)](https://snyk.io/test/github/Hackman238/pyExploitDb?targetFile=requirements.txt)
  [![Maintainability](https://api.codeclimate.com/v1/badges/a11151ec3314f93a777f/maintainability)](https://codeclimate.com/github/Hackman238/pyExploitDb/maintainability)



  Shane William Scott


  An optimized Python3 library to fetch the most recent exploit-database, create searchable indexes for CVE->EDBID and EDBID -> CVE, and provide methods to perform searches.


  > CPE database, indexes and mappings


  pip install pyExploitDb
  > Note: This assumes pip is for your python3 environment. Use pip3 if pip is for your python2 environment.


  ```python
  from pyExploitDb import PyExploitDb
  pEdb = PyExploitDb()
  pEdb.debug = False
  pEdb.openFile()
  results = pEdb.searchCve("CVE-2018-14592")
  print(results)
  ```


  CVE-2018-1459
  Found
  Exploit DB Id: 45447
  File: ./exploit-database/exploits/php/webapps/45447.txt
  Date: 2018-09-24
  Author: Haboob Team
  Platform: webapps
  Type: php
  Port: 80
  {'edbid': '45447', 'exploit': './exploit-database/exploits/php/webapps/45447.txt', 'date': '2018-09-24', 'author': 'Haboob Team', 'platform': 'webapps', 'type': 'php', 'port': '80'}


  Based on fork from https://github.com/GoVanguard/pyExploitDb by Shane Scott.
  Originally based on fork of cve_searchsploit by Andrea Fioraldi.


pkgId: 397ee27171bc411c727a120e83ab736301962751cf09684229615b430beec582
name: python-pyFreenet3-help
arch: noarch
version: 0.6.2
epoch: 0
release: 1
summary: Development documents and examples for pyFreenet3
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyFreenet3-0.6.2-1.src.rpm
location_href: Packages/python-pyFreenet3-help-0.6.2-1.noarch.rpm
checksum_type: sha256
description:
  README file for pyFreenet3

  PyFreenet3 is a suite of command-line freenet applications, as well as a
  powerful Python library, for Freenet.

  Contribute at https://github.com/hyphanet/pyFreenet


  Install via::

    $ pip3 install --upgrade --user pyFreenet3
    (this requires python3 and python3-setuptools and python3-distutils installed)

  To just upload a file into Freenet (currently only on GNU/Linux), install a Java JRE or JDK and then use::

    $ fcpupload --spawn <file>`

  It starts a Freenet node, uploads the file and returns the key to access the file via Freenet.


  If you need a library for Python 2, please use pyFreenet.


  This pyFreenet3 release includes:

   - command-line freenet client applications, which will get installed as
     executable commands in your PATH, including:

       - freesitemgr - a simple yet flexible freesite management utility
       - fcpnames - utility for managing the new 'name service' layer
       - fproxyproxy - an experimental http proxy that sits on top of
         fproxy, and translates human-friendly site names transparently
       - fcpget - a single key fetcher
       - fcpput - a single key inserter
       - fcpupload - fcpput with more convenient defaults
       - fcpgenkey - a keypair generator
       - fcpinvertkey - generate new SSK/USK keypairs
       - fcpredirect - insert a redirect from one 'key' to another 'key'.
       - copyweb - download a page from a website with all resources.

   - python package 'fcp3' and 'freenet3', containing classes for interacting with freenet.

   - an XML-RPC server for freenet access, which can be run standalone, or
     easily integrated into an existing website

  To get good API documentation, run::

    $ epydoc -n "pyFreenet API manual" -o html fcp

  When you install this package (refer INSTALL), you should
  end up with a command 'freesitemgr' on your PATH.

  'freesitemgr' is a console-based freesite insertion utility
  which keeps your freesite configs and status in a single
  config file (~/.freesitemgr, unless you specify otherwise).

  Just use 'freesitemgr add FOLDER' to upload a website into Freenet.

  Invoke 'freesitemgr -h' (or if on windows, 'freesitemgr.py -h')
  and read the options.

  release a new version::

    python3 setup.py sdist; python3 -m twine upload dist/pyFreenet3-0.5.5.tar.gz

url:
  http://127.0.0.1:8888/USK@~osOPnNLdMLVrYVNTahLufdwOuMhhC4GkpIHulnSm04,bwAmjkK-BZZnj-bujBQehwgGqUM1AUFhzTW4hcDGXQ0,AQACAAE/infocalypse_and_pyFreenet/5/


pkgId: f3c2e146701c94869822b5983981c9cb868646885125c006d656a68e8decda0e
name: python-pyPreservica-help
arch: noarch
version: 2.9.4
epoch: 0
release: 1
summary: Development documents and examples for pyPreservica
url: https://pypreservica.readthedocs.io/
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyPreservica-2.9.4-1.src.rpm
location_href: Packages/python-pyPreservica-help-2.9.4-1.noarch.rpm
checksum_type: sha256
description:
  [![Supported Versions](https://img.shields.io/pypi/pyversions/pyPreservica.svg)](https://pypi.org/project/pyPreservica)
  [![CodeQL](https://github.com/carj/pyPreservica/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/carj/pyPreservica/actions/workflows/codeql-analysis.yml)
  ![PyPI Downloads](https://static.pepy.tech/badge/pypreservica)

  Python language binding for the Preservica API

  https://preservica.com/

  This library provides a Python class for working with the Preservica Rest API

  https://developers.preservica.com/api-reference

  Wiki with example scripts https://github.com/carj/pyPreservica/wiki



  The full documentation is available at: https://pypreservica.readthedocs.io/

  [![Documentation Status](https://readthedocs.org/projects/pypreservica/badge/?version=latest)](https://pypreservica.readthedocs.io/en/latest/?badge=latest)



  Bug reports and pull requests are welcome on GitHub at https://github.com/carj/pyPreservica

  For announcements about new versions and discussion of pyPreservica please subscribe to the google groups
  forum https://groups.google.com/g/pypreservica



  The package is available as open source under the terms of the Apache License 2.0




  pyPreservica is available from the Python Package Index (PyPI)

  https://pypi.org/project/pyPreservica/

  To install pyPreservica, simply run this simple command in your terminal of choice:


      $ pip install pyPreservica


pkgId: cffda31b06b18702703c69a9843726e18c68121c73666b29c4261df0538347eb
name: python-pySMART-help
arch: noarch
version: 1.3.0
epoch: 0
release: 1
summary: Development documents and examples for pySMART
url: https://github.com/truenas/py-SMART
rpm_license: GNU LGPLv2.1
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pySMART-1.3.0-1.src.rpm
location_href: Packages/python-pySMART-help-1.3.0-1.noarch.rpm
checksum_type: sha256
description:
  ![](https://img.shields.io/pypi/v/pySMART?label=release)
  ![](https://img.shields.io/pypi/pyversions/pySMART)
  [![Python Tests](https://github.com/truenas/py-SMART/actions/workflows/check.yml/badge.svg)](https://github.com/truenas/py-SMART/actions/workflows/check.yml)
  ![](https://img.shields.io/github/actions/workflow/status/truenas/py-smart/publish-to-test-pypi.yml)
  ![](https://img.shields.io/github/issues/truenas/py-smart)
  ![](https://img.shields.io/github/issues-pr/truenas/py-smart)
  ![](https://img.shields.io/pypi/dm/pysmart)
  Copyright (C) 2021-2023 [Rafael Leira](https://github.com/ralequi)\
  Copyright (C) 2021 [Truenas team](https://www.truenas.com/)\
  Copyright (C) 2015 Marc Herndon
  pySMART is a simple Python wrapper for the ``smartctl`` component of
  ``smartmontools``. It is officially compatible with Linux, Windows and FreeBSD,
  as long as smartctl is on the system path. Running with administrative rights
  is strongly recommended, as smartctl cannot accurately detect all device types
  or parse all SMART information without these permissions.
  With only a device's name (ie: /dev/sda, pd0), the package will create a
  ``Device`` object, populated with all relevant information about that
  device. The documented API can then be used to query this object for
  information, initiate self-tests, and perform other functions.


pkgId: c7625af9aec255e619e551531dc72c825b5be48e9936931d634a1f7038e41ff5
name: python-pyacad-help
arch: noarch
version: 0.0.6
epoch: 0
release: 1
summary: Development documents and examples for pyacad
url: https://github.com/AxelTAG/pyacad.git
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyacad-0.0.6-1.src.rpm
location_href: Packages/python-pyacad-help-0.0.6-1.noarch.rpm
checksum_type: sha256
description:
  A package aimed to simplfy coding of Activex Automation Module of AutoCAD, based on pywin32 library.




  - Uses of COM (Componnent Object Model of Microsoft) for manipulate AutoCAD application with Python.
  - Python Autocad class for manipulate.



  ```
  from pyacad import Autocad, APoint


  acad = Autocad()
  p0 = APoint(1, 1)
  p1 = APoint(2, 3)
  acad.model.AddLine(p0, p1)


  acad.app.ZoomExtents()
  ```




  - Documentation at: [ReadTheDocs](https://pyacad.readthedocs.io/en/latest/)
  - Source code and issue tracking at: [GitHub](https://pypi.org/project/pyacad/)



  - If you want to pay me for a beer, coffee, or something else: [C|_|](https://www.paypal.com/paypalme/KevinAxelTagliaferri)


pkgId: f801e8eebbb933bcbda62f9b0ac0b78a4887953c8371a98c3c2f918bc06ef357
name: python-pyaida-help
arch: noarch
version: 0.1.1
epoch: 0
release: 1
summary: Development documents and examples for pyaida
url: https://pypi.org/project/pyaida/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyaida-0.1.1-1.src.rpm
location_href: Packages/python-pyaida-help-0.1.1-1.noarch.rpm
checksum_type: sha256
description:
  Tasks for aida
  1. create all the tables and a stored procedure that is capable of building background embeddings
  2. add the abstract models and the postgres client for CRUD
  3. Implement the callable instance manager with OpenAPI spec
  4. Test the planner on loading functions from database - all or by search - good use case to start thinking about query planner for context e.g. vector vs other


pkgId: f9dc1992341d8d99742c40de6fe72c9b5ce7146e6494b03c15ffdbe46d69445b
name: python-pyaida-help
arch: noarch
version: 0.1.2
epoch: 0
release: 1
summary: Development documents and examples for pyaida
url: https://pypi.org/project/pyaida/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyaida-0.1.2-1.src.rpm
location_href: Packages/python-pyaida-help-0.1.2-1.noarch.rpm
checksum_type: sha256
description:
  Pyaida is a python ai data architecture. It provides a simple way to build agentic systems with postgres.

  - Agent registry
  - Smart query
  - CRUD and semantics
  - Function registry


pkgId: fb727c365154b33daac83a2d3f8f8cdb6b7b045760715c228aeb57ed5d9c8b58
name: python-pyallel-help
arch: noarch
version: 1.2.8
epoch: 0
release: 1
summary: Development documents and examples for pyallel
url: https://github.com/Danthewaann/pyallel
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyallel-1.2.8-1.src.rpm
location_href: Packages/python-pyallel-help-1.2.8-1.noarch.rpm
checksum_type: sha256
description:
  Run and handle the output of multiple executables in `pyallel` (as in parallel)

  https://github.com/Danthewaann/pyallel/assets/22531177/8685eb92-aac5-440a-9170-30fd1460c53f

  Tested on Linux and MacOS only



  Pre-built executables are available on the [Releases](https://github.com/Danthewaann/pyallel/releases) page.

  `pyallel` can also be installed using pip (requires Python >=3.8):

  ```bash
  pip install pyallel
  ```



  Once installed, you can run `pyallel` to see usage information, like so:

  ```
  usage: pyallel [-h] [-t] [-n] [-V] [--colour {yes,no,auto}] [commands ...]

  Run and handle the output of multiple executables in pyallel (as in parallel)

  positional arguments:
    commands              list of quoted commands to run in parallel e.g "mypy ." "black ."

                          each command is executed inside a shell, so shell syntax is supported as
                          if you were running the command directly in a shell, some examples are below

                               "MYPY_FORCE_COLOR=1 mypy ."          <- provide environment variables
                               "mypy | tee -a mypy.log"             <- use pipes to redirect output
                               "cat > test.log < other.log"         <- use input and output redirection
                               "mypy .; pytest ."                   <- run commands one at a time in sequence
                               "echo \$SHELL" or "\$(echo mypy .)"  <- expand variables and commands to evaluate (must be escaped)
                               "pytest . && mypy . || echo failed!" <- use AND (&&) and OR (||) to run commands conditionally

                          commands can be grouped using the group separator symbol (:::)

                               "echo boil kettle" "sleep 1" ::: "echo make coffee"

                          the above will print "boil kettle" and sleep for 1 second first before printing "make coffee"

                          command groups are ran in the sequence you provide them, and if a command group fails
                          (if a command fails inside the command group) the rest of the command groups in the sequence are not run

  options:
    -h, --help            show this help message and exit
    -t, --no-timer        don't time how long each command is taking
    -n, --non-interactive
                          run in non-interactive mode
    -V, --version         print version and exit
    --colour {yes,no,auto}
                          colour terminal output, defaults to "auto"
  ```

  Currently you can provide a variable number of `commands` to run to `pyallel`, like so:

  > [!IMPORTANT]
  > If you need to provide arguments to a command, you must surround the command and it's arguments in quotes!

  ```bash
  pyallel "MYPY_FORCE_COLOR=1 mypy ." \
          "black --check --diff ." \
          "pytest ."
  ```



  You can also build an executable with the following (executables will be written to `./dist`):

  > [!NOTE]
  > The `arch=x86_64` values in the following code blocks can be replaced with `arch=aarch64` and
  > any other architecture that is supported by docker to build an executable for that given architecture

  > [!NOTE]
  > To build aarch64 binaries on an x86_64 host machine, you will need to run the following
  > commands to setup qemu to allow this to work

  ```bash
  sudo apt-get install qemu binfmt-support qemu-user-static && \
  docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
  ```



  ```bash
  docker build --tag pyallel --build-arg 'arch=x86_64' --build-arg "uid=$(id -u)" . && \
      docker run -e 'arch=x86_64' --rm --volume "$(pwd):/src" pyallel
  ```



  ```bash
  docker build --tag pyallel-alpine --build-arg 'arch=x86_64' --build-arg "uid=$(id -u)" --file Dockerfile.alpine . && \
      docker run -e 'arch=x86_64' --rm --volume "$(pwd):/src" pyallel-alpine
  ```



  ```bash
  python -m venv .venv && \
    source .venv/bin/activate && \
    pip install . -r requirements_build.txt && \
    ./build.sh
  ```



  ```bash
  ./build_all.sh
  ```



  - [x] Add support to have commands depend on other commands (some commands must complete
        before a given command can start)
  - [ ] Add a debug mode that logs debug information to a log file
  - [ ] Add support to state how many lines a command can use for it's output in interactive mode
  - [ ] Maybe add support to allow the user to provide stdin for commands that request it
        (such as a REPL)
  - [ ] Add custom parsing of command output to support filtering for errors (like vim's
        `errorformat`)
  - [ ] Allow list of files to be provided to supply as input arguments to each command
  - [ ] Allow input to be piped into `pyallel` via stdin to supply as standard input to each
        command


pkgId: 8eb1de364f8f5991389ddabd21c94502929f438263502808a97e01cc4a4c87c5
name: python-pyam-iamc-help
arch: noarch
version: 3.0.0
epoch: 0
release: 1
summary: Development documents and examples for pyam-iamc
url: https://github.com/IAMconsortium/pyam
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyam-iamc-3.0.0-1.src.rpm
location_href: Packages/python-pyam-iamc-help-3.0.0-1.noarch.rpm
checksum_type: sha256
description:
  [![license](https://img.shields.io/badge/license-Apache%202.0-black)](https://github.com/IAMconsortium/pyam/blob/main/LICENSE)
  [![pypi](https://img.shields.io/pypi/v/pyam-iamc.svg)](https://pypi.python.org/pypi/pyam-iamc/)
  [![conda](https://img.shields.io/conda/vn/conda-forge/pyam?logo=anaconda)](https://anaconda.org/conda-forge/pyam)
  [![last-release](https://img.shields.io/github/release-date/iamconsortium/pyam?logo=github&label=last%20release)](https://github.com/IAMconsortium/pyam/releases)
  <!-- replace python version by dynamic reference to pypi once Python versions are configured there -->
  [![Code style: ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
  [![python](https://img.shields.io/badge/python-≥3.10,<3.14-blue?logo=python&logoColor=white)](https://github.com/IAMconsortium/pyam)
  [![pytest](https://img.shields.io/github/actions/workflow/status/iamconsortium/pyam/pytest.yml?logo=GitHub&label=pytest)](https://github.com/IAMconsortium/pyam/actions/workflows/pytest.yml)
  [![ReadTheDocs](https://readthedocs.org/projects/pyam-iamc/badge/?version=latest)](https://pyam-iamc.readthedocs.io/en/latest/?badge=latest)
  [![codecov](https://codecov.io/gh/IAMconsortium/pyam/branch/main/graph/badge.svg)](https://codecov.io/gh/IAMconsortium/pyam)
  [![doi](https://zenodo.org/badge/113359260.svg)](https://doi.org/10.5281/zenodo.1470400)
  [![ORE](https://img.shields.io/badge/ORE-10.12688/openreseurope.13633.2-blue)](https://doi.org/10.12688/openreseurope.13633.2)
  [![joss](https://joss.theoj.org/papers/10.21105/joss.01095/status.svg)](https://joss.theoj.org/papers/10.21105/joss.01095)
  [![groups.io](https://img.shields.io/badge/mail-groups.io-blue)](https://pyam.groups.io/g/forum)
  [![slack](https://img.shields.io/badge/chat-Slack-orange)](https://pyam-iamc.slack.com)
  ****


pkgId: 8d81b9ad48bbe4da5b23a98f57b7a551314f527feab98a28f895e8697a6058b5
name: python-pyannote-viewer-help
arch: noarch
version: 1.0.1
epoch: 0
release: 1
summary: Development documents and examples for pyannote-viewer
url: https://pypi.org/project/pyannote-viewer/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyannote-viewer-1.0.1-1.src.rpm
location_href: Packages/python-pyannote-viewer-help-1.0.1-1.noarch.rpm
checksum_type: sha256
description:
  <a href="https://pypi.org/project/pyannote_viewer/" target="_blank"><img alt="PyPI - Version" src="https://img.shields.io/pypi/v/pyannote_viewer"></a>

  Gradio custom component to visualize pyannote's pipelines outputs



  ```bash
  pip install pyannote_viewer
  ```



  ```python
  import gradio as gr
  from pyannote_viewer import PyannoteViewer
  from pyannote.audio import Pipeline
  import os


  def apply_pipeline(audio: str) -> tuple:
      pipeline = Pipeline.from_pretrained(
          "pyannote/speech-separation-ami-1.0", use_auth_token=os.environ["HF_TOKEN"]
      )
      return pipeline(audio)


  with gr.Blocks() as demo:
      audio = gr.Audio(type="filepath")
      btn = gr.Button("Apply separation pipeline")
      pyannote_viewer = PyannoteViewer(interactive=False)

      btn.click(fn=apply_pipeline, inputs=[audio], outputs=[pyannote_viewer])


  if __name__ == "__main__":
      demo.launch()

  ```





  <table>
  <thead>
  <tr>
  <th align="left">name</th>
  <th align="left" style="width: 25%;">type</th>
  <th align="left">default</th>
  <th align="left">description</th>
  </tr>
  </thead>
  <tbody>
  <tr>
  <td align="left"><code>value</code></td>
  <td align="left" style="width: 25%;">

  ```python
  str
      | pathlib.Path
      | tuple[int, numpy.ndarray]
      | Callable
      | None
  ```

  </td>
  <td align="left"><code>None</code></td>
  <td align="left">A path, URL, or [sample_rate, numpy array] tuple (sample rate in Hz, audio data as a float or int numpy array) for the default value that SourceViewer component is going to take. If callable, the function will be called whenever the app loads to set the initial value of the component.</td>
  </tr>

  <tr>
  <td align="left"><code>sources</code></td>
  <td align="left" style="width: 25%;">

  ```python
  list["upload" | "microphone"] | None
  ```

  </td>
  <td align="left"><code>None</code></td>
  <td align="left">A list of sources permitted for audio. "upload" creates a box where user can drop an audio file, "microphone" creates a microphone input. The first element in the list will be used as the default source. If None, defaults to ["upload", "microphone"], or ["microphone"] if `streaming` is True.</td>
  </tr>

  <tr>
  <td align="left"><code>type</code></td>
  <td align="left" style="width: 25%;">

  ```python
  "numpy" | "filepath"
  ```

  </td>
  <td align="left"><code>"numpy"</code></td>
  <td align="left">The format the audio file is converted to before being passed into the prediction function. "numpy" converts the audio to a tuple consisting of: (int sample rate, numpy.array for the data), "filepath" passes a str path to a temporary file containing the audio.</td>
  </tr>

  <tr>
  <td align="left"><code>label</code></td>
  <td align="left" style="width: 25%;">

  ```python
  str | None
  ```

  </td>
  <td align="left"><code>None</code></td>
  <td align="left">The label for this component. Appears above the component and is also used as the header if there are a table of examples for this component. If None and used in a `gr.Interface`, the label will be the name of the parameter this component is assigned to.</td>
  </tr>

  <tr>
  <td align="left"><code>every</code></td>
  <td align="left" style="width: 25%;">

  ```python
  float | None
  ```

  </td>
  <td align="left"><code>None</code></td>
  <td align="left">If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute.</td>
  </tr>

  <tr>
  <td align="left"><code>show_label</code></td>
  <td align="left" style="width: 25%;">

  ```python
  bool | None
  ```

  </td>
  <td align="left"><code>None</code></td>
  <td align="left">if True, will display label.</td>
  </tr>

  <tr>
  <td align="left"><code>container</code></td>
  <td align="left" style="width: 25%;">

  ```python
  bool
  ```

  </td>
  <td align="left"><code>True</code></td>
  <td align="left">If True, will place the component in a container - providing some extra padding around the border.</td>
  </tr>

  <tr>
  <td align="left"><code>scale</code></td>
  <td align="left" style="width: 25%;">

  ```python
  int | None
  ```

  </td>
  <td align="left"><code>None</code></td>
  <td align="left">Relative width compared to adjacent Components in a Row. For example, if Component A has scale=2, and Component B has scale=1, A will be twice as wide as B. Should be an integer.</td>
  </tr>

  <tr>
  <td align="left"><code>min_width</code></td>
  <td align="left" style="width: 25%;">

  ```python
  int
  ```

  </td>
  <td align="left"><code>160</code></td>
  <td align="left">Minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first.</td>
  </tr>

  <tr>
  <td align="left"><code>interactive</code></td>
  <td align="left" style="width: 25%;">

  ```python
  bool | None
  ```

  </td>
  <td align="left"><code>None</code></td>
  <td align="left">If True, will allow users to upload and edit an audio file. If False, can only be used to play audio. If not provided, this is inferred based on whether the component is used as an input or output.</td>
  </tr>

  <tr>
  <td align="left"><code>visible</code></td>
  <td align="left" style="width: 25%;">

  ```python
  bool
  ```

  </td>
  <td align="left"><code>True</code></td>
  <td align="left">If False, component will be hidden.</td>
  </tr>

  <tr>
  <td align="left"><code>streaming</code></td>
  <td align="left" style="width: 25%;">

  ```python
  bool
  ```

  </td>
  <td align="left"><code>False</code></td>
  <td align="left">If set to True when used in a `live` interface as an input, will automatically stream webcam feed. When used set as an output, takes audio chunks yield from the backend and combines them into one streaming audio output.</td>
  </tr>

  <tr>
  <td align="left"><code>elem_id</code></td>
  <td align="left" style="width: 25%;">

  ```python
  str | None
  ```

  </td>
  <td align="left"><code>None</code></td>
  <td align="left">An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.</td>
  </tr>

  <tr>
  <td align="left"><code>elem_classes</code></td>
  <td align="left" style="width: 25%;">

  ```python
  list[str] | str | None
  ```

  </td>
  <td align="left"><code>None</code></td>
  <td align="left">An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.</td>
  </tr>

  <tr>
  <td align="left"><code>render</code></td>
  <td align="left" style="width: 25%;">

  ```python
  bool
  ```

  </td>
  <td align="left"><code>True</code></td>
  <td align="left">If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.</td>
  </tr>

  <tr>
  <td align="left"><code>format</code></td>
  <td align="left" style="width: 25%;">

  ```python
  "wav" | "mp3"
  ```

  </td>
  <td align="left"><code>"wav"</code></td>
  <td align="left">The file format to save audio files. Either 'wav' or 'mp3'. wav files are lossless but will tend to be larger files. mp3 files tend to be smaller. Default is wav. Applies both when this component is used as an input (when `type` is "format") and when this component is used as an output.</td>
  </tr>

  <tr>
  <td align="left"><code>autoplay</code></td>
  <td align="left" style="width: 25%;">

  ```python
  bool
  ```

  </td>
  <td align="left"><code>False</code></td>
  <td align="left">Whether to automatically play the audio when the component is used as an output. Note: browsers will not autoplay audio files if the user has not interacted with the page yet.</td>
  </tr>

  <tr>
  <td align="left"><code>show_download_button</code></td>
  <td align="left" style="width: 25%;">

  ```python
  bool | None
  ```

  </td>
  <td align="left"><code>None</code></td>
  <td align="left">If True, will show a download button in the corner of the component for saving audio. If False, icon does not appear. By default, it will be True for output components and False for input components.</td>
  </tr>

  <tr>
  <td align="left"><code>show_share_button</code></td>
  <td align="left" style="width: 25%;">

  ```python
  bool | None
  ```

  </td>
  <td align="left"><code>None</code></td>
  <td align="left">If True, will show a share icon in the corner of the component that allows user to share outputs to Hugging Face Spaces Discussions. If False, icon does not appear. If set to None (default behavior), then the icon appears if this Gradio app is launched on Spaces, but not otherwise.</td>
  </tr>

  <tr>
  <td align="left"><code>editable</code></td>
  <td align="left" style="width: 25%;">

  ```python
  bool
  ```

  </td>
  <td align="left"><code>True</code></td>
  <td align="left">If True, allows users to manipulate the audio file if the component is interactive. Defaults to True.</td>
  </tr>

  <tr>
  <td align="left"><code>min_length</code></td>
  <td align="left" style="width: 25%;">

  ```python
  int | None
  ```

  </td>
  <td align="left"><code>None</code></td>
  <td align="left">The minimum length of audio (in seconds) that the user can pass into the prediction function. If None, there is no minimum length.</td>
  </tr>

  <tr>
  <td align="left"><code>max_length</code></td>
  <td align="left" style="width: 25%;">

  ```python
  int | None
  ```

  </td>
  <td align="left"><code>None</code></td>
  <td align="left">The maximum length of audio (in seconds) that the user can pass into the prediction function. If None, there is no maximum length.</td>
  </tr>

  <tr>
  <td align="left"><code>waveform_options</code></td>
  <td align="left" style="width: 25%;">

  ```python
  WaveformOptions | dict | None
  ```

  </td>
  <td align="left"><code>None</code></td>
  <td align="left">A dictionary of options for the waveform display. Options include: waveform_color (str), waveform_progress_color (str), show_controls (bool), skip_length (int), trim_region_color (str). Default is None, which uses the default values for these options.</td>
  </tr>
  </tbody></table>




  | name | description |
  |:-----|:------------|
  | `stream` | This listener is triggered when the user streams the PyannoteViewer. |
  | `change` | Triggered when the value of the PyannoteViewer changes either because of user input (e.g. a user types in a textbox) OR because of a function update (e.g. an image receives a value from the output of an event trigger). See `.input()` for a listener that is only triggered by user input. |
  | `clear` | This listener is triggered when the user clears the PyannoteViewer using the X button for the component. |
  | `play` | This listener is triggered when the user plays the media in the PyannoteViewer. |
  | `pause` | This listener is triggered when the media in the PyannoteViewer stops for any reason. |
  | `stop` | This listener is triggered when the user reaches the end of the media playing in the PyannoteViewer. |
  | `start_recording` | This listener is triggered when the user starts recording with the PyannoteViewer. |
  | `pause_recording` | This listener is triggered when the user pauses recording with the PyannoteViewer. |
  | `stop_recording` | This listener is triggered when the user stops recording with the PyannoteViewer. |
  | `upload` | This listener is triggered when the user uploads a file into the PyannoteViewer. |





  The impact on the users predict function varies depending on whether the component is used as an input or output for an event (or both).

  - When used as an Input, the component only impacts the input signature of the user function.
  - When used as an output, the component only impacts the return signature of the user function.

  The code snippet below is accurate in cases where the component is used as both an input and an output.

  - **As output:** Is passed, passes audio as one of these formats (depending on `type`): a `str` filepath, or `tuple` of (sample rate in Hz, audio data as numpy array). If the latter, the audio data is a 16-bit `int` array whose values range from -32768 to 32767 and shape of the audio data array is (samples,) for mono audio or (samples, channels) for multi-channel audio.
  - **As input:** Should return, expects audio data in any of these formats: a `str` or `pathlib.Path` filepath or URL to an audio file, or a `bytes` object (recommended for streaming), or a `tuple` of (sample rate in Hz, audio data as numpy array). Note: if audio is supplied as a numpy array, the audio will be normalized by its peak value to avoid distortion or clipping in the resulting audio.

   ```python
   def predict(
       value: str | tuple[int, numpy.ndarray] | None
   ) -> tuple[
          pyannote.core.annotation.Annotation,
          numpy.ndarray | pathlib.Path | str,
      ]
      | None:
       return value
   ```



  ```python
  @dataclasses.dataclass
  class WaveformOptions:
      waveform_color: str | None = None
      waveform_progress_color: str | None = None
      trim_region_color: str | None = None
      show_recording_waveform: bool = True
      show_controls: bool = False
      skip_length: int | float = 5
      sample_rate: int = 44100
  ```


pkgId: 018858367b122409121d16a3775b6ba1882ad4174a0afe01f507863f23bc3f88
name: python-pyansys-help
arch: noarch
version: 2024.2.5
epoch: 0
release: 1
summary: Development documents and examples for pyansys
url: https://pypi.org/project/pyansys/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyansys-2024.2.5-1.src.rpm
location_href: Packages/python-pyansys-help-2024.2.5-1.noarch.rpm
checksum_type: sha256
description:
  |pyansys| |python| |pypi| |downloads| |GH-CI| |MIT| |black| |pre-commit|
  Welcome to the PyAnsys metapackage repository. The ``pyansys`` metapackage
  provides a single package of collected PyAnsys packages that ensures compatibility
  of these packages amongst themselves and the Ansys product release that they are linked to.
  The ``pyansys`` metapackage ensures compatibility between these PyAnsys packages:
  - `PyACP <https://acp.docs.pyansys.com/>`_: Pythonic interface to Ansys Composite PrepPost (ACP).
  - `PyAdditive <https://additive.docs.pyansys.com/>`_: Pythonic interface to the Ansys Additive service.
  - `PyAdditive Widgets <https://widgets.additive.docs.pyansys.com/>`_: PyAdditive widget toolkit to visualize additive parametric study results.
  - `PyAEDT <https://aedt.docs.pyansys.com/>`_: Pythonic interface to Ansys Electronics Desktop (AEDT).
  - `PyAnsys Geometry <https://geometry.docs.pyansys.com/>`_: Pythonic interface to the Ansys Geometry service.
  - `PyAnsys Math <https://math.docs.pyansys.com/>`_: Pythonic interface to PyAnsys Math libraries.
  - `PyAnsys Sound <https://sound.docs.pyansys.com/>`_: Pythonic interface to Ansys Sound.
  - `PyConceptEV <https://conceptev.docs.pyansys.com/>`_: Pythonic interface to Ansys ConceptEV library.
  - `PyDPF - Core <https://dpf.docs.pyansys.com/>`_: Pythonic interface to the Data Processing Framework (DPF) for building advanced and customized workflows.
  - `PyDPF - Post <https://post.docs.pyansys.com/>`_: Pythonic interface to access and post process Ansys solver result files.
  - `PyDPF - Composites <https://composites.dpf.docs.pyansys.com/>`_: Pythonic interface to postprocess layered and short-fiber composite models.
  - `PyDyna <https://dyna.docs.pyansys.com/>`_: Pythonic interface to build the Ansys DYNA input deck, submit it to the Ansys LS-DYNA solver, and postprocess its results.
  - `PyDynamicReporting <https://dynamicreporting.docs.pyansys.com/>`_: Pythonic interface to Ansys Dynamic Reporting for service and control of its database and reports.
  - `PyEDB <https://edb.docs.pyansys.com/>`_: Pythonic interface to the Ansys Electronics Database (EDB) client library.
  - `PyEDB - Core <https://edb.core.docs.pyansys.com/>`_: Pythonic interface to Ansys Electronics Database (EDB).
  - `PyEnSight <https://ensight.docs.pyansys.com/>`_: Pythonic interface to EnSight, the Ansys simulation postprocessor.
  - `PyFluent <https://fluent.docs.pyansys.com/>`_: Pythonic interface to Ansys Fluent.
  - `PyFluent - Visualization <https://visualization.fluent.docs.pyansys.com/>`_: Pythonic interface to visualize Ansys Fluent simulations.
  - `PyGranta <https://grantami.docs.pyansys.com/>`_: Pythonic interface to Ansys Granta MI services.
  - `PyHPS <https://hps.docs.pyansys.com/version/dev/>`_: A Python client for Ansys HPC Platform Services (HPS).
  - `PyMAPDL <https://mapdl.docs.pyansys.com/>`_: Pythonic interface to Ansys MAPDL (Mechanical APDL).
  - `PyMAPDL Reader <https://reader.docs.pyansys.com/>`_: Pythonic interface to read legacy MAPDL result files (MAPDL 14.5 and later).
  - `PyMechanical <https://mechanical.docs.pyansys.com/>`_: Pythonic interface to Ansys Mechanical.
  - `PyModelCenter <https://modelcenter.docs.pyansys.com/>`_: Pythonic interface for Ansys ModelCenter
  - `PyMotorCAD <https://motorcad.docs.pyansys.com/>`_: Pythonic interface to Ansys Motor-CAD.
  - `PyOptislang <https://optislang.docs.pyansys.com/>`_: Pythonic interface to Ansys optislang.
  - `PyPIM <https://pypim.docs.pyansys.com/>`_: Pythonic interface to communicate with the Ansys PIM (Product Instance Management) API.
  - `PyPrimeMesh <https://prime.docs.pyansys.com/>`_: Python library to acquire geometries and prepare surface and volume meshes for multiple solvers.
  - `PyRocky <https://rocky.docs.pyansys.com/>`_: Python library to communicate with Ansys Rocky using Rocky PrePost API.
  - `PySeascape <https://seascape.docs.pyansys.com/>`_: Pythonic interface to communicate with Ansys RedHawkSC and TotemSC.
  - `PySherlock <https://sherlock.docs.pyansys.com/>`_: Pythonic interface to communicate with Ansys Sherlock.
  - `PySimAI <https://simai.docs.pyansys.com/>`_: Pythonic interface to use SimAI.
  - `PySystemCoupling <https://systemcoupling.docs.pyansys.com/>`_: Pythonic interface to communicate with Ansys System Coupling.
  - `PyTurboGrid <https://turbogrid.docs.pyansys.com/>`_: Pythonic interface to Ansys TurboGrid, a high-quality turbomachinery meshing software app.
  - `PyTwin <https://twin.docs.pyansys.com/>`_: Pythonic interface to communicate with consumption workflows for Ansys digital twins.
  - `PyWorkbench <https://workbench.docs.pyansys.com/>`_: Pythonic interface to Ansys Workbench.
  - `Shared Components <https://shared.docs.pyansys.com/>`_: Shared Ansys software components to enable package interoperability and minimize maintenance.
  Other tools delivered as part of the metapackage are:
  - `Ansys FileTransfer Tool <https://filetransfer.tools.docs.pyansys.com/>`_: Simple gRPC API tool for moving files between a client and a remote server.
  - `Ansys Local Product Launcher <https://local-product-launcher.tools.docs.pyansys.com/>`_: Python utility for launching Ansys products on a local machine and configuring their launch settings.
  - `Ansys Tools Path <https://path.tools.docs.pyansys.com/>`_: Library to locate Ansys products in a local machine.
  - `Ansys Tools Protobuf Compilation Helper <https://ansys.github.io/ansys-tools-protoc-helper/>`_: Utility library to compile ``.proto`` files to Python source when building the package wheel.
  - `Ansys Tools Visualization Interface <https://visualization-interface.tools.docs.pyansys.com/>`_: Python interface between PyAnsys libraries and plotting backends
  - `PyAnsys Tools Report <https://report.tools.docs.pyansys.com/>`_:  Tool for reporting your Python environment's package versions and hardware resources in a standardized way.
  - `PyAnsys Tools Variable Interop <https://variableinterop.docs.pyansys.com/>`_: Tool for defining basic variables, types, metadata, and values intended to provide interoperability between all products.
  - `PyAnsys Tools Versioning <https://versioning.tools.docs.pyansys.com/>`_: Tool for backwards and forwards server support.
  - `PyAnsys Units <https://units.docs.pyansys.com/>`_: Pythonic interface for units, unit systems, and unit conversions.
  - `PyMaterials Manager <https://manager.materials.docs.pyansys.com/>`_: Python package for unifying material management across the Ansys portfolio.
  Much effort is underway to continue expanding and developing packages in the
  `PyAnsys GitHub <https://github.com/ansys/>`__ account. On the ``Issues`` page
  for each package, you can post issues and request new features. You can also feel
  free to post a question on the `Ansys Developer Forums <https://discuss.ansys.com/>`_.
  By default, the PyAnsys metapackage installs these core modules:
  - `PyACP`_
  - `PyAdditive`_
  - `PyAdditive Widgets`_
  - `PyAEDT`_
  - `PyAnsys Geometry`_
  - `PyAnsys Math`_
  - `PyAnsys Sound`_
  - `PyConceptEV`_
  - `PyDPF - Core`_
  - `PyDPF - Post`_
  - `PyDPF - Composites`_
  - `PyDyna`_
  - `PyDynamicReporting`_
  - `PyEDB`_
  - `PyEDB - Core`_
  - `PyEnSight`_
  - `PyFluent`_
  - `PyGranta`_
  - `PyHPS`_
  - `PyMAPDL`_
  - `PyMechanical`_
  - `PyMotorCAD`_
  - `PyOptislang`_
  - `PyPIM`_
  - `PyPrimeMesh`_
  - `PyRocky`_
  - `PySeascape`_
  - `PySherlock`_
  - `PySimAI`_
  - `PySystemCoupling`_
  - `PyTurboGrid`_
  - `PyTwin`_
  - `PyWorkbench`_
  - `Shared Components`_
  Additionally, the ``pyansys`` metapackage contains certain extra targets that
  can be installed upon request:
  - **mapdl-all**: This target installs the core packages and `PyMAPDL Reader`_.
  - **fluent-all**: This target installs the core packages, and `PyFluent - Visualization`_.
  - **tools**: This target installs the core packages, `Ansys FileTransfer Tool`_, `Ansys Local Product Launcher`_, `Ansys Tools Path`_, `Ansys Tools Protobuf Compilation Helper`_, `PyAnsys Tools Report`_, `PyAnsys Tools Variable Interop`_, `PyAnsys Tools Versioning`_, `PyAnsys Units`_, and `PyMaterials Manager`_.
  - **all**: This target installs all extra ``pyansys`` packages.


pkgId: a57fc1fa0df2352cb8ddcbe164ad9264b5b0e5ad6ba040c939ccde33a4856dab
name: python-pyasic-help
arch: noarch
version: 0.66.0
epoch: 0
release: 1
summary: Development documents and examples for pyasic
url: https://github.com/UpstreamData/pyasic
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyasic-0.66.0-1.src.rpm
location_href: Packages/python-pyasic-help-0.66.0-1.noarch.rpm
checksum_type: sha256
description:
  Welcome to `pyasic`!  `pyasic` uses an asynchronous method of communicating with ASIC miners on your network, which makes it super fast.


pkgId: 55efcca66989e614a9f29221afdffc2121acd1ea8de97049c7fbe68696c415b3
name: python-pyaurorax-help
arch: noarch
version: 1.7.0
epoch: 0
release: 1
summary: Development documents and examples for pyaurorax
url: https://github.com/aurorax-space/pyaurorax
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyaurorax-1.7.0-1.src.rpm
location_href: Packages/python-pyaurorax-help-1.7.0-1.noarch.rpm
checksum_type: sha256
description:
  <a href="https://aurorax.space/"><img alt="AuroraX" src="logo.svg" height="60"></a>

  [![GitHub tests](https://github.com/aurorax-space/pyaurorax/actions/workflows/tests_default.yml/badge.svg)](https://github.com/aurorax-space/pyaurorax/actions/workflows/tests_default.yml)
  [![PyPI version](https://img.shields.io/pypi/v/pyaurorax.svg)](https://pypi.python.org/pypi/pyaurorax/)
  ![PyPI Python versions](https://img.shields.io/pypi/pyversions/pyaurorax)
  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5815984.svg)](https://doi.org/10.5281/zenodo.5815984)

  PyAuroraX is a Python library providing data access and analysis support for All-Sky Imager data (THEMIS, TREx, REGO, etc.), the ability to utilize the TREx Auroral Transport Model, and interact with the AuroraX Search Engine. [AuroraX](https://aurorax.space) is a project working to be the world's first and foremost data platform for auroral science. The primary objective is to enable mining and exploration of existing and future auroral data, enabling key science and enhancing the benefits of the world's investment in auroral instrumentation. We have developed key systems/standards for uniform metadata generation and search, image content analysis, interfaces to leading international tools, and a community involvement that includes more than 80% of the world's data providers.

  PyAuroraX officially supports Python 3.9+.

  Some links to help:
  - [Example Gallery](https://data.phys.ucalgary.ca/working_with_data/index.html#python)
  - [PyAuroraX API Reference](https://docs.aurorax.space/code/pyaurorax_api_reference/pyaurorax)
  - [AuroraX main website](https://aurorax.space)



  PyAuroraX is available on PyPI so pip can be used to install it:

  ```console
  $ pip install pyaurorax
  ```

  Futhermore, if you want the most bleeding edge version of PyAuroraX, you can install it directly from the Github repository:

  ```console
  $ git clone https://github.com/aurorax-space/pyaurorax.git
  $ cd pyaurorax
  $ pip install .
  ```



  There are two things you can use as part of the PyAuroraX library: the main library, and the command line tool.

  You can import the library using the following statement:

  ```python
  >>> import pyaurorax
  >>> aurorax = pyaurorax.PyAuroraX()
  ```

  The program `aurorax-cli` is included in the PyAuroraX package as a command line tool. Try it out using:

  ```
  $ aurorax-cli --help
  ```



  A significant upgrade was released for PyAuroraX for version 1.0.0. A major code reorganization and addition of many new features is part of version 1.x, and therefore includes breaking changes. The existing codebase from v0.13.3 and earlier has remained mostly unchanged, but, has been reorganized and some classes
  were renamed. Simply changing the names of imports, function calls, and/or class instantiations should suffice in most cases.

  Please refer to the `RELEASE_NOTES.md` file for a full breakdown of what was changed, the [documentation](https://docs.aurorax.space/code/overview), and the [API Reference](https://docs.aurorax.space/code/pyaurorax_api_reference/pyaurorax) to help adjust your code.



  Bug reports, feature suggestions, and other contributions are greatly appreciated!

  Templates for bug report and feature suggestions can be found when creating a Github Issue. If you have questions or issues installing PyAuroraX, we encourage that you open up a topic in the Github Discussions page.


pkgId: 189621f0f773b61d04e04ab40385e7c017e2d8efe812c7f60c2e62b8f37cff13
name: python-pyautobot-help
arch: noarch
version: 1.0.5
epoch: 0
release: 1
summary: Development documents and examples for pyautobot
url: https://github.com/blacktear23/pyautobot
rpm_license: BSD
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyautobot-1.0.5-1.src.rpm
location_href: Packages/python-pyautobot-help-1.0.5-1.noarch.rpm
checksum_type: sha256
description:
  pyautobot is a Python library provide functions that do robotic process automation jobs.

  It combines below librarys to archive the target:

  * PyAutoGUI and pyperclip: control clipboard, mouse and keyboard operations.
  * Selenium: control Chrome browser.
  * OpenCV-Python: provide graphic based operation.
  * EasyOCR: provide OCR functions.


pkgId: 00b0a9d7d9563dd2deff4064daa6c59cbc963baf4d791fea945f6c8000310f51
name: python-pybalt-help
arch: noarch
version: 2024.12.8
epoch: 0
release: 1
summary: Development documents and examples for pybalt
url: https://github.com/nichind/pybalt
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pybalt-2024.12.8-1.src.rpm
location_href: Packages/python-pybalt-help-2024.12.8-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center" style="display: flex; flex-flow: column wrap;">
    <img src='./assets/logo.png' style='border-radius: 8px; width: 124px'></img>
    <h3>pybalt</h3>
    <h5>CLI tool and python module for downloading media through Cobalt processing instances.</h5>

    [![Get on PyPI](https://img.shields.io/pypi/v/pybalt.svg)](https://pypi.org/project/pybalt/)
    [![Last commit](https://img.shields.io/github/last-commit/nichind/pybalt.svg)](https://github.com/nichind/pybalt)
    [![Pip module installs total downloads](https://img.shields.io/pypi/dm/pybalt.svg)](https://pypi.org/project/pybalt/)
    [![GitHub stars](https://img.shields.io/github/stars/nichind/pybalt.svg)](https://github.com/nichind/pybalt)
    [![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)

    <div align="center" style="display: flex; flex-flow: column wrap;">
    <h3>CLI Preview</h3>

    https://github.com/user-attachments/assets/cf5fd9a9-520b-4970-b8c2-42baa80d7523
    </div>

  </div>
  <br><br>
  <h1>Installation</h1>
  <h4>Install pybalt using PowerShell on Windows</h4>

  Downloads [install.bat](./install.bat) and executes it.

  Powershell should be run as administrator, otherwise aliases (`cobalt`, `pybalt`) in terminal will not work.

  ```powershell
  powershell -Command "Invoke-WebRequest -Uri https://raw.githubusercontent.com/nichind/pybalt/main/install.bat -OutFile install.bat; .\install.bat"
  ```

  <h4>Install using PIP</h4>

  ```shell
  pip install pybalt
  ```

  This should create aliases `pybalt` and `cobalt` in your shell.

  Try running `cobalt -h` to see the help message.

  If for some reason it didn't work, try using it directly from python package:

  ```shell
  python -m pybalt
  ```
  <br><br>
  <h1>Usage & Examples</h1>

  <img src='./assets/cli-preview.gif' style='border-radius: 8px'></img>

  <h3>Selecting processing instance</h3>

  You can set **processing instance URL**, **API key**, and **user-agent** as environment variables; pybalt will use them if none are provided.

  ```
  COBALT_API_URL=YOUR_INSTANCE_URL
  COBALT_API_KEY=YOUR_API_KEY
  COBALT_USER_AGENT=YOUR_USER_AGENT
  ```

  > By default, pybalt attempts to use any available instance for you provided by [public list of instances](https://instances.cobalt.best). It is recommended to host your own instance or request an `API key` from someone else's instance.

  <br>
  <h2>As a CLI</h2>
  <details open>
  <summary></summary>

  Every command here uses the `cobalt` alias; you can also use `pybalt` or `python -m pybalt`.

  By default, all downloads are saved in the user's downloads folder `~/Downloads`, or the one specified by the `-f` (`-folder`) flag.

  Get a list of all available commands by running:

  ```shell
  cobalt -h
  ```

  <br>
  <h3>Download video from URL</h3>

  ```shell
  cobalt -u 'https://youtube.com/watch?v=8ZP5eqm4JqM'
  ```

  You can also provide the URL as a positional argument:

  ```shell
  cobalt 'https://youtube.com/watch?v=8ZP5eqm4JqM'
  ```

  <br>
  <h3>Download YouTube playlist</h3>

  ```shell
  cobalt -pl 'https://youtube.com/playlist?list=PL_93TBqf4ymR9GsuI9W4kQ-G3WM7d2Tqj'
  ```

  <br>
  <h3>Download from text file</h3>

  Create a text file with URLs on each line:

  ```txt
  https://youtube.com/watch?v=8ZP...
  .....
  ....
  ...
  ```

  Then run:

  ```shell
  cobalt -l 'path/to/file.txt'
  ```

  <br>
  <h3>More examples</h3>

  Download all videos from a YouTube playlist in `720p` to folder `/Music/`, with filename style `classic`, using instance `https://dwnld.nichind.dev` and `API key` authorization:

  ```shell
  cobalt -pl 'https://youtube.com/playlist?list=PL_93TBqf4ymR9GsuI9W4kQ-G3WM7d2Tqj' -q 720 -f './Music/' -fs 'classic' -i 'https://dwnld.nichind.dev' -k 'YOUR_API_KEY'
  ```

  </details>
  <br><br>
  <h2>As a module</h2>
  <details open>
  <summary></summary>

  <h3>Download video from URL</h3>

  ```python
  from pybalt import download
  from asyncio import run

  async def main():
      path = await download('https://youtube.com/watch?v=8ZP5eqm4JqM')
      print('Downloaded: ', path)  # Downloaded: /Users/%USER%/Downloads/8ZP5eqm4JqM.mp4

  run(main())
  ```

  You can pass arguments inside the Cobalt object:

  ```python
  from pybalt import Cobalt
  from asyncio import run

  async def main():
      cobalt = Cobalt(api_instance='YOUR_INSTANCE_URL', api_key='YOUR_API_KEY', headers={...})
      path = await cobalt.download(url='https://youtube.com/watch?v=8ZP5eqm4JqM', quality='1080')
      print('Downloaded: ', path)  # Downloaded: /Users/%USER%/Downloads/8ZP5eqm4JqM.mp4

  run(main())
  ```

  </details>

  <br><br>
  <h1>Contributing</h1>

  If you have any questions or suggestions, please [open an issue](https://github.com/nichind/pybalt/issues) or [create a pull request](https://github.com/nichind/pybalt/pulls).

  <h3>Contributors</h3>

  <img src="https://contrib.rocks/image?repo=nichind/pybalt" alt="Contributors" style="max-width: 100%;"/>


pkgId: 2ce7181bae4de1fcb4f8146ed8b498ed7d955d0296cbc282bdb5466421fe098c
name: python-pybeoplay-help
arch: noarch
version: 2.2.0
epoch: 0
release: 1
summary: Development documents and examples for pybeoplay
url: https://github.com/giachello/pybeoplay
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pybeoplay-2.2.0-1.src.rpm
location_href: Packages/python-pybeoplay-help-2.2.0-1.noarch.rpm
checksum_type: sha256
description:
  Beoplay Python wrapper to integrate B&amp;O speakers/TVs to Python that use the BeoPlay API. BeoPlay API is the 2nd generation B&O API, after [Masterlink Gateway](https://github.com/giachello/mlgw) and before [Mozart](https://github.com/bang-olufsen/mozart-open-api). It is supported by devices built from the early 2000s to the late 2010s, including several BeoVision TV, BeoLab speakers and the NL/ML Converter.

  The API is wrapped in an object that can be used  to read the state and control BeoPlay devices. It includes both methods for blocking calls, and async calls with callbacks using aiohttp.

  Reference information [is on this page.](https://documenter.getpostman.com/view/1053298/T1LTe4Lt)

  Some more information on the Notifications stream is in the [EVENTS.md](EVENTS.md) file.

  Currently gets the following attributes:
  - volume
  - mute
  - source
  - source list
  - primary experience
  - state
  - standby
  - track image (if available)
  - artist
  - album
  - song(name) (if available)
  - description (if available)
  - stand positions
  - sound modes

  The following commands are available:
  - set volume
  - set mute
  - play
  - pause
  - stop
  - next
  - previous
  - standby
  - set source
  - join experience
  - leave experience
  - play queue item
  - set stand position
  - set sound mode

  The following key presses are available:
  ```Cursor/Select, Cursor/Up, Cursor/Down, Cursor/Left, Cursor/Right, Cursor/Exit, Cursor/Back, Cursor/PageUp, Cursor/PageDown, Cursor/Clear, Stream/Play, Stream/Stop, Stream/Pause, Stream/Wind, Stream/Rewind, Stream/Forward, Stream/Backward, List/StepUp, List/StepDown, List/PreviousElement, List/Shuffle, List/Repeat, Menu/Root, Menu/Option, Menu/Setup, Menu/Contents, Menu/Favorites, Menu/ElectronicProgramGuide, Menu/VideoOnDemand, Menu/Text, Menu/HbbTV,Menu/HomeControl, Device/Information, Device/Eject, Device/TogglePower, Device/Languages, Device/Subtitles, Device/OneWayJoin, Device/Mots, Record/Record, Generic/Blue, Generic/Red, Generic/Green, Generic/Yellow,``` and the digits ```0-9```


pkgId: 52f1a61ee7777b583324be62cb878e6e7c1d768d83bb88a4e14bee94eeb21d65
name: python-pybioinformatic-help
arch: noarch
version: 0.0.7
epoch: 0
release: 1
summary: Development documents and examples for pybioinformatic
url: https://github.com/wenlinXu-njfu/Leo
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pybioinformatic-0.0.7-1.src.rpm
location_href: Packages/python-pybioinformatic-help-0.0.7-1.noarch.rpm
checksum_type: sha256
description:
  ```shell
  pip install pybioinformatic --upgrade
  ```



  ```shell

  ls /usr/lib/x86_64-linux-gnu/libffi.so.7


  ln -s /usr/lib/x86_64-linux-gnu/libffi.so.6 /usr/lib/x86_64-linux-gnu/libffi.so.7


  sudo apt-get install libffi7
  ```



  ```python
  from pybioinformatic import Nucleotide


  random_nucl = Nucleotide.random_nucl(name='demo', length=[100, 150], bias=1.0)


  ss, mfe = random_nucl.predict_secondary_structure('test/structure.ps')
  print(ss, mfe, sep='\n')
  ```
  ```
  >demo length=135
  CAAAAAAAAACCATAAGCCGCCATGTCTCACATCGCAACCGGCTCAAGTAGAGTGCCCCTAATAATATGATCTTCGCTACAGAAGTTCCCCCCCCGCTGCCGGCTAGATGCGAACTCCACGCCTGGATGGCTCAG
  ...............((((((((.((......(((((.(.((((...((((.................((.((((......)))).))........)))).)))).).))))).......)).))).)))))...
  -27.299999237060547
  ```
  ![image](test/structure.png)


  ```python
  from pybioinformatic import BioMySQL

  with BioMySQL(
      mysql_host='192.168.1.110',
      mysql_port=3306,
      mysql_user='60533',
      mysql_password='NJFU',
      ssh_ip=None,
      ssh_port=None,
      ssh_user=None,
      ssh_password=None,
      remote_bind_ip=None,
      remote_bind_port=None,
      local_bind_ip=None,
      local_bind_port=None
  ) as connect:
      cur = connect.cursor()
      sql = 'use Ptrichocarpa;'
      cur.execute(sql)
      sql = 'select protein_id,sequence from protein where protein_id = "Potri.019G097720.1.p";'
      cur.execute(sql)
      for data in cur.fetchall():
          protein_id, sequence = data
          print(f'>{protein_id}\n{sequence}')
  ```
  ```
  >Potri.019G097720.1.p
  MESLQHLYLSKTGIKEIPSSFKHMISLITLKLDGTPIKELPLSIKDKVCLEYLTLHGTPIKALPELPPSLRFLTTHDCASLETVISIINISSLWFRRDFTNCFKLDQKPLVAAMHLKIQSGEETPHGTIQMVLLGSEIPEWFGDKGIGSSLTIQLPSNCHLLKGIAFCLVFLLPLPSQDMPCEVDDDSYVHVYFDCHVKSKNGESDGGDEIVFGSQERRALLYLLETCDSDHMFLHYELGLVNHLRKYSGNEVTFKFYHEVYNQGRKLGHEIRKPFKLKNCGVYLHFDENLPADTDLP*
  ```


pkgId: e6a1dfe3f78be4c61463cbf4f082bc29d1279896be84753ae406bcce68be2ce2
name: python-pybiolib-help
arch: noarch
version: 1.2.257
epoch: 0
release: 1
summary: Development documents and examples for pybiolib
url: https://github.com/biolib
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pybiolib-1.2.257-1.src.rpm
location_href: Packages/python-pybiolib-help-1.2.257-1.noarch.rpm
checksum_type: sha256
description:
  PyBioLib is a Python package for running BioLib applications from Python scripts and the command line.


  ```python

  import biolib
  samtools = biolib.load('samtools/samtools')
  print(samtools.cli(args='--help'))
  ```


  ```bash
  pip3 install -U pybiolib
  biolib run samtools/samtools --help
  ```


pkgId: fc71eab8b8ae61482def001ff25ac4a025717d925b1884cac05fcaf18b6929b4
name: python-pyblackjack-help
arch: noarch
version: 0.2.0a1
epoch: 0
release: 1
summary: Development documents and examples for pyblackjack
url: https://pypi.org/project/pyblackjack/
rpm_license: MIT license
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pyblackjack-0.2.0a1-1.src.rpm
location_href: Packages/python-pyblackjack-help-0.2.0a1-1.noarch.rpm
checksum_type: sha256
description:
  **pyblackjack** is a fun way to waste time at the terminal playing
  blackjack with a computerized dealer.



  pyblackjack is [available on PyPI](https://pypi.org/project/pyblackjack/)
  as a pre-release version. To install, type the following into the
  terminal, assuming that the appropriate `pip` is on your PATH:

  `pip install pyblackjack`



  Type `blackjack` at the terminal to launch the game. At the first
  prompt, you may press `q` to jump straight into the action, using a
  default player name, six-deck shoe, and 1,000 starting chips, with the
  dealer hitting on soft 17.

  You can also configure the game to your liking by going through the
  prompts. The first prompt asks you for the number of players (human; CPU
  players may come in the future but are not available yet). You can
  select from one to six players, and enter a name for each. Next, you
  will be asked for the number of starting chips per player, followed by
  the number of decks in the shoe (up to eight). The last prompt will ask
  you if the dealer should hit on a soft 17 (which increases the house
  edge slightly). After this, you're ready to start playing!



  Your first task for every hand is to enter your bet. After all players
  have placed a bet, the cards will be dealt and displayed. At this point,
  if the dealer is showing an Ace, each player will be asked whether they
  wish to buy insurance, the cost of which is one-half of your bet.

  After this, or if the dealer is not showing an Ace, blackjacks will be
  checked. If the dealer has a blackjack, it will be revealed, the hand
  ends immediately, and all players lose unless they also have blackjack,
  in which case it is a push. If anyone bought insurance, they will lose
  their bet but be paid 2:1 on the insurance.

  If the dealer does not have blackjack, but a player does, that player is
  paid at 3:2 and takes no further part in the hand.

  After this, if any active players remain, the first player in turn order
  will be shown their hand and asked for an action. Available actions are
  listed below. Except for hit and stand, all actions are only available
  as your first action before doing anything else, and then sometimes only
  under certain circumstances as noted.

  * Hit (`h`): Deal another card to your hand. If this results in a hard
    total over 21, the game will display a message that you busted, and
    your turn will end and you will lose your bet.

  * Stand (`s`): End your turn.

  * Double down (`d`): Double your bet, deal one (and only one) additional
    card to the hand, and end your turn. This option is only available
    when your first two cards total 9, 10, or 11.

  * Split (`p`): Split your two starting cards into two separate hands,
    placing a second bet identical to your original bet on the second
    hand. This is only available if both starting cards form a pair (e.g.
    two sixes or two queens). A second card will then be dealt to each
    hand, which will be played separately from the other. After splitting,
    the only actions available on the split hands will be to hit or stand,
    except that if you split a pair of aces, your turn will end
    immediately after the second card is dealt to each hand (i.e. you
    cannot hit split aces).

  * Surrender (`u`): Give up and drop out of the hand, with half your bet
    being returned.

  Once the first player has completed their turn, the next player will be
  asked for actions, and so on until all players have played. At this
  point, the dealer will reveal the downcard and play their hand. The
  dealer will hit on 16 or below and stand on 17 or higher, except that if
  the option for the dealer to hit on soft 17 was enabled in setup (or the
  quickstart option was chosen), the dealer will do so.

  Once the dealer has played their hand, the dealer pays the winners. If
  the dealer busts, all players who did not also bust are paid 1:1. If the
  dealer did not bust, players with a higher total than the dealer are
  paid 1:1, players with the same total push (receive their bet back), and
  players with a lower total lose their bet.

  The game will then return to the prompt to enter a bet. At this prompt,
  any player wishing to quit may enter `q` to do so and will be removed
  from the game. If the last player in the game quits, the program will
  terminate.


pkgId: 8e7ca3e5c1cc8b9a8b3045e55020afd950b777cd665893ba4cf6b3a618549013
name: python-pybootstrapui-help
arch: noarch
version: 1.0.2
epoch: 0
release: 1
summary: Development documents and examples for pybootstrapui
url: https://github.com/oject0r/pybootstrapui
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pybootstrapui-1.0.2-1.src.rpm
location_href: Packages/python-pybootstrapui-help-1.0.2-1.noarch.rpm
checksum_type: sha256
description:
  - **Dynamic UI**: Build interactive web pages with server-side callbacks for user events.
  - **Desktop Applications**: Launch web pages as standalone desktop apps using NW.js.
  - **Prebuilt Components**: Access a library of ready-to-use HTML components like buttons, headers, forms, modals, and more.
  - **Custom Templates**: Use predefined themes or your own HTML templates for quick styling.


pkgId: 6d38cffdef9d034d235012bc95f18733bb4916be520a8d071a5b6b22cdc216b8
name: python-pybottrader-help
arch: noarch
version: 0.0.6
epoch: 0
release: 1
summary: Development documents and examples for pybottrader
url: https://pypi.org/project/pybottrader/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pybottrader-0.0.6-1.src.rpm
location_href: Packages/python-pybottrader-help-0.0.6-1.noarch.rpm
checksum_type: sha256
description:
  API Documentation <https://jailop.github.io/pybottrader/pybottrader.html>

  PyBotTrader is an experimental Python library designed to help create trading
  bots, particularly for retail traders. It offers tools for real-time financial
  analysis, including indicators like moving averages (like MA, EMA, RSI, MACD, and
  ROI), which update dynamically with new data. The library includes data streamers
  to handle sequential data from sources like CSV files or the YFinance API, and
  basic portfolio managers for back-testing simple buy/sell strategies. Users can
  define custom strategies that integrate data streams, indicators, and
  decision-making rules to generate trading signals. A basic trader module is
  included for testing strategies, making the library a versatile framework for
  algorithmic trading experimentation.





  Using this library looks like:

  ``` python
  from pybottrader.indicators import RSI
  from pybottrader.datastreamers.yfinance import YFHistory
  from pybottrader.portfolios import DummyPortfolio
  from pybottrader.strategies import Strategy, Position, StrategySignal
  from pybottrader.traders import Trader


  class SimpleRSIStrategy(Strategy):
      """A simple strategy based on the RSI indicator"""

      rsi: RSI
      last_flip = Position.SELL
      lower_band: float
      upper_band: float

      def __init__(self, lower_band=30.0, upper_band=70.0):
          self.rsi = RSI()
          self.lower_band = lower_band
          self.upper_band = upper_band

      def evaluate(self, data) -> StrategySignal:
          
          position = Position.STAY
          
          self.rsi.update(open_price=data["open"], close_price=data["close"])
          
          if self.last_flip == Position.SELL and self.rsi[0] < self.lower_band:
              position = Position.BUY
              self.last_flip = Position.BUY
          elif self.last_flip == Position.BUY and self.rsi[0] > self.upper_band:
              position = Position.SELL
              self.last_flip = Position.SELL
          return StrategySignal(time=data["time"], price=data["close"], position=position)



  datastream = YFHistory("AAPL", start="2021-01-01", end="2023-12-31")

  portfolio = DummyPortfolio(1000.0)

  strategy = SimpleRSIStrategy(lower_band=25.0, upper_band=75.0)


  trader = Trader(strategy, portfolio, datastream)

  trader.run()
  ```

  Output is shown below.

  ```
  Time                      Pos.      Price        ROI   Valuation  Accum.ROI
  2021-02-11 00:00:00-05:00 BUY      132.34       0.00%    1000.00       0.00%
  2021-06-21 00:00:00-04:00 SELL     129.78      -1.93%     980.72      -1.93%
  2021-09-20 00:00:00-04:00 BUY      140.43       0.00%     980.72      -1.93%
  2021-10-22 00:00:00-04:00 SELL     146.08       4.02%    1020.17       2.02%
  2022-05-24 00:00:00-04:00 BUY      138.48       0.00%    1020.17       2.02%
  2022-07-08 00:00:00-04:00 SELL     145.07       4.76%    1068.72       6.87%
  2022-09-02 00:00:00-04:00 BUY      153.93       0.00%    1068.72       6.87%
  2023-01-24 00:00:00-05:00 SELL     141.05      -8.37%     979.26      -2.07%
  2023-08-07 00:00:00-04:00 BUY      177.50       0.00%     979.26      -2.07%
  2023-10-12 00:00:00-04:00 SELL     179.59       1.18%     990.78      -0.92%
  ```



  ```sh
  pip install pybottrader
  ```

  Shortly, I'm going to release more documentation and more examples.

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


pkgId: 88de27cffa6415049aad81ccb355b9da7be4bae9a273eb7f3ec96015e9436d0f
name: python-pybounds-help
arch: noarch
version: 0.0.6
epoch: 0
release: 1
summary: Development documents and examples for pybounds
url: https://pypi.org/project/pybounds/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pybounds-0.0.6-1.src.rpm
location_href: Packages/python-pybounds-help-0.0.6-1.noarch.rpm
checksum_type: sha256
description:
  Python implementation of BOUNDS: Bounding Observability for Uncertain Nonlinear Dynamic Systems.

  <p align="center">
      <a href="https://pypi.org/project/pybounds/">
          <img src="https://badge.fury.io/py/pybounds.svg" alt="PyPI version" height="18"></a>
  </p>



  This repository provides a minimal working example demonstrating how to empirically calculate the observability level of individual states for a nonlinear (partially observable) system, and accounts for sensor noise.



  The package can be installed by cloning the repo and running python setup.py install from inside the home pybounds directory.

  Alternatively using pip
  ```bash
  pip install pybounds
  ```


  For a simple system
  *  Monocular camera with optic fow measurements: [mono_camera_example.ipynb](examples%2Fmono_camera_example.ipynb)

  For a more complex system
  *  Fly-wind: [fly_wind_example.ipynb](examples%2Ffly_wind_example.ipynb)



  If you use the code or methods from this package, please cite the following paper:

  Benjamin Cellini, Burak Boyacioglu, Stanley David Stupski, and Floris van Breugel. Discovering and exploiting active sensing motifs for estimation with empirical observability. (2024) bioRxiv.


  This repository is the evolution of the EISO repo (https://github.com/BenCellini/EISO), and is intended as a companion to the repository directly associated with the paper above.



  This project utilizes the [MIT LICENSE](LICENSE.txt).
  100% open-source, feel free to utilize the code however you like.


pkgId: 2843927473179461fca9ebd6698dbd6e155dea4ed09ae6934a78b88ae67ec90f
name: python-pybuc-help
arch: noarch
version: 0.54.0
epoch: 0
release: 1
summary: Development documents and examples for pybuc
url: https://pypi.org/project/pybuc/
rpm_license: BSD 3-Clause
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pybuc-0.54.0-1.src.rpm
location_href: Packages/python-pybuc-help-0.54.0-1.noarch.rpm
checksum_type: sha256
description:
  `pybuc` (Python Bayesian Unobserved Components) is a version of R's Bayesian structural time
  series package, `bsts`, written by Steven L. Scott. The source paper can be found
  [here](https://people.ischool.berkeley.edu/~hal/Papers/2013/pred-present-with-bsts.pdf) or in the *papers*
  directory of this repository. While there are plans to expand the feature set of `pybuc`, currently there is no roadmap
  for the release of new features. The syntax for using `pybuc` closely follows `statsmodels`' `UnobservedComponents`
  module.

  The current version of `pybuc` includes the following options for modeling and
  forecasting a structural time series:

  - Stochastic or non-stochastic level
  - Damped level
  - Stochastic or non-stochastic trend
  - Damped trend
  - Multiple stochastic or non-stochastic periodic-lag seasonality
  - Multiple damped periodic-lag seasonality
  - Multiple stochastic or non-stochastic "dummy" seasonality
  - Multiple stochastic or non-stochastic trigonometric seasonality
  - Regression with static coefficients<sup/>**</sup>

  <sup/>**</sup> `pybuc` estimates regression coefficients differently than `bsts`. The former uses a standard Gaussian
  prior. The latter uses a Bernoulli-Gaussian mixture commonly known as the spike-and-slab prior. The main
  benefit of using a spike-and-slab prior is its promotion of coefficient-sparse solutions, i.e., variable selection, when
  the number of predictors in the regression component exceeds the number of observed data points.

  Fast computation is achieved using [Numba](https://numba.pydata.org/), a high performance just-in-time (JIT) compiler
  for Python.


  ```
  pip install pybuc
  ```
  See `pyproject.toml` and `poetry.lock` for dependency details. This module depends on NumPy, Numba, Pandas, and
  Matplotlib. Python 3.9 and above is supported.



  The Seasonal Autoregressive Integrated Moving Average (SARIMA) model is perhaps the most widely used class of
  statistical time series models. By design, these models can only operate on covariance-stationary time series.
  Consequently, if a time series exhibits non-stationarity (e.g., trend and/or seasonality), then the data first have to
  be stationarized. Transforming a non-stationary series to a stationary one usually requires taking local and/or seasonal
  time-differences of the data, but sometimes a linear trend to detrend a trend-stationary series is sufficient.
  Whether to stationarize the data and to what extent differencing is needed are things that need to be determined
  beforehand.

  Once a stationary series is in hand, a SARIMA specification must be identified. Identifying the "right" SARIMA
  specification can be achieved algorithmically (e.g., see the Python package `pmdarima`) or through examination of a
  series' patterns. The latter typically involves statistical tests and visual inspection of a series' autocorrelation
  (ACF) and partial autocorrelation (PACF) functions. Ultimately, the necessary condition for stationarity requires
  statistical analysis before a model can be formulated. It also implies that the underlying trend and seasonality, if
  they exist, are eliminated in the process of generating a stationary series. Consequently, the underlying time
  components that characterize a series are not of empirical interest.

  Another less commonly used class of model is structural time series (STS), also known as unobserved components (UC).
  Whereas SARIMA models abstract away from an explicit model for trend and seasonality, STS/UC models do not. Thus, it is
  possible to visualize the underlying components that characterize a time series using STS/UC. Moreover, it is relatively
  straightforward to test for phenomena like level shifts, also known as structural breaks, by statistical examination of
  a time series' estimated level component.

  STS/UC models also have the flexibility to accommodate multiple stochastic seasonalities. SARIMA models, in contrast,
  can accommodate multiple seasonalities, but only one seasonality/periodicity can be treated as stochastic. For example,
  daily data may have day-of-week and week-of-year seasonality. Under a SARIMA model, only one of these seasonalities can
  be modeled as stochastic. The other seasonality will have to be modeled as deterministic, which amounts to creating and
  using a set of predictors that capture said seasonality. STS/UC models, on the other hand, can accommodate both
  seasonalities as stochastic by treating each as distinct, unobserved state variables.

  With the above in mind, what follows is a comparison between `statsmodels`' `SARIMAX'` module, `statsmodels`'
  `UnobservedComponents` module, and `pybuc`. The distinction between `statsmodels.UnobservedComponents` and `pybuc` is
  the former is a maximum likelihood estimator (MLE) while the latter is a Bayesian estimator. The following code
  demonstrates the application of these methods on a data set that exhibits trend and multiplicative seasonality.
  The STS/UC specification for `statsmodels.UnobservedComponents` and `pybuc` includes stochastic level, stochastic trend
  (trend), and stochastic trigonometric seasonality with periodicity 12 and 6 harmonics.





  A canonical data set that exhibits trend and seasonality is the airline passenger data used in
  Box, G.E.P.; Jenkins, G.M.; and Reinsel, G.C. Time Series Analysis, Forecasting and Control. Series G, 1976. See plot
  below.

  ![plot](./examples/images/airline_passengers.png)

  This data set gave rise to what is known as the "airline model", which is a SARIMA model with first-order local and
  seasonal differencing and first-order local and seasonal moving average representations.
  More compactly, SARIMA(0, 1, 1)(0, 1, 1) without drift.

  To demonstrate the performance of the "airline model" on the airline passenger data, the data will be split into a
  training and test set. The former will include all observations up until the last twelve months of data, and the latter
  will include the last twelve months of data. See code below for model assessment.



  ```
  from pybuc import buc
  import numpy as np
  import pandas as pd
  import matplotlib.pyplot as plt
  from statsmodels.tsa.statespace.sarimax import SARIMAX
  from statsmodels.tsa.statespace.structural import UnobservedComponents



  def rmse(actual, prediction):
      act, pred = actual.flatten(), prediction.flatten()
      return np.sqrt(np.mean((act - pred) ** 2))



  url = "https://raw.githubusercontent.com/devindg/pybuc/master/examples/data/airline-passengers.csv"
  air = pd.read_csv(url, header=0, index_col=0)
  air = air.astype(float)
  air.index = pd.to_datetime(air.index)
  hold_out_size = 12


  y_train = air.iloc[:-hold_out_size]
  y_test = air.iloc[-hold_out_size:]
  ```



  ```
  ''' Fit the airline data using SARIMA(0,1,1)(0,1,1) '''
  sarima = SARIMAX(
      y_train,
      order=(0, 1, 1),
      seasonal_order=(0, 1, 1, 12),
      trend=[0]
  )
  sarima_res = sarima.fit(disp=False)
  print(sarima_res.summary())


  plt.plot(y_train)
  plt.plot(sarima_res.fittedvalues)
  plt.title('SARIMA: In-sample')
  plt.xticks(rotation=45, ha="right")
  plt.show()


  sarima_forecast = sarima_res.get_forecast(hold_out_size).summary_frame(alpha=0.05)
  plt.plot(y_test)
  plt.plot(sarima_forecast['mean'])
  plt.fill_between(sarima_forecast.index,
                   sarima_forecast['mean_ci_lower'],
                   sarima_forecast['mean_ci_upper'], alpha=0.4)
  plt.title('SARIMA: Forecast')
  plt.legend(['Actual', 'Mean', '95% Prediction Interval'])
  plt.show()


  print(f"SARIMA RMSE: {rmse(y_test.to_numpy(), sarima_forecast['mean'].to_numpy())}")
  ```

  ```
  SARIMA RMSE: 21.09028021383853
  ```

  The SARIMA(0, 1, 1)(0, 1, 1) forecast plot.

  ![plot](./examples/images/airline_passengers_sarima_forecast.png)



  ```
  ''' Fit the airline data using MLE unobserved components '''
  mle_uc = UnobservedComponents(
      y_train,
      exog=None,
      irregular=True,
      level=True,
      stochastic_level=True,
      trend=True,
      stochastic_trend=True,
      freq_seasonal=[{'period': 12, 'harmonics': 6}],
      stochastic_freq_seasonal=[True]
  )


  mle_uc_res = mle_uc.fit(disp=False)
  print(mle_uc_res.summary())


  plt.plot(y_train)
  plt.plot(mle_uc_res.fittedvalues)
  plt.title('MLE UC: In-sample')
  plt.show()


  mle_uc_res.plot_components(legend_loc='lower right', figsize=(15, 9), which='smoothed')
  plt.show()


  mle_uc_forecast = mle_uc_res.get_forecast(hold_out_size).summary_frame(alpha=0.05)
  plt.plot(y_test)
  plt.plot(mle_uc_forecast['mean'])
  plt.fill_between(mle_uc_forecast.index,
                   mle_uc_forecast['mean_ci_lower'],
                   mle_uc_forecast['mean_ci_upper'], alpha=0.4)
  plt.title('MLE UC: Forecast')
  plt.legend(['Actual', 'Mean', '95% Prediction Interval'])
  plt.show()


  print(f"MLE UC RMSE: {rmse(y_test.to_numpy(), mle_uc_forecast['mean'].to_numpy())}")
  ```

  ```
  MLE UC RMSE: 17.961873327622694
  ```

  The MLE Unobserved Components forecast and component plots.

  ![plot](./examples/images/airline_passengers_mle_uc_forecast.png)

  ![plot](./examples/images/airline_passengers_mle_uc_components.png)

  As noted above, a distinguishing feature of STS/UC models is their explicit modeling of trend and seasonality. This is
  illustrated with the components plot.

  Finally, the Bayesian analog of the MLE STS/UC model is demonstrated. Default parameter values are used for the priors
  corresponding to the variance parameters in the model. See below for default priors on variance parameters.

  **Note that because computation is built on Numba, a JIT compiler, the first run of the code could take a while.
  Subsequent runs (assuming the Python kernel isn't restarted) should execute considerably faster.**


  ```
  ''' Fit the airline data using Bayesian unobserved components '''
  bayes_uc = BayesianUnobservedComponents(
      response=y_train,
      level=True,
      stochastic_level=True,
      trend=True,
      stochastic_trend=True,
      trig_seasonal=((12, 0),),
      stochastic_trig_seasonal=(True,),
      seed=1234
  )
  post = bayes_uc.sample(10000)
  burn = 2000


  for key, value in bayes_uc.summary(burn=burn).items():
      print(key, ' : ', value)


  bayes_uc.plot_post_pred_dist(burn=burn)
  plt.title('Bayesian UC: In-sample')
  plt.show()


  bayes_uc.plot_components(burn=burn, smoothed=False)
  plt.show()


  bayes_uc.plot_trace(burn=burn)
  plt.show()


  forecast, _ = bayes_uc.forecast(
      num_periods=hold_out_size,
      burn=burn
  )
  forecast_mean = np.mean(forecast, axis=0)
  forecast_l95 = np.quantile(forecast, 0.025, axis=0).flatten()
  forecast_u95 = np.quantile(forecast, 0.975, axis=0).flatten()

  plt.plot(y_test)
  plt.plot(bayes_uc.future_time_index, forecast_mean)
  plt.fill_between(bayes_uc.future_time_index, forecast_l95, forecast_u95, alpha=0.4)
  plt.title('Bayesian UC: Forecast')
  plt.legend(['Actual', 'Mean', '95% Prediction Interval'])
  plt.show()


  print(f"BAYES-UC RMSE: {rmse(y_test.to_numpy(), forecast_mean)}")
  ```

  ```
  BAYES-UC RMSE: 17.620844323566658
  ```

  The Bayesian Unobserved Components forecast plot, components plot, and RMSE are shown below.

  ![plot](./examples/images/airline_passengers_bayes_uc_forecast.png)





  ![plot](./examples/images/airline_passengers_bayes_uc_components.png)



  ![plot](./examples/images/airline_passengers_bayes_uc_components_filtered.png)



  ![plot](./examples/images/airline_passengers_bayes_uc_trace.png)



  A structural time series model with level, trend, seasonal, and regression components takes the form:

  $$
  y_t = \mu_t + \boldsymbol{\gamma}^\prime _t \mathbb{1}_p + \mathbf x_t^\prime \boldsymbol{\beta} + \epsilon_t
  $$

  where $\mu_t$ specifies an unobserved dynamic level component, $\boldsymbol{\gamma}_ t$ is a $p \times 1$ vector of
  unobserved dynamic seasonal components that represent unique periodicities, $\mathbf x_t^\prime \boldsymbol{\beta}$ a
  partially unobserved regression component (the regressors $\mathbf x_t$ are observed, but the coefficients
  $\boldsymbol{\beta}$ are not), and $\epsilon_t \sim N(0, \sigma_{\epsilon}^2)$ an unobserved irregular component. The
  equation describing the outcome $y_t$ is commonly referred to as the observation equation, and the transition equations
  governing the evolution of the unobserved states are known as the state equations.



  The unobserved level evolves according to the following general transition equations:

  $$
  \begin{align}
      \mu_{t+1} &= \omega_\mu + \kappa \mu_t + \delta_t + \eta_{\mu, t} \\
      \delta_{t+1} &= \omega_\delta + \phi \delta_t + \eta_{\delta, t}
  \end{align}
  $$

  where $\eta_{\mu, t} \sim N(0, \sigma_{\eta_\mu}^2)$ and $\eta_{\delta, t} \sim N(0, \sigma_{\eta_\delta}^2)$ for all
  $t$. The state equation for $\delta_t$ represents the local trend at time $t$.

  The parameters $\kappa$ and $\phi$ represent autoregressive coefficients. In general, $\kappa$ and $\phi$ are expected
  to be in the interval $(-1, 1)$, which implies a stationary process. In practice, however, it is possible for either
  $\kappa$ or $\phi$ to be outside the unit circle, which implies an explosive process. While it is mathematically
  possible for an explosive process to be stationary, the implication of such a result implies that the future predicts
  the past, which is not a realistic assumption. If an autoregressive level or trend is specified, no hard constraints
  (by default) are placed on the bounds of the autoregressive parameters. Instead, the default prior for these parameters
  is vague (see section on priors below).

  The parameters $\omega_\mu$ and $\omega_\delta$ represent autoregressive drift terms for level and trend, respectively,
  which capture the long-run means of these processes. Specifically, $\omega_\mu / (1 - \kappa)$ and
  $\omega_\delta / (1 - \phi)$ are the long-run means, respectively, of the level and trend processes. If damping is not
  specified, then the drift terms are not included in the model.

  Note that if $\sigma_{\eta_\mu}^2 = \sigma_{\eta_\delta}^2 = 0$ and $\phi = 1$ and $\kappa = 1$, then the level
  component in the observation equation, $\mu_t$, collapses to a deterministic intercept and linear time trend.




  For a given periodicity $S$, a seasonal component in $\boldsymbol{\gamma}_t$, $\gamma(S)_t$, can be modeled in three
  ways. One way is based on periodic lags. Formally, the seasonal effect on $y$ is modeled as

  $$
  \gamma(S)_t = \omega(S) + \rho(S) \gamma (S) _{t-S} + \eta _{\gamma(S), t},
  $$

  where $S$ is the number of periods in a seasonal cycle, $\omega(S)$ captures drift, $\rho(S)$ is an autoregressive
  parameter expected to lie in the unit circle (-1, 1), and $\eta_{\gamma(S), t} \sim N(0, \sigma_{\eta_\gamma(S)}^2)$
  for all $t$. If damping is not specified for a given periodic lag, the drift term is not included in the model.

  This specification for seasonality is arguably the most robust representation (relative to dummy and trigonometric)
  because its structural assumption on periodicity is the least complex.


  Another way is known as the "dummy" variable approach. Formally, the seasonal effect on the outcome $y$ is modeled as

  $$
  \sum_{j=0}^{S-1} \gamma^S_{t-j} = \eta_{\gamma^S, t} \iff \gamma^S_t = -\sum_{j=1}^{S-1} \gamma^S_{t-j} + \eta_{\gamma^S, t},
  $$

  where $j$ indexes the number of periods in a seasonal cycle, and $\eta_{\gamma^S, t} \sim N(0, \sigma_{\eta_\gamma^S}^2)$
  for all $t$. Intuitively, if a time series exhibits periodicity, then the sum of the periodic effects over a cycle
  should, on average, be zero.


  The final way to model seasonality is through a trigonometric representation, which exploits the periodicity of sine and
  cosine functions. Specifically, seasonality is modeled as

  $$
  \gamma^S_t = \sum_{j=1}^h \gamma^S_{j, t}
  $$

  where $j$ indexes the number of harmonics to represent seasonality of periodicity $S$ and
  $1 \leq h \leq \lfloor S/2 \rfloor$ is the highest desired number of harmonics. The state transition equations for each
  harmonic, $\gamma^S_{j, t}$, are represented by a real and imaginary part, specifically

  $$
  \begin{align}
      \gamma^S_ {j, t+1} &= \cos(\lambda_j) \gamma^S_{j, t} + \sin(\lambda_j) \gamma^{S*}_ {j, t} + \eta_{\gamma^S_ j, t} \\
      \gamma^{S*}_ {j, t+1} &= -\sin(\lambda_j) \gamma^S_ {j, t} + \cos(\lambda_j) \gamma^{S*}_ {j, t} + \eta_{\gamma^{S*}_ j , t}
  \end{align}
  $$

  where frequency $\lambda_j = 2j\pi / S$. It is assumed that $\eta_{\gamma^S_j, t}$ and $\eta_{\gamma^{S*}_ j , t}$ are
  distributed $N(0, \sigma^2_{\eta^S_\gamma})$ for all $j, t$. Note that when $S$ is even, $\gamma^{S*}_ {S/2, t+1}$ is not
  needed since

  $$
  \begin{align}
      \gamma^S_{S/2, t+1} &= \cos(\pi) \gamma^S_{S/2, t} + \sin(\pi) \gamma^{S*}_ {S/2, t} + \eta_{\gamma^S_{S/2}, t} \\
      &= (-1) \gamma^S_{S/2, t} + (0) \gamma^{S*}_ {S/2, t} + \eta_{\gamma^S_{S/2}, t} \\
      &= -\gamma^S_{S/2, t} + \eta_{\gamma^S_{S/2}, t}
  \end{align}
  $$

  Accordingly, if $S$ is even and $h = S/2$, then there will be $S - 1$ state equations. More generally, the number of
  state equations for a trigonometric specification is $2h$, except when $S$ is even and $h = S/2$.


  There are two ways to configure the model matrices to account for a regression component with static coefficients.
  The canonical way (Method 1) is to append $\mathbf x_t^\prime$ to $\mathbf Z_t$ and $\boldsymbol{\beta}_t$ to the
  state vector, $\boldsymbol{\alpha}_t$ (see state space representation below), with the constraints
  $\boldsymbol{\beta}_0 = \boldsymbol{\beta}$ and $\boldsymbol{\beta}_t = \boldsymbol{\beta} _{t-1}$ for all $t$.
  Another, less common way (Method 2) is to append $\mathbf x_t^\prime \boldsymbol{\beta}$ to $\mathbf Z_t$ and 1 to the
  state vector.

  While both methods can be accommodated by the Kalman filter, Method 1 is a direct extension of the Kalman filter as it
  maintains the observability of $\mathbf Z_t$ and treats the regression coefficients as unobserved states. Method 2 does
  not fit naturally into the conventional framework of the Kalman filter, but it offers the significant advantage of only
  increasing the size of the state vector by one. In contrast, Method 1 increases the size of the state vector by the size
  of $\boldsymbol{\beta}$. This is significant because computational complexity is quadratic in the size of the state
  vector but linear in the size of the observation vector.

  The unobservability of $\mathbf Z_t$ under Method 2 can be handled with maximum likelihood or Bayesian estimation by
  working with the adjusted series

  $$
  y_t^* \equiv y_t - \tau_t = \mathbf x_ t^\prime \boldsymbol{\beta} + \epsilon_t
  $$

  where $\tau_t$ represents the time series component of the structural time series model. For example, assuming a level
  and seasonal component are specified, this means an initial estimate of the time series component
  $\tau_t = \mu_t + \boldsymbol{\gamma}^\prime_ t \mathbb{1}_p$ and $\boldsymbol{\beta}$ has to be acquired first. Then
  $\boldsymbol{\beta}$ can be estimated conditional on $\mathbf y^ * \equiv \left(y_1^ *, y_2^ *, \cdots, y_n^ *\right)^\prime$.

  `pybuc` uses Method 2 for estimating static coefficients.


  Before sampling the posterior, data transformations can be applied. By default, if a regression component is specified,
  each predictor will be standardized (z-scored) and the response will be scaled by its sample standard deviation. If no
  regression component is specified, the response will not be scaled. Data transformations are managed with the
  `scale_response` and `standardize_predictors` arguments in the`sample()` method. The defaults are `scale_response=None`
  and `standardize_predictors=True`.

  If any data transformation is performed, by default all posterior elements are back-transformed to their original form.
  Back-transformation can be managed with the `back_transform` argument in the `sample()` method. By default,
  `back_transform=True`.





  The default prior for irregular variance is:

  $$
  \sigma^2_{\mathrm{irregular}} \sim \mathrm{IG}(0.01, (0.01 * \mathrm{Std.Dev}(y))^2 * 1.01)
  $$

  If no priors are given for variances corresponding to stochastic states (i.e., level, trend, and seasonality),
  the following defaults are used:

  $$
  \begin{align}
      \sigma^2_{\mathrm{level}} &\sim \mathrm{IG}(0.01, (0.01 * \mathrm{Std.Dev}(y))^2 * 1.01) \\
      \sigma^2_{\mathrm{seasonal}} &\sim \mathrm{IG}(0.01, (0.01 * \mathrm{Std.Dev}(y))^2 * 1.01) \\
      \sigma^2_{\mathrm{trend}} &\sim \mathrm{IG}(0.5, (0.25 * 0.01 * \mathrm{Std.Dev}(y))^2 * 1.5) \\
  \end{align}
  $$

  These priors differ from the defaults in R's `bsts` package. The scale priors for response, level and seasonality
  variances mirror the default scale priors in `bsts` in spirit (($0.01 * \mathrm{Std.Dev}(y))^2$). The difference is the
  factor $1.01$, which forces the mode of the prior variance to be $(0.01 * \mathrm{Std.Dev}(y))^2$.

  The default prior for trend variance is also more conservative in `pybuc`. This is reflected by a standard deviation
  that is one-fourth the size (in standard deviation) of the rest of the scale priors, and a shape prior equal to 0.5.
  This implies that the mode of the prior trend variance is $(0.0025 * \mathrm{Std.Dev}(y))^2$. The purpose is to mitigate
  the impact that noise in the data could have on producing an overly aggressive and/or volatile trend.

  **Note that the scale prior for trigonometric seasonality is automatically scaled by the number of state
  equations implied by the period and number of harmonics. For example, if the trigonometric seasonality scale prior
  passed to `pybuc` is 10 and the period and number of harmonics is 12 and 6, respectively, then the scale prior will be
  converted to $\frac{\mathrm{ScalePrior}}{\mathrm{NumStateEq}} = \frac{10}{(2 * 6 - 1)} = \frac{10}{11}$.
  The reason for this is that trigonometric seasonality is the sum of conditionally independent random harmonics, so
  the sum of harmonic variances must match the total variance reflected by the scale prior.**



  Damping can be applied to level, trend, and periodic-lag seasonality state components. By default, if no prior is given
  for an autoregressive (i.e., AR(1)) coefficient, the prior takes the form

  $$
  \phi \sim N(1, 1^2)
  $$

  where $\phi$ represents some autoregressive coefficient. Thus, the prior encodes the belief that the process (level,
  trend, seasonality) is most likely non-oscillating, with more weight given to a random walk (positive unit root
  with noise) than drift (constant with noise).

  There are two ways to help prevent non-stationary processes. One can either set a prior on the autoregressive
  coefficient whose mean is far away from unity in absolute value and has high precision, or set
  `try_enforce_stationary=True` in the `sample()` method. There is no guarantee that convergence will be reached with
  these restrictions, however.

  Note that no prior is necessary for autoregressive drift parameters (e.g., $\omega_\delta$ above). This is because the
  left-hand side and right-hand side state variables of a given state equation are standardized to estimate the
  autoregressive slope coefficients. For example, the trend state equation is transformed into

  $$
  \frac{\delta_t - \mathrm{Mean}(\delta_t)}{\mathrm{Std.Dev}(\delta_t)} =
  \tilde{\phi}\frac{\delta_{t-1} - \mathrm{Mean}(\delta_{t-1})}{\mathrm{Std.Dev}(\delta_{t-1})} + \tilde{\eta}_{\delta, t}
  $$

  The estimated drift and slope parameters are then backed into:

  $$\hat{\phi}
  = \frac{\mathrm{Std.Dev}(\delta_t)}{\mathrm{Std.Dev}(\delta_{t-1})}\hat{\tilde{\phi}}
  $$

  $$\hat{\omega} _\delta
  = \mathrm{Mean}(\delta_t) - \mathrm{Mean}(\delta _{t-1})\hat{\phi}
  $$



  The default prior for regression coefficients is

  $$
  \boldsymbol{\beta} \sim N\left(\mathbf 0, \frac{1 - R_\mathrm{prior}^2}{R_\mathrm{prior}^2}
  \frac{n_\mathrm{prior}}{\max(n, p^2)}
  \left(w \mathbf X^\prime \mathbf X + (1 - w) \mathrm{diag}(\mathbf X^\prime \mathbf X) \right)\right)
  $$

  where $\mathbf X \in \mathbb{R}^{n \times p}$ is the design matrix, $n$ is the number of response observations,
  $p$ is the number of predictors, and $n_\mathrm{prior} = 1$ is the number of default prior observations given to the mean
  prior of $\mathbf 0$. This prior is a slight modification of Zellner's g-prior (to guard against potential singularity
  of the design matrix). The number of prior observations, $n_\mathrm{prior}$, can be changed by passing a value to the argument
  `zellner_prior_obs` in the `sample()` method. If Zellner's g-prior is not desired, then a custom precision matrix can
  be passed to the argument `reg_coeff_prec_prior`. Similarly, if a zero-mean prior is not wanted, a custom mean prior
  can be passed to `reg_coeff_mean_prior`.

  The divisor $\max(n, p^2)$ follows the benchmark Zellner $g$ recommendation in "Benchmark Prior for Bayesian Model
  Averaging" (Fernandez, Ley, Steel), which is expected to work well if degrees of freedom are low or high. Notice also
  that the prior precision is decreasing in $R_\mathrm{prior}^2$. Intuitively, if the expected fit is strong, then the
  data should be mostly unconstrained in determining the posterior of the regression coefficients. If no
  $R_\mathrm{prior}^2$ is given, then by default $R_\mathrm{prior}^2$ will be based on estimation of the model

  $$
  \Delta y_t = y_t - y_{t-1} = \Delta \mathbf X \boldsymbol{\beta}^* + \Delta \epsilon_{t},
  $$

  with prior $\boldsymbol{\beta}^* \sim N\left(\mathbf 0,  \frac{1}{\max(n, p^2)}
  \mathrm{diag}(\Delta \mathbf X^\prime \Delta \mathbf X) \right)$

  After the model is estimated, $R_\mathrm{prior}^2$ is computed as

  $$
  R_\mathrm{prior}^2 = \frac{\mathrm{Var}(\hat{\Delta y_t})}{\mathrm{Var}(\hat{\Delta y_t}) + \mathrm{Var}(\hat{\Delta r_t})},
  $$

  where

  $$
  \hat{\Delta y_t} = \Delta \mathbf X \left(\Delta \mathbf X^\prime \Delta \mathbf X + \frac{1}{\max(n, p^2)}
  \mathrm{diag}(\Delta \mathbf X^\prime \Delta \mathbf X)\right)^{-1} \Delta \mathbf X^\prime \Delta y_t
  $$ and

  $$
  r_t = \Delta y_t - \hat{\Delta y_t}
  $$

  A custom $R_\mathrm{prior}^2$ can be passed via the argument `zellner_prior_r_sqr`.

  Finally, the weight given to the untransformed covariance matrix vs. the diagonalized covariance matrix, controlled by
  $w$, is automatically determined by the determinant and trace of the covariance matrix $\mathbf X_ *^\prime \mathbf X_ *$,
  where $\mathbf X_ *$ is a centered or standardized version of $\mathbf X$.
  Specifically,

  $$
  w = \frac{\mathrm{det}(\mathbf X_ *^\prime \mathbf X_ *)^{\frac{1}{p}}}{\mathrm{trace}(\mathbf X_ *^\prime \mathbf X_ *) / p}
  $$

  Because the determinant is a product of eigenvalues and the trace is a sum of eigenvalues, the geometric average of the
  determinant relative to the arithmetic average of the trace should be close to 1 if the eigenvalues are close to
  evenly spaced. If spacing between the eigenvalues is significantly nonlinear, this could be indicative of an
  ill-conditioned design matrix, in which case it is safer to give more weight to the diagonalized covariance matrix. In
  the extreme case where the determinant is equal to 0, all weight will be given to the diagonalized covariance matrix.


  The unobserved components model can be rewritten in state space form. For example, suppose level, trend, seasonal,
  regression, and irregular components are specified, and the seasonal component takes a trigonometric form with
  periodicity $S=4$ and $h=2$ harmonics. Let $\mathbf Z_t \in \mathbb{R}^{1 \times m}$,
  $\mathbf T \in \mathbb{R}^{m \times m}$, $\mathbf R \in \mathbb{R}^{m \times q}$, and
  $\boldsymbol{\alpha}_ t \in \mathbb{R}^{m \times 1}$ denote the observation matrix, state transition matrix,
  state error transformation matrix, and unobserved state vector, respectively, where $m$ is the number of state equations
  and $q$ is the number of state parameters to be estimated (i.e., the number of stochastic state equations,
  which is defined by the number of positive state variance parameters).

  There are $m = 1 + 1 + (h * 2 - 1) + 1 = 6$ state equations and $q = 1 + 1 + (h * 2 - 1) = 5$ stochastic state equations
  , where the term $(h * 2 - 1)$ follows from $S=4$ being even and $h = S/2$. Outside of this case, there would generally
  be $h * 2$ state equations for trigonometric seasonality. Note also that there are 5 stochastic state equations because
  the state value for the regression component is not stochastic; it is 1 for all $t$ by construction. The observation,
  state transition, and state error transformation matrices may be
  written as

  $$
  \begin{align}
      \mathbf Z_t &= \left(\begin{array}{cc}
                          1 & 0 & 1 & 0 & 1 & \mathbf x_t^{\prime} \boldsymbol{\beta}
                          \end{array}\right) \\
      \mathbf T &= \left(\begin{array}{cc}
                          1 & 1 & 0 & 0 & 0 & 0 \\
                          0 & 1 & 0 & 0 & 0 & 0 \\
                          0 & 0 & \cos(2\pi / 4) & \sin(2\pi / 4) & 0 & 0 \\
                          0 & 0 & -\sin(2\pi / 4) & \cos(2\pi / 4) & 0 & 0 \\
                          0 & 0 & 0 & 0 & -1 & 0 \\
                          0 & 0 & 0 & 0 & 0 & 1
                          \end{array}\right) \\
      \mathbf R &= \left(\begin{array}{cc}
                      1 & 0 & 0 & 0 & 0 \\
                      0 & 1 & 0 & 0 & 0 \\
                      0 & 0 & 1 & 0 & 0 \\
                      0 & 0 & 0 & 1 & 0 \\
                      0 & 0 & 0 & 0 & 1 \\
                      0 & 0 & 0 & 0 & 0
                      \end{array}\right)
  \end{align}
  $$

  Given the definitions of $\mathbf Z_t$, $\mathbf T$, and $\mathbf R$, the state space representation of the unobserved
  components model above can compactly be expressed as

  $$
  \begin{align}
      y_t &= \mathbf Z_t \boldsymbol{\alpha}_ t + \epsilon_t \\
      \boldsymbol{\alpha}_ {t+1} &= \mathbf T \boldsymbol{\alpha}_ t + \mathbf R \boldsymbol{\eta}_ t, \hspace{5pt}
      t=1,2,...,n
  \end{align}
  $$

  where

  $$
  \begin{align}
      \boldsymbol{\alpha}_ t &= \left(\begin{array}{cc}
                              \mu_t & \delta_t & \gamma^4_{1, t} & \gamma^{4*}_ {1, t} & \gamma^4_{2, t} & 1
                              \end{array}\right)^\prime \\
      \boldsymbol{\eta}_ t &= \left(\begin{array}{cc}
                              \eta_{\mu, t} & \eta_{\delta, t} & \eta_{\gamma^4_ 1, t} & \eta_{\gamma^{4*}_ 1, t} &
                              \eta_{\gamma^4_ 2, t}
                              \end{array}\right)^\prime
  \end{align}
  $$

  and

  $$
  \mathrm{Cov}(\boldsymbol{\eta}_ t) = \mathrm{Cov}(\boldsymbol{\eta}_ {t-1}) = \boldsymbol{\Sigma}_ \eta =
  \mathrm{diag}(\sigma^2_{\eta_\mu}, \sigma^2_{\eta_\delta}, \sigma^2_{\eta_{\gamma^4_ 1}}, \sigma^2_{\eta_{\gamma^{4*}_ 1}},
  \sigma^2_{\eta_{\gamma^4_ 2}}) \in \mathbb{R}^{5 \times 5} \hspace{5pt} \textrm{for all } t=1,2,...,n
  $$


  `pybuc` mirrors R's `bsts` with respect to estimation method. The observation vector, state vector, and regression
  coefficients are assumed to be conditionally normal random variables, and the error variances are assumed to be
  conditionally independent inverse-Gamma random variables. These model assumptions imply conditional conjugacy of the
  model's parameters. Consequently, a Gibbs sampler is used to sample from each parameter's posterior distribution.

  To achieve fast sampling, `pybuc` follows `bsts`'s adoption of the Durbin and Koopman (2002) simulation smoother. For
  any parameter $\theta$, let $\theta(s)$ denote the $s$-th sample of parameter $\theta$. Each sample $s$ is drawn by
  repeating the following four steps:

  1. Draw $\boldsymbol{\alpha}(s)$ from
     $p(\boldsymbol{\alpha} | \mathbf y, \boldsymbol{\sigma}^2_\eta(s-1), \boldsymbol{\beta}(s-1), \sigma^2_\epsilon(s-1))$
     using the Durbin and Koopman simulation state smoother, where
     $\boldsymbol{\alpha}(s) = (\boldsymbol{\alpha}_ 1(s), \boldsymbol{\alpha}_ 2(s), \cdots, \boldsymbol{\alpha}_ n(s))^\prime$
     and $\boldsymbol{\sigma}^2_\eta(s-1) = \mathrm{diag}(\boldsymbol{\Sigma}_\eta(s-1))$. Note that `pybuc` implements a
     correction (based on a potential misunderstanding) for drawing $\boldsymbol{\alpha}(s)$ per "A note on implementing
     the Durbin and Koopman simulation smoother" (Marek Jarocinski, 2015).
  2. Draw $\boldsymbol{\sigma}^2_ \eta(s)$ from
     $p(\boldsymbol{\sigma}^2 _\eta | \mathbf y, \boldsymbol{\alpha}(s))$ using Durbin and Koopman's
     simulation disturbance smoother.
  3. Draw $\sigma^2_\epsilon(s)$ from
     $p(\sigma^2_\epsilon | \mathbf y^ *, \boldsymbol{\alpha}(s))$, where $\mathbf y^ *$ is defined
     above.
  4. Draw $\boldsymbol{\beta}(s)$ from
     $p(\boldsymbol{\beta} | \mathbf y^ *, \boldsymbol{\alpha}(s), \sigma^2_\epsilon(s))$, where $\mathbf y^ *$ is defined
     above.

  By assumption, the elements in $\boldsymbol{\sigma}^2_ \eta(s)$ are conditionally independent inverse-Gamma distributed random
  variables. Thus, Step 2 amounts to sampling each element in $\boldsymbol{\sigma}^2_ \eta(s)$ independently from their
  posterior inverse-Gamma distributions.


pkgId: b3a8e5dcd44d6dd191df633dbf58ca56dec09df5de6f6fc91a083811ea9d2d49
name: python-pybuc-help
arch: noarch
version: 0.54.1
epoch: 0
release: 1
summary: Development documents and examples for pybuc
url: https://pypi.org/project/pybuc/
rpm_license: BSD 3-Clause
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-pybuc-0.54.1-1.src.rpm
location_href: Packages/python-pybuc-help-0.54.1-1.noarch.rpm
checksum_type: sha256
description:
  `pybuc` (Python Bayesian Unobserved Components) is a version of R's Bayesian structural time
  series package, `bsts`, written by Steven L. Scott. The source paper can be found
  [here](https://people.ischool.berkeley.edu/~hal/Papers/2013/pred-present-with-bsts.pdf) or in the *papers*
  directory of this repository. While there are plans to expand the feature set of `pybuc`, currently there is no roadmap
  for the release of new features. The syntax for using `pybuc` closely follows `statsmodels`' `UnobservedComponents`
  module.

  The current version of `pybuc` includes the following options for modeling and
  forecasting a structural time series:

  - Stochastic or non-stochastic level
  - Damped level
  - Stochastic or non-stochastic trend
  - Damped trend
  - Multiple stochastic or non-stochastic periodic-lag seasonality
  - Multiple damped periodic-lag seasonality
  - Multiple stochastic or non-stochastic "dummy" seasonality
  - Multiple stochastic or non-stochastic trigonometric seasonality
  - Regression with static coefficients<sup/>**</sup>

  <sup/>**</sup> `pybuc` estimates regression coefficients differently than `bsts`. The former uses a standard Gaussian
  prior. The latter uses a Bernoulli-Gaussian mixture commonly known as the spike-and-slab prior. The main
  benefit of using a spike-and-slab prior is its promotion of coefficient-sparse solutions, i.e., variable selection, when
  the number of predictors in the regression component exceeds the number of observed data points.

  Fast computation is achieved using [Numba](https://numba.pydata.org/), a high performance just-in-time (JIT) compiler
  for Python.


  ```
  pip install pybuc
  ```
  See `pyproject.toml` and `poetry.lock` for dependency details. This module depends on NumPy, Numba, Pandas, and
  Matplotlib. Python 3.9 and above is supported.



  The Seasonal Autoregressive Integrated Moving Average (SARIMA) model is perhaps the most widely used class of
  statistical time series models. By design, these models can only operate on covariance-stationary time series.
  Consequently, if a time series exhibits non-stationarity (e.g., trend and/or seasonality), then the data first have to
  be stationarized. Transforming a non-stationary series to a stationary one usually requires taking local and/or seasonal
  time-differences of the data, but sometimes a linear trend to detrend a trend-stationary series is sufficient.
  Whether to stationarize the data and to what extent differencing is needed are things that need to be determined
  beforehand.

  Once a stationary series is in hand, a SARIMA specification must be identified. Identifying the "right" SARIMA
  specification can be achieved algorithmically (e.g., see the Python package `pmdarima`) or through examination of a
  series' patterns. The latter typically involves statistical tests and visual inspection of a series' autocorrelation
  (ACF) and partial autocorrelation (PACF) functions. Ultimately, the necessary condition for stationarity requires
  statistical analysis before a model can be formulated. It also implies that the underlying trend and seasonality, if
  they exist, are eliminated in the process of generating a stationary series. Consequently, the underlying time
  components that characterize a series are not of empirical interest.

  Another less commonly used class of model is structural time series (STS), also known as unobserved components (UC).
  Whereas SARIMA models abstract away from an explicit model for trend and seasonality, STS/UC models do not. Thus, it is
  possible to visualize the underlying components that characterize a time series using STS/UC. Moreover, it is relatively
  straightforward to test for phenomena like level shifts, also known as structural breaks, by statistical examination of
  a time series' estimated level component.

  STS/UC models also have the flexibility to accommodate multiple stochastic seasonalities. SARIMA models, in contrast,
  can accommodate multiple seasonalities, but only one seasonality/periodicity can be treated as stochastic. For example,
  daily data may have day-of-week and week-of-year seasonality. Under a SARIMA model, only one of these seasonalities can
  be modeled as stochastic. The other seasonality will have to be modeled as deterministic, which amounts to creating and
  using a set of predictors that capture said seasonality. STS/UC models, on the other hand, can accommodate both
  seasonalities as stochastic by treating each as distinct, unobserved state variables.

  With the above in mind, what follows is a comparison between `statsmodels`' `SARIMAX'` module, `statsmodels`'
  `UnobservedComponents` module, and `pybuc`. The distinction between `statsmodels.UnobservedComponents` and `pybuc` is
  the former is a maximum likelihood estimator (MLE) while the latter is a Bayesian estimator. The following code
  demonstrates the application of these methods on a data set that exhibits trend and multiplicative seasonality.
  The STS/UC specification for `statsmodels.UnobservedComponents` and `pybuc` includes stochastic level, stochastic trend
  (trend), and stochastic trigonometric seasonality with periodicity 12 and 6 harmonics.





  A canonical data set that exhibits trend and seasonality is the airline passenger data used in
  Box, G.E.P.; Jenkins, G.M.; and Reinsel, G.C. Time Series Analysis, Forecasting and Control. Series G, 1976. See plot
  below.

  ![plot](./examples/images/airline_passengers.png)

  This data set gave rise to what is known as the "airline model", which is a SARIMA model with first-order local and
  seasonal differencing and first-order local and seasonal moving average representations.
  More compactly, SARIMA(0, 1, 1)(0, 1, 1) without drift.

  To demonstrate the performance of the "airline model" on the airline passenger data, the data will be split into a
  training and test set. The former will include all observations up until the last twelve months of data, and the latter
  will include the last twelve months of data. See code below for model assessment.



  ```
  from pybuc import buc
  import numpy as np
  import pandas as pd
  import matplotlib.pyplot as plt
  from statsmodels.tsa.statespace.sarimax import SARIMAX
  from statsmodels.tsa.statespace.structural import UnobservedComponents



  def rmse(actual, prediction):
      act, pred = actual.flatten(), prediction.flatten()
      return np.sqrt(np.mean((act - pred) ** 2))



  url = "https://raw.githubusercontent.com/devindg/pybuc/master/examples/data/airline-passengers.csv"
  air = pd.read_csv(url, header=0, index_col=0)
  air = air.astype(float)
  air.index = pd.to_datetime(air.index)
  hold_out_size = 12


  y_train = air.iloc[:-hold_out_size]
  y_test = air.iloc[-hold_out_size:]
  ```



  ```
  ''' Fit the airline data using SARIMA(0,1,1)(0,1,1) '''
  sarima = SARIMAX(
      y_train,
      order=(0, 1, 1),
      seasonal_order=(0, 1, 1, 12),
      trend=[0]
  )
  sarima_res = sarima.fit(disp=False)
  print(sarima_res.summary())


  plt.plot(y_train)
  plt.plot(sarima_res.fittedvalues)
  plt.title('SARIMA: In-sample')
  plt.xticks(rotation=45, ha="right")
  plt.show()


  sarima_forecast = sarima_res.get_forecast(hold_out_size).summary_frame(alpha=0.05)
  plt.plot(y_test)
  plt.plot(sarima_forecast['mean'])
  plt.fill_between(sarima_forecast.index,
                   sarima_forecast['mean_ci_lower'],
                   sarima_forecast['mean_ci_upper'], alpha=0.4)
  plt.title('SARIMA: Forecast')
  plt.legend(['Actual', 'Mean', '95% Prediction Interval'])
  plt.show()


  print(f"SARIMA RMSE: {rmse(y_test.to_numpy(), sarima_forecast['mean'].to_numpy())}")
  ```

  ```
  SARIMA RMSE: 21.09028021383853
  ```

  The SARIMA(0, 1, 1)(0, 1, 1) forecast plot.

  ![plot](./examples/images/airline_passengers_sarima_forecast.png)



  ```
  ''' Fit the airline data using MLE unobserved components '''
  mle_uc = UnobservedComponents(
      y_train,
      exog=None,
      irregular=True,
      level=True,
      stochastic_level=True,
      trend=True,
      stochastic_trend=True,
      freq_seasonal=[{'period': 12, 'harmonics': 6}],
      stochastic_freq_seasonal=[True]
  )


  mle_uc_res = mle_uc.fit(disp=False)
  print(mle_uc_res.summary())


  plt.plot(y_train)
  plt.plot(mle_uc_res.fittedvalues)
  plt.title('MLE UC: In-sample')
  plt.show()


  mle_uc_res.plot_components(legend_loc='lower right', figsize=(15, 9), which='smoothed')
  plt.show()


  mle_uc_forecast = mle_uc_res.get_forecast(hold_out_size).summary_frame(alpha=0.05)
  plt.plot(y_test)
  plt.plot(mle_uc_forecast['mean'])
  plt.fill_between(mle_uc_forecast.index,
                   mle_uc_forecast['mean_ci_lower'],
                   mle_uc_forecast['mean_ci_upper'], alpha=0.4)
  plt.title('MLE UC: Forecast')
  plt.legend(['Actual', 'Mean', '95% Prediction Interval'])
  plt.show()


  print(f"MLE UC RMSE: {rmse(y_test.to_numpy(), mle_uc_forecast['mean'].to_numpy())}")
  ```

  ```
  MLE UC RMSE: 17.961873327622694
  ```

  The MLE Unobserved Components forecast and component plots.

  ![plot](./examples/images/airline_passengers_mle_uc_forecast.png)

  ![plot](./examples/images/airline_passengers_mle_uc_components.png)

  As noted above, a distinguishing feature of STS/UC models is their explicit modeling of trend and seasonality. This is
  illustrated with the components plot.

  Finally, the Bayesian analog of the MLE STS/UC model is demonstrated. Default parameter values are used for the priors
  corresponding to the variance parameters in the model. See below for default priors on variance parameters.

  **Note that because computation is built on Numba, a JIT compiler, the first run of the code could take a while.
  Subsequent runs (assuming the Python kernel isn't restarted) should execute considerably faster.**


  ```
  ''' Fit the airline data using Bayesian unobserved components '''
  bayes_uc = BayesianUnobservedComponents(
      response=y_train,
      level=True,
      stochastic_level=True,
      trend=True,
      stochastic_trend=True,
      trig_seasonal=((12, 0),),
      stochastic_trig_seasonal=(True,),
      seed=1234
  )
  post = bayes_uc.sample(10000)
  burn = 2000


  for key, value in bayes_uc.summary(burn=burn).items():
      print(key, ' : ', value)


  bayes_uc.plot_post_pred_dist(burn=burn)
  plt.title('Bayesian UC: In-sample')
  plt.show()


  bayes_uc.plot_components(burn=burn, smoothed=False)
  plt.show()


  bayes_uc.plot_trace(burn=burn)
  plt.show()


  forecast, _ = bayes_uc.forecast(
      num_periods=hold_out_size,
      burn=burn
  )
  forecast_mean = np.mean(forecast, axis=0)
  forecast_l95 = np.quantile(forecast, 0.025, axis=0).flatten()
  forecast_u95 = np.quantile(forecast, 0.975, axis=0).flatten()

  plt.plot(y_test)
  plt.plot(bayes_uc.future_time_index, forecast_mean)
  plt.fill_between(bayes_uc.future_time_index, forecast_l95, forecast_u95, alpha=0.4)
  plt.title('Bayesian UC: Forecast')
  plt.legend(['Actual', 'Mean', '95% Prediction Interval'])
  plt.show()


  print(f"BAYES-UC RMSE: {rmse(y_test.to_numpy(), forecast_mean)}")
  ```

  ```
  BAYES-UC RMSE: 17.620844323566658
  ```

  The Bayesian Unobserved Components forecast plot, components plot, and RMSE are shown below.

  ![plot](./examples/images/airline_passengers_bayes_uc_forecast.png)





  ![plot](./examples/images/airline_passengers_bayes_uc_components.png)



  ![plot](./examples/images/airline_passengers_bayes_uc_components_filtered.png)



  ![plot](./examples/images/airline_passengers_bayes_uc_trace.png)



  A structural time series model with level, trend, seasonal, and regression components takes the form:

  $$
  y_t = \mu_t + \boldsymbol{\gamma}^\prime _t \mathbb{1}_p + \mathbf x_t^\prime \boldsymbol{\beta} + \epsilon_t
  $$

  where $\mu_t$ specifies an unobserved dynamic level component, $\boldsymbol{\gamma}_ t$ is a $p \times 1$ vector of
  unobserved dynamic seasonal components that represent unique periodicities, $\mathbf x_t^\prime \boldsymbol{\beta}$ a
  partially unobserved regression component (the regressors $\mathbf x_t$ are observed, but the coefficients
  $\boldsymbol{\beta}$ are not), and $\epsilon_t \sim N(0, \sigma_{\epsilon}^2)$ an unobserved irregular component. The
  equation describing the outcome $y_t$ is commonly referred to as the observation equation, and the transition equations
  governing the evolution of the unobserved states are known as the state equations.



  The unobserved level evolves according to the following general transition equations:

  $$
  \begin{align}
      \mu_{t+1} &= \omega_\mu + \kappa \mu_t + \delta_t + \eta_{\mu, t} \\
      \delta_{t+1} &= \omega_\delta + \phi \delta_t + \eta_{\delta, t}
  \end{align}
  $$

  where $\eta_{\mu, t} \sim N(0, \sigma_{\eta_\mu}^2)$ and $\eta_{\delta, t} \sim N(0, \sigma_{\eta_\delta}^2)$ for all
  $t$. The state equation for $\delta_t$ represents the local trend at time $t$.

  The parameters $\kappa$ and $\phi$ represent autoregressive coefficients. In general, $\kappa$ and $\phi$ are expected
  to be in the interval $(-1, 1)$, which implies a stationary process. In practice, however, it is possible for either
  $\kappa$ or $\phi$ to be outside the unit circle, which implies an explosive process. While it is mathematically
  possible for an explosive process to be stationary, the implication of such a result implies that the future predicts
  the past, which is not a realistic assumption. If an autoregressive level or trend is specified, no hard constraints
  (by default) are placed on the bounds of the autoregressive parameters. Instead, the default prior for these parameters
  is vague (see section on priors below).

  The parameters $\omega_\mu$ and $\omega_\delta$ represent autoregressive drift terms for level and trend, respectively,
  which capture the long-run means of these processes. Specifically, $\omega_\mu / (1 - \kappa)$ and
  $\omega_\delta / (1 - \phi)$ are the long-run means, respectively, of the level and trend processes. If damping is not
  specified, then the drift terms are not included in the model.

  Note that if $\sigma_{\eta_\mu}^2 = \sigma_{\eta_\delta}^2 = 0$ and $\phi = 1$ and $\kappa = 1$, then the level
  component in the observation equation, $\mu_t$, collapses to a deterministic intercept and linear time trend.




  For a given periodicity $S$, a seasonal component in $\boldsymbol{\gamma}_t$, $\gamma(S)_t$, can be modeled in three
  ways. One way is based on periodic lags. Formally, the seasonal effect on $y$ is modeled as

  $$
  \gamma(S)_t = \omega(S) + \rho(S) \gamma (S) _{t-S} + \eta _{\gamma(S), t},
  $$

  where $S$ is the number of periods in a seasonal cycle, $\omega(S)$ captures drift, $\rho(S)$ is an autoregressive
  parameter expected to lie in the unit circle (-1, 1), and $\eta_{\gamma(S), t} \sim N(0, \sigma_{\eta_\gamma(S)}^2)$
  for all $t$. If damping is not specified for a given periodic lag, the drift term is not included in the model.

  This specification for seasonality is arguably the most robust representation (relative to dummy and trigonometric)
  because its structural assumption on periodicity is the least complex.


  Another way is known as the "dummy" variable approach. Formally, the seasonal effect on the outcome $y$ is modeled as

  $$
  \sum_{j=0}^{S-1} \gamma^S_{t-j} = \eta_{\gamma^S, t} \iff \gamma^S_t = -\sum_{j=1}^{S-1} \gamma^S_{t-j} + \eta_{\gamma^S, t},
  $$

  where $j$ indexes the number of periods in a seasonal cycle, and $\eta_{\gamma^S, t} \sim N(0, \sigma_{\eta_\gamma^S}^2)$
  for all $t$. Intuitively, if a time series exhibits periodicity, then the sum of the periodic effects over a cycle
  should, on average, be zero.


  The final way to model seasonality is through a trigonometric representation, which exploits the periodicity of sine and
  cosine functions. Specifically, seasonality is modeled as

  $$
  \gamma^S_t = \sum_{j=1}^h \gamma^S_{j, t}
  $$

  where $j$ indexes the number of harmonics to represent seasonality of periodicity $S$ and
  $1 \leq h \leq \lfloor S/2 \rfloor$ is the highest desired number of harmonics. The state transition equations for each
  harmonic, $\gamma^S_{j, t}$, are represented by a real and imaginary part, specifically

  $$
  \begin{align}
      \gamma^S_ {j, t+1} &= \cos(\lambda_j) \gamma^S_{j, t} + \sin(\lambda_j) \gamma^{S*}_ {j, t} + \eta_{\gamma^S_ j, t} \\
      \gamma^{S*}_ {j, t+1} &= -\sin(\lambda_j) \gamma^S_ {j, t} + \cos(\lambda_j) \gamma^{S*}_ {j, t} + \eta_{\gamma^{S*}_ j , t}
  \end{align}
  $$

  where frequency $\lambda_j = 2j\pi / S$. It is assumed that $\eta_{\gamma^S_j, t}$ and $\eta_{\gamma^{S*}_ j , t}$ are
  distributed $N(0, \sigma^2_{\eta^S_\gamma})$ for all $j, t$. Note that when $S$ is even, $\gamma^{S*}_ {S/2, t+1}$ is not
  needed since

  $$
  \begin{align}
      \gamma^S_{S/2, t+1} &= \cos(\pi) \gamma^S_{S/2, t} + \sin(\pi) \gamma^{S*}_ {S/2, t} + \eta_{\gamma^S_{S/2}, t} \\
      &= (-1) \gamma^S_{S/2, t} + (0) \gamma^{S*}_ {S/2, t} + \eta_{\gamma^S_{S/2}, t} \\
      &= -\gamma^S_{S/2, t} + \eta_{\gamma^S_{S/2}, t}
  \end{align}
  $$

  Accordingly, if $S$ is even and $h = S/2$, then there will be $S - 1$ state equations. More generally, the number of
  state equations for a trigonometric specification is $2h$, except when $S$ is even and $h = S/2$.


  There are two ways to configure the model matrices to account for a regression component with static coefficients.
  The canonical way (Method 1) is to append $\mathbf x_t^\prime$ to $\mathbf Z_t$ and $\boldsymbol{\beta}_t$ to the
  state vector, $\boldsymbol{\alpha}_t$ (see state space representation below), with the constraints
  $\boldsymbol{\beta}_0 = \boldsymbol{\beta}$ and $\boldsymbol{\beta}_t = \boldsymbol{\beta} _{t-1}$ for all $t$.
  Another, less common way (Method 2) is to append $\mathbf x_t^\prime \boldsymbol{\beta}$ to $\mathbf Z_t$ and 1 to the
  state vector.

  While both methods can be accommodated by the Kalman filter, Method 1 is a direct extension of the Kalman filter as it
  maintains the observability of $\mathbf Z_t$ and treats the regression coefficients as unobserved states. Method 2 does
  not fit naturally into the conventional framework of the Kalman filter, but it offers the significant advantage of only
  increasing the size of the state vector by one. In contrast, Method 1 increases the size of the state vector by the size
  of $\boldsymbol{\beta}$. This is significant because computational complexity is quadratic in the size of the state
  vector but linear in the size of the observation vector.

  The unobservability of $\mathbf Z_t$ under Method 2 can be handled with maximum likelihood or Bayesian estimation by
  working with the adjusted series

  $$
  y_t^* \equiv y_t - \tau_t = \mathbf x_ t^\prime \boldsymbol{\beta} + \epsilon_t
  $$

  where $\tau_t$ represents the time series component of the structural time series model. For example, assuming a level
  and seasonal component are specified, this means an initial estimate of the time series component
  $\tau_t = \mu_t + \boldsymbol{\gamma}^\prime_ t \mathbb{1}_p$ and $\boldsymbol{\beta}$ has to be acquired first. Then
  $\boldsymbol{\beta}$ can be estimated conditional on $\mathbf y^ * \equiv \left(y_1^ *, y_2^ *, \cdots, y_n^ *\right)^\prime$.

  `pybuc` uses Method 2 for estimating static coefficients.


  Before sampling the posterior, data transformations can be applied. By default, if a regression component is specified,
  each predictor will be standardized (z-scored) and the response will be scaled by its sample standard deviation. If no
  regression component is specified, the response will not be scaled. Data transformations are managed with the
  `scale_response` and `standardize_predictors` arguments in the`sample()` method. The defaults are `scale_response=None`
  and `standardize_predictors=True`.

  If any data transformation is performed, by default all posterior elements are back-transformed to their original form.
  Back-transformation can be managed with the `back_transform` argument in the `sample()` method. By default,
  `back_transform=True`.





  The default prior for irregular variance is:

  $$
  \sigma^2_{\mathrm{irregular}} \sim \mathrm{IG}(0.01, (0.01 * \mathrm{Std.Dev}(y))^2 * 1.01)
  $$

  If no priors are given for variances corresponding to stochastic states (i.e., level, trend, and seasonality),
  the following defaults are used:

  $$
  \begin{align}
      \sigma^2_{\mathrm{level}} &\sim \mathrm{IG}(0.01, (0.01 * \mathrm{Std.Dev}(y))^2 * 1.01) \\
      \sigma^2_{\mathrm{seasonal}} &\sim \mathrm{IG}(0.01, (0.01 * \mathrm{Std.Dev}(y))^2 * 1.01) \\
      \sigma^2_{\mathrm{trend}} &\sim \mathrm{IG}(0.5, (0.25 * 0.01 * \mathrm{Std.Dev}(y))^2 * 1.5) \\
  \end{align}
  $$

  These priors differ from the defaults in R's `bsts` package. The scale priors for response, level and seasonality
  variances mirror the default scale priors in `bsts` in spirit (($0.01 * \mathrm{Std.Dev}(y))^2$). The difference is the
  factor $1.01$, which forces the mode of the prior variance to be $(0.01 * \mathrm{Std.Dev}(y))^2$.

  The default prior for trend variance is also more conservative in `pybuc`. This is reflected by a standard deviation
  that is one-fourth the size (in standard deviation) of the rest of the scale priors, and a shape prior equal to 0.5.
  This implies that the mode of the prior trend variance is $(0.0025 * \mathrm{Std.Dev}(y))^2$. The purpose is to mitigate
  the impact that noise in the data could have on producing an overly aggressive and/or volatile trend.

  **Note that the scale prior for trigonometric seasonality is automatically scaled by the number of state
  equations implied by the period and number of harmonics. For example, if the trigonometric seasonality scale prior
  passed to `pybuc` is 10 and the period and number of harmonics is 12 and 6, respectively, then the scale prior will be
  converted to $\frac{\mathrm{ScalePrior}}{\mathrm{NumStateEq}} = \frac{10}{(2 * 6 - 1)} = \frac{10}{11}$.
  The reason for this is that trigonometric seasonality is the sum of conditionally independent random harmonics, so
  the sum of harmonic variances must match the total variance reflected by the scale prior.**



  Damping can be applied to level, trend, and periodic-lag seasonality state components. By default, if no prior is given
  for an autoregressive (i.e., AR(1)) coefficient, the prior takes the form

  $$
  \phi \sim N(1, 1^2)
  $$

  where $\phi$ represents some autoregressive coefficient. Thus, the prior encodes the belief that the process (level,
  trend, seasonality) is most likely non-oscillating, with more weight given to a random walk (positive unit root
  with noise) than drift (constant with noise).

  There are two ways to help prevent non-stationary processes. One can either set a prior on the autoregressive
  coefficient whose mean is far away from unity in absolute value and has high precision, or set
  `try_enforce_stationary=True` in the `sample()` method. There is no guarantee that convergence will be reached with
  these restrictions, however.

  Note that no prior is necessary for autoregressive drift parameters (e.g., $\omega_\delta$ above). This is because the
  left-hand side and right-hand side state variables of a given state equation are standardized to estimate the
  autoregressive slope coefficients. For example, the trend state equation is transformed into

  $$
  \frac{\delta_t - \mathrm{Mean}(\delta_t)}{\mathrm{Std.Dev}(\delta_t)} =
  \tilde{\phi}\frac{\delta_{t-1} - \mathrm{Mean}(\delta_{t-1})}{\mathrm{Std.Dev}(\delta_{t-1})} + \tilde{\eta}_{\delta, t}
  $$

  The estimated drift and slope parameters are then backed into:

  $$\hat{\phi}
  = \frac{\mathrm{Std.Dev}(\delta_t)}{\mathrm{Std.Dev}(\delta_{t-1})}\hat{\tilde{\phi}}
  $$

  $$\hat{\omega} _\delta
  = \mathrm{Mean}(\delta_t) - \mathrm{Mean}(\delta _{t-1})\hat{\phi}
  $$



  The default prior for regression coefficients is

  $$
  \boldsymbol{\beta} \sim N\left(\mathbf 0, \frac{1 - R_\mathrm{prior}^2}{R_\mathrm{prior}^2}
  \frac{n_\mathrm{prior}}{\max(n, p^2)}
  \left(w \mathbf X^\prime \mathbf X + (1 - w) \mathrm{diag}(\mathbf X^\prime \mathbf X) \right)\right)
  $$

  where $\mathbf X \in \mathbb{R}^{n \times p}$ is the design matrix, $n$ is the number of response observations,
  $p$ is the number of predictors, and $n_\mathrm{prior} = 1$ is the number of default prior observations given to the mean
  prior of $\mathbf 0$. This prior is a slight modification of Zellner's g-prior (to guard against potential singularity
  of the design matrix). The number of prior observations, $n_\mathrm{prior}$, can be changed by passing a value to the argument
  `zellner_prior_obs` in the `sample()` method. If Zellner's g-prior is not desired, then a custom precision matrix can
  be passed to the argument `reg_coeff_prec_prior`. Similarly, if a zero-mean prior is not wanted, a custom mean prior
  can be passed to `reg_coeff_mean_prior`.

  The divisor $\max(n, p^2)$ follows the benchmark Zellner $g$ recommendation in "Benchmark Prior for Bayesian Model
  Averaging" (Fernandez, Ley, Steel), which is expected to work well if degrees of freedom are low or high. Notice also
  that the prior precision is decreasing in $R_\mathrm{prior}^2$. Intuitively, if the expected fit is strong, then the
  data should be mostly unconstrained in determining the posterior of the regression coefficients. If no
  $R_\mathrm{prior}^2$ is given, then by default $R_\mathrm{prior}^2$ will be based on estimation of the model

  $$
  \Delta y_t = y_t - y_{t-1} = \Delta \mathbf X \boldsymbol{\beta}^* + \Delta \epsilon_{t},
  $$

  with prior $\boldsymbol{\beta}^* \sim N\left(\mathbf 0,  \frac{0.01}{\max(n - 1, p^2)}
  \mathrm{diag}(\Delta \mathbf X^\prime \Delta \mathbf X) \right)$. The factor $0.01$ corresponds to a hyper-prior
  $R^2 \approx 0.99$.

  After the model is estimated, $R_\mathrm{prior}^2$ is computed as

  $$
  R_\mathrm{prior}^2 = \frac{\mathrm{Var}(\hat{\Delta y_t})}{\mathrm{Var}(\hat{\Delta y_t}) + \mathrm{Var}(\hat{\Delta r_t})},
  $$

  where

  $$
  \hat{\Delta y_t} = \Delta \mathbf X \left(\Delta \mathbf X^\prime \Delta \mathbf X + \frac{0.01}{\max(n - 1, p^2)}
  \mathrm{diag}(\Delta \mathbf X^\prime \Delta \mathbf X)\right)^{-1} \Delta \mathbf X^\prime \Delta y_t
  $$ and

  $$
  r_t = \Delta y_t - \hat{\Delta y_t}
  $$

  A custom $R_\mathrm{prior}^2$ can be passed via the argument `zellner_prior_r_sqr`.

  Finally, the weight given to the untransformed covariance matrix vs. the diagonalized covariance matrix, controlled by
  $w$, is automatically determined by the determinant and trace of the covariance matrix $\mathbf X_ *^\prime \mathbf X_ *$,
  where $\mathbf X_ *$ is a centered or standardized version of $\mathbf X$.
  Specifically,

  $$
  w = \frac{\mathrm{det}(\mathbf X_ *^\prime \mathbf X_ *)^{\frac{1}{p}}}{\mathrm{trace}(\mathbf X_ *^\prime \mathbf X_ *) / p}
  $$

  Because the determinant is a product of eigenvalues and the trace is a sum of eigenvalues, the geometric average of the
  determinant relative to the arithmetic average of the trace should be close to 1 if the eigenvalues are close to
  evenly spaced. If spacing between the eigenvalues is significantly nonlinear, this could be indicative of an
  ill-conditioned design matrix, in which case it is safer to give more weight to the diagonalized covariance matrix. In
  the extreme case where the determinant is equal to 0, all weight will be given to the diagonalized covariance matrix.


  The unobserved components model can be rewritten in state space form. For example, suppose level, trend, seasonal,
  regression, and irregular components are specified, and the seasonal component takes a trigonometric form with
  periodicity $S=4$ and $h=2$ harmonics. Let $\mathbf Z_t \in \mathbb{R}^{1 \times m}$,
  $\mathbf T \in \mathbb{R}^{m \times m}$, $\mathbf R \in \mathbb{R}^{m \times q}$, and
  $\boldsymbol{\alpha}_ t \in \mathbb{R}^{m \times 1}$ denote the observation matrix, state transition matrix,
  state error transformation matrix, and unobserved state vector, respectively, where $m$ is the number of state equations
  and $q$ is the number of state parameters to be estimated (i.e., the number of stochastic state equations,
  which is defined by the number of positive state variance parameters).

  There are $m = 1 + 1 + (h * 2 - 1) + 1 = 6$ state equations and $q = 1 + 1 + (h * 2 - 1) = 5$ stochastic state equations
  , where the term $(h * 2 - 1)$ follows from $S=4$ being even and $h = S/2$. Outside of this case, there would generally
  be $h * 2$ state equations for trigonometric seasonality. Note also that there are 5 stochastic state equations because
  the state value for the regression component is not stochastic; it is 1 for all $t$ by construction. The observation,
  state transition, and state error transformation matrices may be
  written as

  $$
  \begin{align}
      \mathbf Z_t &= \left(\begin{array}{cc}
                          1 & 0 & 1 & 0 & 1 & \mathbf x_t^{\prime} \boldsymbol{\beta}
                          \end{array}\right) \\
      \mathbf T &= \left(\begin{array}{cc}
                          1 & 1 & 0 & 0 & 0 & 0 \\
                          0 & 1 & 0 & 0 & 0 & 0 \\
                          0 & 0 & \cos(2\pi / 4) & \sin(2\pi / 4) & 0 & 0 \\
                          0 & 0 & -\sin(2\pi / 4) & \cos(2\pi / 4) & 0 & 0 \\
                          0 & 0 & 0 & 0 & -1 & 0 \\
                          0 & 0 & 0 & 0 & 0 & 1
                          \end{array}\right) \\
      \mathbf R &= \left(\begin{array}{cc}
                      1 & 0 & 0 & 0 & 0 \\
                      0 & 1 & 0 & 0 & 0 \\
                      0 & 0 & 1 & 0 & 0 \\
                      0 & 0 & 0 & 1 & 0 \\
                      0 & 0 & 0 & 0 & 1 \\
                      0 & 0 & 0 & 0 & 0
                      \end{array}\right)
  \end{align}
  $$

  Given the definitions of $\mathbf Z_t$, $\mathbf T$, and $\mathbf R$, the state space representation of the unobserved
  components model above can compactly be expressed as

  $$
  \begin{align}
      y_t &= \mathbf Z_t \boldsymbol{\alpha}_ t + \epsilon_t \\
      \boldsymbol{\alpha}_ {t+1} &= \mathbf T \boldsymbol{\alpha}_ t + \mathbf R \boldsymbol{\eta}_ t, \hspace{5pt}
      t=1,2,...,n
  \end{align}
  $$

  where

  $$
  \begin{align}
      \boldsymbol{\alpha}_ t &= \left(\begin{array}{cc}
                              \mu_t & \delta_t & \gamma^4_{1, t} & \gamma^{4*}_ {1, t} & \gamma^4_{2, t} & 1
                              \end{array}\right)^\prime \\
      \boldsymbol{\eta}_ t &= \left(\begin{array}{cc}
                              \eta_{\mu, t} & \eta_{\delta, t} & \eta_{\gamma^4_ 1, t} & \eta_{\gamma^{4*}_ 1, t} &
                              \eta_{\gamma^4_ 2, t}
                              \end{array}\right)^\prime
  \end{align}
  $$

  and

  $$
  \mathrm{Cov}(\boldsymbol{\eta}_ t) = \mathrm{Cov}(\boldsymbol{\eta}_ {t-1}) = \boldsymbol{\Sigma}_ \eta =
  \mathrm{diag}(\sigma^2_{\eta_\mu}, \sigma^2_{\eta_\delta}, \sigma^2_{\eta_{\gamma^4_ 1}}, \sigma^2_{\eta_{\gamma^{4*}_ 1}},
  \sigma^2_{\eta_{\gamma^4_ 2}}) \in \mathbb{R}^{5 \times 5} \hspace{5pt} \textrm{for all } t=1,2,...,n
  $$


  `pybuc` mirrors R's `bsts` with respect to estimation method. The observation vector, state vector, and regression
  coefficients are assumed to be conditionally normal random variables, and the error variances are assumed to be
  conditionally independent inverse-Gamma random variables. These model assumptions imply conditional conjugacy of the
  model's parameters. Consequently, a Gibbs sampler is used to sample from each parameter's posterior distribution.

  To achieve fast sampling, `pybuc` follows `bsts`'s adoption of the Durbin and Koopman (2002) simulation smoother. For
  any parameter $\theta$, let $\theta(s)$ denote the $s$-th sample of parameter $\theta$. Each sample $s$ is drawn by
  repeating the following four steps:

  1. Draw $\boldsymbol{\alpha}(s)$ from
     $p(\boldsymbol{\alpha} | \mathbf y, \boldsymbol{\sigma}^2_\eta(s-1), \boldsymbol{\beta}(s-1), \sigma^2_\epsilon(s-1))$
     using the Durbin and Koopman simulation state smoother, where
     $\boldsymbol{\alpha}(s) = (\boldsymbol{\alpha}_ 1(s), \boldsymbol{\alpha}_ 2(s), \cdots, \boldsymbol{\alpha}_ n(s))^\prime$
     and $\boldsymbol{\sigma}^2_\eta(s-1) = \mathrm{diag}(\boldsymbol{\Sigma}_\eta(s-1))$. Note that `pybuc` implements a
     correction (based on a potential misunderstanding) for drawing $\boldsymbol{\alpha}(s)$ per "A note on implementing
     the Durbin and Koopman simulation smoother" (Marek Jarocinski, 2015).
  2. Draw $\boldsymbol{\sigma}^2_ \eta(s)$ from
     $p(\boldsymbol{\sigma}^2 _\eta | \mathbf y, \boldsymbol{\alpha}(s))$ using Durbin and Koopman's
     simulation disturbance smoother.
  3. Draw $\sigma^2_\epsilon(s)$ from
     $p(\sigma^2_\epsilon | \mathbf y^ *, \boldsymbol{\alpha}(s))$, where $\mathbf y^ *$ is defined
     above.
  4. Draw $\boldsymbol{\beta}(s)$ from
     $p(\boldsymbol{\beta} | \mathbf y^ *, \boldsymbol{\alpha}(s), \sigma^2_\epsilon(s))$, where $\mathbf y^ *$ is defined
     above.

  By assumption, the elements in $\boldsymbol{\sigma}^2_ \eta(s)$ are conditionally independent inverse-Gamma distributed random
  variables. Thus, Step 2 amounts to sampling each element in $\boldsymbol{\sigma}^2_ \eta(s)$ independently from their
  posterior inverse-Gamma distributions.


