# packages

pkgId: 0a7745afecb0e4c00fd64ff43c90b0664d9ec62b80c0ecd6a59f1e7e76af7f95
name: python-sidpy-help
arch: noarch
version: 0.12.6
epoch: 0
release: 1
summary: Development documents and examples for sidpy
url: https://pycroscopy.github.io/sidpy/about.html
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sidpy-0.12.6-1.src.rpm
location_href: Packages/python-sidpy-help-0.12.6-1.noarch.rpm
checksum_type: sha256
description:
  Python utilities for storing and visualizing Spectroscopic and Imaging Data (SID)
  Please see our `website <https://pycroscopy.github.io/sidpy/index.html>`_ for more information.


pkgId: 75e11af59cb586f58fa47f4b04f0bc097522083c1cc9dcfdbc80ed3c4d5ac575
name: python-sidraconnector
arch: noarch
version: 2024.7.2.post453
epoch: 0
release: 1
summary: A SDK for Sidra connectors
url: https://sidra.dev/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sidraconnector-2024.7.2.post453-1.src.rpm
location_href: Packages/python-sidraconnector-2024.7.2.post453-1.noarch.rpm
checksum_type: sha256
description:
  This project contains the Python SDK for Connectors.

  This SDK contains methods intended to use from Jupyter notebooks as part of Sidra Connectors. Most methods will require SidraApiPythonClient and could be implemented using SidraApiPythonClient only, but the SDK implementation will be more friendly and easy to use

rpm_license:
  Copyright (C) Sidra Data Services - All Rights Reserved Unauthorized copying of this file, via any medium is strictly prohibited Proprietary and confidential Written by Sidra <product@sidra.dev>, 2023


pkgId: c75ea24958579b960865e8a558f21706ea99ddabbaca90abf9fa6a347c6c550b
name: python-sigmap-help
arch: noarch
version: 1.0.0
epoch: 0
release: 1
summary: Development documents and examples for sigmap
url: https://github.com/Goosang-Yu/sigmap
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sigmap-1.0.0-1.src.rpm
location_href: Packages/python-sigmap-help-1.0.0-1.noarch.rpm
checksum_type: sha256
description:
  Python package for Sigma70 promoter Prediction. This package used Sigma70Pred [(Patiyal et al. 2022)](https://www.frontiersin.org/journals/microbiology/articles/10.3389/fmicb.2022.1042127/full).


  This package can be installed by pip.
  ```python
  pip install sigmap
  ```


  First, prepare fasta file containing DNA sequence. Minimum length for prediction is 81nt. Then, calculate probability score by `SigmaFactor`. Run prediction model by `.predict` method. Results will be returned as `pd.DataFrame`.
  ```python
  from sigmap import SigmaFactor

  sigma = SigmaFactor()

  df_out = sigma.predict('tutorial/example_seq.fa')
  ```

  | ID      | Sequence                                          | Probability Score | Prediction   |
  | ------- | ------------------------------------------------- | ----------------- | ------------ |
  | \>Seq_1 | TAGCACGACGATAATATAAACGCAGCAAAAAAAAAAAAAAAAAAAA... | 0.145             | Non-Promoter |
  | \>Seq_2 | AGCTTGCGTCAATGGGCAAGGTGGGCTTGCATTTGCTTAATAGAAA... | 0.478             | Promoter     |
  | \>Seq_3 | TCGTTTTATTTCTTTTTTCTCCATTGAACTTTCAGTTTCTTTTCTA... | 0.692             | Promoter     |
  | \>Seq_4 | CGCAGCGGGTTTACCCTCTGACCGTTTCTGTTACGAAGGCTTTTTA... | 0.216             | Non-Promoter |
  | \>Seq_5 | TGCTGCTTGGTCTGTGGGTTGCCGCACAGGTTGCCGGTTCCACCAA... | 0.162             | Non-Promoter |
  | \>Seq_6 | GAATCCAACTAATGTTGTAAACTGGCAAGGTAATGTCATTAGTCAT... | 0.418             | Promoter     |

  Contact: Goosang Yu (gsyu93@gmail.com)


pkgId: 3d0fa34dd45345dcd0da0372187139995d24fffb40896784148acfe298c3695c
name: python-signchart-help
arch: noarch
version: 0.1.15
epoch: 0
release: 1
summary: Development documents and examples for signchart
url: https://github.com/reneaas/signchart
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-signchart-0.1.15-1.src.rpm
location_href: Packages/python-signchart-help-0.1.15-1.noarch.rpm
checksum_type: sha256
description:
  `signchart` is a Python package for plotting sign charts for polynomial functions. It is designed to be simple to use to generate beautiful sign charts for polynomial functions.





  ```python
  import signchart

  f = "(x**2 + 1)**2 * (x - 1)**2 * (x + 1)"

  signchart.plot(f=f, include_factors=True)
  signchart.savefig(
      dirname="dirname",
      fname="fname",
  )

  signchart.show()
  ```

  This will generate the following sign chart:

  ![sign chart](https://raw.githubusercontent.com/reneaas/signchart/refs/heads/main/examples/figures/example_1.svg)




  ```python
  import signchart

  f = "x**2 - x - 6"

  signchart.plot(
      f=f,
      include_factors=True,
      color=True,  # Includes colored lines.
      fn_name="g(x)",  # Names the function g(x)
  )

  signchart.savefig(
      dirname="figures",
      fname="example_2.svg",
  )

  signchart.show()
  ```

  This will generate the following sign chart:

  ![sign chart](https://raw.githubusercontent.com/reneaas/signchart/refs/heads/main/examples/figures/example_2.svg)



  ```python
  import signchart

  f = "-2 * x**2 + 2 * x + 12"

  signchart.plot(
      f=f,
      include_factors=True,
      color=True,  # Includes colored lines.
      fn_name="h(x)",  # Names the function h(x)
  )

  signchart.savefig(
      dirname="figures",
      fname="example_3.svg",
  )

  signchart.show()
  ```

  This will generate the following sign chart:

  ![sign chart](https://raw.githubusercontent.com/reneaas/signchart/refs/heads/main/examples/figures/example_3.svg)




  ```python
  import signchart

  f = "-3 * (t - 1) * (t + 3)"  # Uses 't' as variable in place of 'x'

  signchart.plot(
      f=f,
      include_factors=False,  # excludes linear factors in the polynomial
      color=False,  # sign lines are black (uncolored)
      fn_name="x(t)",  # Names the function x(t)
  )

  signchart.savefig(
      dirname="figures",
      fname="example_4.svg",
  )

  signchart.show()
  ```

  This will generate the following sign chart:

  ![sign chart](https://raw.githubusercontent.com/reneaas/signchart/refs/heads/main/examples/figures/example_4.svg)


pkgId: 2ab5a36ad09fb54e09561ad875da46baf42fc53b0c8f10fff7403a358e955ddd
name: python-signe-help
arch: noarch
version: 0.4.22
epoch: 0
release: 1
summary: Development documents and examples for signe
url: https://github.com/CrystalWindSnake/py-signe
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-signe-0.4.22-1.src.rpm
location_href: Packages/python-signe-help-0.4.22-1.noarch.rpm
checksum_type: sha256
description:
  [中文文档](./README.cn.md)



  A responsive system implemented in python with reference to the core mechanisms of [S.js](https://github.com/adamhaile/S) and [vue reactivity](https://github.com/vuejs/core/tree/main/packages/reactivity).



  ```shell
  pip install signe
  ```




  ```python
  from signe import signal, effect, computed

  num = signal(1)

  @computed
  def plus1():
      return num.value + 1


  @effect
  def _():
      print('plus1 is :',plus1.value)



  num.value=10




  ```

  - `signal` Creates a signal. Reads and writes via `.value`.
  - `computed` Creates a computed expression. The argument is a function. When a signal (`signal.value`) is used in the function to get a value, this calculation expression is automatically associated with the signal. When the value of the signal changes, the computed expression is automatically triggered to change.
  - `effect` is essentially the same as `computed`. A change in the signal or `computed` expression is automatically captured and triggered.


pkgId: 616782a9933929133a91b2011cd3d52334e356632fcba4480e53f1fe155e6886
name: python-sim-explorer-help
arch: noarch
version: 0.2.0
epoch: 0
release: 1
summary: Development documents and examples for sim-explorer
url: https://github.com/dnv-innersource/sim-explorer
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sim-explorer-0.2.0-1.src.rpm
location_href: Packages/python-sim-explorer-help-0.2.0-1.noarch.rpm
checksum_type: sha256
description:
  The package includes tools for experimentation on simulation models.
  In the current version experimentation on top of OSP models is implemented.
  The package introduces a json5-based file format for experiment specification.
  Based on this specification
  * a system model link is stored
  * active variables are defined and alias names can be given
  * the simulation base case variable settings are defined
  * a hierarchy of sub-cases can be defined with their dedicated variable settings
  * the common results to be retrieved from simulation runs is defined
  Other features are
  * alias variables can address multiple components of the same type, ensuring efficient experimentation.
  * alias variables can vectors, even in FMI2 models. It is possible to set/get slices of such vectors
  * variable settings can be time-based, enabling the definition of scenarios
  * variable retrievals (results) can be time-based (in general and per case), enabling efficient model verification
  The package does not support systematic variable sweep with respect to sets of variables.
  Such sweeps should be performed with separate tools.
  The package might be compared with navigating through a huge house, where the cases represent the various rooms,
  while searching for object in a given room is left to separate tools.
  The package is designed as support tool for Assurance of Simulation Models, see `DNV-RP-0513 <https://standards.dnv.com/explorer/document/6A4F5922251B496B9216572C23730D33/2>`_.
  The package is currently under development. More instructions and documentation will be added.

rpm_license:
  MIT License  Copyright (c) 2024 [DNV](https://www.dnv.com) [open source](https://github.com/dnv-opensource)  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: ce71b47e32f1ec2c4e8b6f56739332f1cd98cd0453243f1524cc51d3ec6616eb
name: python-simple-alto-parser-help
arch: noarch
version: 0.0.21
epoch: 0
release: 1
summary: Development documents and examples for simple-alto-parser
url: https://simple-alto-parser.readthedocs.io/en/latest/
rpm_license: GPLv3
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-simple-alto-parser-0.0.21-1.src.rpm
location_href: Packages/python-simple-alto-parser-help-0.0.21-1.noarch.rpm
checksum_type: sha256
description:
  This is a simple parser for ALTO XML files. It is designed to do three tasks separately:


  The simple alto parser facilitates the extraction of text from ALTO XML files, specifically tailored for retrieving OCR-recognized texts (e.g. through “Transkribus” https://readcoop.eu/de/transkribus/). Defined or manipulated by the user, the simple alto parser organizes the extracted text alongside its pertinent meta-information. Including for example the year of publication, page number, and pre-defined image sections etc. This structuring ensured that each part of the text is associated with its corresponding image and meta-information, facilitating precise retrieval and display at a later stage.


  There exist two fundamental parsing methods: 1. The extraction of relevant text segments through pattern recognition utilizing regular expressions (regex). 2. Matching based on predefined dictionaries. Whereby users can create their own dictionaries or utilize pre-existing ones (e.g. for country names etc.)
  Text segments recognized through these methods can be systematically categorized within the same function and subsequently omitted from the parsing process. This framework facilitates a multi-stage parsing approach with a low entry threshold, wherein uncategorized text segments remain visible following each parsing iteration.
  The simple alto parser also features a replace function, empowering the normalization of text segments during parsing. Simultaneously, irrelevant text segments can be removed from the structured text. A dedicated function for manual adjustments is also included, enabling modifications in cases where neither dictionary nor pattern matching proves sufficient.
  Employing these parsing methods enables comprehensive structuring of the text while preserving readability and retaining all meta-information. To maintain transparency and traceability, the original text is consistently preserved, ensuring visibility of all manipulations performed.


  The structured texts can be exported in various formats such as CSV, TSV, or JSON, with export parameters customizable to suit specific requirements. This allows tailored compilations of the structured texts. For example including all meta-information or solely the final structured texts. Allowing the data to be prepared directly for publication or for further analysis in the desired format and compilation.
  Further JSON files are generated for the dictionaries created during the parsing process. These files can also be exported in a structured manner, facilitating publication or utilization elsewhere.



  ```python
  from simple_alto_parser import AltoFileParser, AltoPatternParser, AltoFileExporter


  alto_parser = AltoFileParser('data')
  alto_parser.parse()


  pattern_parser = AltoPatternParser(alto_parser)
  pattern_parser.find(r'(^.*\& Cie\.$)').categorize('company_name').remove()




  alto_exporter = AltoFileExporter(alto_parser)
  alto_exporter.save_csv('output/alto_test.csv', delimiter=',')
  ```


pkgId: 76206df4814da25bf88ca7fc97d054950b618705c166c8e4ce87cdcc3e85aa86
name: python-simple-aws-wrapper-help
arch: noarch
version: 2.12.0
epoch: 0
release: 1
summary: Development documents and examples for simple-aws-wrapper
url: https://github.com/AndreaTrupia/simple_aws_wrapper
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-simple-aws-wrapper-2.12.0-1.src.rpm
location_href: Packages/python-simple-aws-wrapper-help-2.12.0-1.noarch.rpm
checksum_type: sha256
description:
  Example usage:<br>
  ``
  from src.simple_aws_wrapper.config import AWSConfig
  ``

  ``
  from src.simple_aws_wrapper.const import regions
  ``

  ``
  from src.simple_aws_wrapper.services.s3 import S3
  ``

  ``
  aws_config = AWSConfig()
  ``

  ``
  aws_config.set_region(regions.Region(regions.EU_WEST_1))
  ``

  ``
  s3 = S3()
  ``

  ``
  message_content='Hello World!'
  ``

  ``
  s3.put_object(message_content, "my-bucket", "my-object-key")
  ``


pkgId: d3f6954dc3803b53078e2fb78864b842b363dfeb88ccb60d6472297146a6246b
name: python-simple-gltf-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for simple-gltf
url: https://github.com/turtleizzy/simple_gltf
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-simple-gltf-0.1.0-1.src.rpm
location_href: Packages/python-simple-gltf-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  Simple GLTF is a Python library that provides a user-friendly interface for parsing and accessing data within GLTF (GL Transmission Format) files. It leverages the `pygltflib` library to handle the low-level details of GLTF parsing, while offering a higher-level API for easy data manipulation and access.



  - **Pythonic Interface**: Provides a clean and intuitive interface for working with GLTF data.
  - **Data Access**: Easily access various components of a GLTF file such as scenes, nodes, meshes, primitives, materials, etc.



  You can install Simple GLTF using pip:

  ```bash
  pip install simple-gltf
  ```

  Alternatively, you can clone the repository and install it manually:

  ```bash
  git clone https://github.com/turtleizzy/simple_gltf.git
  cd simple_gltf
  pip install .
  ```



  Here's a basic example of how to use Simple GLTF to parse a GLTF file and access its data:

  ```python
  import pygltflib
  from simple_gltf import RootInterface


  gltf = pygltflib.GLTF2().load('path_to_your_file.glb')


  root = RootInterface(gltf)


  scenes = root.scenes


  default_scene = root.scene


  nodes = default_scene.nodes


  mesh = nodes[0].mesh


  primitives = mesh.primitives


  positions = primitives[0].position

  print(positions)
  ```





  - **RootInterface**

    - `scenes`: List of `SceneInterface` objects.
    - `scene`: Default `SceneInterface` object.

  - **SceneInterface**

    - `nodes`: List of `NodeInterface` objects.

  - **NodeInterface**

    - `children`: List of child `NodeInterface` objects.
    - `mesh`: `MeshInterface` object for the attached mesh.
    - `matrix`: Transformation matrix of the node.
    - `name`: Name of the node.

  - **MeshInterface**

    - `primitives`: List of `PrimitiveInterface` objects.
    - `name`: Name of the mesh.

  - **PrimitiveInterface**
    - `position`: Numpy array of vertex positions.
    - `normal`: Numpy array of vertex normals.
    - `tangent`: Numpy array of vertex tangents.
    - `color`: List of numpy arrays containing vertex colors.
    - `texcoords`: List of numpy arrays containing texture coordinates.
    - `material`: Material object associated with the primitive.
    - `mode`: Rendering mode of the primitive.



  Contributions to Simple GLTF are welcome! Please follow these steps to contribute:

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



  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.



  - [pygltflib](https://github.com/KhronosGroup/pygltflib): A Python library for reading and writing GLTF files.
  - [Khronos Group](https://www.khronos.org/gltf/): Maintainers of the GLTF specification.

  Feel free to reach out if you have any questions or need further assistance!


pkgId: 9d527896c0ca8278cf1e5868a8b1475926f3ef488537a665c1cabdbee80dd5ef
name: python-simple-openai-help
arch: noarch
version: 4.3.1
epoch: 0
release: 1
summary: Development documents and examples for simple-openai
url: https://schleising.github.io/simple-openai/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-simple-openai-4.3.1-1.src.rpm
location_href: Packages/python-simple-openai-help-4.3.1-1.noarch.rpm
checksum_type: sha256
description:
  This is a simple wrapper around the OpenAI API.  It's not meant to be a full-featured library, but rather a simple way to get started with the API.

  The library provides both synchronous and asynchronous methods for interacting with the API.



  Install using pip:

  ```bash
  pip install simple-openai
  ```





  For the synchronous version, you can use the following code:

      from simple_openai import SimpleOpenai

      def main():
          
          storage_location = Path("/path/to/storage")

          
          system_message = "You are a helpful chatbot. You are very friendly and helpful. You are a good friend to have."

          
          client = SimpleOpenai(api_key, system_message, storage_location)

          
          result = client.get_chat_response("Hello, how are you?", name="Bob", chat_id="Group 1")

          
          if result.success:
              
              print(f'Success: {result.message}')
          else:
              
              print(f'Error: {result.message}')

          result = client.get_image_url("A cat")

          
          if result.success:
              
              print(f'Success: {result.message}')
          else:
              
              print(f'Error: {result.message}')

      if __name__ == "__main__":
          
          main()

  For the asynchronous version, you can use the following code:

      from simple_openai import AsyncSimpleOpenai
      import asyncio

      async def main():
          
          storage_location = Path("/path/to/storage")

          
          system_message = "You are a helpful chatbot. You are very friendly and helpful. You are a good friend to have."

          
          client = AsyncSimpleOpenai(api_key, system_message, storage_location)

          
          tasks = [
              client.get_chat_response("Hello, how are you?", name="Bob", chat_id="Group 1"),
              client.get_image_url("A cat"),
          ]

          
          for task in asyncio.as_completed(tasks):
              
              result = await task

              
              if result.success:
                  
                  print(f'Success: {result.message}')
              else:
                  
                  print(f'Error: {result.message}')

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



  The output of the functions is a [SimpleOpenaiResponse](https://schleising.github.io/simple-openai/simple_openai/responses/#src.simple_openai.responses.SimpleOpenaiResponse) object, which contains the following properties:

  - `success` - A boolean indicating whether the request was successful or not.
  - `message` - The message returned by the API.



  Functions can be added to the client using the `add_function` method. This method takes a function name and a function as arguments. The function should take an [OpenAIFunction](https://schleising.github.io/simple-openai/simple_openai/public_models/#src.simple_openai.models.open_ai_models.OpenAIFunction) object as its first argument, and the Python function itself as the second argument.

  The Python function should return a string, which will be passed to the API using the `function` role



  The documentation is available on [GitHub](https://schleising.github.io/simple-openai/)

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


pkgId: 44d235c55278388a84c925ba2620d5fee5d76f5c44086d5566e7457b85720d52
name: python-simple-py-config-help
arch: noarch
version: 0.0.1
epoch: 0
release: 1
summary: Development documents and examples for simple-py-config
url: https://github.com/sibir007/simple-py-config
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-simple-py-config-0.0.1-1.src.rpm
location_href: Packages/python-simple-py-config-help-0.0.1-1.noarch.rpm
checksum_type: sha256
description:
  Module for simple configuring python applications. This module is basically a copy of the corresponding Flack module with some modification.


pkgId: bb85373e9c0aa5e8f64b3673bd422a871e5bd22b7fa94cb56ceb359d0715d2b3
name: python-simple-sqlite3-orm-help
arch: noarch
version: 0.4.0
epoch: 0
release: 1
summary: Development documents and examples for simple-sqlite3-orm
url: https://pypi.org/project/simple-sqlite3-orm/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-simple-sqlite3-orm-0.4.0-1.src.rpm
location_href: Packages/python-simple-sqlite3-orm-help-0.4.0-1.noarch.rpm
checksum_type: sha256
description:
  A simple yet powerful SQLite3 ORM, powered by pydantic.

  [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=pga2rn_simple-sqlite3-orm&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=pga2rn_simple-sqlite3-orm)
  [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=pga2rn_simple-sqlite3-orm&metric=coverage)](https://sonarcloud.io/summary/new_code?id=pga2rn_simple-sqlite3-orm)
  [![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=pga2rn_simple-sqlite3-orm&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=pga2rn_simple-sqlite3-orm)
  [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=pga2rn_simple-sqlite3-orm&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=pga2rn_simple-sqlite3-orm)



  Check [sample_db.table](tests/sample_db/table.py) for more details.

rpm_license:
  Apache License Version 2.0, January 2004 http://www.apache.org/licenses/  TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION  1. Definitions.  "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.  "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.  "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.  "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.  "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.  "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.  "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).  "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.  "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."  "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.  2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.  3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.  4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:  (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and  (b) You must cause any modified files to carry prominent notices stating that You changed the files; and  (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and  (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.  You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.  5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.  6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.  7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.  8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.  9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.  END OF TERMS AND CONDITIONS  APPENDIX: How to apply the Apache License to your work.  To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!)  The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.  Copyright 2024 pga2rn  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at  http://www.apache.org/licenses/LICENSE-2.0  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


pkgId: 8b64e15d7cd87dc4fc875c1e4e63a019445826482abed3d0be26463b0c1f5a3b
name: python-simplematrixbotlib-help
arch: noarch
version: 2.12.1
epoch: 0
release: 1
summary: Development documents and examples for simplematrixbotlib
url: https://codeberg.org/imbev/simplematrixbotlib
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-simplematrixbotlib-2.12.1-1.src.rpm
location_href: Packages/python-simplematrixbotlib-help-2.12.1-1.noarch.rpm
checksum_type: sha256
description:
  (Version 2.12.1)

  Simple-Matrix-Bot-Lib is a Python bot library for the Matrix ecosystem built on [matrix-nio](https://github.com/poljar/matrix-nio).

  [View on Codeberg](https://codeberg.org/imbev/simplematrixbotlib) or [View on PyPi](https://pypi.org/project/simplematrixbotlib/) or
  [View docs on readthedocs.io](https://simple-matrix-bot-lib.readthedocs.io/en/latest/)

  Learn how you can contribute [here](CONTRIBUTING.md).



  - [x] hands-off approach: get started with just 10 lines of code (see [example](#Example-Usage))
  - [x] [end-to-end encryption support](https://simple-matrix-bot-lib.readthedocs.io/en/latest/manual.html#e2e-encryption)
  - [x] limited [verification support](https://simple-matrix-bot-lib.readthedocs.io/en/latest/manual.html#verification) (device only)
  - [x] easily [extensible config file](https://simple-matrix-bot-lib.readthedocs.io/en/latest/manual.html#extending-the-config-class-with-custom-settings)
  - [x] [user access management](https://simple-matrix-bot-lib.readthedocs.io/en/latest/manual.html#allowlist)
  - [x] access the matrix-nio library to use advanced features





  Installation from PyPi:

  ```
  python -m pip install simplematrixbotlib
  ```

  [Read the docs](https://simple-matrix-bot-lib.readthedocs.io/en/latest/manual.html#e2e-encryption) to learn how to install E2E encryption support.

  Download from Codeberg:

  ```
  git clone --branch master https://codeberg.org/imbev/simplematrixbotlib.git
  ```





  ```python





  import simplematrixbotlib as botlib

  creds = botlib.Creds("https://home.server", "echo_bot", "pass")
  bot = botlib.Bot(creds)
  PREFIX = '!'

  @bot.listener.on_message_event
  async def echo(room, message):
      match = botlib.MessageMatch(room, message, bot, PREFIX)

      if match.is_not_from_this_bot() and match.prefix() and match.command("echo"):

          await bot.api.send_text_message(
              room.room_id, " ".join(arg for arg in match.args())
              )

  bot.run()
  ```

  More information and examples can be found [here](https://simple-matrix-bot-lib.readthedocs.io/en/latest/).


pkgId: 4e404e21191ecf8a2adf34698f9131834d67cbd0ac98e4e48786a3fbf294922e
name: python-simplemseed-help
arch: noarch
version: 0.4.1
epoch: 0
release: 1
summary: Development documents and examples for simplemseed
url: https://github.com/crotwell/simplemseed
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-simplemseed-0.4.1-1.src.rpm
location_href: Packages/python-simplemseed-help-0.4.1-1.noarch.rpm
checksum_type: sha256
description:
  [![PyPI](https://img.shields.io/pypi/v/simplemseed)](https://pypi.org/project/simplemseed/)
  [![Documentation Status](https://readthedocs.org/projects/simplemseed/badge/?version=latest)](https://simplemseed.readthedocs.io/en/latest/?badge=latest)

  [Miniseed3](http://docs.fdsn.org/projects/miniseed3) (and miniseed2) in pure python.

  Read the docs at [readthedocs](https://simplemseed.readthedocs.io/en/latest/)



  `simplemseed` can be installed in conda environments from [conda-forge](https://conda-forge.org/docs/user/introduction/#how-can-i-install-packages-from-conda-forge) ..

  ```
  $ conda install --channel conda-forge simplemseed
  ```

  .. or from [pypi](https://pypi.org/project/simplemseed/) using `pip`:


  ```
  $ pip install simplemseed
  ```



  Write and read mseed3 records like:

  ```python


  from simplemseed import MSeed3Header, MSeed3Record, FDSNSourceId, readMSeed3Records

  data = [(i % 99 - 49) for i in range(0, 1000)]
  header = MSeed3Header()
  header.starttime = "2024-01-01T15:13:55.123456Z"
  header.sampleRatePeriod = 20
  sid = FDSNSourceId.createUnknown(header.sampleRatePeriod)
  ms3record = MSeed3Record(header, sid, data)

  ms3filename = "test.ms3"
  with open(ms3filename, "wb") as of:
      of.write(ms3record.pack())
      print(f"  save: {ms3record.details()} ")
      print(f"    to: {ms3filename} ")
  print()
  with open(ms3filename, "rb") as infile:
      for readms3record in readMSeed3Records(infile):
          print(f"  extract: {readms3record.details()} ")
          print(f"     from: {ms3filename} ")
  ```

  Access uncompressed timeseries data as numpy ndarray with:
  ```python
  dataArray = ms3record.decompress()
  ```


  Also includes compression and decompression
  for primitive data arrays and
  for Steim1 and Steim2, in pure python.



  Read miniseed2 with:
  ```python
  with open(ms2filename, "rb") as inms2:
      for ms2rec in simplemseed.readMiniseed2Records(inms2):
          print(ms2rec.summary())
  ```
  or read and convert to miniseed3:
  ```python
  with open(ms3filename, "wb") as outms3:
      with open(ms2filename, "rb") as inms2:
          for ms2rec in simplemseed.readMiniseed2Records(inms2):
              ms3rec = simplemseed.mseed2to3(ms2rec)
              outms3.write(ms3rec.pack())
  ```






  Print details about each miniseed3 record

  ```
  mseed3details casee.mseed3
            FDSN:CO_CASEE_00_H_H_Z, version 4, 285 bytes (format: 3)
                         start time: 2023-06-17T04:53:54.468392Z (168)
                  number of samples: 104
                   sample rate (Hz): 100.0
                              flags: [00000000] 8 bits$
                                CRC: 0x4D467F27
                extra header length: 31 bytes
                data payload length: 192 bytes
                   payload encoding: STEIM-2 integer compression (val: 11)
                      extra headers:

  Total 104 samples in 1 records
  ```



  ```
  % mseed3details --get "/FDSN/Time" casee_two.ms3
    {"Quality": 0}
  % mseed3details --getall "/FDSN/Time/Quality" casee_two.ms3 --verbose
  file: casee_two.ms3
  FDSN:CO_CASEE_00_H_H_Z 2023-06-17T04:53:50.008392Z 2023-06-17T04:53:50.178392Z (18 pts)
    0
  FDSN:CO_CASEE_00_H_H_Z 2023-06-17T04:53:50.188392Z 2023-06-17T04:53:55.498392Z (532 pts)
    0
  % mseed3details --set "/data" '{ "key": "val", "keyb": 3 }' casee_two.ms3
  % mseed3details --getall "/data" casee_two.ms3 --verbose
  file: casee_two.ms3
  FDSN:CO_CASEE_00_H_H_Z 2023-06-17T04:53:50.008392Z 2023-06-17T04:53:50.178392Z (18 pts)
    {"key": "val", "keyb": 3}
  FDSN:CO_CASEE_00_H_H_Z 2023-06-17T04:53:50.188392Z 2023-06-17T04:53:55.498392Z (532 pts)
    pointer not found in extra headers
  % mseed3details --setall "/data" '{ "key": "else", "keyb": 4 }' casee_two.ms3
  % mseed3details --set "/data/keyb" 42 casee_two.ms3
  % mseed3details --getall "/data" casee_two.ms3 --verbose
  file: casee_two.ms3
  FDSN:CO_CASEE_00_H_H_Z 2023-06-17T04:53:50.008392Z 2023-06-17T04:53:50.178392Z (18 pts)
    {"key": "else", "keyb": 42}
  FDSN:CO_CASEE_00_H_H_Z 2023-06-17T04:53:50.188392Z 2023-06-17T04:53:55.498392Z (532 pts)
    {"key": "else", "keyb": 4}
  ```


  - merge contiguous, in order, mseed3 records into larger records. Decompression
  is needed as steim1 and 2 cannot be merged without decompression, primitive
  types are already decompressed.
  ```
  mseed3merge -o merged.ms3 --decomp  bird_jsc.ms3
  ```



  Note most blockettes are ignored, other than 100, 1000, 1001

  ```
  mseed2to3 --ms2 casee.ms2 --ms3 casee.ms3
  ```




  Parse FDSN [sourceids](http://docs.fdsn.org/projects/source-identifiers/en/v1.0/)

  Split a FDSN source id:
  ```
  fdsnsourceid FDSN:CO_JSC_00_H_H_Z
        FDSN:CO_JSC_00_H_H_Z
         Net: CO
         Sta: JSC
         Loc: 00
        Band: H - High Broadband, >= 80 to < 250 Hz, response period >= 10 sec
      Source: H - High Gain Seismometer
   Subsource: Z
  ```

  Describe a band code:
  ```
  fdsnsourceid -b Q
        Band: Q - Q - Greater than 10 days , < 0.000001 Hz
  ```

  Find the correct band code for a sample rate:
  ```
  fdsnsourceid --sps 87
        Rate: 87.0 - H - H - High Broadband , >= 80 to < 250 Hz, response period >= 10 sec
        Rate: 87.0 - E - E - Extremely Short Period, >= 80 to < 250 Hz, response period < 10 sec
  ```

  Describe a source code:
  ```
  fdsnsourceid --source H N
      Source: H - High Gain Seismometer
         Measures displacement/velocity/acceleration along a line defined by the the dip and azimuth.
      Source: N - Accelerometer
         Measures displacement/velocity/acceleration along a line defined by the the dip and azimuth.
  ```



  There are more examples in the
  [examples](https://github.com/crotwell/simplemseed/tree/main/examples) directory.


pkgId: fefb89faa3ef98ea75f20555690cc4ec59edd06dd4c18f7cd71ab68676cb9433
name: python-simpleworkspace-help
arch: noarch
version: 1.2.383
epoch: 0
release: 1
summary: Development documents and examples for simpleworkspace
url: https://pypi.org/project/simpleworkspace/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-simpleworkspace-1.2.383-1.src.rpm
location_href: Packages/python-simpleworkspace-help-1.2.383-1.noarch.rpm
checksum_type: sha256
rpm_license:
  Copyright (C) 2022 simpleworkspace - All Rights Reserved  Proprietary library.  Unauthorized use, distribution, reproduction, or modification of this library, via any medium, is strictly prohibited unless explicit permission is obtained from simpleworkspace (the library owner as stated in pypi.org).  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: c85ed68e1d08dcb3e71abc0e1b120664482b2f8a14b5f740edb7632b0ae80c70
name: python-simqcore-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for simqcore
url: https://pypi.org/project/simqcore/
rpm_license: Apache License, Version 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-simqcore-0.1.0-1.src.rpm
location_href: Packages/python-simqcore-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  基于redis的消息队列。



  - 支持消息的队尾插入（FIFO），也可视为普通消息。
  - 支持消息的队首插入（FILO），也可视为高优先级消息。
  - 支持消息的消费确认。
  - 支持超时未确认消息的自动回收。
  - 支持消息超时策略的设定。
  - 支持多通道。
  - 支持未执行消息的取消。
  - 支持执行器在获取消息后主动释放消息。
  - 消息体使用yaml进行序列化，支持datetime、bytes等类型数值。



  ```shell
  pip install simqcore
  ```





  - 版本首发。


pkgId: 96295756383616160f42b5b3fe71ef08cfa11673ec2b868f1f64c0930d23cb1d
name: python-sinch-help
arch: noarch
version: 1.1.0
epoch: 0
release: 1
summary: Development documents and examples for sinch
url: https://github.com/sinch/sinch-sdk-python
rpm_license: Apache 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sinch-1.1.0-1.src.rpm
location_href: Packages/python-sinch-help-1.1.0-1.noarch.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://github.com/sinch/sinch-sdk-python/blob/main/LICENSE)


  [![Python 3.9](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-390/)
  [![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3100/)
  [![Python 3.11](https://img.shields.io/badge/python-3.11-blue.svg)](https://www.python.org/downloads/release/python-3110/)
  [![Python 3.12](https://img.shields.io/badge/python-3.12-blue.svg)](https://www.python.org/downloads/release/python-3120/)



  Here you'll find documentation related to the Sinch Python SDK, including how to install it, initialize it, and start developing Python code using Sinch services.

  To use Sinch services, you'll need a Sinch account and access keys. You can sign up for an account and create access keys at [dashboard.sinch.com](https://dashboard.sinch.com).

  For more information on the Sinch APIs on which this SDK is based, refer to the official [developer documentation portal](developers.sinch.com).


  - [Prerequisites](#prerequisites)
  - [Installation](#installation)
  - [Getting started](#getting-started)
  - [Logging]()



  - Python in one of the supported versions - 3.9, 3.10, 3.11, 3.12
  - pip
  - Sinch account



  You can install this package by typing:
  `pip install sinch`






  To initialize communication with Sinch backed, credentials obtained from Sinch portal have to be provided to the main client class of this SDK.
  It's highly advised to not hardcode those credentials, but to fetch them from environment variables:

  ```python
  from sinch import SinchClient

  sinch_client = SinchClient(
      key_id="key_id",
      key_secret="key_secret",
      project_id="some_project",
      application_key="application_key",
      application_secret="application_secret"
  )
  ```

  ```python
  import os
  from sinch import SinchClient

  sinch_client = SinchClient(
      key_id=os.getenv("KEY_ID"),
      key_secret=os.getenv("KEY_SECRET"),
      project_id=os.getenv("PROJECT_ID"),
      application_key=os.getenv("APPLICATION_KEY"),
      application_secret=os.getenv("APPLICATION_SECRET")
  )
  ```



  Sinch client provides access to the following Sinch products:
  - Numbers
  - SMS
  - Verification
  - Voice API
  - Conversation API (beta release)



  Logging configuration for this SDK utilizes following hierarchy:
  1. If no configuration was provided via `logger_name` or `logger` configurable, SDK will inherit configuration from the root logger with the `Sinch` prefix.
  2. If `logger_name` configurable was provided, SDK will use logger related to that name. For example: `myapp.sinch` will inherit configuration from the `myapp` logger.
  3. If `logger` (logger instance) configurable was provided, SDK will use that particular logger for all its logging operations.

  If all logging returned by this SDK needs to be disabled, usage of `NullHanlder` provided by the standard `logging` module is advised.





  Usage example of the `numbers` domain:

  ```python
  available_numbers = sinch_client.numbers.available.list(
      region_code="US",
      number_type="LOCAL"
  )
  ```
  Returned values are represented as Python `dataclasses`:

  ```python
  ListAvailableNumbersResponse(
      available_numbers=[
          Number(
              phone_number='+17862045855',
              region_code='US',
              type='LOCAL',
              capability=['SMS', 'VOICE'],
              setup_price={'currency_code': 'EUR', 'amount': '0.80'},
              monthly_price={'currency_code': 'EUR', 'amount': '0.80'}
              ...
  ```



  Each API throws a custom, API related exception for an unsuccessful backed call.

  Example for Numbers API:

  ```python
  from sinch.domains.numbers.exceptions import NumbersException

  try:
      nums = sinch_client.numbers.available.list(
          region_code="US",
          number_type="LOCAL"
      )
  except NumbersException as err:
      pass
  ```

  For handling all possible exceptions thrown by this SDK use `SinchException` (superclass of all Sinch exceptions) from `sinch.core.exceptions`.




  By default, two HTTP implementations are provided:
  - Synchronous using `requests` HTTP library
  - Asynchronous using `aiohttp` HTTP library

  For creating custom HTTP client code, use either `SinchClient` or `SinchClientAsync` client and inject your transport during initialisation:
  ```python
  sinch_client = SinchClientAsync(
      key_id="Spanish",
      key_secret="Inquisition",
      project_id="some_project",
      transport=MyHTTPAsyncImplementation
  )
  ```

  Custom client has to obey types and methods described by `HTTPTransport` abstract base class:
  ```python
  class HTTPTransport(ABC):
      @abstractmethod
      def request(self, endpoint: HTTPEndpoint) -> HTTPResponse:
          pass
  ```


  This project is licensed under the Apache License. See the [LICENSE](license.md) file for the license text.


pkgId: 7ef2a8283efd285601612094013b1b676bf9677f610d40185ac6addd668dbcd9
name: python-sinch-help
arch: noarch
version: 1.1.1
epoch: 0
release: 1
summary: Development documents and examples for sinch
url: https://github.com/sinch/sinch-sdk-python
rpm_license: Apache 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sinch-1.1.1-1.src.rpm
location_href: Packages/python-sinch-help-1.1.1-1.noarch.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://github.com/sinch/sinch-sdk-python/blob/main/LICENSE)


  [![Python 3.9](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-390/)
  [![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3100/)
  [![Python 3.11](https://img.shields.io/badge/python-3.11-blue.svg)](https://www.python.org/downloads/release/python-3110/)
  [![Python 3.12](https://img.shields.io/badge/python-3.12-blue.svg)](https://www.python.org/downloads/release/python-3120/)



  Here you'll find documentation related to the Sinch Python SDK, including how to install it, initialize it, and start developing Python code using Sinch services.

  To use Sinch services, you'll need a Sinch account and access keys. You can sign up for an account and create access keys at [dashboard.sinch.com](https://dashboard.sinch.com).

  For more information on the Sinch APIs on which this SDK is based, refer to the official [developer documentation portal](developers.sinch.com).


  - [Prerequisites](#prerequisites)
  - [Installation](#installation)
  - [Getting started](#getting-started)
  - [Logging]()



  - Python in one of the supported versions - 3.9, 3.10, 3.11, 3.12
  - pip
  - Sinch account



  You can install this package by typing:
  `pip install sinch`






  To initialize communication with Sinch backed, credentials obtained from Sinch portal have to be provided to the main client class of this SDK.
  It's highly advised to not hardcode those credentials, but to fetch them from environment variables:

  ```python
  from sinch import SinchClient

  sinch_client = SinchClient(
      key_id="key_id",
      key_secret="key_secret",
      project_id="some_project",
      application_key="application_key",
      application_secret="application_secret"
  )
  ```

  ```python
  import os
  from sinch import SinchClient

  sinch_client = SinchClient(
      key_id=os.getenv("KEY_ID"),
      key_secret=os.getenv("KEY_SECRET"),
      project_id=os.getenv("PROJECT_ID"),
      application_key=os.getenv("APPLICATION_KEY"),
      application_secret=os.getenv("APPLICATION_SECRET")
  )
  ```



  Sinch client provides access to the following Sinch products:
  - Numbers
  - SMS
  - Verification
  - Voice API
  - Conversation API (beta release)



  Logging configuration for this SDK utilizes following hierarchy:
  1. If no configuration was provided via `logger_name` or `logger` configurable, SDK will inherit configuration from the root logger with the `Sinch` prefix.
  2. If `logger_name` configurable was provided, SDK will use logger related to that name. For example: `myapp.sinch` will inherit configuration from the `myapp` logger.
  3. If `logger` (logger instance) configurable was provided, SDK will use that particular logger for all its logging operations.

  If all logging returned by this SDK needs to be disabled, usage of `NullHanlder` provided by the standard `logging` module is advised.





  Usage example of the `numbers` domain:

  ```python
  available_numbers = sinch_client.numbers.available.list(
      region_code="US",
      number_type="LOCAL"
  )
  ```
  Returned values are represented as Python `dataclasses`:

  ```python
  ListAvailableNumbersResponse(
      available_numbers=[
          Number(
              phone_number='+17862045855',
              region_code='US',
              type='LOCAL',
              capability=['SMS', 'VOICE'],
              setup_price={'currency_code': 'EUR', 'amount': '0.80'},
              monthly_price={'currency_code': 'EUR', 'amount': '0.80'}
              ...
  ```



  Each API throws a custom, API related exception for an unsuccessful backed call.

  Example for Numbers API:

  ```python
  from sinch.domains.numbers.exceptions import NumbersException

  try:
      nums = sinch_client.numbers.available.list(
          region_code="US",
          number_type="LOCAL"
      )
  except NumbersException as err:
      pass
  ```

  For handling all possible exceptions thrown by this SDK use `SinchException` (superclass of all Sinch exceptions) from `sinch.core.exceptions`.




  By default, two HTTP implementations are provided:
  - Synchronous using `requests` HTTP library
  - Asynchronous using `httpx` HTTP library

  For creating custom HTTP client code, use either `SinchClient` or `SinchClientAsync` client and inject your transport during initialisation:
  ```python
  sinch_client = SinchClientAsync(
      key_id="Spanish",
      key_secret="Inquisition",
      project_id="some_project",
      transport=MyHTTPAsyncImplementation
  )
  ```

  Custom client has to obey types and methods described by `HTTPTransport` abstract base class:
  ```python
  class HTTPTransport(ABC):
      @abstractmethod
      def request(self, endpoint: HTTPEndpoint) -> HTTPResponse:
          pass
  ```


  This project is licensed under the Apache License. See the [LICENSE](license.md) file for the license text.


pkgId: 0425d6b4082dcfc84debefe43c85335d1251fb99d97774b3671e64cf1acd44ec
name: python-singlecell-cookbook-help
arch: noarch
version: 0.2.2
epoch: 0
release: 1
summary: Development documents and examples for singlecell-cookbook
url: https://github.com/aarriojas/singlecell-cookbook
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-singlecell-cookbook-0.2.2-1.src.rpm
location_href: Packages/python-singlecell-cookbook-help-0.2.2-1.noarch.rpm
checksum_type: sha256
description:
  [![Tests](https://github.com/argearriojas/singlecell-cookbook/actions/workflows/tests.yml/badge.svg)](https://github.com/argearriojas/singlecell-cookbook/actions/workflows/tests.yml)

  A collection of tools for analyzing single-cell genomics data.



  You can install the package using pip:

  ```bash
  pip install singlecell-cookbook
  ```

  For development installation:

  ```bash
  git clone https://github.com/argearriojas/singlecell-cookbook.git
  cd singlecell-cookbook
  pip install -e ".[dev]"
  ```



  Some features (like pseudobulk analysis) require R and specific R packages. To use these features:

  1. Install the required R packages in R:

  ```R
  if (!require("BiocManager", quietly = TRUE))
      install.packages("BiocManager")

  BiocManager::install(c("edgeR", "MAST"))
  ```

  2. Install the R dependencies in Python:

  ```bash
  pip install "singlecell-cookbook[r]"
  ```



  Documentation is available at [Read the Docs](https://singlecell-cookbook.readthedocs.io/).



  To set up the development environment:

  1. Clone the repository
  2. Install development dependencies: `pip install -e ".[dev]"`
  3. Install pre-commit hooks: `pre-commit install`



  TBD. We need to assess the license according to the imported packages.



  Argenis Arriojas ([arriojasmaldonado001@umb.edu](mailto:arriojasmaldonado001@umb.edu))

rpm_license:
  MIT License  Copyright (c) 2024 Argenis Arriojas  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: 1a15410f56ebc7840348e276c20aee96fce445556ae8f24cea599849adde81bc
name: python-singular-api-client-help
arch: noarch
version: 0.6.9
epoch: 0
release: 1
summary: Development documents and examples for singular-api-client
url: https://github.com/singular-labs/singular_api_client/
rpm_license: Apache
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-singular-api-client-0.6.9-1.src.rpm
location_href: Packages/python-singular-api-client-help-0.6.9-1.noarch.rpm
checksum_type: sha256
description:
  This is the official Singular Reporting API Python Library. This library allows easy BI integration of Singular.
  For more information please visit our github repo: https://github.com/singular-labs/singular_api_client/


pkgId: 432913171cabe7a6f8c0dea5521e9cc44da7926c8d02cbbab23185f8447d16e4
name: python-sinhala-llm-evaluator-help
arch: noarch
version: 0.2.4
epoch: 0
release: 1
summary: Development documents and examples for sinhala-llm-evaluator
url: https://github.com/udithishanka
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sinhala-llm-evaluator-0.2.4-1.src.rpm
location_href: Packages/python-sinhala-llm-evaluator-help-0.2.4-1.noarch.rpm
checksum_type: sha256
description:
  `sinhala_llm_evaluator` is a Python package that provides tools for evaluating language models during training.



  ```bash
  pip install sinhala_llm_evaluator


pkgId: d4f3c2ba5910cdc031176cb8d2969171b2a7d965ada2c0440811f9a02040229f
name: python-sip-message-client-help
arch: noarch
version: 0.1.2
epoch: 0
release: 1
summary: Development documents and examples for sip-message-client
url: https://pypi.org/project/sip-message-client/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sip-message-client-0.1.2-1.src.rpm
location_href: Packages/python-sip-message-client-help-0.1.2-1.noarch.rpm
checksum_type: sha256
description:
  sip client to send message to asterisk



  ```python
  sip_client = SipClient("10.0.0.15", 5060, "sipuser", "password")
  response = sip_client.message.send("+48555222111", "test message")
  ```



  ```
  cmd/install_command_line.sh
  ```


  ```
  sip_message --server=10.0.0.15 --username=sipuser --password=password --recipient=+48555222111 --message="test message"`
  ```


pkgId: 74e2fdee0d9b51a7c32c556505b7797335a93841c06a8e6342ac21e4703b7adc
name: python-siphon-help
arch: noarch
version: 0.10.0
epoch: 0
release: 1
summary: Development documents and examples for siphon
url: https://pypi.org/project/siphon/
rpm_license: BSD-3-Clause
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-siphon-0.10.0-1.src.rpm
location_href: Packages/python-siphon-help-0.10.0-1.noarch.rpm
checksum_type: sha256
description:
  |License| |PRWelcome|
  |Docs| |PyPI| |Conda|
  |CodeCov|
  |Codacy|
  Siphon is a collection of Python utilities for downloading data from Unidata
  data technologies. See our `support page`__ for ways to get help with Siphon.
  __ https://github.com/Unidata/siphon/blob/main/SUPPORT.md
  Siphon follows `semantic versioning <https://semver.org>`_ in its version number. With our
  current 0.x version, that implies that Siphon's APIs (application programming interfaces) are
  still evolving (we won't break things just for fun, but many things are still changing as we
  work through design issues). Also, for a version `0.x.y`, we change `x` when we
  release new features, and `y` when we make a release with only bug fixes.
  We support Python >= 3.7.


pkgId: cbb45b8620e2a25fde64b91762b7d59d17e7225f12238cce7e3cc7dbfae8daa1
name: python-sir-equations-help
arch: noarch
version: 0.1.1
epoch: 0
release: 1
summary: Development documents and examples for sir-equations
url: https://pypi.org/project/sir-equations/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sir-equations-0.1.1-1.src.rpm
location_href: Packages/python-sir-equations-help-0.1.1-1.noarch.rpm
checksum_type: sha256
description:
  This package implements an advanced epidemiological modeling framework that combines traditional SIR (Susceptible-Infected-Recovered) dynamics with social-psychological behavior patterns based on General Adaptation Syndrome (GAS) theory. It's designed to provide deeper insights into disease transmission patterns by incorporating human behavioral responses during epidemics.



  - Implementation of fundamental epidemiological equations
  - Customizable infection and recovery rates
  - Population conservation guarantees
  - Numerical integration using advanced solvers
  - Basic reproduction number (R0) calculations





  - Ignorance (Sign)
  - Resistance (Sres)
  - Exhaustion (Sexh)


  - State transition modeling
  - Behavioral feedback mechanisms
  - Time-dependent adaptation patterns



  - Superlinear alarm responses
  - Population density considerations
  - Social network effects
  - Mass media influence factors
  - Dynamic behavioral thresholds



  - Real-time simulation capabilities
  - Data visualization utilities
  - Parameter estimation functions
  - Statistical analysis tools
  - Cross-regional comparison frameworks


  pip install sir-equations



  from sir-equations import GASModel, run_simulation, analyze_data


  model = GASModel(
      a=0.3,          # infection rate
      b=0.1,          # recovery rate
      k=0.2,          # crowd effect parameter
      Ip=0.02,        # media influence factor
      transition_rates=[1/50, 1/100],  # behavioral transition rates
      initial_conditions=[0.99, 0.01, 0]
  )


  t, solution = run_simulation(model, t_span=100, t_points=1000)


  results = analyze_data(t, solution, model_type='GAS')


pkgId: 3c9055e5562f08d18f127065c8fdeab069df1e01a8d809fabd018863bd9f803a
name: python-sirepo-help
arch: noarch
version: 20241203.223641
epoch: 0
release: 1
summary: Development documents and examples for sirepo
url: https://sirepo.com
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sirepo-20241203.223641-1.src.rpm
location_href: Packages/python-sirepo-help-20241203.223641-1.noarch.rpm
checksum_type: sha256
description:
  <p align="center">



  </p>

  The Sirepo gateway supports physics codes like elegant, Warp, SRW, JSPEC, Zgoubi, and more. With it, you can configure, run, visualize, and share end-to-end HPC physical simulations on your browser. We call this Clickable Physics(TM).

  [Try the Sirepo gateway](https://www.sirepo.com). All you need is an email address to access. Sirepo is completely free.


  * [Curl Installer for Mac and Linux](#curl-installer)
  * [Manual Install with Docker](#manual-install-with-docker)
  * [Development](https://wiki.radiasoft.org/sirepo/wiki/Development)



  You can use our
  [curl installer on your Mac, PC (Cygwin only), or Linux box](https://github.com/radiasoft/download/blob/master/README.md)
  as follows:

  ```bash
  $ mkdir sirepo
  $ cd sirepo
  $ curl https://sirepo.run | bash
  ```

  For this to work, you will need to [install the prerequisites](https://github.com/radiasoft/download/blob/master/README.md#requirements).

  [API Documentation is available on Read the Docs.](https://sirepo.readthedocs.io)



  You can start Sirepo with [Docker](https://www.docker.com/).

  If you are running Docker as an ordinary user (recommended), use the following:

  ```bash
  $ docker run --rm -p 8000:8000 -v "$PWD:/sirepo" radiasoft/sirepo
  ```

  Then visit: http://127.0.0.1:8000

  The `-v "$PWD:/sirepo"` creates a `db` subdirectory, which is where the database is stored.



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

  Copyright (c) 2015–2024 [RadiaSoft LLC](https://radiasoft.net).  All Rights Reserved.

  ![RadiaSoft](https://github.com/radiasoft/images/blob/master/corporate/RadiaSoftLogoTransparent.png)


pkgId: 363c75eb88ca7562dbf20989a56c77c3776ff7b39525e88fc66cfd68e9a4db64
name: python-skautis-py-help
arch: noarch
version: 1.1.31
epoch: 0
release: 1
summary: Development documents and examples for skautis-py
url: https://github.com/skaut/skautis-py
rpm_license: BSD
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-skautis-py-1.1.31-1.src.rpm
location_href: Packages/python-skautis-py-help-1.1.31-1.noarch.rpm
checksum_type: sha256
description:
  Python knihovna pro připojení do [Skautisu](https://is.skaut.cz/)

  **Knihovna je automaticky generovaná s limitovaným testováním a může tedy obsahovat chyby.**

  Pokud na nějakou narazíte, případně máte nápad na vylepšení generování, určitě dejte vědět. Nicméně vzhledem k jednoduché architektuře a stáří projektu jsou chyby nepravděpodobné.


  Knihovna je dostupná na [PyPI](https://pypi.org/project/skautis-py), případně se dá nainstalovat přímo ze zdroje pomocí setup scriptu:

      python setup.py install

  Po instalaci stačí zavolat `SkautisApi` s klíčem aplikace, nad kterým se dají poté volat jednotlivé operace.
  Všechna volání jsou ve formátu: `skautis.<webservice>.<operation>(args)`.

  Seznam možných volání je na adrese https://is.skaut.cz/JunakWebservice/.

  Složka `example` obsahuje jednoduchou aplikaci, která ukazuje základní využití knihovny jako je přihlášení, získání dat o uživateli a odhlášení.


  ```python
  skautis = SkautisApi(SKAUTIS_APPID, test=True)
  ...
  // načtení informací o uživateli
  user_info = skautis.UserManagement.UserDetail(skautis_token, None)

  // získání logout linku
  logout_link = skautis.get_logout_url(skautis_token)
  ```


pkgId: be8d95285e52073e02130cd5573fff5af0f485066b8d085719b86301669e5ee1
name: python-skelly-viewer-help
arch: noarch
version: 2024.12.1026
epoch: 0
release: 1
summary: Development documents and examples for skelly-viewer
url: https://pypi.org/project/skelly-viewer/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-skelly-viewer-2024.12.1026-1.src.rpm
location_href: Packages/python-skelly-viewer-help-2024.12.1026-1.noarch.rpm
checksum_type: sha256
description:
  Create a conda environment using Python 3.11 (recommended, untested on other versions) and activate your conda environment

  Install skelly_viewer using `pip install skelly_viewer`



  After installing, in your conda terminal (with the right environment active), type `skelly_viewer'

  You should see a GUI pop up with an empty graph, a slider, and two buttons

  Click the `Load a session folder` button, and select a session folder that you would like to view the data from using the folder dialog
  (NOTE: As of right now, this viewer only works with pre-alpha labeled, post-processed data (it looks the `DataArrays` folder with a file
  called `mediaPipeSkel_3d_origin_aligned.npy` inside of it)

  You can move the slider, and the 3D graph should show your skeleton

  If you hit the `Load Videos` button on the side, select a folder of videos within your current session. When you move the slider, the videos
  should load in and appear on the right hand side


pkgId: 7100e65d15fc4f8cf8a49962c441214ba9b3698d618f8cdc2e2bca6e8f753e1f
name: python-skellyforge-help
arch: noarch
version: 2024.12.1009
epoch: 0
release: 1
summary: Development documents and examples for skellyforge
url: https://pypi.org/project/skellyforge/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-skellyforge-2024.12.1009-1.src.rpm
location_href: Packages/python-skellyforge-help-2024.12.1009-1.noarch.rpm
checksum_type: sha256
description:
   1. Create a 3.9 or 3.10 conda environment environment
     -have tested this successfully on 3.9.16 (latest 3.9 version) and 3.10.11 (latest 3.10 version)
   2. Navigate to this github repo and use the command `pip install -e.` to install the dependencies from the pyproject.toml


   1. Open up `postprocess_GUI.py`
   2. Scroll down to the `if __name__ == '__main__'` section at the bottom
   3. Change the `path_to_data_folder` variable to the path to your recording
     -NOTE: The GUI is set up to take file paths and file names corresponding to the
            FreeMoCap 1.0 release. If you need to change these file paths, you can do so
            from the `FileManager` class at the top of `postprocess_GUI.py`
   4. After changing the path, run the `postprocess_GUI.py` script, and the GUI will pop up


   - When the GUI pops up you'll see the main menu, from which you can alter and apply
     various postprocessing parameters (currently mostly for interpolation/filtering)
   - Press the 'Process Data and View Results' button to run the postprocessing on the skeleton,
     and the postprocessed skeleton should appear in the 'post-processed data' skeleton viewer
   - You can move between the Filtering and Interpolation tabs at the top to more closely look
     at how the different processing options affect your data
   - When finished, press the 'Save Out Data' button on the main menu to save the post_processed data
     and a .toml file of your processing parameters into the 'output_data' folder
   - Default processed data file name is 'mediapipe_processed_xyz.npy' and the parameter summary name
     is 'postprocessing_settings.toml'


pkgId: 7989bbb7408b82a49da9a8d65fd15bee1be99f23ee61d3aa1aa6a497df2467cc
name: python-skillpacks-help
arch: noarch
version: 0.1.92
epoch: 0
release: 1
summary: Development documents and examples for skillpacks
url: https://pypi.org/project/skillpacks/
rpm_license: Apache 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-skillpacks-0.1.92-1.src.rpm
location_href: Packages/python-skillpacks-help-0.1.92-1.noarch.rpm
checksum_type: sha256
description:
  <!-- PROJECT LOGO -->
  <br />
  <p align="center">
    <!-- <a href="https://github.com/agentsea/skillpacks">
      <img src="https://project-logo.png" alt="Logo" width="80">
    </a> -->

    <h1 align="center">SkillPacks</h1>

    <p align="center">
      Pluggable skillsets for AI agents
      <br />
      <a href="https://github.com/agentsea/skillpacks"><strong>Explore the docs »</strong></a>
      <br />
      <br />
      <a href="https://youtu.be/exoOUUwFRB8">View Demo</a>
      ·
      <a href="https://github.com/agentsea/skillpacks/issues">Report Bug</a>
      ·
      <a href="https://github.com/agentsea/skillpacks/issues">Request Feature</a>
    </p>
  </p>

  Skillpacks provide a means of fine tuning agents on tools, and the ability to hotswap learned skills at inference time.

  Teach a model how to use a **website** | **code base** | **API** | **database** | **application** | **...** &nbsp; then swap in that learned layer the moment you need it.



  ```bash
  pip install skillpacks
  ```



  Create an episode to record agent events

  ```python
  from skillpacks import Episode

  episode = Episode(remote="https://foo.bar")
  ```

  Take an action

  ```python
  from mllm import Router, RoleThread
  from skillpacks import V1Action, V1EnvState
  from agentdesk import Desktop

  router = Router.from_env()
  desktop = Desktop.local()

  thread = RoleThread()
  msg = f"""
  I need to open Google to search, your available action are {desktop.json_schema()}
  please return your selection as {V1Action.model_json_schema()}
  """
  thread.post(role="user", msg=msg)

  response = router.chat(thread, expect=V1Action)
  v1action = response.parsed

  action = desktop.find_action(name=v1action.name)
  result = desktop.use(action, **v1action.parameters)
  ```

  Record the action in the episode

  ```python
  event = episode.record(
      state=V1EnvState(),
      prompt=response.prompt,
      action=v1action,
      tool=desktop.ref(),
      result=result,
  )
  ```

  Mark actions as approved

  ```python

  episode.approve_one(event.id)


  episode.approve_prior(event.id)


  episode.approve_all()
  ```

  Get all approved actions in an episode

  ```python
  episode = Episode.find(id="123")[0]
  actions = episode.approved_actions()
  ```

  Get all approved actions in a namespace

  ```python
  from skillpacks import ActionEvent

  actions = ActionEvent.find(namespace="foo", approved=True)
  ```

  Get all approved actions for a tool

  ```python
  actions = ActionEvent.find(tool=desktop.ref(), approved=True)
  ```

  Tune a model on the actions (In progress)

  ```python
  from skillpacks.model import InternVLChat
  from skillpacks.runtime import KubernetesRuntime

  runtime = KubernetesRuntime()
  model = InternVLChat(runtime=runtime)

  result = model.train(actions=actions, follow=True, publish=True)
  ```



  Skillpacks is integrated with:

  - [MLLM](https://github.com/agentsea/mllm) A prompt management, routing, and schema validation library for multimodal LLMs
  - [Taskara](https://github.com/agentsea/taskara) A task management library for AI agents
  - [Surfkit](https://github.com/agentsea/surfkit) A platform for AI agents
  - [Threadmem](https://github.com/agentsea/threadmem) A thread management library for AI agents



  Come join us on [Discord](https://discord.gg/hhaq7XYPS6).



  Thread and prompt storage can be backed by:

  - Sqlite
  - Postgresql

  Sqlite will be used by default. To use postgres simply configure the env vars:

  ```sh
  DB_TYPE=postgres
  DB_NAME=skills
  DB_HOST=localhost
  DB_USER=postgres
  DB_PASS=abc123
  ```


pkgId: 94a7b91f2eec868e13d79fa8b6725aea373ace2159e26e3128c838b2e05aeadf
name: python-skimpy-help
arch: noarch
version: 0.0.16
epoch: 0
release: 1
summary: Development documents and examples for skimpy
url: https://pypi.org/project/skimpy/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-skimpy-0.0.16-1.src.rpm
location_href: Packages/python-skimpy-help-0.0.16-1.noarch.rpm
checksum_type: sha256
description:
  A light weight tool for creating summary statistics from dataframes.
  ![png](docs/logo.png)

  ![](logo.png)

  [![PyPI](https://img.shields.io/pypi/v/skimpy.svg)](https://pypi.org/project/skimpy/)
  [![Status](https://img.shields.io/pypi/status/skimpy.svg)](https://pypi.org/project/skimpy/)
  [![Python Version](https://img.shields.io/pypi/pyversions/skimpy)](https://pypi.org/project/skimpy)
  [![License](https://img.shields.io/pypi/l/skimpy)](https://opensource.org/licenses/MIT)
  [![Read the documentation at https://aeturrell.github.io/skimpy/](https://img.shields.io/badge/docs-passing-brightgreen)](https://aeturrell.github.io/skimpy/)
  [![Tests](https://github.com/aeturrell/skimpy/workflows/Tests/badge.svg)](https://github.com/aeturrell/skimpy/actions?workflow=Tests)
  [![Codecov](https://codecov.io/gh/aeturrell/skimpy/branch/main/graph/badge.svg)](https://codecov.io/gh/aeturrell/skimpy)
  [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
  [![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
  [![Google Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/gist/aeturrell/7bf183c559dc1d15ab7e7aaac39ea0ed/skimpy_demo.ipynb)
  [![Downloads](https://static.pepy.tech/badge/skimpy)](https://pepy.tech/project/skimpy)
  [![Source](https://img.shields.io/badge/source%20code-github-lightgrey?style=for-the-badge)](https://github.com/aeturrell/skimpy)

  ![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black)
  ![macOS](https://img.shields.io/badge/mac%20os-000000?style=for-the-badge&logo=macos&logoColor=F0F0F0)
  ![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white)



  **skimpy** is a light weight tool that provides summary statistics about variables in **pandas** or **Polars** data frames within the console or your interactive Python window.

  Think of it as a super-charged version of **pandas**' `df.describe()`.
  [You can find the documentation here](https://aeturrell.github.io/skimpy/).



  `skim` a **pandas** or **polars** dataframe and produce summary statistics within the console
  using:

  ```python
  from skimpy import skim

  skim(df)
  ```

  where `df` is a **pandas** or **polars** dataframe.

  If you need to a dataset to try *skimpy* out on, you can use the built-in test **Pandas** data frame:


  ```python
  from skimpy import generate_test_data, skim

  df = generate_test_data()
  skim(df)
  ```


  <pre style="white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace">╭──────────────────────────────────────────────── skimpy summary ─────────────────────────────────────────────────╮
  │ <span style="font-style: italic">         Data Summary         </span> <span style="font-style: italic">      Data Types       </span> <span style="font-style: italic">       Categories        </span>                                │
  │ ┏━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ ┏━━━━━━━━━━━━━┳━━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━━━━━━┓                                │
  │ ┃<span style="color: #008080; text-decoration-color: #008080; font-weight: bold"> Dataframe         </span>┃<span style="color: #008080; text-decoration-color: #008080; font-weight: bold"> Values </span>┃ ┃<span style="color: #008080; text-decoration-color: #008080; font-weight: bold"> Column Type </span>┃<span style="color: #008080; text-decoration-color: #008080; font-weight: bold"> Count </span>┃ ┃<span style="color: #008080; text-decoration-color: #008080; font-weight: bold"> Categorical Variables </span>┃                                │
  │ ┡━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ ┡━━━━━━━━━━━━━╇━━━━━━━┩ ┡━━━━━━━━━━━━━━━━━━━━━━━┩                                │
  │ │ Number of rows    │ 1000   │ │ float64     │ 3     │ │ class                 │                                │
  │ │ Number of columns │ 13     │ │ category    │ 2     │ │ location              │                                │
  │ └───────────────────┴────────┘ │ datetime64  │ 2     │ └───────────────────────┘                                │
  │                                │ object      │ 2     │                                                          │
  │                                │ int64       │ 1     │                                                          │
  │                                │ bool        │ 1     │                                                          │
  │                                │ string      │ 1     │                                                          │
  │                                │ timedelta64 │ 1     │                                                          │
  │                                └─────────────┴───────┘                                                          │
  │ <span style="font-style: italic">                                                    number                                                    </span>  │
  │ ┏━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┓  │
  │ ┃<span style="font-weight: bold"> column  </span>┃<span style="font-weight: bold"> NA   </span>┃<span style="font-weight: bold"> NA %  </span>┃<span style="font-weight: bold"> mean      </span>┃<span style="font-weight: bold"> sd      </span>┃<span style="font-weight: bold"> p0         </span>┃<span style="font-weight: bold"> p25     </span>┃<span style="font-weight: bold"> p50        </span>┃<span style="font-weight: bold"> p75    </span>┃<span style="font-weight: bold"> p100  </span>┃<span style="font-weight: bold"> hist   </span>┃  │
  │ ┡━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━┩  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">length </span> │ <span style="color: #008080; text-decoration-color: #008080">   0</span> │ <span style="color: #008080; text-decoration-color: #008080">    0</span> │ <span style="color: #008080; text-decoration-color: #008080">   0.5016</span> │ <span style="color: #008080; text-decoration-color: #008080"> 0.3597</span> │ <span style="color: #008080; text-decoration-color: #008080"> 1.573e-06</span> │ <span style="color: #008080; text-decoration-color: #008080">  0.134</span> │ <span style="color: #008080; text-decoration-color: #008080">    0.4976</span> │ <span style="color: #008080; text-decoration-color: #008080">0.8602</span> │ <span style="color: #008080; text-decoration-color: #008080">    1</span> │ <span style="color: #008000; text-decoration-color: #008000">▇▃▃▃▅▇</span> │  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">width  </span> │ <span style="color: #008080; text-decoration-color: #008080">   0</span> │ <span style="color: #008080; text-decoration-color: #008080">    0</span> │ <span style="color: #008080; text-decoration-color: #008080">    2.037</span> │ <span style="color: #008080; text-decoration-color: #008080">  1.929</span> │ <span style="color: #008080; text-decoration-color: #008080">  0.002057</span> │ <span style="color: #008080; text-decoration-color: #008080">  0.603</span> │ <span style="color: #008080; text-decoration-color: #008080">     1.468</span> │ <span style="color: #008080; text-decoration-color: #008080"> 2.953</span> │ <span style="color: #008080; text-decoration-color: #008080">13.91</span> │ <span style="color: #008000; text-decoration-color: #008000"> ▇▃▁  </span> │  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">depth  </span> │ <span style="color: #008080; text-decoration-color: #008080">   0</span> │ <span style="color: #008080; text-decoration-color: #008080">    0</span> │ <span style="color: #008080; text-decoration-color: #008080">    10.02</span> │ <span style="color: #008080; text-decoration-color: #008080">  3.208</span> │ <span style="color: #008080; text-decoration-color: #008080">         2</span> │ <span style="color: #008080; text-decoration-color: #008080">      8</span> │ <span style="color: #008080; text-decoration-color: #008080">        10</span> │ <span style="color: #008080; text-decoration-color: #008080">    12</span> │ <span style="color: #008080; text-decoration-color: #008080">   20</span> │ <span style="color: #008000; text-decoration-color: #008000">▁▃▇▆▃▁</span> │  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">rnd    </span> │ <span style="color: #008080; text-decoration-color: #008080"> 118</span> │ <span style="color: #008080; text-decoration-color: #008080"> 11.8</span> │ <span style="color: #008080; text-decoration-color: #008080"> -0.01977</span> │ <span style="color: #008080; text-decoration-color: #008080">  1.002</span> │ <span style="color: #008080; text-decoration-color: #008080">    -2.809</span> │ <span style="color: #008080; text-decoration-color: #008080">-0.7355</span> │ <span style="color: #008080; text-decoration-color: #008080">-0.0007736</span> │ <span style="color: #008080; text-decoration-color: #008080">0.6639</span> │ <span style="color: #008080; text-decoration-color: #008080">3.717</span> │ <span style="color: #008000; text-decoration-color: #008000">▁▅▇▅▁ </span> │  │
  │ └─────────┴──────┴───────┴───────────┴─────────┴────────────┴─────────┴────────────┴────────┴───────┴────────┘  │
  │ <span style="font-style: italic">                                                   category                                                   </span>  │
  │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓  │
  │ ┃<span style="font-weight: bold"> column                      </span>┃<span style="font-weight: bold"> NA         </span>┃<span style="font-weight: bold"> NA %            </span>┃<span style="font-weight: bold"> ordered                 </span>┃<span style="font-weight: bold"> unique              </span>┃  │
  │ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">class                      </span> │ <span style="color: #008080; text-decoration-color: #008080">         0</span> │ <span style="color: #008080; text-decoration-color: #008080">              0</span> │ <span style="color: #00d7ff; text-decoration-color: #00d7ff">False                  </span> │ <span style="color: #008080; text-decoration-color: #008080">                  2</span> │  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">location                   </span> │ <span style="color: #008080; text-decoration-color: #008080">         1</span> │ <span style="color: #008080; text-decoration-color: #008080">            0.1</span> │ <span style="color: #00d7ff; text-decoration-color: #00d7ff">False                  </span> │ <span style="color: #008080; text-decoration-color: #008080">                  5</span> │  │
  │ └─────────────────────────────┴────────────┴─────────────────┴─────────────────────────┴─────────────────────┘  │
  │ <span style="font-style: italic">                                                     bool                                                     </span>  │
  │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓  │
  │ ┃<span style="font-weight: bold"> column                          </span>┃<span style="font-weight: bold"> true             </span>┃<span style="font-weight: bold"> true rate                      </span>┃<span style="font-weight: bold"> hist                 </span>┃  │
  │ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━┩  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">booly_col                      </span> │ <span style="color: #008080; text-decoration-color: #008080">             516</span> │ <span style="color: #008080; text-decoration-color: #008080">                          0.52</span> │ <span style="color: #008000; text-decoration-color: #008000">       ▇    ▇       </span> │  │
  │ └─────────────────────────────────┴──────────────────┴────────────────────────────────┴──────────────────────┘  │
  │ <span style="font-style: italic">                                                   datetime                                                   </span>  │
  │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓  │
  │ ┃<span style="font-weight: bold"> column                       </span>┃<span style="font-weight: bold"> NA    </span>┃<span style="font-weight: bold"> NA %     </span>┃<span style="font-weight: bold"> first              </span>┃<span style="font-weight: bold"> last              </span>┃<span style="font-weight: bold"> frequency       </span>┃  │
  │ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">datetime                    </span> │ <span style="color: #008080; text-decoration-color: #008080">    0</span> │ <span style="color: #008080; text-decoration-color: #008080">       0</span> │ <span style="color: #800000; text-decoration-color: #800000">    2018-01-31    </span> │ <span style="color: #800000; text-decoration-color: #800000">   2101-04-30    </span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">ME             </span> │  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">datetime_no_freq            </span> │ <span style="color: #008080; text-decoration-color: #008080">    3</span> │ <span style="color: #008080; text-decoration-color: #008080">     0.3</span> │ <span style="color: #800000; text-decoration-color: #800000">    1992-01-05    </span> │ <span style="color: #800000; text-decoration-color: #800000">   2023-03-04    </span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">None           </span> │  │
  │ └──────────────────────────────┴───────┴──────────┴────────────────────┴───────────────────┴─────────────────┘  │
  │ <span style="font-style: italic">                                           &lt;class 'datetime.date'&gt;                                            </span>  │
  │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓  │
  │ ┃<span style="font-weight: bold"> column                           </span>┃<span style="font-weight: bold"> NA    </span>┃<span style="font-weight: bold"> NA %     </span>┃<span style="font-weight: bold"> first            </span>┃<span style="font-weight: bold"> last             </span>┃<span style="font-weight: bold"> frequency      </span>┃  │
  │ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">datetime.date                   </span> │ <span style="color: #008080; text-decoration-color: #008080">    0</span> │ <span style="color: #008080; text-decoration-color: #008080">       0</span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">2018-01-31      </span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">2101-04-30      </span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">ME            </span> │  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">datetime.date_no_freq           </span> │ <span style="color: #008080; text-decoration-color: #008080">    0</span> │ <span style="color: #008080; text-decoration-color: #008080">       0</span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">1992-01-05      </span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">2023-03-04      </span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">None          </span> │  │
  │ └──────────────────────────────────┴───────┴──────────┴──────────────────┴──────────────────┴────────────────┘  │
  │ <span style="font-style: italic">                                                 timedelta64                                                  </span>  │
  │ ┏━━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓  │
  │ ┃<span style="font-weight: bold"> column         </span>┃<span style="font-weight: bold"> NA   </span>┃<span style="font-weight: bold"> NA %    </span>┃<span style="font-weight: bold"> mean                   </span>┃<span style="font-weight: bold"> median                 </span>┃<span style="font-weight: bold"> max                    </span>┃  │
  │ ┡━━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">time diff     </span> │ <span style="color: #008080; text-decoration-color: #008080">   5</span> │ <span style="color: #008080; text-decoration-color: #008080">    0.5</span> │ <span style="color: #008080; text-decoration-color: #008080">       8 days 00:05:47</span> │ <span style="color: #008080; text-decoration-color: #008080">       0 days 00:00:00</span> │ <span style="color: #008080; text-decoration-color: #008080">      26 days 00:00:00</span> │  │
  │ └────────────────┴──────┴─────────┴────────────────────────┴────────────────────────┴────────────────────────┘  │
  │ <span style="font-style: italic">                                                    string                                                    </span>  │
  │ ┏━━━━━━━━┳━━━━┳━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━┓  │
  │ ┃<span style="font-weight: bold">        </span>┃<span style="font-weight: bold">    </span>┃<span style="font-weight: bold">      </span>┃<span style="font-weight: bold">            </span>┃<span style="font-weight: bold">           </span>┃<span style="font-weight: bold">            </span>┃<span style="font-weight: bold">           </span>┃<span style="font-weight: bold"> chars per  </span>┃<span style="font-weight: bold"> words per </span>┃<span style="font-weight: bold"> total      </span>┃  │
  │ ┃<span style="font-weight: bold"> column </span>┃<span style="font-weight: bold"> NA </span>┃<span style="font-weight: bold"> NA % </span>┃<span style="font-weight: bold"> shortest   </span>┃<span style="font-weight: bold"> longest   </span>┃<span style="font-weight: bold"> min        </span>┃<span style="font-weight: bold"> max       </span>┃<span style="font-weight: bold"> row        </span>┃<span style="font-weight: bold"> row       </span>┃<span style="font-weight: bold"> words      </span>┃  │
  │ ┡━━━━━━━━╇━━━━╇━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━┩  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">text  </span> │ <span style="color: #008080; text-decoration-color: #008080"> 6</span> │ <span style="color: #008080; text-decoration-color: #008080"> 0.6</span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">How are   </span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">Indeed,  </span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">How are   </span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">What     </span> │ <span style="color: #008080; text-decoration-color: #008080">      31.1</span> │ <span style="color: #008080; text-decoration-color: #008080">      5.8</span> │ <span style="color: #008080; text-decoration-color: #008080">      5761</span> │  │
  │ │        │    │      │ <span style="color: #af87ff; text-decoration-color: #af87ff">you?      </span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">it was   </span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">you?      </span> │ <span style="color: #af87ff; text-decoration-color: #af87ff">weather! </span> │            │           │            │  │
  │ │        │    │      │            │ <span style="color: #af87ff; text-decoration-color: #af87ff">the most </span> │            │           │            │           │            │  │
  │ │        │    │      │            │ <span style="color: #af87ff; text-decoration-color: #af87ff">outrageou</span> │            │           │            │           │            │  │
  │ │        │    │      │            │ <span style="color: #af87ff; text-decoration-color: #af87ff">sly      </span> │            │           │            │           │            │  │
  │ │        │    │      │            │ <span style="color: #af87ff; text-decoration-color: #af87ff">pompous  </span> │            │           │            │           │            │  │
  │ │        │    │      │            │ <span style="color: #af87ff; text-decoration-color: #af87ff">cat I    </span> │            │           │            │           │            │  │
  │ │        │    │      │            │ <span style="color: #af87ff; text-decoration-color: #af87ff">have ever</span> │            │           │            │           │            │  │
  │ │        │    │      │            │ <span style="color: #af87ff; text-decoration-color: #af87ff">seen.    </span> │            │           │            │           │            │  │
  │ └────────┴────┴──────┴────────────┴───────────┴────────────┴───────────┴────────────┴───────────┴────────────┘  │
  │ <span style="font-style: italic">                                                    object                                                    </span>  │
  │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓  │
  │ ┃<span style="font-weight: bold"> column                                                                  </span>┃<span style="font-weight: bold"> NA           </span>┃<span style="font-weight: bold"> NA %              </span>┃  │
  │ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">datetime.date                                                          </span> │ <span style="color: #008080; text-decoration-color: #008080">           0</span> │ <span style="color: #008080; text-decoration-color: #008080">                0</span> │  │
  │ │ <span style="color: #af87ff; text-decoration-color: #af87ff">datetime.date_no_freq                                                  </span> │ <span style="color: #008080; text-decoration-color: #008080">           0</span> │ <span style="color: #008080; text-decoration-color: #008080">                0</span> │  │
  │ └─────────────────────────────────────────────────────────────────────────┴──────────────┴───────────────────┘  │
  ╰────────────────────────────────────────────────────── End ──────────────────────────────────────────────────────╯
  </pre>



  It is recommended that you set your datatypes before using **skimpy** (for example converting any text columns to pandas string datatype), as this will produce richer statistical summaries. However, the `skim()` function will try and guess what the datatypes of your columns are.



  You can find a full list of requirements in the [pyproject.toml](https://github.com/aeturrell/skimpy/blob/main/pyproject.toml) file.

  You can try this package out right now in your browser using this
  [Google Colab notebook](https://colab.research.google.com/gist/aeturrell/7bf183c559dc1d15ab7e7aaac39ea0ed/skimpy_demo.ipynb)
  (requires a Google account). Note that the Google Colab notebook uses the latest package released on PyPI (rather than the development release).



  You can install the latest release of *skimpy* via
  [pip](https://pip.pypa.io/) from [PyPI](https://pypi.org/):

  ```bash
  $ pip install skimpy
  ```

  To install the development version from git, use:

  ```bash
  $ pip install git+https://github.com/aeturrell/skimpy.git
  ```

  For development, see [contributing](contributing.qmd).



  Distributed under the terms of the [MIT license](https://opensource.org/licenses/MIT), *skimpy* is free and open source software.



  If you encounter any problems, please [file an issue](https://github.com/aeturrell/skimpy/issues) along with a detailed description.



  This project was generated from [\@cjolowicz](https://github.com/cjolowicz)\'s [Hypermodern Python Cookiecutter](https://github.com/cjolowicz/cookiecutter-hypermodern-python) template.

  **skimpy** was inspired by the R package [**skimr**](https://docs.ropensci.org/skimr/articles/skimr.html) and by exploratory Python packages including [**ydata_profiling**](https://docs.profiling.ydata.ai) and [**dataprep**](https://dataprep.ai/), from which the `clean_columns` function comes.

  This package would not have been possible without the [**Rich**](https://github.com/Textualize/rich) package.

  The package is built with [poetry](https://python-poetry.org/), while the documentation is built with [Quarto](https://quarto.org/) and [Quartodoc](https://github.com/machow/quartodoc) (a Python package). Tests are run with [nox](https://nox.thea.codes/en/stable/).

  Using **skimpy** in your paper? Let us know by raising an issue beginning with "citation" and we'll add it to this page.


pkgId: 0345eca04697576a74fcdbbac30eafa8d7558c012972c9e9211c36b748e01916
name: python-skincare-chemistry-help
arch: noarch
version: 1.0.0
epoch: 0
release: 1
summary: Development documents and examples for skincare-chemistry
url: https://github.com/venusflytrapfairy/skincare-chemistry
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-skincare-chemistry-1.0.0-1.src.rpm
location_href: Packages/python-skincare-chemistry-help-1.0.0-1.noarch.rpm
checksum_type: sha256
description:
  Welcome to the Skincare Chemistry Library! This Python package is designed to help users analyze skincare ingredients based on scientific principles and improve their understanding of skincare formulations. It includes functionalities for assessing the properties of various ingredients and offering insights into their effectiveness and safety.



  - **Ingredient Analysis**: Analyze individual ingredients' properties, benefits, and potential side effects.
  - **Formulation Evaluation**: Assess the interaction of ingredients in skincare formulations.
  - **Skin Type Matching**: Provide recommendations for ingredients based on different skin types (oily, dry, sensitive, etc.).



  To install the library, you can either download the source code directly or install it via `pip`.



  You can install the library using `pip`:

  ```bash
  pip install skincare-chemistry

  git clone https://github.com/yourusername/skincare-chemistry.git
  cd skincare-chemistry
  pip install .

  Documentation
  For more detailed documentation, please visit the GitHub Wiki.

  Contributing
  We welcome contributions to improve the library. Please see the Contributing Guide for more information.

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

  Contact
  For any questions or issues, please contact the project maintainers:

  Anusha_Asim (anushaasim21@yahoo.com)
  GitHub: venusflytrapfairy


pkgId: 6694658a8d7a30b8f15494c779262ebe7963a13d20636f6fbf2d038de5e3c477
name: python-skinport.py-help
arch: noarch
version: 0.26.0
epoch: 0
release: 1
summary: Development documents and examples for skinport.py
url: https://pypi.org/project/skinport.py/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-skinport.py-0.26.0-1.src.rpm
location_href: Packages/python-skinport.py-help-0.26.0-1.noarch.rpm
checksum_type: sha256
description:
  **Python 3.10 or higher is required**
  To install the library, you can just run the following command:
  ```bash

  $ python3 -m pip install -U skinport.py

  > py -3 -m pip install -U skinport.py
  ```
  To install the development version, do the following:
  ```bash
  $ git clone https://github.com/PaxxPatriot/skinport.py
  $ cd skinport.py
  $ python3 -m pip install -U .
  ```


pkgId: de98273e517aae0a35565fdb606902a7a4c1d6cb69e80d8f72fec3954659bb68
name: python-skl2onnx-help
arch: noarch
version: 1.18.0
epoch: 0
release: 1
summary: Development documents and examples for skl2onnx
url: https://github.com/onnx/sklearn-onnx
rpm_license: Apache License v2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-skl2onnx-1.18.0-1.src.rpm
location_href: Packages/python-skl2onnx-help-1.18.0-1.noarch.rpm
checksum_type: sha256
description:
  *sklearn-onnx* converts [scikit-learn](https://scikit-learn.org/stable/) models to [ONNX](https://github.com/onnx/onnx).
  Once in the ONNX format, you can use tools like [ONNX Runtime](https://github.com/Microsoft/onnxruntime) for high performance scoring.
  All converters are tested with [onnxruntime](https://onnxruntime.ai/).
  Any external converter can be registered to convert scikit-learn pipeline
  including models or transformers coming from external libraries.


  Full documentation including tutorials is available at [https://onnx.ai/sklearn-onnx/](https://onnx.ai/sklearn-onnx/).
  [Supported scikit-learn Models](https://onnx.ai/sklearn-onnx/supported.html)
  Last supported opset is 21.

  You may also find answers in [existing issues](https://github.com/onnx/sklearn-onnx/issues?utf8=%E2%9C%93&q=is%3Aissue)
  or submit a new one.


  You can install from [PyPi](https://pypi.org/project/skl2onnx/):
  ```
  pip install skl2onnx
  ```
  Or you can install from the source with the latest changes.
  ```
  pip install git+https://github.com/onnx/sklearn-onnx.git
  ```



  ```python

  import numpy as np
  from sklearn.datasets import load_iris
  from sklearn.model_selection import train_test_split
  from sklearn.ensemble import RandomForestClassifier

  iris = load_iris()
  X, y = iris.data, iris.target
  X = X.astype(np.float32)
  X_train, X_test, y_train, y_test = train_test_split(X, y)
  clr = RandomForestClassifier()
  clr.fit(X_train, y_train)


  from skl2onnx import to_onnx

  onx = to_onnx(clr, X[:1])
  with open("rf_iris.onnx", "wb") as f:
      f.write(onx.SerializeToString())


  import onnxruntime as rt

  sess = rt.InferenceSession("rf_iris.onnx", providers=["CPUExecutionProvider"])
  input_name = sess.get_inputs()[0].name
  label_name = sess.get_outputs()[0].name
  pred_onx = sess.run([label_name], {input_name: X_test.astype(np.float32)})[0]
  ```


  We welcome contributions in the form of feedback, ideas, or code.


  [Apache License v2.0](LICENSE)


pkgId: db82f021d22e9591edabdfe1de9c297b39a8102b8f6223f98944b95f745b77c2
name: python-sknnr-help
arch: noarch
version: 0.1.0a2
epoch: 0
release: 1
summary: Development documents and examples for sknnr
url: https://github.com/lemma-osu/sknnr
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sknnr-0.1.0a2-1.src.rpm
location_href: Packages/python-sknnr-help-0.1.0a2-1.noarch.rpm
checksum_type: sha256
description:
  [![ReadTheDocs](https://readthedocs.org/projects/sknnr/badge/?version=latest)](https://sknnr.readthedocs.io/en/latest)

  > ⚠️ **WARNING: sknnr is in active development!** ⚠️



  `sknnr` is a package for running k-nearest neighbor (kNN) imputation[^imputation] methods using estimators that are fully compatible with [`scikit-learn`](https://scikit-learn.org/stable/). Notably, common methods such as most similar neighbor (MSN, Moeur & Stage 1995), gradient nearest neighbor (GNN, Ohmann & Gregory, 2002), and random forest nearest neighbors[^rfnn] (RFNN, Crookston & Finley, 2008) are included in this package.



  - 🤝 Tight integration with the [`scikit-learn`](https://scikit-learn.org/stable/) API
  - 🐼 Native support for [`pandas`](https://pandas.pydata.org/) dataframes
  - 📊 [Multi-output](https://scikit-learn.org/stable/modules/multiclass.html) estimators for [regression and classification](https://sknnr.readthedocs.io/en/latest/usage/#regression-and-classification)
  - 📝 Results validated against [yaImpute](https://cran.r-project.org/web/packages/yaImpute/index.html) (Crookston & Finley 2008)[^validation]



  `sknnr` is an acronym of its main three components:

  1. **"s"** is for `scikit-learn`. All estimators in this package derive from the `sklearn.BaseEstimator` class and comply with the requirements associated with [developing custom estimators](https://scikit-learn.org/stable/developers/develop.html).
  2. **"knn"** is for k-nearest neighbors. All estimators use the _k_ >= 1 samples that are nearest in feature space to create their prediction. Each estimator in this package defines that feature space in a different way which often leads to different neighbors chosen for the prediction.
  3. **"r"** is for regression. Estimators in this package are run in [regression mode](https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsRegressor.html). For nearest neighbor imputation, this is simply an (optionally-weighted) average of its _k_ neighbors. When _k_ is set to 1, this effectively behaves as in [classification mode](https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html). All estimators support multi-output prediction so that multiple features can be predicted with the same estimator.



  1. Follow the [installation guide](https://sknnr.readthedocs.io/en/latest/installation).
  2. Import any `sknnr` estimator, like [MSNRegressor](https://sknnr.readthedocs.io/en/latest/api/estimators/msn), as a drop-in replacement for a `scikit-learn` regressor.
  ```python
  from sknnr import MSNRegressor

  est = MSNRegressor()
  ```
  3. Load a custom dataset like [SWO Ecoplot](https://sknnr.readthedocs.io/en/latest/api/datasets/swo_ecoplot) (or bring your own).
  ```python
  from sknnr.datasets import load_swo_ecoplot

  X, y = load_swo_ecoplot(return_X_y=True, as_frame=True)
  ```
  4. Train, predict, and score [as usual](https://scikit-learn.org/stable/getting_started.html#fitting-and-predicting-estimator-basics).
  ```python
  from sklearn.model_selection import train_test_split

  X_train, X_test, y_train, y_test = train_test_split(X, y)

  est = est.fit(X_train, y_train)
  est.score(X_test, y_test)
  ```
  5. Check out the additional features like [independent scoring](https://sknnr.readthedocs.io/en/latest/usage/#independent-scores-and-predictions), [dataframe indexing](https://sknnr.readthedocs.io/en/latest/usage/#retrieving-dataframe-indexes), and [dimensionality reduction](https://sknnr.readthedocs.io/en/latest/usage/#dimensionality-reduction).
  ```python

  print(est.fit(X, y).independent_score_)


  print(est.kneighbors(return_dataframe_index=True, return_distance=False))


  MSNRegressor(n_components=3).fit(X_train, y_train)
  ```


  `sknnr` was heavily inspired by (and endeavors to implement functionality of) the [yaImpute](https://cran.r-project.org/web/packages/yaImpute/index.html) package for R (Crookston & Finley 2008).  As Crookston and Finley (2008) note in their abstract,
  > Although nearest neighbor imputation is used in a host of disciplines, the methods implemented in the yaImpute package are tailored to imputation-based forest attribute estimation and mapping ... [there is] a growing interest in nearest neighbor imputation methods for spatially explicit forest inventory, and a need within this research community for software that facilitates comparison among different nearest neighbor search algorithms and subsequent imputation techniques.

  Indeed, many regional (e.g. [LEMMA](https://lemmadownload.forestry.oregonstate.edu/)) and national (e.g. [BIGMAP](https://storymaps.arcgis.com/stories/c710684b98f54452804e8960d37905b2), [TreeMap](https://www.firelab.org/project/treemap-tree-level-model-forests-united-states)) projects use nearest-neighbor methods to
  estimate and map forest attributes across time and space.

  To that end, `sknnr` ports and expands the functionality present in `yaImpute` into a Python package that helps facilitate intercomparison between k-nearest neighbor methods (and other built-in estimators from `scikit-learn`) using an API which is familiar to `scikit-learn` users.



  Thanks to Andrew Hudak (USDA Forest Service Rocky Mountain Research Station) for the inclusion of the [Moscow Mountain / St. Joes dataset](https://sknnr.readthedocs.io/en/latest/api/datasets/moscow_stjoes) (Hudak 2010), and the USDA Forest Service Region 6 Ecology Team for the inclusion of the [SWO Ecoplot dataset](https://sknnr.readthedocs.io/en/latest/api/datasets/swo_ecoplot) (Atzet et al., 1996). Development of this package was funded by:

  - an appointment to the United States Forest Service (USFS) Research Participation Program administered by the Oak Ridge Institute for Science and Education (ORISE) through an interagency agreement between the U.S. Department of Energy (DOE) and the U.S. Department of Agriculture (USDA).
  - a joint venture agreement between USFS Pacific Northwest Research Station and Oregon State University (agreement 19-JV-11261959-064).
  - a cost-reimbursable agreement between USFS Region 6 and Oregon State University (agreeement 21-CR-11062756-046).



  - Atzet, T, DE White, LA McCrimmon, PA Martinez, PR Fong, and VD Randall. 1996. Field guide to the forested plant associations of southwestern Oregon. USDA Forest Service. Pacific Northwest Region, Technical Paper R6-NR-ECOL-TP-17-96.
  - Crookston, NL, Finley, AO. 2008. yaImpute: An R package for kNN imputation. Journal of Statistical Software, 23(10), 16.
  - Hudak, A.T. 2010. Field plot measures and predictive maps for "Nearest neighbor imputation of species-level, plot-scale forest structure attributes from LiDAR data". Fort Collins, CO: U.S. Department of Agriculture, Forest Service, Rocky Mountain Research Station. https://www.fs.usda.gov/rds/archive/Catalog/RDS-2010-0012.
  - Moeur M, Stage AR. 1995. Most Similar Neighbor: An Improved Sampling Inference Procedure for Natural Resources Planning. Forest Science, 41(2), 337–359.
  - Ohmann JL, Gregory MJ. 2002. Predictive Mapping of Forest Composition and Structure with Direct Gradient Analysis and Nearest Neighbor Imputation in Coastal Oregon, USA. Canadian Journal of Forest Research, 32, 725–741.

  [^imputation]: In a mapping context, kNN imputation refers to predicting feature values for a target from its k-nearest neighbors, and should not be confused with the usual `scikit-learn` usage as a pre-filling strategy for missing input data, e.g. [`KNNImputer`](https://scikit-learn.org/stable/modules/generated/sklearn.impute.KNNImputer.html).
  [^rfnn]: In [development](https://github.com/lemma-osu/sknnr/issues/24)!
  [^validation]: All estimators and parameters with equivalent functionality in `yaImpute` are tested to 3 decimal places against the R package.


pkgId: e7c3e3554cdd5481a8a411f259f69d12d6175bf15e810c8aff341bfe7334d137
name: python-skys-llc-auth-help
arch: noarch
version: 0.1.15
epoch: 0
release: 1
summary: Development documents and examples for skys-llc-auth
url: https://pypi.org/project/skys-llc-auth/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-skys-llc-auth-0.1.15-1.src.rpm
location_href: Packages/python-skys-llc-auth-help-0.1.15-1.noarch.rpm
checksum_type: sha256
description:
  To make it easy for you to get started with GitLab, here's a list of recommended next steps.

  Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!



  - [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
  - [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:

  ```
  cd existing_repo
  git remote add origin https://gitlab.mydsr.ru/sit-sky-development/sit_sky_auth_lib.git
  git branch -M main
  git push -uf origin main
  ```



  - [ ] [Set up project integrations](https://gitlab.mydsr.ru/sit-sky-development/sit_sky_auth_lib/-/settings/integrations)



  - [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
  - [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
  - [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
  - [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
  - [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)



  Use the built-in continuous integration in GitLab.

  - [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
  - [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
  - [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
  - [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
  - [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)

  ***



  When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.



  Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.


  Choose a self-explaining name for your project.


  Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.


  On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.


  Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.


  Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.


  Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.


  Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.


  If you have ideas for releases in the future, it is a good idea to list them in the README.


  State if you are open to contributions and what your requirements are for accepting them.

  For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.

  You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.


  Show your appreciation to those who have contributed to the project.


  For open source projects, say how it is licensed.


  If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.


pkgId: 9222b5ddcbceafbf787027fe759996fd68fd5aa132058d03a6205eb6c9ded672
name: python-skytree-help
arch: noarch
version: 0.2.1
epoch: 0
release: 1
summary: Development documents and examples for skytree
url: https://github.com/Arndok/Skytree
rpm_license: CC BY-NC-SA 4.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-skytree-0.2.1-1.src.rpm
location_href: Packages/python-skytree-help-0.2.1-1.noarch.rpm
checksum_type: sha256
description:
  2D game framework for Python
  _Version 0.2.1_

  Skytree is a flexible, easy-to-use game framework that leverages Pygame for creating side-scrolling platformers and other kinds of 2D games.

  ![License](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey)

  This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License, which allows you to share and adapt the material for non-commercial purposes as long as you provide appropriate attribution and share any adaptations under the same license.
  For more information, see [CC BY-NC-SA 4.0 License](https://creativecommons.org/licenses/by-nc-sa/4.0/).


  Skytree uses Pygame to render 2D graphics, play audio and read user inputs. At the moment, only keyboard inputs are supported.
  The engine abstracts the game loop from the user, provides a standard structure for active game objects and a way to manage game resources.
  Objects are generally constructed by combining basic features (e.g., Drawable, Updateable) via multiclassing and can be connected or disconnected
  ultimately to a game manager singleton object in order to make them active or inactive.
  Drawable objects provide methods to manipulate their draw order and alignment, and there is a frame-by-frame animation system.
  Skytree features a collision detection-response system with support for different shaped hitboxes.
  User inputs are translated to string commands that can be interpreted by the game objects.
  There is a system of classes dedicated to modeling game entities and spaces, with a focus on sidescrolling platformers.





  The easiest way to install Skytree is through pip:

  ```
  pip install skytree
  ```



  Skytree requires `pygame` version 2.6. When you install via pip, this will be handled automatically.



  Setting up a controllable character in a blank space:

  ```Python





  from pygame.locals import K_a, K_w, K_d, K_s, K_LEFT, K_UP, K_RIGHT, K_DOWN, K_ESCAPE, K_RETURN, KEYUP, KEYDOWN


  from skytree import config
  from skytree.game import Game
  from skytree.key_commands import KeyboardReader




  config.WINDOW_MAGNIFY = 2








  keyboard_reader = KeyboardReader({
      **{key: "left" for key in (K_a, K_LEFT)},
      **{key: "up" for key in (K_w, K_UP)},
      **{key: "right" for key in (K_d, K_RIGHT)},
      **{key: "down" for key in (K_s, K_DOWN)},
      K_ESCAPE: "esc",
      K_RETURN: "enter"
      })


  game = Game()


  for event in (KEYUP, KEYDOWN):
      game.set_event_controller(event, keyboard_reader)








  from skytree.tileset import TileSet
  from skytree.boards import Board
  from skytree.sprites import TopDownPlayer







  player_tileset = TileSet(canvas = "player.png", tile_dim=(16, 24))





  player_anims = td_player_anims = {
          "idle_right": ((0,20), (1,1)),
          "walk_right": ((2,1), (0,1), (3,1), (0,1)),
          "idle_left": ((7,20), (8,1)),
          "walk_left": ((9,1), (7,1), (10,1), (7,1)),
          "idle_up": ((25,float("inf")),),
          "walk_up": ((26,1), (25,1), (27,1), (25,1)),
          "idle_down": ((21,20), (22,1)),
          "walk_down": ((23,1), (21,1), (24,1), (21,1)),
          "idle_right_up": ((32,float("inf")),),
          "walk_right_up": ((33,1), (32,1), (34,1), (32,1)),
          "idle_right_down": ((28,20), (29,1)),
          "walk_right_down": ((30,1), (28,1), (31,1), (28,1)),
          "idle_left_up": ((39,float("inf")),),
          "walk_left_up": ((40,1), (39,1), (41,1), (39,1)),
          "idle_left_down": ((35,20), (36,1)),
          "walk_left_down": ((37,1), (35,1), (38,1), (35,1))
          }




  player_starting_pos = (120, 108)


  topdown_player = TopDownPlayer(tileset=player_tileset, pos=player_starting_pos, anims=player_anims)










  Board(name="simple", border_policies="wrap", music="skytree_bask.ogg", entities=(topdown_player,), first_state=True)





  game.run()
  ```


pkgId: 3a7c9777f3977d16b8bad6d80563e4f606e4e2138a336cd00da3468c2af28417
name: python-slack-bolt-help
arch: noarch
version: 1.22.0
epoch: 0
release: 1
summary: Development documents and examples for slack-bolt
url: https://github.com/slackapi/bolt-python
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-slack-bolt-1.22.0-1.src.rpm
location_href: Packages/python-slack-bolt-help-1.22.0-1.noarch.rpm
checksum_type: sha256
description:
  <h1 align="center">Bolt <img src="https://raw.githubusercontent.com/slackapi/bolt-python/main/docs/static/img/bolt-logo.svg" alt="Bolt logo" width="32"/> for Python</h1>

  <p align="center">
      <a href="https://pypi.org/project/slack-bolt/">
          <img alt="PyPI - Version" src="https://img.shields.io/pypi/v/slack-bolt"></a>
      <a href="https://codecov.io/gh/slackapi/bolt-python">
          <img alt="Codecov" src="https://img.shields.io/codecov/c/gh/slackapi/bolt-python"></a>
      <a href="https://pepy.tech/project/slack-bolt">
          <img alt="Pepy Total Downloads" src="https://img.shields.io/pepy/dt/slack-bolt"></a>
      <br>
      <a href="https://pypi.org/project/slack-bolt/">
          <img alt="Python Versions" src="https://img.shields.io/pypi/pyversions/slack-bolt.svg"></a>
      <a href="https://tools.slack.dev/bolt-python/">
          <img alt="Documentation" src="https://img.shields.io/badge/dev-docs-yellow"></a>
  </p>

  A Python framework to build Slack apps in a flash with the latest platform features. Read the [getting started guide](https://tools.slack.dev/bolt-python/getting-started) and look at our [code examples](https://github.com/slackapi/bolt-python/tree/main/examples) to learn how to build apps using Bolt. The Python module documents are available [here](https://tools.slack.dev/bolt-python/api-docs/slack_bolt/).



  ```bash

  python -m venv .venv
  source .venv/bin/activate

  pip install -U pip
  pip install slack_bolt
  ```



  Create a Bolt for Python app by calling a constructor, which is a top-level export. If you'd prefer, you can create an [async app](#creating-an-async-app).

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

  from slack_bolt import App



  app = App()



  if __name__ == "__main__":
      app.start(3000)  # POST http://localhost:3000/slack/events
  ```



  ```bash
  export SLACK_SIGNING_SECRET=***
  export SLACK_BOT_TOKEN=xoxb-***
  python app.py


  ngrok http 3000
  ```



  If you use [Socket Mode](https://api.slack.com/socket-mode) for running your app, `SocketModeHandler` is available for it.

  ```python
  import os
  from slack_bolt import App
  from slack_bolt.adapter.socket_mode import SocketModeHandler


  app = App(token=os.environ["SLACK_BOT_TOKEN"])



  if __name__ == "__main__":
      
      handler = SocketModeHandler(app, os.environ["SLACK_APP_TOKEN"])
      handler.start()
  ```

  Run the app this way:

  ```bash
  export SLACK_APP_TOKEN=xapp-***
  export SLACK_BOT_TOKEN=xoxb-***
  python app.py



  ```



  Apps typically react to a collection of incoming events, which can correspond to [Events API events](https://api.slack.com/events-api), [actions](https://api.slack.com/interactivity/components), [shortcuts](https://api.slack.com/interactivity/shortcuts), [slash commands](https://api.slack.com/interactivity/slash-commands) or [options requests](https://api.slack.com/reference/block-kit/block-elements#external_select). For each type of
  request, there's a method to build a listener function.

  ```python

  app.action(action_id)(fn)


  app.action({"callback_id": callbackId})(fn)


  app.command(command_name)(fn)


  app.event(event_type)(fn)


  app.function(callback_id)(fn)


  app.message([pattern ,])(fn)


  app.options(action_id)(fn)


  app.shortcut(callback_id)(fn)


  app.view(callback_id)(fn)
  ```

  The recommended way to use these methods are decorators:

  ```python
  @app.event(event_type)
  def handle_event(event):
      pass
  ```



  Most of the app's functionality will be inside listener functions (the `fn` parameters above). These functions are called with a set of arguments, each of which can be used in any order. If you'd like to access arguments off of a single object, you can use `args`, an [`slack_bolt.kwargs_injection.Args`](https://github.com/slackapi/bolt-python/blob/main/slack_bolt/kwargs_injection/args.py) instance that contains all available arguments for that event.

  | Argument  | Description  |
  | :---: | :--- |
  | `body` | Dictionary that contains the entire body of the request (superset of `payload`). Some accessory data is only available outside of the payload (such as `trigger_id` and `authorizations`).
  | `payload` | Contents of the incoming event. The payload structure depends on the listener. For example, for an Events API event, `payload` will be the [event type structure](https://api.slack.com/events-api#event_type_structure). For a block action, it will be the action from within the `actions` list. The `payload` dictionary is also accessible via the alias corresponding to the listener (`message`, `event`, `action`, `shortcut`, `view`, `command`, or `options`). For example, if you were building a `message()` listener, you could use the `payload` and `message` arguments interchangably. **An easy way to understand what's in a payload is to log it**. |
  | `context` | Event context. This dictionary contains data about the event and app, such as the `botId`. Middleware can add additional context before the event is passed to listeners.
  | `ack` | Function that **must** be called to acknowledge that your app received the incoming event. `ack` exists for all actions, shortcuts, view submissions, slash command and options requests. `ack` returns a promise that resolves when complete. Read more in [Acknowledging events](https://tools.slack.dev/bolt-python/concepts/acknowledge).
  | `respond` | Utility function that responds to incoming events **if** it contains a `response_url` (shortcuts, actions, and slash commands).
  | `say` | Utility function to send a message to the channel associated with the incoming event. This argument is only available when the listener is triggered for events that contain a `channel_id` (the most common being `message` events). `say` accepts simple strings (for plain-text messages) and dictionaries (for messages containing blocks).
  | `client` | Web API client that uses the token associated with the event. For single-workspace installations, the token is provided to the constructor. For multi-workspace installations, the token is returned by using [the OAuth library](https://tools.slack.dev/bolt-python/concepts/authenticating-oauth), or manually using the `authorize` function.
  | `logger` | The built-in [`logging.Logger`](https://docs.python.org/3/library/logging.html) instance you can use in middleware/listeners.
  | `complete` | Utility function used to signal the successful completion of a custom step execution. This tells Slack to proceed with the next steps in the workflow. This argument is only available with the `.function` and `.action` listener when handling custom workflow step executions.
  | `fail` | Utility function used to signal that a custom step failed to complete. This tells Slack to stop the workflow execution. This argument is only available with the `.function` and `.action` listener when handling custom workflow step executions.



  If you'd prefer to build your app with [asyncio](https://docs.python.org/3/library/asyncio.html), you can import the [AIOHTTP](https://docs.aiohttp.org/en/stable/) library and call the `AsyncApp` constructor. Within async apps, you can use the async/await pattern.

  ```bash

  python -m venv .venv
  source .venv/bin/activate

  pip install -U pip

  pip install slack_bolt aiohttp
  ```

  In async apps, all middleware/listeners must be async functions. When calling utility methods (like `ack` and `say`) within these functions, it's required to use the `await` keyword.

  ```python

  from slack_bolt.async_app import AsyncApp

  app = AsyncApp()

  @app.event("app_mention")
  async def event_test(body, say, logger):
      logger.info(body)
      await say("What's up?")

  @app.command("/hello-bolt-python")
  async def command(ack, body, respond):
      await ack()
      await respond(f"Hi <@{body['user_id']}>!")

  if __name__ == "__main__":
      app.start(3000)
  ```

  If you want to use another async Web framework (e.g., Sanic, FastAPI, Starlette), take a look at the built-in adapters and their examples.

  * [The Bolt app examples](https://github.com/slackapi/bolt-python/tree/main/examples)
  * [The built-in adapters](https://github.com/slackapi/bolt-python/tree/main/slack_bolt/adapter)
  Apps can be run the same way as the syncronous example above. If you'd prefer another async Web framework (e.g., Sanic, FastAPI, Starlette), take a look at [the built-in adapters](https://github.com/slackapi/bolt-python/tree/main/slack_bolt/adapter) and their corresponding [examples](https://github.com/slackapi/bolt-python/tree/main/examples).



  [The documentation](https://tools.slack.dev/bolt-python) has more information on basic and advanced concepts for Bolt for Python. Also, all the Python module documents of this library are available [here](https://tools.slack.dev/bolt-python/api-docs/slack_bolt/).

  If you otherwise get stuck, we're here to help. The following are the best ways to get assistance working through your issue:

    * [Issue Tracker](http://github.com/slackapi/bolt-python/issues) for questions, bug reports, feature requests, and general discussion related to Bolt for Python. Try searching for an existing issue before creating a new one.
    * [Email](mailto:support@slack.com) our developer support team: `support@slack.com`


  [pypi-image]: https://badge.fury.io/py/slack-bolt.svg
  [pypi-url]: https://pypi.org/project/slack-bolt/
  [codecov-image]: https://codecov.io/gh/slackapi/bolt-python/branch/main/graph/badge.svg
  [codecov-url]: https://codecov.io/gh/slackapi/bolt-python
  [python-version]: https://img.shields.io/pypi/pyversions/slack-bolt.svg


pkgId: d9cf1728b168d423b5534a59669fed9ec71d4b53b1728b4849f6b84355982e68
name: python-slack-sdk-help
arch: noarch
version: 3.34.0
epoch: 0
release: 1
summary: Development documents and examples for slack-sdk
url: https://github.com/slackapi/python-slack-sdk
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-slack-sdk-3.34.0-1.src.rpm
location_href: Packages/python-slack-sdk-help-3.34.0-1.noarch.rpm
checksum_type: sha256
description:
  Whether you're building a custom app for your team, or integrating a third party service into your Slack workflows, Slack Developer Kit for Python allows you to leverage the flexibility of Python to get your project up and running as quickly as possible.
  The **Python Slack SDK** allows interaction with:
  - `slack_sdk.web`: for calling the [Web API methods][api-methods]
  - `slack_sdk.webhook`: for utilizing the [Incoming Webhooks](https://api.slack.com/messaging/webhooks) and [`response_url`s in payloads](https://api.slack.com/interactivity/handling#message_responses)
  - `slack_sdk.signature`: for [verifying incoming requests from the Slack API server](https://api.slack.com/authentication/verifying-requests-from-slack)
  - `slack_sdk.socket_mode`: for receiving and sending messages over [Socket Mode](https://api.slack.com/socket-mode) connections
  - `slack_sdk.audit_logs`: for utilizing [Audit Logs APIs](https://api.slack.com/admins/audit-logs)
  - `slack_sdk.scim`: for utilizing [SCIM APIs](https://api.slack.com/admins/scim)
  - `slack_sdk.oauth`: for implementing the [Slack OAuth flow](https://api.slack.com/authentication/oauth-v2)
  - `slack_sdk.models`: for constructing [Block Kit](https://api.slack.com/block-kit) UI components using easy-to-use builders
  - `slack_sdk.rtm`: for utilizing the [RTM API][rtm-docs]
  If you want to use our [Events API][events-docs] and Interactivity features, please check the [Bolt for Python][bolt-python] library. Details on the Tokens and Authentication can be found in our [Auth Guide](https://tools.slack.dev/python-slack-sdk/installation/).

  Are you looking for [slackclient](https://pypi.org/project/slackclient/)? The website is live [here](https://tools.slack.dev/python-slackclient/) just like before. However, the slackclient project is in maintenance mode now and this [`slack_sdk`](https://pypi.org/project/slack-sdk/) is the successor. If you have time to make a migration to slack_sdk v3, please follow [our migration guide](https://tools.slack.dev/python-slack-sdk/v3-migration/) to ensure your app continues working after updating.

  * [Requirements](#requirements)
  * [Installation](#installation)
  * [Getting started tutorial](#getting-started-tutorial)
  * [Basic Usage of the Web Client](#basic-usage-of-the-web-client)
    * [Sending a message to Slack](#sending-a-message-to-slack)
    * [Uploading files to Slack](#uploading-files-to-slack)
  * [Async usage](#async-usage)
    * [WebClient as a script](#asyncwebclient-in-a-script)
    * [WebClient in a framework](#asyncwebclient-in-a-framework)
  * [Advanced Options](#advanced-options)
    * [SSL](#ssl)
    * [Proxy](#proxy)
    * [DNS performance](#dns-performance)
    * [Example](#example)
  * [Migrating from v1](#migrating-from-v1)
  * [Support](#support)
  * [Development](#development)


pkgId: 0cb7bfd444f82ce41eb5e8b870568710f8a0c1274e946cc9c11d14e34671c412
name: python-slack-watchman-help
arch: noarch
version: 4.4.1
epoch: 0
release: 1
summary: Development documents and examples for slack-watchman
url: https://github.com/PaperMtn/slack-watchman
rpm_license: GPL-3.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-slack-watchman-4.4.1-1.src.rpm
location_href: Packages/python-slack-watchman-help-4.4.1-1.noarch.rpm
checksum_type: sha256
description:
  <img src="https://i.imgur.com/jeU9F0a.png" width="550">


  ![Python 2.7 and 3 compatible](https://img.shields.io/pypi/pyversions/slack-watchman)
  ![PyPI version](https://img.shields.io/pypi/v/slack-watchman.svg)
  ![License: MIT](https://img.shields.io/pypi/l/slack-watchman.svg)

  Monitoring and enumerating Slack for exposed secrets


  <img src="/images/slack_watchman.png" width="500">

  Slack Watchman is an application that uses the Slack API to find potentially sensitive data exposed in a Slack workspace, and to enumerate other useful information for red, blue and purple teams.

  More information about Slack Watchman can be found [on my blog](https://papermtn.co.uk/slack-watchman-monitoring-slack-workspaces-for-sensitive-information/).



  <img src="/images/slack_watchman_finding.png" width="500">

  Slack Watchman looks for:

  - API Keys, Tokens & Service Accounts
    - AWS, Azure, GCP, Google API, Slack (keys & webhooks), Twitter, Facebook, GitHub and more
    - Generic Private keys
    - Access Tokens, Bearer Tokens, Client Secrets, Private Tokens
  - Files
      - Certificate files
      - Potentially interesting/malicious/sensitive files (.docm, .xlsm, .zip etc.)
      - Executable files
      - Keychain files
      - Config files for popular services (Terraform, Jenkins, OpenVPN and more)
  - Personal Data
      - Leaked passwords
      - Passport numbers, Dates of birth, Social security numbers, National insurance numbers and more
  - Financial data
      - Paypal Braintree tokens, Bank card details, IBAN numbers, CUSIP numbers and more


  You can run Slack Watchman to look for results going back as far as:
  - 24 hours
  - 7 days
  - 30 days
  - All time


  <img src="/images/slack_watchman_enumeration.png" width="500">

  It also enumerates the following:
  - User data
      - All users & all admins
  - Conversation data
      - All conversations, including externally shared conversations
      - All conversations that include a Slack Canvas (which often contain sensitive or important information)
  - Workspace authentication options


  This means after one deep scan, you can schedule Slack Watchman to run regularly and only return results from your chosen timeframe.


  <img src="/images/slack_watchman_probe.png" width="500">

  You can run Slack Watchman in unauthenticated probe mode to enumerate authentication options and other information on a Workspace. This doesn't need a token, and returns:

  - Workspace name
  - Workspace ID
  - Approved domains (which can create accounts)
  - OAuth providers
  - SSO auth status
  - Two-factor requirements

  To run this mode use Slack Watchman with the `--probe` flag and the workspace domain to probe:

  ```commandline
  slack-watchman --probe https://domain.slack.com
  ```


  Slack Watchman uses custom YAML signatures to detect matches in Slack. These signatures are pulled from the central [Watchman Signatures repository](https://github.com/PaperMtn/watchman-signatures). Slack Watchman automatically updates its signature base at runtime to ensure its using the latest signatures to detect secrets.


  You can define signatures that you want to disable when running Slack Watchman by adding their IDs to the `disabled_signatures` section of the `watchman.conf` file. For example:

  ```yaml
  slack_watchman:
    token: ...
    cookie: ...
    url: ...
    disabled_signatures:
      - tokens_generic_bearer_tokens
      - tokens_generic_access_tokens
  ```

  You can find the ID of a signature in the individual YAML files in [Watchman Signatures repository](https://github.com/PaperMtn/watchman-signatures).



  Slack Watchman gives the following logging options:
  - Terminal-friendly Stdout
  - JSON to Stdout

  Slack Watchman defaults to terminal-friendly stdout logging if no option is given. This is designed to be easier for humans to read.

  JSON logging is also available, which is perfect for ingesting into a SIEM or other log analysis platforms.

  JSON formatted logging can be easily redirected to a file as below:
  ```commandline
  slack-watchman --timeframe a --all --output json >> slack_watchman_log.json
  ```



  To run Slack Watchman, you will need a Slack API OAuth access token. You can do this by creating a simple [Slack App](https://api.slack.com/apps).

  The app needs to have the following **User Token Scopes** added:
  ```
  channels:read
  files:read
  groups:read
  im:read
  links:read
  mpim:read
  remote_files:read
  search:read
  team:read
  users:read
  users:read.email
  ```
  **Note**: User tokens act on behalf of the user who authorises them, so I would suggest you create this app and authorise it using a service account, otherwise the app will have access to your private conversations and chats.


  Slack apps can be created from JSON manifests which define the details of the application and the scopes to approve. The app manifest for Slack Watchman can be found in [docs/app_manifest.json](/docs/app_manifest.json), you can use this to speed up creating your Slack app.


  Alternatively, Slack Watchman can also authenticate to Slack using a user `d` cookie, which is stored in the browser of each user logged into a workspace.

  To use cookie authentication, you will need to provide the `d` cookie, and the URL of the target workspace. Then you will need to use the `--cookie` flag when running Slack Watchman

  More information on cookie authentication can be found [on my blog](https://papermtn.co.uk/category/tools/slack-watchman/)

  Slack Watchman will first try to get the Slack token (plus the cookie token and URL if selected) from the environment variables
  - `SLACK_WATCHMAN_TOKEN`
  - `SLACK_WATCHMAN_COOKIE`
  - `SLACK_WATCHMAN_URL`

  If this fails it will try to load the token(s) from `.conf` file (see below).


  Configuration options can be passed in a file named `watchman.conf` which must be stored in your home directory. The file should follow the YAML format, and should look like below:
  ```yaml
  slack_watchman:
    token: xoxp-xxxxxxxx
    cookie: xoxd-%2xxxxx
    url: https://xxxxx.slack.com
    disabled_signatures:
      - tokens_generic_bearer_tokens
      - tokens_generic_access_tokens
  ```
  Slack Watchman will look for this file at runtime, and use the configuration options from here. If you are not using cookie auth, leave `cookie` and `url` blank.

  If you are having issues with your .conf file, run it through a YAML linter.

  An example file is in `docs/example.conf`

  **Note**: Cookie and URL values are optional, and not required if not using cookie authentication.


  You can install the latest stable version via pip:

  ```commandline
  python3 -m pip install slack-watchman
  ```

  Or build from source yourself:

  Download the release source files, then from the top level repository run:
  ```commandline
  python3 -m pip build
  python3 -m pip install --force-reinstall dist/*.whl
  ```



  Slack Watchman is also available from the Docker hub as a Docker image:

  `docker pull papermountain/slack-watchman:latest`

  You can then run Slack Watchman in a container, making sure you pass the required environment variables:

  ```commandline
  // help
  docker run --rm papermountain/slack-watchman -h

  // scan all
  docker run --rm -e SLACK_WATCHMAN_TOKEN=xoxp... papermountain/slack-watchman --timeframe a --all --output json
  docker run --rm --env-file .env papermountain/slack-watchman --timeframe a --all --output stdout
  ```


  Slack Watchman will be installed as a global command, use as follows:
  ```commandline
  usage: slack-watchman [-h] [--timeframe {d,w,m,a}] [--output {json,stdout}] [--version] [--all] [--users] [--channels] [--pii] [--secrets] [--debug] [--verbose] [--cookie] [--probe PROBE_DOMAIN]

  Monitoring and enumerating Slack for exposed secrets

  options:
    -h, --help            show this help message and exit
    --timeframe {d,w,m,a}, -t {d,w,m,a}
                          How far back to search: d = 24 hours w = 7 days, m = 30 days, a = all time
    --output {json,stdout}, -o {json,stdout}
                          Where to send results
    --version, -v         show program's version number and exit
    --all, -a             Find secrets and PII
    --users, -u           Enumerate users and output them to .csv in the current working directory
    --channels, -c        Enumerate channels and output them to .csv in the current working directory
    --pii, -p             Find personal data: DOB, passport details, drivers licence, ITIN, SSN etc.
    --secrets, -s         Find exposed secrets: credentials, tokens etc.
    --debug, -d           Turn on debug level logging
    --verbose, -V         Turn on more verbose output for JSON logging. This includes more fields, but is larger
    --cookie              Use cookie auth using Slack d cookie. REQUIRES either SLACK_WATCHMAN_COOKIE and SLACK_WATCHMAN_URL environment variables set, or both values set in watchman.conf
    --probe PROBE_DOMAIN  Perform an un-authenticated probe on a workspace for available authentication options and other information. Enter workspace domain to probe
    ```

  You can run Slack Watchman to look for everything, and output to default stdout:

  ```commandline
  slack-watchman --timeframe a --all
  ```


  You may be interested in the other apps in the Watchman family:
  - [Slack Watchman for Enterprise Grid](https://github.com/PaperMtn/slack-watchman-enterprise-grid)
  - [GitLab Watchman](https://github.com/PaperMtn/gitlab-watchman)
  - [GitHub Watchman](https://github.com/PaperMtn/github-watchman)


  The source code for this project is released under the [GNU General Public Licence](https://www.gnu.org/licenses/licenses.html#GPL). This project is not associated with Slack Technologies or Salesforce.


pkgId: 9be31d16334ec11f4c10db5c73cdf203409a03ef732cc23ed6942d67289ba619
name: python-slate-nlp-help
arch: noarch
version: 1.1.3
epoch: 0
release: 1
summary: Development documents and examples for slate-nlp
url: https://jkk.name/slate/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-slate-nlp-1.1.3-1.src.rpm
location_href: Packages/python-slate-nlp-help-1.1.3-1.noarch.rpm
checksum_type: sha256
description:
  Named Entity Recognition annotation |  `python slate.py tutorial/ner.md -t categorical -s token -o -c ner-book.config -l log.tutorial.ner.txt -sl -sm`
  Labelling spans of text in a document | `python slate.py tutorial/label.md -t categorical -s token -o -l log.tutorial.label.txt`
  Linking lines in a document | `python slate.py tutorial/link.md -t link -s line -o -l log.tutorial.link.txt`

  This tool has already been used for two annotation efforts involving multiple annotators ([Durrett et al., 2017](http://jkk.name/publication/emnlp17forums/) and [Kummerfeld et al., 2018](http://jkk.name/publication/arxiv18disentangle/)).
  Our workflow was as follows:
  - Create a repository containing (1) the annotation guide, (2) the data to be annotated divided into user-specific folders.
  - Each annotator downloaded slate and used it to do their annotations and commit the files to the repository.
  - Either the whole group or the project leader went through files that were annotated by multiple people, using the adjudication mode in the tool.

  The tool supports displaying annotations for the purpose of adjudicating disagreements.
  There are two steps involved.
  Specifically, you can request that a set of other annotation files be read.
  Then, whenever one of those annotation files includes something that your current adjudication does not, the text is shown in red.

  A  data list file contains a series of lines in the format:
  ```
  raw_file [output_file [cur_position [other_annotations]]]
  ```
  For example, this line says there is a raw text file `my-book.txt`, that the adjudications should be saved in `annotations-adjudicated.txt`, that annotation should start at the very start of `my-book.txt` and that there are three existing annotations to be compared:
  ```
  my-book.txt annotations-adjudicated.txt ((0, 0), (0, 0)) my-book.txt.annotations1 my-book.txt.annotations2 my-book.txt.annotations3
  ```
  Note: you can have as many "other_annotation" files as you want.

  Now run slate as follows:
  ```
  python slate.py -d data-list-file [any other arguments]
  ```

  The tutorial folder contains two example data list files:
  - `tutorial/data/list_with_disagreements.category.txt`
  - `tutorial/data/list_with_disagreements.link.txt`
  You can use them as follows:
  ```
  cd tutorial/data
  python ../../slate.py -d list_with_disagreements.category.txt -t categorical -s token
  ```

  You can save time by putting annotations that all annotators agreed on into the `annotations-adjudicated.txt` file.
  This bash pipeline will do that if you replace:
  - `ANNOTATION_FILES` with the names of all of your annotation files, separated by spaces
  - `N_FILES` with the number of annotation files you have
  ```
  cat ANNOTATION_FILES | sort | uniq -c | awk -v count=N_FILES '$1 == count' | sed 's/^ *[0-9]* *//' > annotations-adjudicated.txt
  ```
  Breaking this down, it does the following:
  - `cat ANNOTATION_FILES `, print the annotation files in the terminal
  - `sort `, sort their contents together
  - `uniq -c `, where there are consecutive lines that are the same, only keep one, and also indicate how many times each line occurred
  - `awk -v count=N_FILES '$1 == count' `, only keep lines where the number at the start matches `N_FILES`
  - `sed 's/^ *[0-9]* *//' > annotations-adjudicated.txt`, remove the number at the start of the line (placed there by the `uniq` command)


  ```
  usage: slate.py [-h] [-d DATA_LIST [DATA_LIST ...]] [-t {categorical,link}]
                  [-s {character,token,line,document}] [-c CONFIG_FILE] [-l LOG_PREFIX] [-ld]
                  [-sh] [-sl] [-sp] [-sm] [-r] [-o] [-ps] [-pf] [--do-not-show-linked]
                  [--alternate-comparisons]
                  [data ...]
  A tool for annotating text data.
  positional arguments:
    data                  Files to be annotated
  optional arguments:
    -h, --help            show this help message and exit
    -d DATA_LIST [DATA_LIST ...], --data-list DATA_LIST [DATA_LIST ...]
                          Files containing lists of files to be annotated
    -t {categorical,link}, --ann-type {categorical,link}
                          The type of annotation being done.
    -s {character,token,line,document}, --ann-scope {character,token,line,document}
                          The scope of annotation being done.
    -c CONFIG_FILE, --config-file CONFIG_FILE
                          A file containing configuration information.
    -l LOG_PREFIX, --log-prefix LOG_PREFIX
                          Prefix for logging files
    -ld, --log-debug      Provide detailed logging.
    -sh, --show-help      Show help on startup.
    -sl, --show-legend    Start with legend showing.
    -sp, --show-progress  Start with progress showing.
    -sm, --show-mark      Start with mark showing.
    -r, --readonly        Do not allow changes or save annotations.
    -o, --overwrite       If they exist already, read and overwrite output files.
    -ps, --prevent-self-links
                          Prevent an item from being linked to itself.
    -pf, --prevent-forward-links
                          Prevent a link from an item to one after it.
    --do-not-show-linked  Do not have a special color to indicate any linked token.
    --alternate-comparisons
                          Activate alternative way of showing different annotations (one colour
                          per set of markings, rather than counts).
  ```
  You may also define arguments in a file and pass them in as follows:
  ```bash
  python slate.py @arguments.txt
  ```

  The tool shows files one at a time in plain text. Default commands are shown below.
  Note: special keys such as `ENTER` and `BACKSPACE` may not work on non-OS-X operating systems. That is why in all places where they are used we have an alternative as well.

rpm_license:
  Copyright (c) 2016-2023 Jonathan K Kummerfeld <jonathan.kummerfeld@sydney.edu.au>  Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


pkgId: 67a4680abd4d9b830d2b37a24d00b71cc0dc73676f1a452ce41f7f3431e1e620
name: python-slav-eeik-datastructures-help
arch: noarch
version: 1.1
epoch: 0
release: 1
summary: Development documents and examples for slav-eeik-datastructures
url: https://github.com/zhukovrost/datastructures
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-slav-eeik-datastructures-1.1-1.src.rpm
location_href: Packages/python-slav-eeik-datastructures-help-1.1-1.noarch.rpm
checksum_type: sha256
description:
  This is a simple datastructures and algorithms library. It is also published on [PyPi](https://pypi.org/project/slav-eeik-datastructures/).
  You can see the automatically-generated **documentation on [GitHub Pages](https://zhukovrost.github.io/datastructures/)**.
  **Here are all implemented datastructures:**
  - Lists
    - Singly Linked List
    - Doubly Linked List
    - Static Array
  - Linear Structures
    - Stack
    - Queue
    - Deque
  - Heaps
    - Min Heap
    - Priority Queue
  - Trees and Tree Nodes
    - Binary Tree
    - Huffman Tree
    - Balancing Tree
    - Binary Search Tree
    - Red Black Tree
    - 2-3 Tree
    - Segment Tree
    - AVL Tree
    - Trie
  - Graphs
    - Adjacency List
    - Adjacency Matrix
  **Note:** *trees.nodes.BinaryNode* and *trees.nodes.BalancedNode* don't have their trees, so you can use them.
  It is not recommended to use all other nodes without their trees.
  **Here are all implemented algorithms:**
  - Sorting Algorithms:
      - Heap Sort
      - Bubble Sort
      - Quick Sort
      - Merge Sort
      - Insertion Sort
      - Selection sort
  - String search algorithms:
    - Brute Force Search
    - Rabin-Karp Algorithm
  - Tree Algorithms:
    - Tree balancing
    - Huffman Coding
  - Graphs Algorithms:
    - Dijkstra algorithm
    - Bellman-Ford's algorithm
    - A* Algorithm
    - Breadth First Search
    - Depth First Search

  ![Project Structure - github.com/zhukovrost/datastructures/blob/master/datastructures.svg](datastructures.svg)

  ```sh
  pip install --upgrade pip
  pip install slav-eeik-datastructures
  ```

  Here are some examples of using the library:
  ```python
  from datastructures.linear import Stack, SinglyLinkedList
  s = Stack()
  s.push("First item")
  s.push("Second item")
  print(s.pop()) # Second item
  print(s.peek()) # First item
  print(s.peek()) # First item
  l = SinglyLinkedList()
  l.build([1, 2, 3, 4, 5, 6, 7, 8])
  print(l[4]) # 5
  l.delete_at(4)
  print(l) # 1 -> 2 -> 3 -> 4 -> 6 -> 7 -> 8
  ```
  ```python
  from datastructures.sorts import merge_sort, quicksort, heap_sort
  arr = [5, 4, 6, 1, 7, 10, -5, 9]
  print(merge_sort(arr))              # [-5, 1, 4, 5, 6, 7, 9, 10]
  print(quicksort(arr, reverse=True)) # [10, 9, 7, 6, 5, 4, 1, -5]
  print(arr)                          # [5, 4, 6, 1, 7, 10, -5, 9]
  heap_sort(arr, inplace=True)
  print(arr)                          # [-5, 1, 4, 5, 6, 7, 9, 10]
  ```
  ```python
  from datastructures.graphs import ListAdjacency as Graph
  g = Graph(6, False)
  g.add_edge(0, 1, 1)
  g.add_edge(0, 2, 5)
  g.add_edge(1, 3, 2)
  g.add_edge(2, 3, 3)
  distance, path = g.dijkstra(0, 3)
  print(distance)                             # 3
  print(path)                                 # [0, 1, 3]
  print(list(g.breadth_first_traversal(0)))   # [0, 2, 1, 3]
  ```
  ```python
  from datastructures.trees.trees import AVLTree
  t = AVLTree()
  t.build([9, 3, 5, 2, 9, 8, 2, 3, 4, 1])
  print(t)    # BinaryTree(['Node(1)', 'Node(2)', 'Node(3)', 'Node(4)', 'Node(5)', 'Node(8)', 'Node(9)'])
  t.insert(6)
  print(t)    # BinaryTree(['Node(1)', 'Node(2)', 'Node(3)', 'Node(4)', 'Node(5)', 'Node(6)', 'Node(8)', 'Node(9)'])
  print(t.find_min()) # 1
  print(list(t.root.preorder_traversal())) # [Node(5), Node(3), Node(2), Node(1), Node(4), Node(8), Node(6), Node(9)]
  ```

  This project is licensed under the MIT License - see the [LICENSE file](https://github.com/zhukovrost/datastructures/blob/master/LICENSE) for details.

  For any inquiries, please reach out to the project maintainer on [GitHub](https://github.com/zhukovrost) or [Telegram](https://t.me/slav_EEik).


pkgId: 8763e9bd057dcdf588b93d8e7f17e148c08eb8d920c2a4108a6510d6403a247a
name: python-sleipnirgroup-choreolib-help
arch: noarch
version: 2025.0.0b8
epoch: 0
release: 1
summary: Development documents and examples for sleipnirgroup-choreolib
url: https://pypi.org/project/sleipnirgroup-choreolib/
rpm_license: BSD-3-Clause
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sleipnirgroup-choreolib-2025.0.0b8-1.src.rpm
location_href: Packages/python-sleipnirgroup-choreolib-help-2025.0.0b8-1.noarch.rpm
checksum_type: sha256
description:
  This is the robot-side library for loading and following Choreo paths. See the [Docs](https://choreo.autos/choreolib/installation/) for more details.


pkgId: 5c23023b0be09b75d7aa73acc2aeff4a18a6b8b5b6c77cd69ff20ac0fb04352a
name: python-slickconf-help
arch: noarch
version: 0.1.10
epoch: 0
release: 1
summary: Development documents and examples for slickconf
url: https://pypi.org/project/slickconf/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-slickconf-0.1.10-1.src.rpm
location_href: Packages/python-slickconf-help-0.1.10-1.noarch.rpm
checksum_type: sha256
rpm_license:
  MIT License  Copyright (c) 2024 Kim Seonghyeon  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: 15a373d8f327544e13b1996818153dc01e8c5a84cbacd43ccfe1e839048e659b
name: python-sling-help
arch: noarch
version: 1.3.3
epoch: 0
release: 1
summary: Development documents and examples for sling
url: https://github.com/slingdata-io/sling-python
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sling-1.3.3-1.src.rpm
location_href: Packages/python-sling-help-1.3.3-1.noarch.rpm
checksum_type: sha256
description:
  <p align="center"><img src="https://github.com/slingdata-io/sling-python/raw/main/logo-with-text.png" alt="logo" width="250"/></p>

  <p align="center">Slings from a data source to a data target.</p>



  `pip install sling`

  Then you should be able to run `sling --help` from command line.





  ```shell
  sling run --src-conn MY_PG --src-stream myschema.mytable \
    --tgt-conn YOUR_SNOWFLAKE --tgt-object yourschema.yourtable \
    --mode full-refresh
  ```

  Or passing a yaml/json string or file

  ```shell
  cat '
  source: MY_POSTGRES
  target: MY_SNOWFLAKE


  defaults:
    mode: full-refresh
    object: new_schema.{stream_schema}_{stream_table}

  streams:
    my_schema.*:
  ' > /path/to/replication.yaml

  sling run -r /path/to/replication.yaml
  ```



  Run a replication from file:

  ```python
  import yaml
  from sling import Replication

  with open('path/to/replication.yaml') as file:
    config = yaml.load(file, Loader=yaml.FullLoader)

  replication = Replication(**config)

  replication.run()
  ```

  Build a replication dynamically:

  ```python
  from sling import Replication, ReplicationStream


  streams = {}
  for (folder, table_name) in list(folders):
    streams[folder] = ReplicationStream(mode='full-refresh', object=table_name, primary_key='_hash_id')

  replication = Replication(
    source='aws_s3',
    target='snowflake',
    streams=streams,
    env=dict(SLING_STREAM_URL_COLUMN='true', SLING_LOADED_AT_COLUMN='true'),
    debug=True,
  )

  replication.run()
  ```



  `--src-conn`/`source.conn` and `--tgt-conn`/`target.conn`  can be a name or URL of a folder:
  - `MY_PG` (connection ref in db, profile or env)
  - `postgresql://user:password!@host.loc:5432/database`
  - `s3://my_bucket/my_folder/file.csv`
  - `gs://my_google_bucket/my_folder/file.json`
  - `file:///tmp/my_folder/file.csv` (local storage)

  `--src-stream`/`source.stream` can be an object name to stream from:
  - `TABLE1`
  - `SCHEMA1.TABLE2`
  - `OBJECT_NAME`
  - `select * from SCHEMA1.TABLE3`
  - `/path/to/file.sql` (if source conn is DB)

  `--tgt-object`/`target.object` can be an object name to write to:
  - `TABLE1`
  - `SCHEMA1.TABLE2`



  ```json
  {
    "source": {
      "conn": "MY_PG_URL",
      "stream": "select * from my_table",
      "options": {}
    },
    "target": {
      "conn": "s3://my_bucket/my_folder/new_file.csv",
      "options": {
        "header": false
      }
    }
  }
  ```


pkgId: d15975dbd28b4c80a7d8ec486a8ebfe1e7454df19d77f0513f2029f2951a5234
name: python-slurmgen-help
arch: noarch
version: 3.14.0
epoch: 0
release: 1
summary: Development documents and examples for slurmgen
url: https://github.com/otvam/slurmgen
rpm_license: BSD-2-Clause
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-slurmgen-3.14.0-1.src.rpm
location_href: Packages/python-slurmgen-help-3.14.0-1.noarch.rpm
checksum_type: sha256
description:
  > * **Repository: [github.com/otvam/slurmgen](https://github.com/otvam/slurmgen)**
  > * **PyPi: [pypi.org/project/slurmgen](https://pypi.org/project/slurmgen)**
  > * **Conda: [anaconda.org/conda-forge/slurmgen](https://anaconda.org/conda-forge/slurmgen)**



  **SlurmGen** is a very **simple** **Slurm** manager:
  * The job description is stored in JSON files.
  * The JSON files are transformed into Slurm scripts.
  * The Slurm script can be run locally or on a Slurm Cluster.

  **SlurmGen** is only supporting a small **subset** of **Slurm**:
  * Create and delete folders.
  * Set environment variables.
  * Set the job name and log.
  * Set the ressources (memory, time, CPU, etc.).
  * Define the set of commands to be executed.

  SlurmGen is not a binding and/or a wrapper for Slurm.
  SlurmGen is only generating Slurm scripts from JSON files.
  SlurmGen is written in Python without any external dependencies.



  An example is located in the `example` folder of the repository:
  * `job_def.json` contains the job definition
  * `job_tmpl.json` contains the template data
  * `run_slurm.py` contains is dummy script executed by the Slurm job
  * `slurm_output` contains the generated Slurm script and log file
  * `data_output` contains data generated by the Slurm job

  ```bash

  sgen job_def.json --tmpl_str "title" "test" --tmpl_str "var" "Welcome to everyone"


  sgen job_def.json --tmpl_file job_tmpl.json


  sgen job_def.json --local --tmpl_file job_tmpl.json


  sgen job_def.json --cluster --tmpl_file job_tmpl.json
  ```



  * Repository: https://github.com/otvam/slurmgen
  * Releases: https://github.com/otvam/slurmgen/releases
  * Tags: https://github.com/otvam/slurmgen/tags
  * Issues: https://github.com/otvam/slurmgen/issues
  * PyPi: https://pypi.org/project/slurmgen
  * Conda: https://anaconda.org/conda-forge/slurmgen



  * **Thomas Guillod**
  * Email: guillod@otvam.ch
  * Website: https://otvam.ch



  > (c) 2023 - Thomas Guillod
  >
  >  BSD 2-Clause "Simplified" License


pkgId: 30a1db6d52be2a1516d627eea36a2e82a0809f7907f99a7d762abb3a1dc9d085
name: python-slurpit_netbox-help
arch: noarch
version: 1.0.43
epoch: 0
release: 1
summary: Development documents and examples for slurpit_netbox
url: https://pypi.org/project/slurpit_netbox/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-slurpit_netbox-1.0.43-1.src.rpm
location_href: Packages/python-slurpit_netbox-help-1.0.43-1.noarch.rpm
checksum_type: sha256
description:
  If you need help, Join our Discord server: https://slurpit.io/discord
  or e-mail us on: support@slurpit.io


  [Netbox](https://github.com/netbox-community/netbox) plugin to automatically discover your network with [Slurp'it](https://slurpit.io).



  | NetBox Version | Plugin Version |
  |----------------|----------------|
  |   NetBox 4.1   |    >= 1.0.x    |
  |   NetBox 4.0   |    >= 0.9.x    |
  |   NetBox 3.7   |    >= 0.8.x    |



  The plugin is available as a Python package in [pypi](https://pypi.org/project/slurpit_netbox/) and can be installed with pip

  ```
  pip install --no-cache-dir slurpit_netbox
  ```
  Enable the plugin in /opt/netbox/netbox/netbox/configuration.py:
  ```
  PLUGINS = ['slurpit_netbox']
  ```
  Restart NetBox and add `slurpit_netbox` to your requirements.txt

  See [NetBox Documentation](https://docs.netbox.dev/en/stable/plugins/#installing-plugins) for details


  On our [getting started page](https://slurpit.io/getting-started/) you can take an Online Course to understand how the plugin works, or play with the plugin in a simulated network in our Sandbox.


  Changelog can be found here: https://slurpit.io/knowledge-base/netbox-plugin-changelog


  We made a series of videos on how to use Slurp'it and NetBox.
  https://slurpit.io/online-courses/


pkgId: 9d2e884d14cbba601f10713803c6daf324a8eb9f73f0733326c63147d1dfa032
name: python-smalig-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for smalig
url: https://pypi.org/project/smalig/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-smalig-0.1.0-1.src.rpm
location_href: Packages/python-smalig-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  <a name="readme-top"></a>


  Dalvik(Smali) ByteCode info (grammar) fetch tool written in Python.



  `smalig` is a tool designed to fetch information about Dalvik(Smali) bytecode instructions. It allows users to specify a target instruction and retrieve detailed information about it, either in plain text or JSON format. This tool is particularly useful for developers and reverse engineers working with Android bytecode. Although there are many tools & resources available which does same job like [Dalvik Bytecode Reference](https://source.android.com/devices/tech/dalvik/dalvik-bytecode), Some chinese applications like MT Manager, NP, etc. but they all are very limited or little complex to understand and some are even outdated with no new instructions added. This tool is designed to be used from command line and can be integrated with other tools. We created it for our use in RevEngi project and decided to share it in the hope that it will be useful to others.



  - Fetch information for specific Dalvik(Smali) instructions.
  - Output results in plain text or JSON format.
  - Save output to a specified file or print to the console.
  - Interactive mode for prompting user input.




  To install `smalig`, you can use `pip`:

  ```sh
  pip install smalig
  ```

  or you can install it from source:

  ```sh
  pip install git+https://github.com/RevEngiSquad/smalig.git
  ```



  You can use `smalig` from the command line. Below are some examples of how to use the tool:

  ```sh
  smalig -t "move"  # Fetch information for the 'move' instruction.
  smalig -t "invoke-virtual" -j -o output.json # Fetch and save as JSON
  smalig -o my_output.txt # Prompts for instruction then saves to my_output.txt
  ```

  **Output:**

  ```plaintext
  Opcode: 01
  Name: move
  Format: B|A|op
  Format ID: 12x
  Syntax: move vA, vB
  Args: A: destination register (4 bits), B: source register (4 bits)
  Short Info: Move the contents of one non-object register to another.
  Detailed Info: Moves the content of vB into vA. Both registers must be in the first 16 register range (0-15).
  Example: 0110 - move v0, v1
    Desc: Moves the content of v1 into v0.
  ```

  As shown in the above example output, we've gone ahead and provided more detailed information about the instruction. This includes the opcode, format, syntax, arguments, and examples. This information can be useful for understanding the instruction and how it is used in Dalvik bytecode even for beginners.



  - `-t TARGET`: Specify the Smali instruction to fetch. If omitted, prompts the user for input.
  - `-j`: Output the result as JSON. If `-o` is also specified and the `OUTPUT_FILE` ends in `.json`, this flag is automatically set.
  - `-o OUTPUT_FILE`: Write the output to the specified file. If omitted, prints to console.


  We welcome contribution(s) to `smalig`! They are what makes the open-source community such an amazing place to learn, inspire, and create. Any contribution(s) you make is/are greatly appreciated.

  If you have a feature request or found a bug, please create an issue on the repo. You can also simply open an issue with the tag "enhancement" or "bug" and we will look into it.

  If you would like to contribute, please follow these steps:

  1. **Fork the repository**: Click the "Fork" button in the top right corner of the repository page to create a copy of the repository in your GitHub account.

  2. **Create a new branch**: Create a new branch for your feature or bug fix:
      ```sh
      git checkout -b my-feature-branch
      ```

  3. **Make your changes**: Implement your feature or bug fix.

  4. **Commit your changes**: Commit your changes with a descriptive commit message:
      ```sh
      git commit -m "Description of my changes"
      ```

  5. **Push to your fork**: Push your changes to your forked repository:
      ```sh
      git push origin my-feature-branch
      ```

  6. **Create a pull request**: Go to the original repository and create a pull request from your forked repository. Provide a clear description of your changes and any related issues.



  - Write clear and concise commit messages.
  - Update documentation if necessary.
  - Write tests for new features or bug fixes if applicable.

  Thank you for contributing to `smalig`!

  Don't forget to star the repository if you found it useful.



  This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.



  - [Abhi](https://github.com/AbhiTheModder)

  <p align="right"><a href="#readme-top">Go to top</a></p>

rpm_license:
  MIT License  Copyright (c) 2024 RevEngi  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: c4d946b5b7adbb54cc61bdf17073a26b6301f6db772abfa7bdbe02e046a71d98
name: python-smalig-help
arch: noarch
version: 0.1.6
epoch: 0
release: 1
summary: Development documents and examples for smalig
url: https://pypi.org/project/smalig/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-smalig-0.1.6-1.src.rpm
location_href: Packages/python-smalig-help-0.1.6-1.noarch.rpm
checksum_type: sha256
description:
  <a name="readme-top"></a>


  Dalvik(Smali) ByteCode info (grammar) fetch tool written in Python.



  `smalig` is a tool designed to fetch information about Dalvik(Smali) bytecode instructions. It allows users to specify a target instruction and retrieve detailed information about it, either in plain text or JSON format. This tool is particularly useful for developers and reverse engineers working with Android bytecode. Although there are many tools & resources available which does same job like [Dalvik Bytecode Reference](https://source.android.com/devices/tech/dalvik/dalvik-bytecode), Some chinese applications like MT Manager, NP, etc. but they all are very limited or little complex to understand and some are even outdated with no new instructions added. This tool is designed to be used from command line and can be integrated with other tools. We created it for our use in RevEngi project and decided to share it in the hope that it will be useful to others.



  - Fetch information for specific Dalvik(Smali) instructions.
  - Output results in plain text or JSON format.
  - Save output to a specified file or print to the console.
  - Interactive mode for prompting user input.




  To install `smalig`, you can use `pip`:

  ```sh
  pip install smalig
  ```

  or you can install it from source:

  ```sh
  pip install git+https://github.com/RevEngiSquad/smalig.git
  ```



  You can use `smalig` from the command line. Below are some examples of how to use the tool:

  ```sh
  smalig -t "move"  # Fetch information for the 'move' instruction.
  smalig -t "invoke-virtual" -j -o output.json # Fetch and save as JSON
  smalig -o my_output.txt # Prompts for instruction then saves to my_output.txt
  smalig -t "move" -m # Enable fuzzy matching
  ```

  **Output:**
  Normal output:
  ```plaintext
  Opcode: 01
  Name: move
  Format: B|A|op
  Format ID: 12x
  Syntax: move vA, vB
  Args: A: destination register (4 bits), B: source register (4 bits)
  Short Info: Move the contents of one non-object register to another.
  Detailed Info: Moves the content of vB into vA. Both registers must be in the first 16 register range (0-15).
  Example: 0110 - move v0, v1
    Desc: Moves the content of v1 into v0.
  ```

  With Fuzzy matching:
  ```plaintext
  Result 1:
  Opcode: 01
  Name: move
  Format: B|A|op
  Format ID: 12x
  Syntax: move vA, vB
  Args: A: destination register (4 bits), B: source register (4 bits)
  Short Info: Move the contents of one non-object register to another.
  Detailed Info: Moves the content of vB into vA. Both registers must be in the first 16 register range (0-15).
  Example: 0110 - move v0, v1
    Desc: Moves the content of v1 into v0.

  Result 2:
  Opcode: 02
  Name: move/from16
  Format: AA|op BBBB
  Format ID: 22x
  Syntax: move/from16 vAA, vBBBB
  Args: A: destination register (8 bits), B: source register (16 bits)
  Short Info: Move the contents of one non-object register to another.
  Detailed Info: Moves the content of vB into vA. vB must be in the 64k register range (0-65535) while vA is one of the first 256 registers (0-255).
  Example: 0200 1900 - move/from16 v0, v25
    Desc: Moves the content of v25 into v0.

  ....(Redacted for brevity)
  ```

  JSON output:
  ```json
  {
      "opcode": "01",
      "name": "move",
      "format": "B|A|op",
      "format_id": "12x",
      "syntax": "move vA, vB",
      "args_info": "A: destination register (4 bits), B: source register (4 bits)",
      "short_desc": "Move the contents of one non-object register to another.",
      "long_desc": "Moves the content of vB into vA. Both registers must be in the first 16 register range (0-15).",
      "note": "",
      "example": "0110 - move v0, v1",
      "example_desc": "Moves the content of v1 into v0."
  }
  ```

  As shown in the above example output, we've gone ahead and provided more detailed information about the instruction. This includes the opcode, format, syntax, arguments, and examples. This information can be useful for understanding the instruction and how it is used in Dalvik bytecode even for beginners.



  - `-t TARGET`: Specify the Smali instruction to fetch. If omitted, prompts the user for input.
  - `-j`: Output the result as JSON. If `-o` is also specified and the `OUTPUT_FILE` ends in `.json`, this flag is automatically set.
  - `-m`: Enable fuzzy matching for the target instruction. This allows for partial matches.
  - `-o OUTPUT_FILE`: Write the output to the specified file. If omitted, prints to console.


  We welcome contribution(s) to `smalig`! They are what makes the open-source community such an amazing place to learn, inspire, and create. Any contribution(s) you make is/are greatly appreciated.

  If you have a feature request or found a bug, please create an issue on the repo. You can also simply open an issue with the tag "enhancement" or "bug" and we will look into it.

  If you would like to contribute, please follow these steps:

  1. **Fork the repository**: Click the "Fork" button in the top right corner of the repository page to create a copy of the repository in your GitHub account.

  2. **Create a new branch**: Create a new branch for your feature or bug fix:
      ```sh
      git checkout -b my-feature-branch
      ```

  3. **Make your changes**: Implement your feature or bug fix.

  4. **Commit your changes**: Commit your changes with a descriptive commit message:
      ```sh
      git commit -m "Description of my changes"
      ```

  5. **Push to your fork**: Push your changes to your forked repository:
      ```sh
      git push origin my-feature-branch
      ```

  6. **Create a pull request**: Go to the original repository and create a pull request from your forked repository. Provide a clear description of your changes and any related issues.



  - Write clear and concise commit messages.
  - Update documentation if necessary.
  - Write tests for new features or bug fixes if applicable.

  Thank you for contributing to `smalig`!

  Don't forget to star the repository if you found it useful.



  This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.

  <p align="right"><a href="#readme-top">Go to top</a></p>

rpm_license:
  MIT License  Copyright (c) 2024 RevEngi  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: 63233ecc492243940c1e4ad787d8aa16fd41723883a16d60cd3d282660452f30
name: python-smallder-help
arch: noarch
version: 0.0.1
epoch: 0
release: 1
summary: Development documents and examples for smallder
url: https://pypi.org/project/smallder/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-smallder-0.0.1-1.src.rpm
location_href: Packages/python-smallder-help-0.0.1-1.noarch.rpm
checksum_type: sha256
description:
  Smaller 是一个开箱即用的轻量爬虫框架

  github地址 : https://github.com/Ntrashh/smallder




   - Python 3.7.0+
   - Works on Linux, Windows, macOS


  ```cmd
  pip3 install smallder
  ```


  创建爬虫
  ```shell
  smallder create -s demo_spider
  ```

  ```python
  from typing import Any
  from smallder import Spider, Request, Response

  class Demo(Spider):
      name = "demo"
      fastapi = True  # 控制内部统计api的数据
      redis_task_key = ""  # 任务池key如果存在值,则直接从redis中去任务,需要重写make_request_for_redis
      start_urls = []
      max_retry: int = 10  # 重试次数
      
      
      
      
      
      custom_settings = {
          
          
          
      }

      
      

      def parse(self, response: Response) -> Any:
          self.log.info(response)

      def download_middleware(self, request: Request) -> Request:
          request.headers = {
              "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                            "Chrome/108.0.0.0 Safari/537.36"
          }
          return request


  if __name__ == "__main__":
      Demo.start()
      

  ```





  如果你在使用过程中对smallder有任何问题或建议可以联系我

  微信:


  ![wechat](https://user-images.githubusercontent.com/109586486/210029580-4bb2f7bb-ed19-4971-ad0a-788aa659e2ff.jpg)

  邮箱:
  yinghui0214@163.com





  <img src="https://resources.jetbrains.com/storage/products/company/brand/logos/PyCharm.png" alt="PyCharm logo."  width="30%" >


pkgId: 931365f8f4b41a3e574744f3782a88cddd7d819595c06413280ebcd303953849
name: python-smart-context-help
arch: noarch
version: 0.0.10
epoch: 0
release: 1
summary: Development documents and examples for smart-context
url: https://github.com/Equiron-AI/smart-context
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-smart-context-0.0.10-1.src.rpm
location_href: Packages/python-smart-context-help-0.0.10-1.noarch.rpm
checksum_type: sha256
description:
  To create a Python virtual environment, use the command:
  ```console
  conda env create -f environment.yml
  ```


  ```console
  pip install smart-context
  ```


  The following LLM models are supported:
  - CohereForAI/c4ai-command-r-08-2024
  - google/gemma-2-27b-it
  - mistralai/Mistral-Large-Instruct-2407
  - Qwen/Qwen2.5-32B-Instruct


  The following LLM backends are supported:
  - Llama.cpp Server API


  ```console
  llama.cpp/build/bin/llama-server -m model_q5_k_m.gguf -ngl 99 -fa -c 4096 --host 0.0.0.0 --port 8000
  ```


  Please note that the toolkit version must match the driver version. The driver version can be found using the nvidia-smi command.
  To install toolkit for CUDA 12.5 you need to run the following commands:
  ```console
  CUDA_TOOLKIT_VERSION=12-5
  wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
  sudo dpkg -i cuda-keyring_1.1-1_all.deb
  sudo apt update
  sudo apt -y install cuda-toolkit-${CUDA_TOOLKIT_VERSION}
  echo -e '
  export CUDA_HOME=/usr/local/cuda
  export PATH=${CUDA_HOME}/bin:${PATH}
  export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:$LD_LIBRARY_PATH
  ' >> ~/.bashrc
  ```


  ```console
  nvidia-smi -pm 1
  sudo nvidia-smi -gtt 80
  nvidia-smi -q | grep Target
  ```


pkgId: 4248502c0bdd3d0e4212cb31603c029e03cd08a80b44a0115a23d50c59ee4412
name: python-smol_k8s_lab-help
arch: noarch
version: 5.20.1
epoch: 0
release: 1
summary: Development documents and examples for smol_k8s_lab
url: https://small-hack.github.io/smol-k8s-lab
rpm_license: AGPL-3.0-or-later
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-smol_k8s_lab-5.20.1-1.src.rpm
location_href: Packages/python-smol_k8s_lab-help-5.20.1-1.noarch.rpm
checksum_type: sha256
description:
  * [Installation](#installation)
      * [pipx](#pipx)
      * [brew (still unstable)](#brew-still-unstable)
      * [Usage](#usage)
          * [Initialization](#initialization)
  * [Under the hood](#under-the-hood)
      * [Supported k8s distributions](#supported-k8s-distributions)
      * [Default Installed Applications](#default-installed-applications)
  * [Status](#status)

  🐝 sure to check out our full [installation guide](https://small-hack.github.io/smol-k8s-lab/installation/), but the gist of it is `smol-k8s-lab` can be installed via `pipx` (or `brew` coming soon).

  `smol-k8s-lab` requires Python 3.11+ (and [pipx](https://github.com/pypa/pipx)). If you've already got both and [other pre-reqs](https://small-hack.github.io/smol-k8s-lab/installation/#prerequisites), you should be able to:
  ```bash

  pipx install smol-k8s-lab

  smol-k8s-lab --help
  ```

  [`brew`] is the future preferred installation method for macOS/Debian/Ubuntu, as this will also install any non-python prerequisites you need, so you don't need to worry about them. This method is new, so please [let us know if anything isn't working for you](https://github.com/small-hack/homebrew-tap/issues).
  ```bash

  brew install small-hack/tap/smol-k8s-lab
  ```
  Then you should be able to check the version and cli options with:
  ```bash
  smol-k8s-lab --help
  ```
  <p align="center">
    <a href="https://raw.githubusercontent.com/jessebot/smol-k8s-lab/main/docs/assets/images/screenshots/help_text.svg">
        <img src="./docs/assets/images/screenshots/help_text.svg" alt="Output of smol-k8s-lab --help after cloning the directory and installing the prerequisites.">
    </a>
  </p>
  Checkout our [TUI docs](https://small-hack.github.io/smol-k8s-lab/tui/create_modify_screens/) for more info on how to get started playing with `smol-k8s-lab` :-)


  After you've followed the installation instructions, if you're *new* to `smol-k8s-lab`,  initialize a new config file:
  ```bash


  smol-k8s-lab
  ```
  <details>
    <summary><b>Upgrading config from v4.x to v5.x</b></summary>
  If you've installed smol-k8s-lab prior to `v5.0.0`, please backup your old configuration, and then remove the `~/.config/smol-k8s-lab/config.yaml` (or `$XDG_CONFIG_HOME/smol-k8s-lab/config.yaml`) file entirely, then run the following with either pip or pipx:
  *if using pip*:
  ```yaml

  pip3.11 uninstall smol-k8s-lab

  pip3.12 install --upgrade smol-k8s-lab

  smol-k8s-lab
  ```
  *or if using pipx*:
  ```yaml

  pipx upgrade smol-k8s-lab

  smol-k8s-lab
  ```
  We have done a *masive* upgrade of the config file. You'll need to update your configs based on the details in https://github.com/small-hack/smol-k8s-lab/pull/210 . The main changes are to the following (check each doc link for details):
  - [accessibility features](https://small-hack.github.io/smol-k8s-lab/config_file/#tui-and-accessibility-configuration)
  - [k3s nodes section](https://small-hack.github.io/smol-k8s-lab/config_file/#k3s)
  - [backups and restores](https://small-hack.github.io/smol-k8s-lab/config_file/#backups-and-restores)
  - [sensitive values](https://small-hack.github.io/smol-k8s-lab/config_file/#sensitive-values)
  - [k9s has been removed in favor of run command](https://small-hack.github.io/smol-k8s-lab/config_file/#run-command) (hint: you can still use k9s via run command)
  </details>
  <details>
    <summary><b>Upgrading config from v3.7.1 to v4.x</b></summary>
  If you've installed smol-k8s-lab prior to `v4.0.0`, please backup your old configuration, and then remove the `~/.config/smol-k8s-lab/config.yaml` (or `$XDG_CONFIG_HOME/smol-k8s-lab/config.yaml`) file entirely, then run the following with either pip or pipx:
  *if using pip*:
  ```yaml

  pip3.11 install --upgrade smol-k8s-lab

  smol-k8s-lab
  ```
  *or if using pipx*:
  ```yaml

  pipx upgrade smol-k8s-lab

  smol-k8s-lab
  ```
  The main breaking changes between `v3.7.1` and `v4.0.0` are that we now default enable metrics on most apps. Because of this, you need to have the Prometheus ServiceMonitor CRD installed ahead of time. Luckily, we now provide that as an app as well :) If you deleted your config and created a new one, it will already be there, but if you want to reuse your old config, you can add the app like this:
  ```yaml
  apps:
    prometheus_crds:
      description: |
        [link=https://prometheus.io/docs/introduction/overview/]Prometheus[/link] CRDs to start with.
        You can optionally disable this if you don't want to deploy apps with metrics.
      enabled: true
      argo:
        
        secret_keys: {}
        
        repo: https://github.com/small-hack/argocd-apps
        
        path: prometheus/crds/
        
        revision: main
        
        namespace: prometheus
        
        directory_recursion: false
        
        project:
          name: prometheus
          source_repos:
          - https://github.com/prometheus-community/helm-charts.git
          destination:
            
            namespaces:
            - kube-system
            - prometheus
  ```
  If using the default repos, please also disable directory directory_recursion for:
  - your prometheus stack app
  - zitadel
  For all changes, please check out [PR #206](https://github.com/small-hack/smol-k8s-lab/pull/206).
  </details>
  <details>
    <summary><b>Upgrading config from v2.2.4 to v3.x</b></summary>
  If you've installed smol-k8s-lab prior to `v3.0.0`, please backup your old configuration, and then remove the `~/.config/smol-k8s-lab/config.yaml` (or `$XDG_CONFIG_HOME/smol-k8s-lab/config.yaml`) file entirely, then run the following with either pip or pipx:
  *if using pip*:
  ```yaml

  pip3.11 install --upgrade smol-k8s-lab

  smol-k8s-lab
  ```
  *or if using pipx*:
  ```yaml

  pipx upgrade smol-k8s-lab

  smol-k8s-lab
  ```
  The main breaking changes between `v2.2.4` and `v3.0` are as follows:
  - *home assistant has graduated from demo app to live app*
  You'll need to change `apps.home_assistant.argo.path` to either `home-assistant/toleration_and_affinity/` if you're using node labels and taints, or `home-assistant/` if you're deploying to a single node cluster. Here's an example with no tolerations or node affinity:
  ```yaml
  apps:
    home_assistant:
      enabled: false
      description: |
        [link=https://home-assistant.io]Home Assistant[/link] is a home IOT management solution.
        By default, we assume you want to use node affinity and tolerations to keep home assistant pods on certain nodes and keep other pods off said nodes. If you don't want to use either of these features but still want to use the small-hack/argocd-apps repo, first change the argo path to /home-assistant/ and then remove the 'toleration_' and 'affinity' secret_keys from the yaml file under apps.home_assistant.description.
      argo:
        secret_keys:
          hostname: "home-assistant.coolestdogintheworld.dog"
        repo: https://github.com/small-hack/argocd-apps
        path: home-assistant/
        revision: main
        namespace: home-assistant
        directory_recursion: false
        project:
          source_repos:
          - http://jessebot.github.io/home-assistant-helm
          destination:
            namespaces:
            - argocd
  ```
  And here's an example for labeled and tainted nodes, where your pod can use tolerations and node affinity:
  ```yaml
  apps:
    home_assistant:
      enabled: false
      description: |
        [link=https://home-assistant.io]Home Assistant[/link] is a home IOT management solution.
        By default, we assume you want to use node affinity and tolerations to keep home assistant pods on certain nodes and keep other pods off said nodes. If you don't want to use either of these features but still want to use the small-hack/argocd-apps repo, first change the argo path to /home-assistant/ and then remove the 'toleration_' and 'affinity' secret_keys from the yaml file under apps.home_assistant.description.
      argo:
        secret_keys:
          hostname: "home-assistant.coolestdogintheworld.dog"
          toleration_key: "blutooth"
          toleration_operator: "Equals"
          toleration_value: "True"
          toleration_effect: "NoSchedule"
          affinity_key: "blutooth"
          affinity_value: "True"
        repo: https://github.com/small-hack/argocd-apps
        path: home-assistant/toleration_and_affinity/
        revision: main
        namespace: home-assistant
        directory_recursion: false
        project:
          source_repos:
          - http://jessebot.github.io/home-assistant-helm
          destination:
            namespaces:
            - argocd
  ```
  - *new k3s feature for adding additional nodes*
  This feature changes `k8s_distros.k3s.nodes` to be a dictionary so that you can include additional nodes for us to join to the cluster after we create it, but before we install apps. Here's an example of how you can add a new node to k3s on installation:
  ```yaml
  k8s_distros:
    k3s:
      enabled: false
      k3s_yaml:
        
        
        secrets-encryption: true
        
        disable:
        - "traefik"
        node-label:
        - "ingress-ready=true"
        kubelet-arg:
        - "max-pods=150"
      
      nodes:
        
        serverfriend1.lan:
          
          ssh_key: id_rsa
          
          node_type: worker
          
          node_labels:
            - iot=true
          
          node_taints:
            - iot=true:NoSchedule
  ```
  if you don't want to add any nodes, this is what you should change your nodes section to be:
  ```yaml
  k8s_distros:
    k3s:
      enabled: false
      k3s_yaml:
        
        
        secrets-encryption: true
        
        disable:
        - "traefik"
        node-label:
        - "ingress-ready=true"
        kubelet-arg:
        - "max-pods=150"
      
      nodes: {}
  ```
  - *cert-manager now supports DNS01 challenge solver using the Cloudflare provider*
  This feature reworks the `apps.cert_manager.init` and `apps.cert_manager.argo.secret_keys` sections.
  Here's an example of using the HTTP01 challenge solver, which would be the only previously supported challenge solver, so if you want everything to just work how it did before your config file should look like this:
  ```yaml
  apps:
    cert_manager:
      enabled: true
      description: |
        [link=https://cert-manager.io/]cert-manager[/link] let's you use LetsEncrypt to generate TLS certs for all your apps with ingress.
        smol-k8s-lab supports optional initialization by creating [link=https://cert-manager.io/docs/configuration/acme/]ACME Issuer type[/link] [link=https://cert-manager.io/docs/concepts/issuer/]ClusterIssuers[/link] using either the HTTP01 or DNS01 challenge solvers. We create two ClusterIssuers: letsencrypt-staging and letsencrypt-staging.
        For the DNS01 challange solver, you will need to either export $CLOUDFLARE_API_TOKEN as an env var, or fill in the sensitive value for it each time you run smol-k8s-lab.
        Currently, Cloudflare is the only supported DNS provider for the DNS01 challenge solver. If you'd like to use a different DNS provider or use a different Issuer type all together, please either set one up outside of smol-k8s-lab. We also welcome [link=https://github.com/small-hack/smol-k8s-lab/pulls]PRs[/link] to add these features :)
      
      init:
        
        
        
        enabled: true
        values:
          
          email: "you@emailsforfriends.com"
          
          cluster_issuer_acme_challenge_solver: http01
          
          
          cluster_issuer_acme_dns01_provider: cloudflare
        sensitive_values: []
      argo:
        secret_keys: {}
        
        repo: "https://github.com/small-hack/argocd-apps"
        
        path: "cert-manager/"
        
        revision: main
        
        namespace: "cert-manager"
        
        directory_recursion: false
        
        project:
          source_repos:
            - https://charts.jetstack.io
          destination:
            
            namespaces:
              - kube-system
  ```
  And here's how you'd use the new DNS01 feature (keep in mind you need to either provide a sensitive value each time you run `smol-k8s-lab`, OR you need to export `$CLOUDFLARE_API_TOKEN` as an env var prior to running `smol-k8s-lab`):
  ```yaml
  apps:
    cert_manager:
      enabled: true
      description: |
        [link=https://cert-manager.io/]cert-manager[/link] let's you use LetsEncrypt to generate TLS certs for all your apps with ingress.
        smol-k8s-lab supports optional initialization by creating [link=https://cert-manager.io/docs/configuration/acme/]ACME Issuer type[/link] [link=https://cert-manager.io/docs/concepts/issuer/]ClusterIssuers[/link] using either the HTTP01 or DNS01 challenge solvers. We create two ClusterIssuers: letsencrypt-staging and letsencrypt-staging.
        For the DNS01 challange solver, you will need to either export $CLOUDFLARE_API_TOKEN as an env var, or fill in the sensitive value for it each time you run smol-k8s-lab.
        Currently, Cloudflare is the only supported DNS provider for the DNS01 challenge solver. If you'd like to use a different DNS provider or use a different Issuer type all together, please either set one up outside of smol-k8s-lab. We also welcome [link=https://github.com/small-hack/smol-k8s-lab/pulls]PRs[/link] to add these features :)
      
      init:
        
        
        
        enabled: true
        values:
          
          email: "you@emailsforfriends.com"
          
          cluster_issuer_acme_challenge_solver: dns01
          
          
          cluster_issuer_acme_dns01_provider: cloudflare
        sensitive_values:
          
          
        - CLOUDFLARE_API_TOKEN
      argo:
        secret_keys: {}
        
        repo: "https://github.com/small-hack/argocd-apps"
        
        path: "cert-manager/"
        
        revision: main
        
        namespace: "cert-manager"
        
        directory_recursion: false
        
        project:
          source_repos:
            - https://charts.jetstack.io
          destination:
            
            namespaces:
              - kube-system
  ```
  </details>
  <details>
    <summary><b>Upgrading config from v1.x to v2.x</b></summary>
  If you've installed smol-k8s-lab prior to `v2.0.0`, please backup your old configuration, and then remove the `~/.config/smol-k8s-lab/config.yaml` (or `$XDG_CONFIG_HOME/smol-k8s-lab/config.yaml`) file entirely, then run the following:
  ```yaml

  pip3.11 install --upgrade smol-k8s-lab

  smol-k8s-lab
  ```
  The main difference between the old and new config files are for apps, we've added:
  - `apps.APPNAME.description` - for adding a custom description, set it to whatever you like
  - `apps.APPNAME.argo.directory_recursion` - so you can have bigger nested apps :)
  - `apps.APPNAME.argo.project.destination.namespaces` - control what namespaces are allowed for a project
  And we've changed:
  - `apps.APPNAME.argo.ref` to `apps.APPNAME.argo.revision`
  - `apps.APPNAME.argo.project_source_repos` to `apps.APPNAME.argo.project.source_repos`
  And we've REMOVED:
  - `apps.APPNAME.argo.part_of_app_of_apps` - this was mostly used internally, we think
  Here's an example of an updated cert-manager app with the new config:
  ```yaml
  apps:
    cert_manager:
      
      
      
      enabled: true
      description: |
        [link=https://cert-manager.io/]cert-manager[/link] let's you use LetsEncrypt to generate TLS certs for all your apps with ingress.
        smol-k8s-lab supports initialization by creating two [link=https://cert-manager.io/docs/concepts/issuer/]ClusterIssuers[/link] for both staging and production using a provided email address as the account ID for acme.
      
      init:
        
        
        
        enabled: true
      argo:
        secret_keys:
          
          email: ""
        
        repo: "https://github.com/small-hack/argocd-apps"
        
        path: "cert-manager/"
        
        revision: main
        
        namespace: "cert-manager"
        
        directory_recursion: false
        
        project:
          source_repos:
            - https://charts.jetstack.io
          destination:
            
            namespaces:
              - kube-system
  ```
  </details>

  Note: this project is not officially affiliated with any of the below tooling or applications.

  We always install the latest version of Kubernetes that is available from the distro's startup script.
  |  Distro    |         Description              |
  |:----------:|:------------------------------------------------------|
  | [<img src="https://raw.githubusercontent.com/small-hack/smol-k8s-lab/main/docs/assets/images/icons/k3s_icon.ico" width="26">][k3s] <br /> [k3s] | The certified Kubernetes distribution built for IoT & Edge computing |
  | [<img src="https://raw.githubusercontent.com/small-hack/smol-k8s-lab/main/docs/assets/images/icons/k3d.png" width="26">][k3d] <br /> [k3d] | **TESTING PHASE** k3s in docker 🐳 |
  | [<img src="https://raw.githubusercontent.com/small-hack/smol-k8s-lab/main/docs/assets/images/icons/kind_icon.png" width="32">][KinD] <br /> [KinD] | kind is a tool for running local Kubernetes clusters using Docker container “nodes”. kind was primarily designed for testing Kubernetes itself, but may be used for local development or CI. |
  We tend to test first on k3s first, then the other distros. k3d support coming soon.

  All of these can be disabled with the exception of Argo CD, which is optional, but if not installed, `smol-k8s-lab` will <i>only</i> install: MetalLB, nginx-ingress, and cert-manager.
  |           Application           |                      Description                      | Initialization Supported |
  |:-------------------------------:|:------------------------------------------------------|:------------------------:|
  | [<img src="https://raw.githubusercontent.com/small-hack/smol-k8s-lab/main/docs/assets/images/icons/metallb_icon.png" width="32px" alt="metallb logo, blue arrow pointing up, with small line on one leg of arrow to show balance">][metallb] <br /> [metallb] | Loadbalancer and IP Address pool manager for metal | ✅ |
  | [<img src="https://raw.githubusercontent.com/small-hack/smol-k8s-lab/main/docs/assets/images/icons/nginx.ico" width="32px" alt="nginx logo, white letter N with green background">][ingress-nginx] <br /> [ingress-nginx] | The ingress controller allows access to the cluster remotely, needed for web traffic | ❌ |
  | [<img src="https://raw.githubusercontent.com/small-hack/smol-k8s-lab/main/docs/assets/images/icons/cert-manager_icon.png" width="32px" alt="cert manager logo">][cert-manager] <br /> [cert-manager] | For SSL/TLS certificates | ✅ |
  | [<img src="https://raw.githubusercontent.com/small-hack/smol-k8s-lab/main/docs/assets/images/icons/argo_icon.png" width="32" alt="argo CD logo, an organer squid wearing a fishbowl helmet">][Argo CD] <br /> [Argo CD] | Gitops - Continuous Deployment | ✅ |
  | [<img src="https://raw.githubusercontent.com/small-hack/smol-k8s-lab/main/docs/assets/images/icons/argo_icon.png" width="32" alt="argo CD logo, an organer squid wearing a fishbowl helmet">][Argo CD Appset Secret Plugin] <br /> [Argo CD Appset Secret Plugin] | Gitops - Continuous Deployment | ✅ |
  | [<img src="https://raw.githubusercontent.com/small-hack/smol-k8s-lab/main/docs/assets/images/icons/eso_icon.png" width="32" alt="ESO logo, outline of robot with astricks in a screen in it's belly">][ESO] <br /> [ESO] | external-secrets-operator integrates external secret management systems like Bitwarden or GitLab | ❌ |
  | [<img src="https://raw.githubusercontent.com/small-hack/smol-k8s-lab/main/docs/assets/images/icons/eso_icon.png" width="32" alt="ESO logo, again">][Bitwarden ESO Provider] <br /> [Bitwarden ESO Provider] | Bitwarden external-secrets-operator provider  | ✅ |
  | [<img src="https://raw.githubusercontent.com/small-hack/smol-k8s-lab/main/docs/assets/images/icons/zitadel.png" width="32" alt="Zitadel logo, an orange arrow pointing left">][ZITADEL] <br /> [ZITADEL] | An identity provider and OIDC provider to provide SSO | ✅ |
  | [<img src="https://raw.githubusercontent.com/small-hack/smol-k8s-lab/main/docs/assets/images/icons/vouch.png" width="32" alt="Vouch logo, the letter V in rainbow ">][Vouch] <br /> [Vouch] | Vouch proxy allows you to secure web pages that lack authentication e.g. prometheus | ✅ |
  | [<img src="https://raw.githubusercontent.com/small-hack/smol-k8s-lab/main/docs/assets/images/icons/prometheus.png" width="32" alt="Prometheus logo, a torch">][Prometheus Stack] <br /> [Prometheus Stack] | Prometheus monitoring and logging stack using [loki]/[promtail], [alert manager], and [grafana]  | ✅ |
  For a complete list of installable applications, checkout the [default apps docs](https://small-hack.github.io/smol-k8s-lab/k8s_apps/). To install your own custom apps, you can check out an [example via the config file](https://small-hack.github.io/smol-k8s-lab/config_file/#applications) or [learn how to do it via the tui](https://small-hack.github.io/smol-k8s-lab/tui/apps_screen/#adding-new-applications).

  Somewhat stable and being actively supported, so if you'd like to [contribute](./CONTRIBUTING.md) or just found a :bug:, feel free to open an issue (and/or pull request), and we'll try to take a look ASAP!
  <!-- k8s distro link references -->
  [k3s]: https://k3s.io/
  [k3d]: https://k3d.io/
  [KinD]: https://kind.sigs.k8s.io/
  <!-- k8s optional apps link references -->
  [ESO]: https://external-secrets.io/v0.8.1/
  [alert manager]: https://prometheus.io/docs/alerting/latest/alertmanager/
  [Argo CD]:https://argo-cd.readthedocs.io/en/latest/
  [Argo CD Appset Secret Plugin]: https://github.com/jessebot/argocd-appset-secret-plugin/
  [cert-manager]: https://cert-manager.io/docs/
  [cilium]: https://github.com/cilium/cilium/tree/v1.14.1/install/kubernetes/cilium
  [Bitwarden ESO Provider]: https://github.com/jessebot/bitwarden-eso-provider
  [grafana]: https://grafana.com/
  [ingress-nginx]: https://github.io/kubernetes/ingress-nginx
  [k8tz]: https://github.com/small-hack/argocd-apps/tree/main/alpha/k8tz
  [k8up]: https://k8up.io
  [Kyverno]: https://github.com/kyverno/kyverno/
  [kepler]: https://github.com/sustainable-computing-io/kepler-helm-chart/tree/main/chart/kepler
  [Local Path Provisioner]: https://github.com/rancher/local-path-provisioner
  [loki]: https://grafana.com/oss/loki/
  [Mastodon]: https://joinmastodon.org/
  [matrix]: https://matrix.org/
  [metallb]: https://github.io/metallb/metallb "metallb"
  [minio]: https://min.io/
  [Nextcloud]: https://github.com/nextcloud/helm
  [Prometheus Stack]: https://github.com/small-hack/argocd-apps/tree/main/prometheus
  [promtail]: https://grafana.com/docs/loki/latest/send-data/promtail/
  [Vouch]: https://github.com/jessebot/vouch-helm-chart
  [ZITADEL]: https://github.com/zitadel/zitadel-charts/tree/main
  <!-- k8s tooling reference -->
  [`brew`]: https://brew.sh
  [k9s]: https://k9scli.io/topics/install/
  [restic]: https://restic.readthedocs.io/en/stable/


pkgId: b1ccb98d0c3c256de81df12cb05c1cbe3db203860c63b594cfe4b9caea2b448c
name: python-smriprep-help
arch: noarch
version: 0.17.0
epoch: 0
release: 1
summary: Development documents and examples for smriprep
url: https://github.com/nipreps/smriprep
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-smriprep-0.17.0-1.src.rpm
location_href: Packages/python-smriprep-help-0.17.0-1.noarch.rpm
checksum_type: sha256
description:
  *sMRIPrep* is a structural magnetic resonance imaging (sMRI) data
  preprocessing pipeline that is designed to provide an easily accessible,
  state-of-the-art interface that is robust to variations in scan acquisition
  protocols and that requires minimal user input, while providing easily
  interpretable and comprehensive error and output reporting.
  It performs basic processing steps (subject-wise averaging, B1 field correction,
  spatial normalization, segmentation, skullstripping etc.) providing
  outputs that can be easily connected to subsequent tools such as
  `fMRIPrep <https://github.com/nipreps/fmriprep>`__ or
  `dMRIPrep <https://github.com/nipreps/dmriprep>`__.
  The workflow is based on `Nipype <https://nipype.readthedocs.io>`__ and encompasses
  a combination of tools from well-known software packages, including
  `FSL <https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/>`__,
  `ANTs <https://stnava.github.io/ANTs/>`__,
  `FreeSurfer <https://surfer.nmr.mgh.harvard.edu/>`__,
  and `Connectome Workbench <https://humanconnectome.org/software/connectome-workbench>`__.
  More information and documentation can be found at
  https://www.nipreps.org/smriprep/.
  Support is provided on `neurostars.org <https://neurostars.org/tags/smriprep>`_.

rpm_license:
  Apache License Version 2.0, January 2004 http://www.apache.org/licenses/  TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION  1. Definitions.  "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.  "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.  "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.  "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.  "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.  "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.  "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).  "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.  "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."  "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.  2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.  3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.  4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:  (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and  (b) You must cause any modified files to carry prominent notices stating that You changed the files; and  (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and  (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.  You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.  5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.  6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.  7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.  8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.  9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.  END OF TERMS AND CONDITIONS  APPENDIX: How to apply the Apache License to your work.  To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!)  The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.  Copyright The NiPreps Developers  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at  http://www.apache.org/licenses/LICENSE-2.0  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


pkgId: 0402d7bb8e4cc7e9e2beda4c61b0bfb0f25a23c2082a2762a288fa061d0fc6a0
name: python-smsactivatepy-help
arch: noarch
version: 1
epoch: 0
release: 1
summary: Development documents and examples for smsactivatepy
url: https://pypi.org/project/smsactivatepy/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-smsactivatepy-1-1.src.rpm
location_href: Packages/python-smsactivatepy-help-1-1.noarch.rpm
checksum_type: sha256
description:
  A Python library for interacting with the [SMSActivate API](https://sms-activate.org/api2). This tool allows you to integrate SMS activation services seamlessly into your projects.



  To install the library, run the following command:

  ```sh
  pip install smsactivatepy
  ```



  - `requests`
  - `json`



  ```python
  from smsactivatepy.api import SMSActivateAPI


  sa = SMSActivateAPI(APIKEY)


  sa.debug_mode = True
  ```



  This library provides an interface for accessing the SMSActivate service. You can use it for operations such as:
  - Requesting a virtual phone number
  - Managing SMS activations
  - Checking account balance

  Detailed functionality is described in the official [SMSActivate API documentation](https://sms-activate.org/api2).



  Developed by Gabriel Lima
  Email: [gabrielmrts@yahoo.com](mailto:gabrielmrts@yahoo.com)


pkgId: 1667da21045b0b15e4969a87faa6354f172bb9f7383458876be14ccf54ea2fb6
name: python-smsfactor-help
arch: noarch
version: 0.0.5
epoch: 0
release: 1
summary: Development documents and examples for smsfactor
url: https://github.com/aleaforny/python-smsfactor
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-smsfactor-0.0.5-1.src.rpm
location_href: Packages/python-smsfactor-help-0.0.5-1.noarch.rpm
checksum_type: sha256
description:
  A very simple package to use SMSFactor API to send easily SMS using Python

  Packaged with https://packaging.python.org/en/latest/tutorials/packaging-projects/


pkgId: 1383c7c4fb1c329d7a3643372c0ce8c0bc23df4b33b66a9692faa530315bc032
name: python-smuls-help
arch: noarch
version: 0.3.0
epoch: 0
release: 1
summary: Development documents and examples for smuls
url: https://pypi.org/project/smuls/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-smuls-0.3.0-1.src.rpm
location_href: Packages/python-smuls-help-0.3.0-1.noarch.rpm
checksum_type: sha256
description:
  - **Simplicity**: The package provides an extremely simple functionality, ensuring clarity in understanding packaging concepts.
  - **Educational Purpose**: Smuls is aimed at developers learning the Python ecosystem, including packaging and distribution.
  - **Modular**: Offers a straightforward, modular design that can be extended to include more functionalities in the future.
  - **Validation**: The `hello` function serves as a validation tool to confirm successful installation and usage.


pkgId: a525720a827cc3920b05c264d0d88ec6c57e18dd95b4452c06c45cd460e6ca5e
name: python-snailz-help
arch: noarch
version: 0.1.15
epoch: 0
release: 1
summary: Development documents and examples for snailz
url: https://pypi.org/project/snailz/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-snailz-0.1.15-1.src.rpm
location_href: Packages/python-snailz-help-0.1.15-1.noarch.rpm
checksum_type: sha256
description:
  <img src="https://raw.githubusercontent.com/gvwilson/snailz/main/img/snail-logo.svg" alt="snail logo" width="200px">

  These data generators model genomic analysis of snails in the Pacific Northwest
  that are growing to unusual size as a result of exposure to pollution.

  -   One or more *surveys* are conducted at one or more *sites*.
  -   Each survey collects *genomes* and *sizes* of snails.
  -   A *grid* at each site is marked out to show the presence or absence of pollution.
  -   *Laboratory staff* perform *assays* of the snails' genetic material.
  -   Each assay plate has a *design* showing the material applied and *readings* showing the measured response.
  -   Plates may be *invalidated* after the fact if a staff member believes it is contaminated.

  <img src="https://raw.githubusercontent.com/gvwilson/snailz/main/img/survey.png" alt="survey sites">



  1.  Create a fresh Python environment: `uv venv`
  2.  Activate that environment: `source .venv/bin/activate`
  3.  Build development version of package: `uv pip install -e .`
  4.  View available commands: `snailz --help`
  5.  Copy default parameter files: `snailz params --outdir ./params`
  6.  See how to regenerate datasets: `python -c 'import snailz; help(snailz)'`

  To regenerate all data using the default parameters provided, run:

  ```
  snailz everything --paramsdir ./params --datadir ./data --verbose
  ```



  The final database `data/lab.db` is structured as shown below.
  Note that the data from the file `assays.json` is split between several tables.
  Note also that the SQLite database file is *not* included in this repository
  because its binary representation changes each time it is regenerated
  (even though the values it contains stay the same).
  The map of survey locations in `data/survey.png` is not included in the repository for the same reason,
  but a duplicate is manually saved in `img/survey.png`.

  <img src="https://raw.githubusercontent.com/gvwilson/snailz/main/img/db-schema.svg" alt="database schema">

  -   `site`: survey site
      -   `site_id`: primary key (text)
      -   `lon`: longitude of site reference marker (float deg)
      -   `lat`: latitude of site reference marker (float deg)
  -   `survey`
      -   `survey_id`: primary key (text)
      -   `site_id`: foreign key of site where survey was conducted (text)
      -   `date`: date that survey was conducted (date, YYYY-MM-DD)
  -   `sample`: sample taken from survey
      -   `sample_id`: primary key (int, 1-1 with `experiment.sample_id`)
      -   `survey_id`: foreign key of survey (int)
      -   `lon`: longitude of sample site (float deg)
      -   `lat`: latitude of sample site (float deg)
      -   `sequence`: genome sequence of sample (text)
      -   `size`: snail size (float)
  -   `experiment`: experiment done on sample
      -   `sample_id`: primary key (int, 1-1 with `sample.sample_id`)
      -   `kind`: kind of experiment (text, either 'ELISA' or 'JESS')
      -   `start`: start date (date, YYYY-MM-DD)
      -   `end`: end date (date, YYYY-MM-DD, null if experiment is ongoing)
  -   `staff`
      -   `staff_id`: primary key (int)
      -   `personal`: personal name (text)
      -   `family`: family name (text)
  -   `performed`: join table showing which staff members performed which experiments
      -   `staff_id`: foreign key of staff member
      -   `sample_id`: foreign key of sample/experiment
  -   `plate`: information about single assay plate
      -   `plate_id`: primary key (int)
      -   `sample_id`: foreign key of sample/experiment (int)
      -   `date`: date that plate was run (date, YYYY-MM-DD)
      -   `filename`: filename of design/results file (text)
  -   `invalidated`: invalidated plates
      -   `plate_id`: foreign key of plate (int)
      -   `staff_id`: foreign key of staff member who did invalidation (int)
      -   `date`: when plate was invalidated



  `./data` contains a generated dataset for reference.
  As noted above,
  it does *not* contain the SQLite database file `lab.db`;
  run `snailz db` to regenerate it.
  (See `help(snailz)` for an example invocation.)

  -   Staff: `staff.csv`
      -   `staff_id`: unique staff member identifier (int > 0)
      -   `personal`: personal name (text)
      -   `family`: family name (text)
  -   Genomes: `genomes.json`
      -   `length`: number of base pairs (int > 0)
      -   `reference`: the unmutated reference genome (text)
      -   `individuals`: sequences for individuals (list of text)
      -   `locations`: locations of mutations (list of int)
      -   `susceptible_loc`: location of mutation of interest (int >= 0)
      -   `susceptible_base`: mutated base responsible for size change (char)
  -   Grids: `grids/*.csv` (one file per site)
      -   values are contamination levels at sample points (0 means no contamination)
  -   Samples: `grids/samples.csv`
      -   `sample_id`: unique ID for genetic sample (text)
      -   `survey_id`: which survey it was taken in (text)
      -   `lon`: longitude of sample site (float)
      -   `lat`: latitude of sample site (float)
      -   `sequence`: sampled gene sequence (text)
      -   `size`: snail weight (float, grams)
  -   Assays: `assays.json`
      -   `experiment`: experiment details
          -   `sample_id`: sample that experiment used (int > 0)
          -   `kind`: "ELISA" or "JESS" (text)
          -   `start`: start date (date, YYYY-MM-DD)
          -   `end`: end date (date, YYYY-MM-DD or None if experiment incomplete)
      -   `performed`: join table showing who performed which experiments
          -   `staff_id`: foreign key to `staff`
          -   `sample_id`: foreign key to `experiment`
      -   `plate`: details of assay plates used in experiments
          -   `plate_id`: unique plate identifier (int > 0)
          -   `sample_id`: foreign key to `sample` (text)
          -   `date`: date plate was run (date, YYYY-MM-DD)
          -   `filename`: name of design and results files (text)
      -   `invalidated`: which plates have been invalidated
          -   `plate_id`: foreign key to plate (text)
          -   `staff_id`: foreign key to staff member responsible (text)
          -   `date`: invalidation date (date, YYYY-MM-DD)
  -   Plates are represented by matching files in the `designs` and `readings` directories
      -   `designs/*.csv`: assay plate designs
          -   header: machine type, file type ("design" or "readings"), staff ID
          -   blank line
          -   table with column and row titles showing material in each well
      -   `readings/*.csv`: assay plate readings
          -   header: machine type, file type ("design" or "readings"), staff ID
          -   blank line
          -   table with column and row titles showing reading from each well
  -   To simulate the messiness of real experimental data,
      the tidy assay plate files in `readings/*.csv` are copied to `mangled/*.csv`
      with random changes:
      -   Some files have a staff member's name added in the first row.
      -   Some have an extra header row containing the experiment date.
      -   Some have a footer with the staff member's ID.
      -   In some, the values are offset one column to the right.



  The workflow used to generate the database and data files is shown below:

  -   `snailz` or `snailz --help`: show available commands
  -   `snailz clean`: remove all datasets
  -   `snailz everything`: make all datasets
  -   `snailz grids`: synthesize pollution grids
  -   `snailz genomes`: synthesize genomes
  -   `snailz samples`: sample snails from survey sites
  -   `snailz staff`: synthesize staff
  -   `snailz assays`: generate assay files
  -   `snailz plates`: generate plate files
  -   `snailz mangle`: create mangled plate reading files
  -   `snailz db`: generate database
  -   `snailz map`: generate SVG map of sample locations (in progress)

  <img src="https://raw.githubusercontent.com/gvwilson/snailz/main/img/workflow.svg" alt="data generation workflow">



  `./snailz/params` contains the parameter files used to control generation of the reference dataset.
  These are included in the package and can be copied into the current directory using `snailz params --outdir .`
  (replace `.` with another directory name as desired).
  `snailz params` also copies a Makefile that can re-run commands with appropriate parameters;
  see the table of commands given earlier for options.

  -   Sites: `sites.csv`
      -   `site_id`: unique label for site (text)
      -   `lon`: longitude of site reference marker (deg)
      -   `lat`: latitude of site reference marker (deg)
  -   Grids: `grids.json`
      -   `depth`: range of random values per cell (int > 0)
      -   `height`: number of cells on Y axis (int > 0)
      -   `seed`: RNG seed (int > 0)
      -   `width`: number of cells on X axis (int > 0)
  -   Surveys: `surveys.csv`
      -   `survey_id`: unique label for survey (text)
      -   `site_id`: ID of site where survey was conducted (text)
      -   `date`: date that survey was conducted (date, YYYY-MM-DD)
      -   `spacing`: spacing of measurement point (float, meters)
  -   Genomes: `genomes.json`
      -   `length`: number of base pairs in sequences (int > 0)
      -   `num_genomes`: how many individuals to generate (int > 0)
      -   `num_snp`: number of single nucleotide polymorphisms (int > 0)
      -   `prob_other`: probability of non-significant mutations (float in 0..1)
      -   `seed`: RNG seed (int > 0)
      -   `snp_probs`: probability of selecting various bases (list of 4 float summing to 1.0)
  -   Staff: `staff.json`
      -   `locale`: locale to use when generating staff names (text)
      -   `num`: number of staff (int > 0)
      -   `seed`: RNG seed (int > 0)
  -   Assays: `assays.json`
      -   `assay_duration`: range of days for each assay (ordered pair of int >= 0)
      -   `assay_plates`: range of plates per assay (ordered pair of int >= 1)
      -   `assay_staff`: range of staff in each assay (ordered pair of int > 0)
      -   `assay_types`: types of assays (list of text)
      -   `control_val`: nominal reading value for control wells (float > 0)
      -   `controls`: labels to used for control wells (list of text)
      -   `enddate`: end of all experiments
      -   `filename_length`: length of stem of design/readings filenames (int > 0)
      -   `fraction`: fraction of samples that have been used in experiments
      -   `invalid`: probability of plate being invalidated (float in 0..1)
      -   `seed`: RNG seed (int > 0)
      -   `startdate`: start of all experiments
      -   `stdev`: standard deviation on readings (float > 0)
      -   `treated_val`: nominal reading value for treated well (float > 0)
      -   `treatment`: label to use for treated wells (text)


pkgId: 906172d48069c618ebd5cb2b88660091a60ce3c130227322fb41bcba3558e25f
name: python-snakeland-help
arch: noarch
version: 0.0.3
epoch: 0
release: 1
summary: Development documents and examples for snakeland
description: Instant Python3 script installer.
url: https://pypi.org/project/snakeland/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-snakeland-0.0.3-1.src.rpm
location_href: Packages/python-snakeland-help-0.0.3-1.noarch.rpm
checksum_type: sha256
rpm_license:
  ###################################################################### ####################  SOFTWARE LICENSE   ############################# ######################################################################  SNAKELAND, Instant python script installer. Copyright (C) 2023-2024 Mike Turkey(real name: Takaaki Watanabe) contact: voice[ATmark]miketurkey.com  This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.  You should have received a copy of the GNU General Public License along with this program.  If not, see <https://www.gnu.org/licenses/>.  ADDITIONAL MACHINE LEARNING PROHIBITION CLAUSE  In addition to the rights granted under the applicable license(GPL-3), you are expressly prohibited from using any form of machine learning, artificial intelligence, or similar technologies to analyze, process, or extract information from this software, or to create derivative works based on this software.  This prohibition includes, but is not limited to, training machine learning models, neural networks, or any other automated systems using the code or output of this software.  The purpose of this prohibition is to protect the integrity and intended use of this software. If you wish to use this software for machine learning or similar purposes, you must seek explicit written permission from the copyright holder.  see also GPL-3 Licence, https://www.gnu.org/licenses/gpl-3.0.html.en Mike Turkey.com, https://miketurkey.com  ###################################################################### ####################  DOCUMENT LICENSE   ############################# ######################################################################  Copyright 2024 Mike Turkey(real name: Takaaki Watanabe) contact: voice[ATmark]miketurkey.com  Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".  ADDITIONAL MACHINE LEARNING PROHIBITION CLAUSE  In addition to the rights granted under the GNU Free Documentation License, Version 1.3, you are expressly prohibited from using any form of machine learning, artificial intelligence, or similar technologies to analyze, process, or extract information from this document, or to create derivative works based on this document.  This prohibition includes, but is not limited to, training machine learning models, neural networks, or any other automated systems using the content of this document.  The purpose of this prohibition is to protect the integrity and intended use of this document. If you wish to use this document for machine learning or similar purposes, you must seek explicit written permission from the copyright holder.  See also: GFDL1.3: https://www.gnu.org/licenses/fdl-1.3.txt Mike Turkey: https://miketurkey.com


pkgId: af367223362ea9adc7ad56dfa041c38b78f315a6487a36c10d5047d40a1fa902
name: python-sniffles-help
arch: noarch
version: 2.5.3
epoch: 0
release: 1
summary: Development documents and examples for sniffles
url: https://github.com/fritzsedlazeck/Sniffles
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sniffles-2.5.3-1.src.rpm
location_href: Packages/python-sniffles-help-2.5.3-1.noarch.rpm
checksum_type: sha256
description:
  A fast structural variant caller for long-read sequencing, Sniffles2 accurately detect SVs on germline, somatic and population-level for PacBio and Oxford Nanopore read data.


  To call SVs from long read alignments (PacBio / ONT), you can use:

  `sniffles -i mapped_input.bam -v output.vcf`

  For improved calling in repetitive regions, Sniffles2 accepts a tandem repeat annotations file using the option `--tandem-repeats annotations.bed`. Sniffles2 compatible tandem repeat annotations for human references can be downloaded from the [annotations/ folder](https://github.com/fritzsedlazeck/Sniffles/tree/master/annotations).

  (see sniffles --help or below for full usage information).


  You can install Sniffles2 using pip or conda using:

  `pip install sniffles`

  or

  `conda install sniffles=2.5.3`

  If you previously installed Sniffles1 using conda and want to upgrade to Sniffles2, you can use:

  `conda update sniffles=2.5.3`


  * Python ==3.10.15
  * pysam >=0.21.0
  * edlib >=1.3.9
  * psutil>=5.9.4


  * python==3.10.12
  * pysam==0.21.0


  Please cite our paper at:
  Sniffles v2:
  https://www.nature.com/articles/s41587-023-02024-y

  and
  Sniffles v1:
  https://www.nature.com/articles/s41592-018-0001-7




  * To output deletion (DEL SV) sequences, the reference genome (.fasta) must be specified using e.g. `--reference reference.fasta`.
  * Sniffles2 supports optionally specifying tandem repeat region annotations (.bed), which can improve calling in these regions `--tandem-repeats annotations.bed`. Sniffles2 compatible tandem repeat annotations for human references can be found in the [annotations/ folder](https://github.com/fritzsedlazeck/Sniffles/tree/master/annotations).
  * Sniffles2 is fully parallelized and uses 4 threads by default. This value can be adapted using e.g. `--threads 4` as option. Memory requirements will increase with the number of threads used.
  * To output read names in SNF and VCF files, the `--output-rnames` option is required.


  Multi-sample SV calling using Sniffles2 population mode works in two steps:

  1. Call SV candidates and create an associated .snf file for each sample: `sniffles --input sample1.bam --snf sample1.snf`
  2. Combined calling using multiple .snf files into a single .vcf: `sniffles --input sample1.snf sample2.snf ... sampleN.snf --vcf multisample.vcf`

  Alternatively, for step 2. you can supply a .tsv file, containing a list of .snf files, and custom sample ids in an optional second column (one sample per line), .e.g.:
  2. Combined calling using a .tsv as sample list: `sniffles --input snf_files_list.tsv --vcf multisample.vcf`


  To call mosaic SVs, the *--mosaic* option should be added, i.e.:

  `sniffles --input mapped_input.bam --vcf output.vcf --mosaic`


  Example command, to determine the genotype of each SV in *input_known_svs.vcf* for *sample.bam* and write the re-genotyped SVs to *output_genotypes.vcf*:

  `sniffles --input sample.bam --genotype-vcf input_known_svs.vcf --vcf output_genotypes.vcf`




  * .bam or .cram files containing long read alignments (i.e. from minimap2 or ngmlr) are supported as input
  * .vcf.gz (bgzipped+tabix indexed) output is supported
  * Simultaneous output of both .vcf and .snf file (for multi-sample calling) is supported


  * We have developed a plotting tools for Sniffles2: [https://github.com/farhangus/sniffle2_plot](https://github.com/farhangus/sniffle2_plot)
  * We also provide VCF and scripts used for the manuscript [https://github.com/smolkmo/Sniffles2-Supplement](https://github.com/smolkmo/Sniffles2-Supplement)


  [https://github.com/smolkmo/Sniffles2-Supplement/blob/main/Supplemetary%20tables.xlsx](https://github.com/smolkmo/Sniffles2-Supplement/blob/main/Supplemetary%20tables.xlsx)


pkgId: c12ecdbf1d95e6ac79f800a9a4acf7ff07c339a2d183623a79894d7002314b65
name: python-snmp-diode-help
arch: noarch
version: 0.0.5
epoch: 0
release: 1
summary: Development documents and examples for snmp-diode
url: https://github.com/renatoalmeidaoliveira/snmp-diode/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-snmp-diode-0.0.5-1.src.rpm
location_href: Packages/python-snmp-diode-help-0.0.5-1.noarch.rpm
checksum_type: sha256
description:
  snmp-diode is a Python tool designed to gather device data using SNMP  and push it to NetBoxLabs Diode.



  - snmp-diode collects the following data using snmp:

  | OID | NetBox Mapping |
  | --- | ---- |
  | 1.3.6.1.2.1.1.5.0 | Device Name |
  | 1.3.6.1.2.1.1.2.0 | Manufacturer and Device Type |
  | 1.3.6.1.2.1.1.6.0 | Site |
  | 1.3.6.1.2.1.2.2.1.2 | Interface Name |
  | 1.3.6.1.2.1.31.1.1.1.18 | Interface Description |
  | 1.3.6.1.2.1.2.2.1.6 | Interface Mac Address |
  | 1.3.6.1.2.1.2.2.1.7 | Interface Enabled Status |
  | 1.3.6.1.2.1.4.20.1.2 | Interface IP Address |
  | 1.3.6.1.2.1.4.20.1.3 | Interface Ip Address Mask |



  To install snmp-diode, follow these steps:

  `$ pip install snmp-diode`




  ```
  usage: snmp-diode [-h] [-t HOST] [-n NETWORK] -v VERSION
                    [-c COMMUNITY] [-u USERNAME] [-a AUTH]
                    [-A {MD5,SHA}] [-x PRIVACY]
                    [-X PRIVACY_PROTOCOL]
                    [-l {noAuthNoPriv,authNoPriv,authPriv}]
                    [-d DIODE] [-k API_KEY] [--apply] [-r ROLE]
                    [-s SITE]

  SNMP Discovery Tool for NetBoxLabs Diode

  options:
    -h, --help            show this help message and exit
    -t HOST, --host HOST  Target Host Address
    -n NETWORK, --network NETWORK
                          Target Network Address
    -v VERSION, --version VERSION
                          SNMP Version
    -c COMMUNITY, --community COMMUNITY
                          SNMP Community String
    -u USERNAME, --username USERNAME
                          SNMPv3 Username
    -a AUTH, --auth AUTH  SNMPv3 Auth Password
    -A {MD5,SHA}, --auth_protocol {MD5,SHA}
                          SNMPv3 Auth Protocol
    -x PRIVACY, --privacy PRIVACY
                          SNMPv3 Privacy Password
    -X PRIVACY_PROTOCOL, --privacy_protocol PRIVACY_PROTOCOL
                          SNMPv3 Privacy Protocol
    -l {noAuthNoPriv,authNoPriv,authPriv}, --level {noAuthNoPriv,authNoPriv,authPriv}
                          SNMPv3 Security Level
    -d DIODE, --diode DIODE
                          Diode Server
    -k API_KEY, --api_key API_KEY
                          Diode API Key
    --apply               Apply the changes to NetBox
    -r ROLE, --role ROLE  Role of the device
    -s SITE, --site SITE  Site of the device
  ```



  With -t flag snmp-diode discovers only the target host, usage sample:

  ```shell
  $ export DIODE_API_KEY=1234567890098765432
  $ snmp-diode -t 172.20.20.1 -v 2 -c public -d grpc://192.168.224.137:8081/diode --apply
  ```


  With -n flag snmp-diode discovers the target network (CIDR format, i.e. 10.0.0.0/24 ) including the network address and mask, usage sample:

  ```shell
  $ export DIODE_API_KEY=1234567890098765432
  $ snmp-diode -n 172.20.20.0/24 -v 2 -c public -d grpc://192.168.224.137:8081/diode --apply
  ```



  Running snmp-diode without the --apply flag it gonna discover the target devices and print the Diode Entities.

  ```shell
  $ snmp-diode -n 172.20.20.0/24 -v 2 -c public
  ```



  By setting the Role or Site flags, snmp-diode setups those values to all discovered devices.



  Contributions are welcome! If you encounter any issues or have suggestions for improvements, please open an issue or submit a pull request.



  This project is licensed under the MIT License. See the [LICENSE](LICENSE.txt) file for more information.


pkgId: e4700970477ba0a3ed4a13f97b4d6982a7390bd3b704bcc6225a083027889630
name: python-snowflake-cli-help
arch: noarch
version: 3.2.2
epoch: 0
release: 1
summary: Development documents and examples for snowflake-cli
url: https://pypi.org/project/snowflake-cli/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-snowflake-cli-3.2.2-1.src.rpm
location_href: Packages/python-snowflake-cli-help-3.2.2-1.noarch.rpm
checksum_type: sha256
description:
  <!--
   Copyright (c) 2024 Snowflake Inc.

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

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

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

  [![Code quality checks](https://github.com/snowflakedb/snowflake-cli/actions/workflows/lint.yaml/badge.svg)](https://github.com/snowflakedb/snowflake-cli/actions/workflows/lint.yaml)
  [![Integration testing](https://github.com/snowflakedb/snowflake-cli/actions/workflows/integration_test.yaml/badge.svg)](https://github.com/snowflakedb/snowflake-cli/actions/workflows/integration_test.yaml)
  [![CLI Action testing](https://github.com/snowflakedb/snowflake-cli/actions/workflows/test_cli_action.yaml/badge.svg?branch=main)](https://github.com/snowflakedb/snowflake-cli/actions/workflows/test_cli_action.yaml)

  [//]: # ([![Python 3.11]&#40;https://img.shields.io/badge/python-3.11-blue.svg&#41;]&#40;https://www.python.org/downloads/release/python-311/&#41;)



  Snowflake CLI is an open-source command-line tool explicitly designed for developer-centric workloads in addition to SQL operations. It is a flexible and extensible tool that can accommodate modern development practices and technologies.

  With Snowflake CLI, developers can create, manage, update, and view apps running on Snowflake across workloads such as Streamlit in Snowflake, the Snowflake Native App Framework, Snowpark Container Services, and Snowpark. It supports a range of Snowflake features, including user-defined functions, stored procedures, Streamlit in Snowflake, and SQL execution.

  **Note**: Snowflake CLI is in Public Preview (PuPr).

  Docs: <https://docs.snowflake.com/en/developer-guide/snowflake-cli-v2/index>.

  Quick start: <https://quickstarts.snowflake.com/guide/getting-started-with-snowflake-cli>

  Cheatsheet: <https://github.com/Snowflake-Labs/sf-cheatsheets/blob/main/snowflake-cli.md>





  We recommend installing Snowflake CLI in isolated environment using [pipx](https://pipx.pypa.io/stable/). Requires Python >= 3.10

  ```bash
  pipx install snowflake-cli
  snow --help
  ```



  Requires [Homebrew](https://brew.sh/).

  ```bash
  brew tap snowflakedb/snowflake-cli
  brew install snowflake-cli
  snow --help
  ```



  Requires Python >= 3.10 and git

  ```bash
  git clone https://github.com/snowflakedb/snowflake-cli
  cd snowflake-cli



  hatch build && pip install .
  snow --version
  ```

  You should now be able to run `snow` and get the CLI message.



  Have a feature idea? Running into a bug? Want to contribute? We'd love to hear from you!
  Please open or review issues, open pull requests, or reach out to us on <developers@snowflake.com>

rpm_license:
  Apache License Version 2.0, January 2004 http://www.apache.org/licenses/  TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION  1. Definitions.  "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.  "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.  "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.  "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.  "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.  "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.  "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).  "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.  "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."  "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.  2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.  3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.  4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:  (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and  (b) You must cause any modified files to carry prominent notices stating that You changed the files; and  (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and  (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.  You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.  5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.  6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.  7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.  8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.  9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.  END OF TERMS AND CONDITIONS  APPENDIX: How to apply the Apache License to your work.  To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!)  The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.  Copyright 2024 Snowflake Inc.  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at  http://www.apache.org/licenses/LICENSE-2.0  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


pkgId: 1b6d1b1c5fe170d3ab6fe120b803da7a15aa3eef95b29c6f6fc91d2b06cb1d98
name: python-snowflake-haystack-help
arch: noarch
version: 0.0.3
epoch: 0
release: 1
summary: Development documents and examples for snowflake-haystack
url: https://pypi.org/project/snowflake-haystack/
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-snowflake-haystack-0.0.3-1.src.rpm
location_href: Packages/python-snowflake-haystack-help-0.0.3-1.noarch.rpm
checksum_type: sha256
description:
  **Table of Contents**
  - [Installation](#installation)
  - [License](#license)

  ```console
  pip install snowflake-haystack
  ```

  You can find a code example showing how to use the Retriever under the `example/` folder of this repo.

  `snowflake-haystack` is distributed under the terms of the [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) license.


pkgId: 778de3f750202850cb66bb8b8146f8fcde02ee7de083f8019df17c7ef3f81937
name: python-snowflake-sqlalchemy-help
arch: noarch
version: 1.7.2
epoch: 0
release: 1
summary: Development documents and examples for snowflake-sqlalchemy
url: https://www.snowflake.com/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-snowflake-sqlalchemy-1.7.2-1.src.rpm
location_href: Packages/python-snowflake-sqlalchemy-help-1.7.2-1.noarch.rpm
checksum_type: sha256
description:
  The `MAP` type represents a collection of key-value pairs, where each key and value can have different types.
  - **Key Type**: The type of the keys (e.g., `TEXT`, `NUMBER`).
  - **Value Type**: The type of the values (e.g., `TEXT`, `NUMBER`).
  - **Not Null**: Whether `NULL` values are allowed (default is `False`).
  *Example Usage*
  ```python
  IcebergTable(
      table_name,
      metadata,
      Column("id", Integer, primary_key=True),
      Column("map_col", MAP(NUMBER(10, 0), TEXT(16777216))),
      external_volume="external_volume",
      base_location="base_location",
  )
  ```

  The `OBJECT` type represents a semi-structured object with named fields. Each field can have a specific type, and you can also specify whether each field is nullable.
  - **Items Types**: A dictionary of field names and their types. The type can optionally include a nullable flag (`True` for not nullable, `False` for nullable, default is `False`).
  *Example Usage*
  ```python
  IcebergTable(
      table_name,
      metadata,
      Column("id", Integer, primary_key=True),
      Column(
          "object_col",
          OBJECT(key1=(TEXT(16777216), False), key2=(NUMBER(10, 0), False)),
          OBJECT(key1=TEXT(16777216), key2=NUMBER(10, 0)), # Without nullable flag
      ),
      external_volume="external_volume",
      base_location="base_location",
  )
  ```

  The `ARRAY` type represents an ordered list of values, where each element has the same type. The type of the elements is defined when creating the array.
  - **Value Type**: The type of the elements in the array (e.g., `TEXT`, `NUMBER`).
  - **Not Null**: Whether `NULL` values are allowed (default is `False`).
  *Example Usage*
  ```python
  IcebergTable(
      table_name,
      metadata,
      Column("id", Integer, primary_key=True),
      Column("array_col", ARRAY(TEXT(16777216))),
      external_volume="external_volume",
      base_location="base_location",
  )
  ```

  Snowflake SQLAchemy supports the `CLUSTER BY` parameter for tables. For information about the parameter, see :doc:`/sql-reference/sql/create-table`.
  This example shows how to create a table with two columns, `id` and `name`, as the clustering keys:
  ```python
  t = Table('myuser', metadata,
      Column('id', Integer, primary_key=True),
      Column('name', String),
      snowflake_clusterby=['id', 'name', text('id > 5')], ...
  )
  metadata.create_all(engine)
  ```

  [Alembic](http://alembic.zzzcomputing.com) is a database migration tool on top of `SQLAlchemy`. Snowflake SQLAlchemy works by adding the following code to `alembic/env.py` so that Alembic can recognize Snowflake SQLAlchemy.
  ```python
  from alembic.ddl.impl import DefaultImpl
  class SnowflakeImpl(DefaultImpl):
      __dialect__ = 'snowflake'
  ```
  See [Alembic Documentation](http://alembic.zzzcomputing.com/) for general usage.

  Snowflake SQLAlchemy supports key pair authentication by leveraging its Snowflake Connector for Python underpinnings. See [Using Key Pair Authentication](https://docs.snowflake.net/manuals/user-guide/python-connector-example.html#using-key-pair-authentication) for steps to create the private and public keys.
  The private key parameter is passed through `connect_args` as follows:
  ```python
  from snowflake.sqlalchemy import URL
  from sqlalchemy import create_engine
  from cryptography.hazmat.backends import default_backend
  from cryptography.hazmat.primitives.asymmetric import rsa
  from cryptography.hazmat.primitives.asymmetric import dsa
  from cryptography.hazmat.primitives import serialization
  with open("rsa_key.p8", "rb") as key:
      p_key= serialization.load_pem_private_key(
          key.read(),
          password=os.environ['PRIVATE_KEY_PASSPHRASE'].encode(),
          backend=default_backend()
      )
  pkb = p_key.private_bytes(
      encoding=serialization.Encoding.DER,
      format=serialization.PrivateFormat.PKCS8,
      encryption_algorithm=serialization.NoEncryption())
  engine = create_engine(URL(
      account='abc123',
      user='testuser1',
      ),
      connect_args={
          'private_key': pkb,
          },
      )
  ```
  Where `PRIVATE_KEY_PASSPHRASE` is a passphrase to decrypt the private key file, `rsa_key.p8`.
  Currently a private key parameter is not accepted by the `snowflake.sqlalchemy.URL` method.

  Snowflake SQLAlchemy supports upserting with its `MergeInto` custom expression.
  See [Merge](https://docs.snowflake.net/manuals/sql-reference/sql/merge.html)  for full documentation.
  Use it as follows:
  ```python
  from sqlalchemy.orm import sessionmaker
  from sqlalchemy import MetaData, create_engine
  from snowflake.sqlalchemy import MergeInto
  engine = create_engine(db.url, echo=False)
  session = sessionmaker(bind=engine)()
  connection = engine.connect()
  meta = MetaData()
  meta.reflect(bind=session.bind)
  t1 = meta.tables['t1']
  t2 = meta.tables['t2']
  merge = MergeInto(target=t1, source=t2, on=t1.c.t1key == t2.c.t2key)
  merge.when_matched_then_delete().where(t2.c.marked == 1)
  merge.when_matched_then_update().where(t2.c.isnewstatus == 1).values(val = t2.c.newval, status=t2.c.newstatus)
  merge.when_matched_then_update().values(val=t2.c.newval)
  merge.when_not_matched_then_insert().values(val=t2.c.newval, status=t2.c.newstatus)
  connection.execute(merge)
  ```

  Snowflake SQLAlchemy supports saving tables/query results into different stages, as well as into Azure Containers and
  AWS buckets with its custom `CopyIntoStorage` expression. See [Copy into](https://docs.snowflake.net/manuals/sql-reference/sql/copy-into-location.html)
  for full documentation.
  Use it as follows:
  ```python
  from sqlalchemy.orm import sessionmaker
  from sqlalchemy import MetaData, create_engine
  from snowflake.sqlalchemy import CopyIntoStorage, AWSBucket, CSVFormatter
  engine = create_engine(db.url, echo=False)
  session = sessionmaker(bind=engine)()
  connection = engine.connect()
  meta = MetaData()
  meta.reflect(bind=session.bind)
  users = meta.tables['users']
  copy_into = CopyIntoStorage(from_=users,
                              into=AWSBucket.from_uri('s3://my_private_backup').encryption_aws_sse_kms('1234abcd-12ab-34cd-56ef-1234567890ab'),
                              formatter=CSVFormatter().null_if(['null', 'Null']))
  connection.execute(copy_into)
  ```

  Snowflake SQLAlchemy supports Iceberg Tables with the Snowflake Catalog, along with various related parameters. For detailed information about Iceberg Tables, refer to the Snowflake [CREATE ICEBERG](https://docs.snowflake.com/en/sql-reference/sql/create-iceberg-table-snowflake) documentation.
  To create an Iceberg Table using Snowflake SQLAlchemy, you can define the table using the SQLAlchemy Core syntax as follows:
  ```python
  table = IcebergTable(
      "myuser",
      metadata,
      Column("id", Integer, primary_key=True),
      Column("name", String),
      external_volume=external_volume_name,
      base_location="my_iceberg_table",
      as_query="SELECT * FROM table"
  )
  ```
  Alternatively, you can define the table using a declarative approach:
  ```python
  class MyUser(Base):
      __tablename__ = "myuser"
      @classmethod
      def __table_cls__(cls, name, metadata, *arg, **kw):
          return IcebergTable(name, metadata, *arg, **kw)
      __table_args__ = {
          "external_volume": "my_external_volume",
          "base_location": "my_iceberg_table",
          "as_query": "SELECT * FROM table",
      }
      id = Column(Integer, primary_key=True)
      name = Column(String)
  ```

  Snowflake SQLAlchemy supports Hybrid Tables with indexes. For detailed information, refer to the Snowflake [CREATE HYBRID TABLE](https://docs.snowflake.com/en/sql-reference/sql/create-hybrid-table) documentation.
  To create a Hybrid Table and add an index, you can use the SQLAlchemy Core syntax as follows:
  ```python
  table = HybridTable(
      "myuser",
      metadata,
      Column("id", Integer, primary_key=True),
      Column("name", String),
      Index("idx_name", "name")
  )
  ```
  Alternatively, you can define the table using the declarative approach:
  ```python
  class MyUser(Base):
      __tablename__ = "myuser"
      @classmethod
      def __table_cls__(cls, name, metadata, *arg, **kw):
          return HybridTable(name, metadata, *arg, **kw)
      __table_args__ = (
          Index("idx_name", "name"),
      )
      id = Column(Integer, primary_key=True)
      name = Column(String)
  ```

  Snowflake SQLAlchemy supports Dynamic Tables. For detailed information, refer to the Snowflake [CREATE DYNAMIC TABLE](https://docs.snowflake.com/en/sql-reference/sql/create-dynamic-table) documentation.
  To create a Dynamic Table, you can use the SQLAlchemy Core syntax as follows:
  ```python
  dynamic_test_table_1 = DynamicTable(
      "dynamic_MyUser",
      metadata,
      Column("id", Integer),
      Column("name", String),
      target_lag=(1, TimeUnit.HOURS),  # Additionally, you can use SnowflakeKeyword.DOWNSTREAM
      warehouse='test_wh',
      refresh_mode=SnowflakeKeyword.FULL,
      as_query="SELECT id, name from MyUser;"
  )
  ```
  Alternatively, you can define a table without columns using the SQLAlchemy `select()` construct:
  ```python
  dynamic_test_table_1 = DynamicTable(
      "dynamic_MyUser",
      metadata,
      target_lag=(1, TimeUnit.HOURS),
      warehouse='test_wh',
      refresh_mode=SnowflakeKeyword.FULL,
      as_query=select(MyUser.id, MyUser.name)
  )
  ```

  - Defining a primary key in a Dynamic Table is not supported, meaning declarative tables don’t support Dynamic Tables.
  - When using the `as_query` parameter with a string, you must explicitly define the columns. However, if you use the SQLAlchemy `select()` construct, you don’t need to explicitly define the columns.
  - Direct data insertion into Dynamic Tables is not supported.

  Feel free to file an issue or submit a PR here for general cases. For official support, contact Snowflake support at:
  <https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge>


pkgId: 5af8c21b3fd1d2638345f9716a63d944153f25a64a2d68c004ab63f0ac44a198
name: python-snyk-tags-help
arch: noarch
version: 2.5.0
epoch: 0
release: 1
summary: Development documents and examples for snyk-tags
url: https://github.com/snyk-labs/snyk-tags-tool
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-snyk-tags-2.5.0-1.src.rpm
location_href: Packages/python-snyk-tags-help-2.5.0-1.noarch.rpm
checksum_type: sha256
description:
  ![snyk-oss-category](https://github.com/snyk-labs/oss-images/blob/main/oss-community.jpg)



  - Help filter Snyk projects by product type by adding product tags across a Snyk Group or Organization - using ```snyk-tags tag```
  - Help filter Snyk projects by applying tags to all projects containing a specific name ```snyk-tags tag alltargets --contains-name=```
  - Help filter Snyk projects by applying tags to a target import (for example a git repo like **snyk-labs/nodejs-goof**) - using ```snyk-tags target tag``` or from a csv/json file with ```snyk-tags fromfile target-tag```
  - Help filter Snyk projects by applying attributes to a target import (for example a git repo like **snyk-labs/nodejs-goof**) - using ```snyk-tags target attributes``` or from a csv/json file with ```snyk-tags fromfile target-attributes```
  - Help filter Snyk projects by adding the GitHub CODEOWNERS (only GitHub handles) as tags to the target import (must be a GitHub repo in the form **snyk-labs/nodejs-goof**) - using ```snyk-tags target github owners```
  - Help with tag management by removing tags from a Group or a target import (for example a git repo like **snyk-labs/nodejs-goof**) - using ```snyk-tags target remove``` or listing all tags using ```snyk-tags list tags``` (also in bulk or from a csv/json file with ```snyk-tags fromfile```)
  - [Associate Snyk Open Source, Code and Container projects](https://docs.snyk.io/manage-risk/insights/insights-setup/insights-setup-associating-snyk-open-source-code-and-container-projects#examples-of-project-tags) with software component tags, using ```snyk-tags component tag```.



  ```snyk-tags tag``` is a CLI tool that uses the Snyk Project Tag API to assign tags in bulk to Snyk projects based on the product.

  ```snyk-tags tag``` will update all projects of the specified product within a Snyk Group or Organization with the product's tag.

  You can also specify a custom tag for the specific project types.

  [List all project types](#list-of-all-project-types)



  ```snyk-tags target``` goes through a target (repo, container, CLI import) to assign tags, attributes and assign GitHub metadata. Targets in snyk can be varied like:

  - **snyk-labs/nodejs-goof** is the target from a git import
  - **library/httpd** is the target from a container import
  - **/snyk-labs/nodejs-goof** is the target from a CLI import

  You can use:

  - **```snyk-tags target tag```** to add tags to a target
  - **```snyk-tags target attributes```** to add attributes to a target
  - **```snyk-tags target github```** for specific GitHub metadata. The GitHub repo must include the GitHub Organization e.g. **snyk-labs/nodejs-goof**

  [List all possible attributes](#list-of-all-attributes)



  To import GitHub metadata such as CODEOWNERS or Topics, you can use this command.

  **Requirements:**

  - GitHub PAT with ```read:org``` permissions

  **Usage:**

  - **```snyk-tags target github owners```** to add the CODEOWNERS file information as tags (limited to GitHub handles for now)
  - **```snyk-tags target github topics```** to add the GitHub Topics as tags



  Once you run ```snyk-tags```, go into the UI, naviagate to the projects page and find the tags filter or attribute filter options on the left-hand menu. Select the tag/attribute you have applied and you will see all projects associated.



  ```snyk-tags component tag``` automates tagging software components at scale for Snyk, based on powerful regular-expression based rules. Read more about this feature in [components](components.md).





  Requires Python version above 3.8



  To install the simplest way is to use pip:

  ```bash
  pip install snyk-tags
  ```

  Alternatively you can clone the repo and then run the following commands:

  ```python
  poetry install # To install dependencies
  python -m snyk-tags # To run snyk-tags
  ```



  For the following examples you will need a Snyk API token, this can either be a personal Snyk Group/Org admin or a service account, [here](https://docs.snyk.io/snyk-api-info/authentication-for-api) is more information on how to generate a Snyk API token. You can then pass this token as part of the command through ```--snyktkn=abc``` or as an environment variable ```SNYK_TOKEN```



  I want to filter all my Snyk Code projects to the whole Snyk Group:

  ``` bash
  snyk-tags tag sast --group-id=abc --snyktkn=abc
  ```

  I want to filter all my ```npm``` Snyk Open Source projects within a specific Snyk Organization:

  ``` bash
  snyk-tags tag sca --scatype=npm --org-id=abc --snyktkn=abc
  ```



  I want to filter all my Snyk projects sharing a common project name substring

  ``` bash
  snyk-tags tag alltargets --contains-name=microservice --group-id=abc --org-id=abc --snyktkn=abc --tagkey=app --tagvalue=microservice
  ```



  I want to filter all projects within my ```snyk-labs/nodejs-goof``` repo by ```project:snyk```

  ``` bash
  snyk-tags target tag --target=snyk-labs/nodejs-goof --org-id=abc --snyktkn=abc --tagkey=project --tagvalue=snyk
  ```

  I want to add attributes to all projects within my ```snyk-labs/python-goof``` repo. The attributes are ```critical, production, backend```

  ``` bash
  snyk-tags target attributes  --target=snyk-labs/python-goof --org-id=abc --snytkn=abc --criticality=critical --environment=backend --lifecycle=production
  ```

  I want mark with the repo owners all projects of the repo ```snyk-labs/nodejs-goof``` so I can filter by owner e.g.```Owner:EricFernandezSnyk```
  (to use a private GitHub instance, use `--gh-base-url=<your instance's API baseurl>`. Example: `--gh-base-url=https://gh.local/api/v3`)

  ``` bash
  snyk-tags target github owners --target=snyk-labs/nodejs-goof --org-id=abc --snyktkn=abc --githubtkn=abc
  ```

  I want add my GitHub Topics to all projects of the repo ```snyk-labs/nodejs-goof``` so I can filter by topics e.g.```GitHubTopic:python3```
  (to use a private GitHub instance, use `--gh-base-url=<your instance's API baseurl>`. Example: `--gh-base-url=https://gh.local/api/v3`)

  ``` bash
  snyk-tags target github topics --target=snyk-labs/nodejs-goof --org-id=abc --snyktkn=abc --githubtkn=abc
  ```

  I want to remove the tag project:snyk from the repo ```snyk-labs/nodejs-goof```

  ``` bash
  snyk-tags remove tag-from-target --target=snyk-labs/nodejs-goof --group-id=abc --snyktkn=abc --tagkey=project --tagkey=snyk
  ```

  I want to remove the tag app:microservice from all targets within a specific Snyk Organization

  ``` bash
  snyk-tags remove tag-from-alltargets --contains-name=apps-demo --org-id=abc --tagkey=app --tagvalue=microservice
  ```

  I want to filter all projects within ```snyk-labs/nodejs-goof``` and ```snyk-labs/goof``` repo by ```project:snyk``` so I use a csv in the format ```org-id,target,key,value```

  ``` bash
  snyk-tags fromfile target-tag --file=path/to/file.csv --snyktkn
  ```





  |       Snyk IaC       | Snyk Open Source | Snyk Container | Snyk Code |
  |:--------------------:|:----------------:|:--------------:|:---------:|
  |    terraformconfig   |       maven      |   dockerfile   |    sast   |
  |     terraformplan    |        npm       |       apk      |           |
  |       k8sconfig      |       nuget      |       deb      |           |
  |      helmconfig      |      gradle      |       rpm      |           |
  | cloudformationconfig |        pip       |      linux     |           |
  |       armconfig      |       yarn       |                |           |
  |                      |     gomodules    |                |           |
  |                      |     rubygems     |                |           |
  |                      |     composer     |                |           |
  |                      |        sbt       |                |           |
  |                      |     golangdep    |                |           |
  |                      |     cocoapods    |                |           |
  |                      |      poetry      |                |           |
  |                      |     govendor     |                |           |
  |                      |        cpp       |                |           |
  |                      |  yarn-workspace  |                |           |
  |                      |        hex       |                |           |
  |                      |       paket      |                |           |
  |                      |      golang      |                |           |



  | Criticality          | Environment | Lifecycle       |
  |:--------------------:|:-----------:|:---------------:|
  |       critical       |   frontend  |    production   |
  |         high         |   backend   |   development   |
  |        medium        |   internal  |     sandbox     |
  |          low         |   external  |                 |
  |                      |    mobile   |                 |
  |                      |     saas    |                 |
  |                      |    onprem   |                 |
  |                      |    hosted   |                 |
  |                      | distributed |                 |


pkgId: ac17bf7b6fc0e9e100bfea35e1079cd1f65db12f8be8e69c1934e7208a4140cb
name: python-social-post-api-help
arch: noarch
version: 1.2.3
epoch: 0
release: 1
summary: Development documents and examples for social-post-api
url: https://www.ayrshare.com
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-social-post-api-1.2.3-1.src.rpm
location_href: Packages/python-social-post-api-help-1.2.3-1.noarch.rpm
checksum_type: sha256
description:
  ![Ayrshare logo](https://www.ayrshare.com/wp-content/uploads/2020/08/ayr-logo-2156-reduced.png)

  The Social Media API is a Python wrapper SDK for [Ayrshare's APIs](https://www.ayrshare.com). While most of the capabliites are supported, the Python wrapper SDK is not as feature complete as the [Ayrshare's APIs](https://www.ayrshare.com/docs/introduction).
  The Social Media API is a Python wrapper SDK for [Ayrshare's APIs](https://www.ayrshare.com). While most of the capabliites are supported, the Python wrapper SDK is not as feature complete as the [Ayrshare's APIs](https://www.ayrshare.com/docs/introduction).



  Ayrshare is a powerful set of APIs that enable you to send social media posts, get analytics, manage comments, do DMs, and more to *X/Twitter*, *Instagram*, *Facebook*, *LinkedIn*, *YouTube*, *Google Busienss Profile*, *Pinterest*, *TikTok*, *Reddit*, and *Telegram* on behalf of your users or clients.

  The Ayrshare Social API handles all the setup and maintenance for the social media networks. One API to rule them all (yeah, went there). See the full list of [full list of features](https://www.ayrshare.com/docs/apis/overview).
  The Ayrshare Social API handles all the setup and maintenance for the social media networks. One API to rule them all (yeah, went there). See the full list of [full list of features](https://www.ayrshare.com/docs/apis/overview).

  Get started with a [free plan](https://www.ayrshare.com/pricing), or if you have a platform or manage multiple users check out the [Business Plan](https://www.ayrshare.com/business-plan-for-multiple-users/).

  For more information on setup, see our installation [video](https://youtu.be/G8M6DZdtcMc) or our [Quick Start Guide](https://www.ayrshare.com/docs/quickstart).
  For more information on setup, see our installation [video](https://youtu.be/G8M6DZdtcMc) or our [Quick Start Guide](https://www.ayrshare.com/docs/quickstart).



  `pip install social-post-api`



  **1.** Create a free [Ayrshare account](https://app.ayrshare.com).

     ![alt Social Accounts Setup](https://www.ayrshare.com/wp-content/uploads/Ayrshare-login.png)

  **2.** Enable your social media accounts such as C/Twitter, Facebook, LinkedIn, Reddit, Instagram, Google Business Profile, Telegram, TikTok, or YouTube in the Ayrshare dashboard.

     ![alt Social Accounts Setup](https://www.ayrshare.com/wp-content/uploads/Ayrshare-social-linking.png)

  **3.** Copy your API Key from the Ayrshare dashboard. Used for authentication.

     ![alt API Key](https://www.ayrshare.com/wp-content/uploads/Ayrshare-API-key.png)





  Create a new Social Post object with your API Key.

  ``` python
  from ayrshare import SocialPost
  social = SocialPost('DJED-DKEP-SJWK-WJKS') # get an API Key at ayrshare.com
  ```



  This simple example shows how to post, get history, and delete the post. This example assumes you have a free API key from [Ayrshare](https://www.ayrshare.com) and have enabled X/Twitter, Facebook, and LinkedIn. Note, Instagram, Telegram, YouTube, TikTok, and Reddit also available.

  ``` python
  from ayrshare import SocialPost
  social = SocialPost('8jKj782Aw8910dCN') # get an API Key at ayrshare.com


  postResult = social.post({'post': 'Nice Posting 2', 'platforms': ['twitter', 'facebook', 'linkedin']})
  print(postResult)


  deleteResult = social.delete({'id': postResult['id']})
  print(deleteResult)


  print(social.history())
  ```





  [Published a new post](https://www.ayrshare.com/docs/apis/post/overview) to the specified social networks either immediately or at scheduled future date with the Social API. Returns a promise that resolves to an object containing the post ID and post status (success, error). See the [post endpoint](https://www.ayrshare.com/docs/apis/post/post) for the full capabilities.

  ``` python
  postResponse = social.post({
      
      'post': 'Best post ever!',

    
    
      'platforms': ['twitter', 'facebook', 'linkedin', 'pinterest', 'telegram', 'instagram'],

    
    'mediaUrls': ['https://img.ayrshare.com/012/gb.jpg'],

    
    
    'scheduleDate': '2020-08-07T15:17:00Z',

    
    
    'shorten_links': true
  })
  ```



  Delete a post with a given post ID, obtained from the "post" response. Returns a promise with the delete status. Also, can bulk delete multiple IDs at once using the "bulk" key. See the [delete endpoint](https://www.ayrshare.com/docs/apis/post/delete-post) for more details.
  Delete a post with a given post ID, obtained from the "post" response. Returns a promise with the delete status. Also, can bulk delete multiple IDs at once using the "bulk" key. See the [delete endpoint](https://www.ayrshare.com/docs/apis/post/delete-post) for more details.

  ``` python
  deleteResponse = social.delete({
      
      'id': 'POST ID',                          # Optional, but required if "bulk" not present
      'bulk': ['Post ID 1', 'Post ID 2', ...]   # Optional, but required if "id" not present
    })
  ```



  Get a post with a given post ID. Returns a promise that resolves to a post object. See the [get post endpoint](https://www.ayrshare.com/docs/apis/post/get-post) for more details.
  Get a post with a given post ID. Returns a promise that resolves to a post object. See the [get post endpoint](https://www.ayrshare.com/docs/apis/post/get-post) for more details.

  ``` python
  getResponse = social.getPost({
      
      'id': 'POST ID',
    })
  ```



  Retry a failed post with a given post ID. Returns a promise that resolves to an object with the post status. See the [retry post endpoint](https://www.ayrshare.com/docs/apis/post/retry-post) for more details.
  Retry a failed post with a given post ID. Returns a promise that resolves to an object with the post status. See the [retry post endpoint](https://www.ayrshare.com/docs/apis/post/retry-post) for more details.

  ``` python
  retryResponse = social.retryPost({
      
      'id': 'POST ID',
    })
  ```



  Update a post with a given post ID. Returns a promise that resolves to an object with status and update info. See the [update post endpoint](https://www.ayrshare.com/docs/apis/post/retry-post) for more details.

  ``` python
  updateResponse = social.updatePost({
      'id': 'POST ID',                         # Required: ID of the post to update
      'scheduleDate': '2024-08-07T15:17:00Z',  # Optional: Datetime to schedule a future post.
      'approved': 'true',                         # Optional: Approve the post to send it.
      'youTubeOptions': {                         # Optional: YouTube specific options
        'title': 'New Title',
        'description': 'New Description',
        'visibility': 'unlisted',
        'categoryId': 24,
      },
      'notes': 'New notes',                      # optional: Notes about the post
    })
  ```



  Get a [history](https://www.ayrshare.com/docs/apis/history/overview) of all posts and their current status in descending order. Returns a promise that resolves to an array of post objects. See the [history endpoint](https://www.ayrshare.com/docs/apis/history/get-history) for more details.

  ``` python
  historyResponse = social.history({
    'lastRecords': 10,    # optional: returns the last X number of history records
    'lastDays': 30,       # optional: returns the last X number of days of history records. Defaults to 30 if not present.
  })
  ```



  Upload and store a new image. Returns a URL referencing the image. Can be used in "image_url" in "post". See the [media endpoint](https://www.ayrshare.com/docs/apis/media/overview) for more details.

  ``` python
  uploadResponse = social.upload({
    
    'file': 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...',

    
    'fileName': 'test.png',

    
      'description': 'best image'
  })
  ```



  Get all media URLS. Returns a promise that resolves to an array of URL objects. See the [media endpoint](https://www.ayrshare.com/docs/apis/media/get-media-in-gallery) for more details.
  Get all media URLS. Returns a promise that resolves to an array of URL objects. See the [media endpoint](https://www.ayrshare.com/docs/apis/media/get-media-in-gallery) for more details.

  ``` python
  mediaResponse = social.media()
  ```



  Verify that the media file exists when uploaded. See the [media verify exists endpoint](https://www.ayrshare.com/docs/apis/media/verify-media-url) for more details.
  Verify that the media file exists when uploaded. See the [media verify exists endpoint](https://www.ayrshare.com/docs/apis/media/verify-media-url) for more details.

  ``` python
  verifyResponse = social.verifyMediaExists({
    
    'mediaUrl': 'https://img.ayrshare.com/012/gb.jpg',
  })
  ```



  Get image resized according to social network requirements. See the [resize image endpoint](https://www.ayrshare.com/docs/apis/media/resize) for more details.
  Get image resized according to social network requirements. See the [resize image endpoint](https://www.ayrshare.com/docs/apis/media/resize) for more details.

  ``` python
  resizeResponse = social.resizeImage({
    'imageUrl': "https://theImage.jpg", # required: URL of the image to resize
    'platform': "facebook" # required: Platform to resize the image for.
    'watermarkUrl': "https:#theWatermark.png", # optional: URL of the watermark image to add to the image.
    'effects': { color: "#A020F0" } # optional: Change opacity, colors, etc. See endpoint for more details.
    'dimensions': { width: 1200, height: 628 } # optional: Width and height of the image. Required if platform is not specified.
    'mode': "blur" # optional. See endpoint for more details.
  })
  ```



  Get data about the logged in [user](https://www.ayrshare.com/docs/apis/user/overview), such as post quota, used quota, active social networks, and created date. See the [user endpoint](https://www.ayrshare.com/docs/apis/user/profile-details) for more details.

  ``` python
  user = social.user()
  ```



  Shorten a URL and return the shortened URL. See the [shorten endpoint](https://www.ayrshare.com/docs/apis/links/create-short-link) for more details.

  ``` python
  shortenResponse = social.shorten({
      
      'url': 'https://theURLtoShorten.com/whatmore',
    })
  ```



  Get [analytics](https://www.ayrshare.com/docs/apis/analytics/overview) on shortened links and shares, likes, shares, and impressions with for a post or at the accounts level. See the [analytics endpoint](https://www.ayrshare.com/docs/apis/analytics/post) for more details.

  ``` python
  analytics = social.analyticsLinks({
    
    'lastDays': 3
  })
  ```

  ``` python
  analytics = social.analyticsPost({
    'id': 'Post ID',
    'platforms': ['twitter', 'linkedin'] # optional: filter by platform
  })
  ```



  Get analytics on a social network. Returns a promise that resolves to an object containing the analytics data. See the [social analytics endpoint](https://www.ayrshare.com/docs/apis/analytics/social) for more details.

  ```python
  analytics = social.analyticsSocial({
    'platforms': ['twitter', 'linkedin'] # required
  })
  ```



  Add a new RSS or Substack feed to auto post all new articles. Returns a promise that resolved to an object containing the feed ID. See [How to Automate Your Blog or Newsletter](https://www.ayrshare.com/how-to-automatically-post-your-blog-or-newsletter-to-social-media/) for more info.

  ``` python
  feedResponse = social.addFeed({
    
    'url': 'https://theRSSFeed',

    
    
      'type': 'RSS',
  })
  ```



  Delete an RSS feed for a given ID.

  ``` python
  feedResponse = social.deleteFeed({
    
    'id': 'Feed ID',
  })
  ```



  Get all registered RSS feeds. Returns a promise that resolves to an array of feed objects. See the [RSS Feeds](https://www.ayrshare.com/docs/apis/feeds/overview) for more details.

  ``` python
  feedsResponse = social.getFeeds()
  ```



  Update an RSS feed for a given ID. Returns a promise that resolves to an object containing the feed ID. See the [update feed endpoint](https://www.ayrshare.com/docs/apis/feeds/update-feed) for more details.
  Update an RSS feed for a given ID. Returns a promise that resolves to an object containing the feed ID. See the [update feed endpoint](https://www.ayrshare.com/docs/apis/feeds/update-feed) for more details.

  ``` python
  feedResponse = social.updateFeed({
      'id': 'Feed ID', # required: ID of the feed
      'useFirstImage': 'true', # optional: Use the first image in the article to add to the post.
      'autoHashtag': 'true', # optional: Automatically add hashtags to the post.
    })
  ```



  Get comments for a post. See the [comments endpoint](https://www.ayrshare.com/docs/apis/comments/overview) for more details.

  ``` python
  getCommentsResponse = social.getComments({
    
    'id': 'Post Id',
  })
  ```



  Add a comment to a post. See the [create comment endpoint](https://www.ayrshare.com/docs/apis/comments/post-comment) for more details.

  ``` python
  postCommentResponse = social.postComment({
    
    'id': 'Post Id',
    'platforms': ['facebook', 'instagram'],
    'comment': 'The best comment ever!',
  })
  ```



  Delete either a single comment or all comments under a post that were sent via Ayrshare. Available for Facebook, Instagram, LinkedIn, Reddit, TikTok, X/Twitter, and YouTube. See the [delete comments endpoint](https://www.ayrshare.com/docs/apis/comments/post-comment) for more details.

  ``` python
  deleteCommentResponse = social.deleteComments({
      'id': "Pkdo9sjk2", # required: Post top-level ID or social comment ID
      'platforms': ["instagram", "facebook"], # optional: Required only if using the social comment id.
    })
  ```



  Reply to a comment. Available for Facebook, Instagram, LinkedIn, TikTok, X/Twitter, and YouTube. See the [reply comment endpoint](https://www.ayrshare.com/docs/apis/comments/reply-to-comment) for more details.
  Reply to a comment. Available for Facebook, Instagram, LinkedIn, TikTok, X/Twitter, and YouTube. See the [reply comment endpoint](https://www.ayrshare.com/docs/apis/comments/reply-to-comment) for more details.

  ``` python
  replyCommentResponse = social.replyComment({
      'commentId': 'Pkdo9sjk2', # required: The Ayrshare commentId returned from the POST comment endpoint. Be sure to use the top level commentId.
      'platforms': ['instagram', 'facebook'], # required: Array of platforms to post the reply. Values: facebook, instagram, linkedin, tiktok, twitter, youtube
      'comment': 'What a comment' # required: The reply to add to the comment.
    })
  ```



  The [Business Plan](https://www.ayrshare.com/business-plan-for-multiple-users/) allows you to create, manage, and post on behalf of client profiles via the API or Dashboard GUI. You can [integrate](https://www.ayrshare.com/docs/multiple-users/business-plan-overview) Ayrshare into your platform, product, or agency and give your clients social media capabilites. Please [contact us](mailto:contact@ayrshare.com) with any questions.

  A User Profile PROFILE_KEY can be used in the body or query parameters with the `profileKey` field. For example:

  ``` python
  postResult = social.post({
      'post': 'Nice Posting 2',
      'platforms': ['twitter', 'facebook', 'linkedin'],
      'profileKey': 'JI9s-kJII-9283-OMKM',
  })
  ```

  Please see the [Authorization](https://www.ayrshare.com/docs/apis/overview#authorization) docs for more details.



  Create a new account [profile](https://www.ayrshare.com/docs/apis/profiles/overview) under the primary account. See the [create profile endpoint](https://www.ayrshare.com/docs/apis/profiles/create-profile) for more details.

  ``` python
  createProfileResponse = social.createProfile({
      
      'title': 'New Profile Title',
  })
  ```



  Delete a profile owned by the primary account. See the [delete profile endpoint](https://www.ayrshare.com/docs/apis/profiles/delete-profile) for more details.
  Delete a profile owned by the primary account. See the [delete profile endpoint](https://www.ayrshare.com/docs/apis/profiles/delete-profile) for more details.

  ``` python
  deleteProfileResponse = social.deleteProfile({
      
      'profileKey': 'JI9s-kJII-9283-OMKM',
    })
  ```



  Generate a JWT Token and URL used for authorizing a user's access to the Social Account linking page. See the [generate JWT endpoint](https://www.ayrshare.com/docs/apis/profiles/generate-jwt) for more details.
  Generate a JWT Token and URL used for authorizing a user's access to the Social Account linking page. See the [generate JWT endpoint](https://www.ayrshare.com/docs/apis/profiles/generate-jwt) for more details.

  ``` python
  generateJWTResponse = social.generateJWT({
      'domain': 'mydomain',
      'privateKey': 'private key data...',
      'profileKey': 'JI9s-kJII-9283-OMKM',
    })
  ```



  Update a profile owned by the primary account. See the [update profile endpoint](https://www.ayrshare.com/docs/apis/profiles/update-profile) for more details.
  Update a profile owned by the primary account. See the [update profile endpoint](https://www.ayrshare.com/docs/apis/profiles/update-profile) for more details.

  ``` python
  updateProfileResponse = social.updateProfile({
    'profileKey': 'JI9s-kJII-9283-OMKM',  #Required: profileKey - the API Key of the profile to update
    'title': 'This is a great new title' #Optional: the new title of the profile
    'disableSocial': ['facebook', 'linkedin'] #Optional: an array of social networks to disable
    'hideTitle': 'true' #Optional: hide the title of the profile
    'displayTitle': 'true' #Optional: display the title of the profile
    })
  ```



  Get all the profiles associated with the primary account. See the [get profile endpoint](https://www.ayrshare.com/docs/apis/profiles/get-profiles) for more details.
  Get all the profiles associated with the primary account. See the [get profile endpoint](https://www.ayrshare.com/docs/apis/profiles/get-profiles) for more details.

  ``` python
  getProfileResponse = social.getProfiles()
  ```



  Unlink a social account for a given user profile owned by the primary account. See the [unlink social network endpoint](https://www.ayrshare.com/docs/apis/profiles/unlink-social-network) for more details.
  Unlink a social account for a given user profile owned by the primary account. See the [unlink social network endpoint](https://www.ayrshare.com/docs/apis/profiles/unlink-social-network) for more details.

  ``` python
  unlinkResponse = social.unlinkSocial({
      'profileKey': "JI9s-kJII-9283-OMKM",     # Required: profileKey - the API Key of the profile to unlink for.
      'platform': "facebook"
    })
  ```



  Get brand information on users and companies public social media accounts. See the [brand endpoint](https://www.ayrshare.com/docs/apis/brand/overview) for more details.

  ``` python
  brandResponse = social.getBrandByUser({
      'platforms': ['instagram', 'facebook'],
      'instagramUser': '@ayrshare',
      'facebookUser': 'ayrshare',
    })
  ```



  Automatically add hashtags to your post. See the [auto hashtags endpoint](https://www.ayrshare.com/docs/apis/hashtags/overview) for more details.

  ``` python
  autoHashtagsResponse = social.autoHashtags({
      'post': 'I love social media', # required: Post text to add hashtags for.
      'position': 'auto' # optional: Position of the hashtags. Values: 'auto', 'end'. Default: 'auto'.
      'max': 2 # optional: Maximum number of hashtags to add, ranging 1-5. Default: 2.
  })
  ```



  Get suggestions for hashtags based on a keyword. See the [recommend hashtags endpoint](https://www.ayrshare.com/docs/apis/hashtags/recommend-hashtags) for more details.
  Get suggestions for hashtags based on a keyword. See the [recommend hashtags endpoint](https://www.ayrshare.com/docs/apis/hashtags/recommend-hashtags) for more details.

  ``` python
  recommendHashtagsResponse = social.recommendHashtags({
      'keyword': 'social media', # required: Keyword to get hashtags for.
  })
  ```



  Check if a hashtag is banned on Instagram or other social networks. See the [check banned hashtags endpoint](https://www.ayrshare.com/docs/apis/hashtags/check-hashtags) for more details.
  Check if a hashtag is banned on Instagram or other social networks. See the [check banned hashtags endpoint](https://www.ayrshare.com/docs/apis/hashtags/check-hashtags) for more details.

  ``` python
  checkBannedHashtagsResponse = social.checkBannedHashtags({
      'hashtag': 'socialmedia', # required: Hashtag to check.
  })
  ```



  Retrieve all the reviews for the specified platform. See the [get all reviews endpoint](https://www.ayrshare.com/docs/apis/reviews/get-reviews) for more details.
  Retrieve all the reviews for the specified platform. See the [get all reviews endpoint](https://www.ayrshare.com/docs/apis/reviews/get-reviews) for more details.

  ``` python
  allReviewsResponse = social.reviews({
      'platform': 'facebook', # required: Platform to get reviews for. Currently available: "facebook", "gmb"
  })
  ```



  Retrieve a single review. See the [get single review endpoint](https://www.ayrshare.com/docs/apis/reviews/get-one-review) for more details.
  Retrieve a single review. See the [get single review endpoint](https://www.ayrshare.com/docs/apis/reviews/get-one-review) for more details.

  ``` python
  singleReviewResponse = social.review({
      'id': 'Review ID', # required
      'platform': 'gmb', # required: Platform to get review for. Currently available: "gmb"
  })
  ```



  Reply to a review. See the [reply to review endpoint](https://www.ayrshare.com/docs/apis/reviews/reply-review) for more details.
  Reply to a review. See the [reply to review endpoint](https://www.ayrshare.com/docs/apis/reviews/reply-review) for more details.

  ``` python
  replyReviewResponse = social.replyReview({
      'reviewId': 'Review ID', # required: Review ID to reply to.
      'platform': 'facebook', # required: Platform to reply to review for. Currently available: "facebook", "gmb"
      'reply': 'Thank you for the review' # required: Text of the reply to the review.
  })
  ```



  Delete a review reply. See the [delete review reply endpoint](https://www.ayrshare.com/docs/apis/reviews/reply-review) for more details.

  ``` python
  deleteReplyReviewResponse = social.deleteReplyReview({
      'reviewId': 'Review ID', # required: Review ID to delete reply for.
      'platform': 'gmb', # required: Platform to delete reply for. Currently available: "gmb"
  })
  ```





  Generate a new social post using ChatGPT. Token limits applicable. See the [generate post endpoint](https://www.ayrshare.com/docs/apis/generate/post-text) for more details.
  Generate a new social post using ChatGPT. Token limits applicable. See the [generate post endpoint](https://www.ayrshare.com/docs/apis/generate/post-text) for more details.

  ``` python
  generatePostResponse = social.generatePost({
      'text': 'I love social media', # required: Description of what the post should be about.
      'hashtags': 'true', #optional: Include hashtags in the post. Default: true
      'emojis': 'true', # optional: Include emojis in the post. Default: false
      'twitter': 'true', # optional: Construct a post 280 or few characters. Default: false
  })
  ```



  Generate variations of a social media post using ChatGPT. Token limits applicable. See the [generate rewrite endpoint](https://www.ayrshare.com/docs/apis/generate/rewrite-post) for more details.
  Generate variations of a social media post using ChatGPT. Token limits applicable. See the [generate rewrite endpoint](https://www.ayrshare.com/docs/apis/generate/rewrite-post) for more details.

  ``` python
  generateRewriteResponse = social.generateRewrite({
      'post': 'I love social media', # required: The post text to be rewritten.
      'emojis': 'true', # optional: Include emojis in the post. Default: false
      'hashtags': 'true', # optional: Include hashtags in the post. Default: false
      'twitter': 'true', # optional: Construct a post 280 or few characters. Default: false
      'rewrites': 5, # optional: Number of rewrites to generate. Default: 5
  })
  ```



  Provide a transcription of a video file. See the [generate transcription endpoint](https://www.ayrshare.com/docs/apis/generate/transcribe-video) for more details.
  Provide a transcription of a video file. See the [generate transcription endpoint](https://www.ayrshare.com/docs/apis/generate/transcribe-video) for more details.

  ``` python
  generateTranscriptionResponse = social.generateTranscription({
    'videoUrl': 'https://theVideo.mp4', # required: URL encoded video URL. The video must be hosted by Ayrshare.
  })
  ```



  Translate text for a post to over 100 different languages. See the [generate translation endpoint](https://www.ayrshare.com/docs/apis/generate/translate-post) for more details.
  Translate text for a post to over 100 different languages. See the [generate translation endpoint](https://www.ayrshare.com/docs/apis/generate/translate-post) for more details.

  ``` python
  generateTranslationResponse = social.generateTranslation({
    'text': 'I love social media', # required: The text to be translated.
    'lang': 'es', # required: The language code to translate the text to.
  })
  ```



  Generate a sentiment analysis on a social media post or comment to understand if the text is positive, negative, or neutral and recommendations on improving the text for a more positive reaction. See the [generate sentiment analysis endpoint](https://www.ayrshare.com/docs/apis/generate/sentiment) for more details.

  ``` python
  generateSentiment= social.generateSentiment({
    'text': 'I love social media' # required: The text to generate a sentiment analysis for.
  })
  ```



  Create AI-generated alt text for your images.  See the [generate alt text endpoint](https://www.ayrshare.com/docs/apis/generate/sentiment) for more details.

  ``` python
  generateAltTextResponse = social.generateAltText({
      'url': 'https://theImage.jpg', # required: URL of the image to generate alt text for.
      'keywords': ['social media', 'ayrshare'], # optional: Keywords to help the AI generate better alt text.
      'lang': 'en' # optional: The language code to generate the alt text in. Default: 'en'
  })
  ```



  Provide a URL and a shortened link will be returned. See the [shorten link endpoint](https://www.ayrshare.com/docs/apis/links/overview) for more details.

  ``` python
  shortenLinkResponse = social.shortLink({
      'url': 'https://theURL.com', # required: URL to shorten.
      'utmId': '1234', # optional: UTM ID to track the link. See more details about utm parameters at endpoint link above.
      'utmSource': 'source', # optional
      'utmMedium': 'medium', # optional
      'utmCampaign': 'campaign', # optional
      'utmTerm': 'term', # optional
      'utmContent': 'content', # optional
  })
  ```



  Return analytics for all shortened links or a single link for a given link ID. See the [analytics link endpoint](https://www.ayrshare.com/docs/apis/links/link-analytics) for more details.
  Return analytics for all shortened links or a single link for a given link ID. See the [analytics link endpoint](https://www.ayrshare.com/docs/apis/links/link-analytics) for more details.

  ``` python
  analyticsLinkResponse = social.shortLinkAnalytics({
      'id': 'Link ID', # optional: Link ID to get analytics for.
      'fromCreatedDate': '2023-07-08T12:30:00Z', # optional: Get history of links shortened after this date.
      'toCreatedDate': '2023-07-08T12:30:00Z', # optional: Get history of links shortened before this date.
      'fromClickDate': '2023-07-08T12:30:00Z', # optional: Get history of links clicked after this date.
      'toClickDate': '2023-07-08T12:30:00Z', # optional: Get history of links clicked before this date.
  })
  ```



  - [Webhooks endpoints](https://www.ayrshare.com/docs/apis/webhooks/overview)
  - [Webhooks endpoints](https://www.ayrshare.com/docs/apis/webhooks/overview)
  - unregisterWebhook
  - listWebhook
  - setAutoSchedule
  - deleteAutoSchedule
  - listAutoSchedule



  We have other package and integrations such as [Node NPM](https://www.ayrshare.com/docs/packages-guides/nodejs), [Bubble.io](https://www.ayrshare.com/docs/packages-guides/bubble), [Make](https://www.ayrshare.com/docs/packages-guides/make), and [Airtable](https://www.ayrshare.com/docs/packages-guides/airtable).



  Additional examples, responses, etc. can be found at:

  [RESTful API Endpoint Docs](https://www.ayrshare.com/docs/apis/overview)
  [RESTful API Endpoint Docs](https://www.ayrshare.com/docs/apis/overview)

  [GitHub](https://github.com/ayrshare/social-post-api-python)

  See our [changelog](https://www.ayrshare.com/docs/whatsnew/latest) for the latest and greatest.
  See our [changelog](https://www.ayrshare.com/docs/whatsnew/latest) for the latest and greatest.

  Please [contact us](mailto:support@ayrshare.com) with your questions, or just to give us shout-out 📢!


pkgId: fb9a36ab20868c82c5ab2d3876f4b156d14cfc22775659964a2d79856752f6d4
name: python-socketsecurity-help
arch: noarch
version: 1.0.38
epoch: 0
release: 1
summary: Development documents and examples for socketsecurity
url: https://socket.dev
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-socketsecurity-1.0.38-1.src.rpm
location_href: Packages/python-socketsecurity-help-1.0.38-1.noarch.rpm
checksum_type: sha256
description:
  The Socket Security CLI was created to enable integrations with other tools like Github Actions, Gitlab, BitBucket, local use cases and more. The tool will get the head scan for the provided repo from Socket, create a new one, and then report any new alerts detected. If there are new alerts against the Socket security policy it'll exit with a non-Zero exit code.



  ```` shell
  socketcli [-h] [--api_token API_TOKEN] [--repo REPO] [--branch BRANCH] [--committer COMMITTER] [--pr_number PR_NUMBER]
                   [--commit_message COMMIT_MESSAGE] [--default_branch] [--target_path TARGET_PATH] [--scm {api,github,gitlab}] [--sbom-file SBOM_FILE]
                   [--commit-sha COMMIT_SHA] [--generate-license GENERATE_LICENSE] [-v] [--enable-debug] [--enable-json] [--disable-overview]
                   [--disable-security-issue] [--files FILES] [--ignore-commit-files]
  ````

  If you don't want to provide the Socket API Token every time then you can use the environment variable `SOCKET_SECURITY_API_KEY`


  | Parameter                | Alternate Name | Required | Default | Description                                                                                                                                                                                                                   |
  |:-------------------------|:---------------|:---------|:--------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
  | -h                       | --help         | False    |         | Show the CLI help message                                                                                                                                                                                                     |
  | --api_token              |                | False    |         | Provides the Socket API Token                                                                                                                                                                                                 |
  | --repo                   |                | True     |         | The string name in a git approved name for repositories.                                                                                                                                                                      |
  | --branch                 |                | False    |         | The string name in a git approved name for branches.                                                                                                                                                                          |
  | --committer              |                | False    |         | The string name of the person doing the commit or running the CLI. Can be specified multiple times to have more than one committer                                                                                            |
  | --pr_number              |                | False    | 0       | The integer for the PR or MR number                                                                                                                                                                                           |
  | --commit_message         |                | False    |         | The string for a commit message if there is one                                                                                                                                                                               |
  | --default_branch         |                | False    | False   | If the flag is specified this will signal that this is the default branch. This needs to be enabled for a report to update Org Alerts and Org Dependencies                                                                    |
  | --target_path            |                | False    | ./      | This is the path to where the manifest files are location. The tool will recursively search for all supported manifest files                                                                                                  |
  | --scm                    |                | False    | api     | This is the mode that the tool is to run in. For local runs `api` would be the mode. Other options are `gitlab` and `github`                                                                                                  |
  | --generate-license       |                | False    | False   | If this flag is specified it will generate a json file with the license per package and license text in the current working directory                                                                                         |
  | --version                | -v             | False    |         | Prints the version and exits                                                                                                                                                                                                  |
  | --enable-debug           |                | False    | False   | Enables debug messaging for the CLI                                                                                                                                                                                           |
  | --sbom-file              |                | False    | False   | Creates a JSON file with all dependencies and alerts                                                                                                                                                                          |
  | --commit-sha             |                | False    |         | The commit hash for the commit                                                                                                                                                                                                |
  | --generate-license       |                | False    | False   | If enabled with `--sbom-file` will include license details                                                                                                                                                                    |
  | --enable-json            |                | False    | False   | If enabled will change the console output format to JSON                                                                                                                                                                      |
  | --disable-overview       |                | False    | False   | If enabled will disable Dependency Overview comments                                                                                                                                                                          |
  | --disable-security-issue |                | False    | False   | If enabled will disable Security Issue Comments                                                                                                                                                                               |
  | --files                  |                | False    |         | If provided in the format of `["file1", "file2"]` will be used to determine if there have been supported file changes. This is used if it isn't a git repo and you would like to only run if it supported files have changed. |
  | --ignore-commit-files    |                | False    | False   | If enabled then the CLI will ignore what files are changed in the commit and look for all manifest files                                                                                                                      |
  | --disable-blocking       |                | False    | False   | Disables failing checks and will only exit with an exit code of 0                                                                                                                                                             |


pkgId: cd8ea34c855033ac4a6984fcc49dbdca537d9fdae287efbf3fa7a4adaa401540
name: python-soeasypack-help
arch: noarch
version: 0.7.7
epoch: 0
release: 1
summary: Development documents and examples for soeasypack
url: https://github.com/XMQSVIP/SoEasyPack
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-soeasypack-0.7.7-1.src.rpm
location_href: Packages/python-soeasypack-help-0.7.7-1.noarch.rpm
checksum_type: sha256
description:
  [![PyPI Downloads](https://static.pepy.tech/badge/soeasypack)](https://pepy.tech/projects/soeasypack)

  - 此项目受[PyStand](https://github.com/skywind3000/PyStand "PyStand")和[PythonSizeCruncher](https://github.com/mengdeer589/PythonSizeCruncher "PythonSizeCruncher")启发。
  - 不需要复制嵌入式包，也不必再二次瘦身,一次打包理论上就是最小依赖
  - 用简易的方式复制你的python项目并自动精准匹配环境依赖，几乎没有什么多余文件，
  并且可以生成一个exe外壳（用go语言编译,已内置简化过的go环境）作为程序入口启动项目。
  - 原理：使用微软[procmon](https://learn.microsoft.com/en-us/sysinternals/downloads/procmon "procmon")进程监控工具（已内置），监控项目运行时访问的文件记录
  - 仅支持windows，且仅在windows10上测试过

  | 打包工具                     | 打包后大小 |
  |--------------------------|-------|
  | 使用nuitka打包               | 67.9M |
  | 使用PyStand仅删除pip文件夹       | 56.9M |
  | 使用Pyinstaller打包后模块缺失 补模块 | 49.3M |
  | 使用soeasypack的快速模式打包      | 33.5M |
  | 使用soeasypack的普通模式打包      | 33.5M |

  | 使用soeasypack的to_slim_file瘦身  | 原体积大小      | 瘦身后大小    | 瘦身比例  |
  |---------------------------------|------------|------------|-------|
  | 对nuitka打包的项目瘦身             | 67.9M      | 54.8M      | 19.37% |
  | 对PyStand打包的项目瘦身            | 56.9M      | 36.5M      | 35.79% |
  | 对Pyinstaller打包的项目瘦身        | 49.3M      | 36.6M      | 25.52%|



  soeasypack is available on PyPI. You can install it through pip::


  ```shell
      pip install soeasypack
  ```

     [点击查看操作演示](https://www.bilibili.com/video/BV1Pfz4YdEAZ/ "操作演示")


  - **1**: 模式介绍
  - 项目有两种打包模式：普通打包和快速打包（默认使用快速打包）

  - 普通打包会先复制当前python主环境的必要官方文件，然后复制当前py环境的整个site-packages
    文件夹到你指定的保存目录，然后启动分析工具分析依赖文件，然后根据依赖文件去删除site-packages
    中无用的文件，会保留被删除的文件到removed_file中，然后自动生成exe, 还可选将你的脚本文件转为pyd,
    最后项目就打包完成了。因为会复制整个site-packages文件夹，所以普通模式只建议在虚拟环境中使用。

  - 快速打包是先启动分析工具分析依赖文件。然后把依赖文件复制到保存目录，再自动生成exe, 没有项目瘦身这一步骤，
    所以没有虚拟环境的话，建议使用快速打包模式，它不会复制整个site-packages文件夹
  - **2**: 注意事项
  - 默认会将全部.py文件转为.pyc.不保留原.py文件，优化级别默认使用为最高级别2，一些名称和文档字符串可能会被优化掉导致报错，如numpy报错可调为0或1。
  - 会自动将主py文件重命名为main,exe启动程序会依次寻找mian.pyc,.py,.pyd文件
  - 因360安全卫士会拦截procmon相关工具, 所以，打包前请先关闭360安全卫士。
  - 建议在虚拟环境中使用，非虚拟环境可能会打包无用的依赖(非虚拟环境测试项目：未使用numpy,但项目运行时不知为何访问了numpy,导致复制了这个无用的包)
  - 为了能完整记录依赖文件，监控工具启动后，会自动运行你的脚本，请对你的项目进行必要的操作：如点击运行按钮等，
    如：我使用openpyxl往表格中插入图片，项目自动启动后，我要让脚本执行这一操作，
    这样，监控工具才能监控到依赖文件，否则最后虽然能启动项目但是插入图片时会报错，
    所以，请一定要注意，你的项目启动后，一定要默认监控时间18秒内执行必要的操作。
    18秒大概会产生几百兆的日志，所以，监控时间可以根据实际情况调整。
  - 如果想制作单执行文件，推荐使用[Enigma Virtual Box](https://www.enigmaprotector.com/cn/downloads.html)工具打包成只有一个exe,
  - 因.pyc可能会被反编译，建议使用soeasypack的py文件转pyd函数（好像需要先安装Visual Studio, 我自己之前安装的有，其它情况也没试）
  - **3**: 函数介绍

      - 1.打包项目
        ```python
        from soeasypack import to_pack

        def test():
            save_dir = r'C:\save_dir'
            main_py_path = r'C:\my_project\main.py'
            exe_name = '大都督'
            to_pack(main_py_path, save_dir, exe_name=exe_name,  pyc_optimize=1)
        ```
      - 2.项目瘦身
        ```python
        from soeasypack import to_slim_file
        to_slim_file(main_run_path: str, check_dir: str, project_dir: str = None, monitoring_time=20)
        ```
      - 3.生成pyd
        ```python
        from soeasypack import to_pyd
        to_pyd(script_dir: str, script_dir_main_py: str, is_del_py: bool = False)
        ```
  - 如果你觉得对你有帮助的话，可以打赏1元让作者买个馍哦
  ![](https://github.com/XMQSVIP/MyImage/blob/main/zhi_wei.png?raw=true)


pkgId: 4680bbb9ba9fcc3a287e83e372575c565cbb8f136c7d72621949ce7f86226ac1
name: python-soil-moisture-prediction-help
arch: noarch
version: 0.0.36
epoch: 0
release: 1
summary: Development documents and examples for soil-moisture-prediction
url: https://pypi.org/project/soil-moisture-prediction/
rpm_license: EUPL 1.2
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-soil-moisture-prediction-0.0.36-1.src.rpm
location_href: Packages/python-soil-moisture-prediction-help-0.0.36-1.noarch.rpm
checksum_type: sha256
description:
  This script performs soil moisture prediction using a Random Forest model based on soil properties. Additionally, it allows for incorporating soil moisture uncertainty in the input file and performs a probabilistic prediction using a Monte Carlo approach.



  The package provides a command line interface `smp_cli` to run the prediction.

  The cli-tool takes the path to a directory containing a JSON file with input parameters. The input files can be put in the same directory as the parameters file or must be given as an absolute path.


  This is an example of this directory structure:

  ```
  soil_moisture_prediction/test_data/
  ├── crn_soil-moisture.csv
  ├── parameters.json
  ├── predictor_1.csv
  ├── predictor_2.csv
  ├── predictor_3.csv
  └── predictor_4.csv
  ```


  The parameters.json file in this example directory contains the following content:

  ```
  $ cat soil_moisture_prediction/test_data/parameters.json
  {
    "geometry": [
      632612,
      634112,
      5739607,
      5741107,
      250
    ],
    "projection": "EPSG:25832",
    "predictors": {
      "elevation": {
        "file_path": [
          "/abs/path/to/predictor_1.csv"
        ],
        "unit": "m",
        "std_deviation": true,
        "constant": true,
        "nan_value": ""
      },
      "variable predictor": {
        "file_path": "predictor_2.csv",
        "unit": "u",
        "std_deviation": true,
        "constant": false,
        "nan_value": "0.0"
      },
      "pred_3": {
        "file_path": "predictor_3.csv",
        "unit": "u",
        "std_deviation": true,
        "constant": true,
        "nan_value": ""
      },
      "pred_4": {
        "file_path": "predictor_4.csv",
        "unit": "u",
        "std_deviation": true,
        "constant": true,
        "nan_value": "NaN"
      }
    },
    "soil_moisture_data": "crn_soil-moisture.csv",
    "monte_carlo_soil_moisture": true,
    "monte_carlo_predictors": true,
    "monte_carlo_iterations": 10,
    "predictor_qmc_sampling": false,
    "compute_slope": true,
    "compute_aspect": true,
    "past_prediction_as_feature": true,
    "reset_when_rain_occured": false,
    "allow_nan_in_training": false,
    "what_to_plot": {
      "predictors": true,
      "prediction_distance": true,
      "pred_correlation": true,
      "day_measurements": true,
      "day_predictor_importance": true,
      "day_prediction_map": true,
      "alldays_predictor_importance": true
    },
    "save_results": false,
    "save_input_data": false
  }
  ```


  There are two ways to provide predictor data. Either by providing a file path or by providing a specific key for one of the following predictor sources. If a key is used, the information in the parameters.json file must be 'null'. For each predictor key an external source is used to retrieve the data for the selected geometry.

  If for ["predictors"][pred_key]["file_path"] and ["soil_moisture_data"] a file path is given, the file is assumed to be in the same directory as the parameters.json file.

  The predictor keys are:

   * elevation_bkg: Elevation data provided by the Bundes Amtes für Kartographie und Geodäsie (BKG)
     The resolution of the data is 200m x 200m.
     The covered area is defined by the bounding box:
     Latitude: 47.23766056897108 to 54.88593008642519
     Longitude: 6.083977454450403 to 15.57232578151963

   * bdod_x-ycm: Bulk density of the fine earth fraction
     Soil property data provided by SoilGrids
     The data is available for the whole world.
     The resolution of the data is 250m x 250m.
     Measured in a depth of x-ycm

   * cec_x-ycm: Cation Exchange Capacity of the soil
     Soil property data provided by SoilGrids
     The data is available for the whole world.
     The resolution of the data is 250m x 250m.
     Measured in a depth of x-ycm

   * cfvo_x-ycm: Volumetric fraction of coarse fragments (> 2 mm)
     Soil property data provided by SoilGrids
     The data is available for the whole world.
     The resolution of the data is 250m x 250m.
     Measured in a depth of x-ycm

   * clay_x-ycm: Proportion of clay particles (< 0.002 mm) in the fine earth fraction
     Soil property data provided by SoilGrids
     The data is available for the whole world.
     The resolution of the data is 250m x 250m.
     Measured in a depth of x-ycm

   * nitrogen_x-ycm: Total nitrogen (N)
     Soil property data provided by SoilGrids
     The data is available for the whole world.
     The resolution of the data is 250m x 250m.
     Measured in a depth of x-ycm

   * phh2o_x-ycm: Soil pH
     Soil property data provided by SoilGrids
     The data is available for the whole world.
     The resolution of the data is 250m x 250m.
     Measured in a depth of x-ycm

   * sand_x-ycm: Proportion of sand particles (> 0.05/0.063 mm) in the fine earth fraction
     Soil property data provided by SoilGrids
     The data is available for the whole world.
     The resolution of the data is 250m x 250m.
     Measured in a depth of x-ycm

   * silt_x-ycm: Proportion of silt particles (≥ 0.002 mm and ≤ 0.05/0.063 mm) in the fine earth fraction
     Soil property data provided by SoilGrids
     The data is available for the whole world.
     The resolution of the data is 250m x 250m.
     Measured in a depth of x-ycm

   * soc_x-ycm: Soil organic carbon content in the fine earth fraction
     Soil property data provided by SoilGrids
     The data is available for the whole world.
     The resolution of the data is 250m x 250m.
     Measured in a depth of x-ycm

   * ocd_x-ycm: Organic carbon density
     Soil property data provided by SoilGrids
     The data is available for the whole world.
     The resolution of the data is 250m x 250m.
     Measured in a depth of x-ycm

   * ocs_x-ycm: Organic carbon stocks
     Soil property data provided by SoilGrids
     The data is available for the whole world.
     The resolution of the data is 250m x 250m.
     Measured in a depth of x-ycm

   * Available depth levels for SoilGrids data: 0-5cm, 5-15cm, 15-30cm, 30-60cm, 60-100cm, 100-200cm


  So these are three possbile ways to provide the predictor data:

  ```
  "predictors": {
    "elevation": {
      "file_path": [
        "/abs/path/to/predictor_1.csv"
      ],
      "unit": "m",
      "std_deviation": true,
      "constant": true,
      "nan_value": ""
    },
    ...
  }
  ```

  ```
  "predictors": {
    "elevation": {
      "file_path": [
        "/abs/path/to/predictor_1.csv"
      ],
      "unit": "m",
      "std_deviation": true,
      "constant": true,
      "nan_value": ""
    },
    ...
  }
  ```

  ```
  "predictors": {
    "elevation_bkg": null,
    ...
  }
  ```

  The predictor file looks like this:
  ```
  $ head -n 5 soil_moisture_prediction/test_data/predictor_data.csv

  632200.0,5741600.0,251.3,5.026
  632400.0,5741600.0,241.85,4.837
  632600.0,5741600.0,235.02,4.7004
  632800.0,5741600.0,229.0,4.58
  ```

  The predictor can have a head starting with a #. After the #, a json must be given with the same information as the parameters.json file. This is a redundant way of giving the parameters and is used for programmatic reading with out a parameters.json file.

  The soil moisture data looks like this:
  ```
  $ head -n 5 soil_moisture_prediction/test_data/soil_moisture_data.csv
  EPSG_UTM_x,EPSG_UTM_y,Day,soil_moisture,err_low,err_high
  633742.2079,5741065.818,20220327,0.26870625,-0.0264875,0.0298375
  633694.9659,5741026.54,20220327,0.27261,-0.02075,0.022775
  633652.0085,5740981.625,20220327,0.27655625,-0.0171125,0.018425
  633613.7622,5740928.489,20220327,0.280341071,-0.01545,0.0165375
  ```

  The soil moisture data can have a header with the column names.


  This is a description of the input parameters model:
  geometry:
    A list of five numbers representing the bounding box. [xmin, xmax, ymin, ymax, resolution].

  projection:
    The projection of the bounding box e.g. EPSG:25832

  soil_moisture_data:
    The path to the soil moisture data.

  predictors:
    A dictionary of predictors. Either provide one of the predefined predictors (e.g. 'corine') with None or provide a predictor information model.

  monte_carlo_soil_moisture:
    Whether to use a Monte Carlo Simulation to predict uncertainty for soil moisture.

  monte_carlo_predictors:
    Whether to use a Monte Carlo Simulation to predict uncertainty for the predictors.

  monte_carlo_iterations:
    Number of iterations for the Monte Carlo Simulation.

  allow_nan_in_training:
    Whether to allow NaN values in the training data.

  predictor_qmc_sampling:
    Whether to use Quasi-Monte Carlo sampling for the predictors.

  compute_slope:
    Whether to compute the slope from elevation and use as predictor.

  compute_aspect:
    Whether to compute the aspect from elevation and use as predictor.

  past_prediction_as_feature:
    Whether to use the past prediction as a feature.

  what_to_plot:
    List of which plotting functions should be used.

  save_results:
    Dump random forest model. Reload it and use it for predictions.

  save_input_data:
    Dump input data. Quicker to reload the data.


  The algorithm trains a random forest regressor (RandomForestRegressor from scikit-learn) with the soil moisture data and the predictor values at the measurements locations.
  The trained model is then applied on the whole densely gridded area.
  The output is the a numpy array with the soil moisture values at each grid node.


  In addition to the resulting array(s) (prediction only or prediction and coefficient of dispersion),
  the programm offers to plot some results.
  *predictors*: plot all the predictors as color maps after re-gridding them to the project grid.
  *pred\_correlation*: compute and plot the correlation between each predictors and display them as a heatmap. The color intensity indicates the strength and direction of correlation,
  ranging from -1 (strong negative correlation) to 1 (strong positive correlation). It can help to remove redundant predictors highly correlated between them.
  *day\_measurements*: plot soil moisture measurements as a scatter plot on an x-y mapfor each day. The measurements are colored according to their corresponding soil moisture values.
  If Monte Carlo simulations are enabled, error bands representing the standard deviations are overlaid on the scatter plot.
  *day\_predictor\_importance*: plot histogram of the normalized predictor importances from the random forest model for each day.
  If Monte Carlo simulations are enabled, the plot shows the 5th, 50th (median), and 95th quantiles of the importance values.
  *day\_prediction\_map*: plot the map of the densely modelled soil moisture on the project area. If uncertainty are provided
  the coefficient of dispersion map is also provided.
  *alldays\_predictor\_importance*: if several days are provided, the predictor importance is computed for each day
  and a curve of the predictor importance along days is plotted for each predictor. The x-axis represents the days, and the y-axis represents the importance values.


pkgId: fa3b939306054757b5dd7f279e37d9d3e787786a822ebb2817c077e8f1101fa6
name: python-solana-agentkit-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for solana-agentkit
url: https://github.com/arhansuba/solana-agentkit
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-solana-agentkit-0.1.0-1.src.rpm
location_href: Packages/python-solana-agentkit-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  Welcome to the Solana AgentKit documentation! This Python package provides tools and utilities for building AI agents that can interact with the Solana blockchain.





  ```bash

  pip install solana-agentkit


  pip install solana-agentkit[dev]


  pip install solana-agentkit[docs]
  ```



  ```python
  from solana_agentkit import SolanaAgent
  from solana_agentkit.tools import transfer_tokens, get_balance


  agent = SolanaAgent(
      private_key="your_private_key",
      rpc_url="https://api.mainnet-beta.solana.com"
  )


  balance = await agent.get_balance()
  print(f"Current balance: {balance} SOL")


  result = await agent.transfer(
      to="recipient_address",
      amount=1.0
  )
  print(f"Transfer successful: {result.signature}")
  ```





  - **Agent Framework**: Build and deploy AI agents on Solana
  - **Transaction Tools**: Simplified transaction creation and management
  - **NFT Utilities**: Create and manage NFT collections
  - **Token Tools**: Deploy and manage SPL tokens
  - **Domain Management**: Register and manage .sol domains



  - LangChain integration for AI capabilities
  - OpenAI integration for image generation
  - Custom agent behaviors and personalities
  - Natural language processing for commands



  - Wallet management
  - Transaction building
  - Priority fee handling
  - Multi-signature support





  ```bash

  git clone https://github.com/arhansuba/solana-agentkit
  cd solana-agentkit


  python -m venv venv
  source venv/bin/activate  # Unix

  .\venv\Scripts\activate  # Windows


  pip install -r requirements.txt
  ```



  ```bash

  pytest tests/


  pytest --cov=solana_agentkit tests/
  ```



  We use Black for code formatting and isort for import sorting:

  ```bash

  black src/ tests/


  isort src/ tests/
  ```



  ```
  solana-agentkit/
  ├── docs/               # Documentation
  ├── src/               # Source code
  │   └── solana_agentkit/
  │       ├── agent/     # Agent implementations
  │       ├── tools/     # Blockchain tools
  │       └── utils/     # Utility functions
  ├── tests/             # Test suite
  └── examples/          # Usage examples
  ```



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



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



  - GitHub Issues: [Report bugs](https://github.com/arhansuba/solana-agentkit/issues)
  - Documentation: [Read the docs](https://solana-agentkit.readthedocs.io/)
  - Discord: [Join our community](#)



  - Solana Foundation
  - LangChain team
  - All contributors# solana-agentkit


pkgId: 7cfaaa617c374088e50394996eb38ac140b91b5375ec6ad5d2a193b88fa1f401
name: python-solar-registry-help
arch: noarch
version: 0.4.1
epoch: 0
release: 1
summary: Development documents and examples for solar-registry
url: https://pypi.org/project/solar-registry/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-solar-registry-0.4.1-1.src.rpm
location_href: Packages/python-solar-registry-help-0.4.1-1.noarch.rpm
checksum_type: sha256
description:
  命令行工具`solar-registry`，提供以下功能：

  - 根据测试工具的`testtool.yaml`生成对应的元数据信息
  - 读取最新的元数据文件并合并
  - 下载指定的发布包，并计算sha256值
  - 自动提交PR到registry仓库，发布的新版本元数据




  将当前仓库的指定测试工具元数据，生成到指定位置。

  - 包含工具Spec
  - 包含最新工具Target

  ```shell
  solar-registry merge pytest ./output/testsolar
  ```



  - 推送合并之后的变更到registry仓库的特定分支
  - 使用gh命令行创建PR

  ```shell
  solar-registry pull-request pytest
  ```


pkgId: 4d13c5c12900e89d913e3a6bb17712ef2e1df33c804d459778a6e7269159e76e
name: python-solo-server-help
arch: noarch
version: 0.3.3
epoch: 0
release: 1
summary: Development documents and examples for solo-server
url: https://github.com/AIEngineersDev/solo-server
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-solo-server-0.3.3-1.src.rpm
location_href: Packages/python-solo-server-help-0.3.3-1.noarch.rpm
checksum_type: sha256
description:
  ![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)
  ![Python Version](https://img.shields.io/badge/python-3.8%2B-blue.svg)
  ![GitHub Issues](https://img.shields.io/github/issues/your-repo/solo-server)
  ![GitHub Stars](https://img.shields.io/github/stars/your-repo/solo-server?style=social)

  **Simple. Private. Effective.**

  Solo Server is a privacy-first framework designed for hosting and managing AI models locally. With support for various AI workflows, including language models, computer vision, audio processing, tabular data, and compound AI, Solo Server ensures simplicity, flexibility, and high performance.



  - **Seamless Setup:** Manage your AI server with a simple CLI.
  - **Tagged Templates:** Pre-configured templates for common AI workflows.
  - **Load Testing and Profiling:** Built-in commands to test, profile, and benchmark endpoints.
  - **Cross-Platform Compatibility:** Deploy AI models effortlessly on any platform.
  - **Extensible Framework:** Add custom workflows and models with ease.



  - [Features](#-features)
  - [Quickstart](#quickstart)
  - [🎯 Tagged Templates](#-tagged-templates)
    - [🔧 Toy Models](#-toy-models)
    - [🧠 Language Models (LLMs)](#-language-models-llms)
    - [🔍 Retrieval-Augmented Generation (RAG)](#-retrieval-augmented-generation-rag)
    - [✍️ Natural Language Processing (NLP)](#-natural-language-processing-nlp)
    - [🎨 Multimodal Models](#-multimodal-models)
    - [🔉 Audio Models](#-audio-models)
    - [🖼 Vision Models](#-vision-models)
    - [🎙 Speech Models](#-speech-models)
    - [🛠 Classical ML Models](#-classical-ml-models)
    - [🗂 Miscellaneous](#-miscellaneous)
  - [🛠 Core Commands](#-core-commands)
  - [📦 Development and Contributions](#-development-and-contributions)
  - [📜 License](#-license)





  - **Python 3.8** or higher



  1. **Install Core Package**

      ```bash
      pip install solo-server
      ```

  2. **Start the Server with a Template**

      ```bash
      solo-server start toy-hello-world
      ```

      The server will start at [http://localhost:8000](http://localhost:8000).

  3. **Test the Server**

      ```bash
      solo-server test toy-hello-world
      ```

  4. **Profile the Server**

      ```bash
      solo-server profile toy-hello-world --requests-count 20
      ```

  5. **Benchmark the Server**

      ```bash
      solo-server benchmark toy-hello-world
      ```





  | Tag                 | Description                                 |
  |---------------------|---------------------------------------------|
  | `toy-hello-world`   | Simple chatbot: Input text, return greeting |
  | `toy-simple-image`  | Generate a 256x256 solid-color image        |
  | `toy-number-guess`  | User guesses a randomly generated number     |
  | `toy-math-solver`   | Solve simple math equations from input      |
  | `toy-basic-api`     | A Flask API for echoing user inputs         |



  | Tag                  | Description                               |
  |----------------------|-------------------------------------------|
  | `llm-llama32`        | Meta Llama 3.2 for general language tasks |
  | `llm-proxy-server`   | Proxy server managing multiple LLM requests |
  | `llm-agent-tools`    | LangChain agent for tool-based reasoning  |
  | `llm-chat-gpt3`      | Chatbot using OpenAI GPT-3 API             |
  | `llm-chat-opt`       | Meta OPT for lightweight chatbot setup     |



  | Tag                       | Description                              |
  |---------------------------|------------------------------------------|
  | `rag-vllm-llama32`        | Combine retrieval with Llama 3.2 in vLLM  |
  | `rag-api-llamaindex`      | LlamaIndex API for document search        |
  | `rag-haystack`            | Haystack RAG pipeline for Q&A             |
  | `rag-semantic-search`     | Semantic search with embeddings           |
  | `rag-contextual-chat`     | RAG-powered contextual chatbot            |



  | Tag                    | Description                                     |
  |------------------------|-------------------------------------------------|
  | `nlp-huggingface`      | BERT for text classification tasks              |
  | `nlp-text-embedding`   | Sentence embedding for similarity search        |
  | `nlp-gpt-neo`          | GPT-Neo for creative text generation            |
  | `nlp-named-entities`   | Named Entity Recognition using SpaCy            |
  | `nlp-text-summarizer`  | Summarize long documents with T5                 |



  | Tag                     | Description                                      |
  |-------------------------|--------------------------------------------------|
  | `multimodal-clip`       | CLIP for text-image linking                       |
  | `multimodal-pixtral`    | Custom image generation with Pixtral              |
  | `multimodal-qwen-vl`    | Qwen2-VL for image-text Q&A                       |
  | `multimodal-phi35`      | Phi-3.5 Vision for visual instructions            |
  | `multimodal-minicpm`    | MiniCPM for multilingual multimodal tasks         |



  | Tag                   | Description                                     |
  |-----------------------|-------------------------------------------------|
  | `audio-whisper`       | Whisper for speech-to-text transcription         |
  | `audio-audiocraft`    | Generate music tracks with AudioCraft             |
  | `audio-noise-filter`  | Remove background noise with DeepFilterNet        |
  | `audio-stableaudio`   | Generate high-quality audio tracks                |
  | `audio-keyword-detect`| Wake word detection with low latency              |



  | Tag                   | Description                                       |
  |-----------------------|---------------------------------------------------|
  | `vision-stable-diff2` | Generate images with Stable Diffusion 2            |
  | `vision-object-detect`| Detect objects in images with YOLOv5               |
  | `vision-face-detect`  | Detect faces using DLib or RetinaFace              |
  | `vision-pose-estimate`| Human pose estimation with OpenPose               |
  | `vision-bg-remove`    | Remove image backgrounds using DeepLab            |



  | Tag                   | Description                                        |
  |-----------------------|----------------------------------------------------|
  | `speech-xtts-v2`      | Text-to-speech conversion using XTTS V2             |
  | `speech-parler-tts`   | Real-time speech synthesis with Parler-TTS          |
  | `speech-voice-clone`  | Clone voices using Tacotron 2                        |
  | `speech-enhancement`  | Improve speech quality with SpeechBrain             |
  | `speech-lang-id`      | Identify spoken language in audio files             |



  | Tag                  | Description                                      |
  |----------------------|--------------------------------------------------|
  | `ml-random-forest`   | Classify data using Random Forest models          |
  | `ml-xgboost`         | Predict outcomes with XGBoost                     |
  | `ml-svm`             | Support Vector Machines for binary tasks          |
  | `ml-logistic-reg`    | Predict probabilities with Logistic Regression     |
  | `ml-knn`             | K-Nearest Neighbors for clustering tasks           |



  | Tag                   | Description                                    |
  |-----------------------|------------------------------------------------|
  | `misc-ffmpeg-api`     | Convert media formats using FFmpeg              |
  | `misc-unified-pytf`   | Unified API for PyTorch and TensorFlow tasks     |
  | `misc-video-edit`     | Edit videos with ffmpeg and OpenCV               |
  | `misc-file-convert`   | Convert file formats (e.g., docx to pdf)         |
  | `misc-lang-detection` | Detect language from a text file                 |



  | Command                          | Description                               |
  |----------------------------------|-------------------------------------------|
  | `solo-server start [tag]`        | Start the server for a specific tag.      |
  | `solo-server stop`               | Stop the running server.                   |
  | `solo-server status`             | Check server status.                       |
  | `solo-server test [tag]`         | Test the endpoint for a tag.               |
  | `solo-server profile [tag]`      | Profile the endpoint for a tag.            |
  | `solo-server benchmark [tag]`    | Load test the endpoint for a tag.          |





  ```bash
  git clone https://github.com/your-repo/solo-server.git
  cd solo-server


pkgId: 4ff62a70efe6d3880d91647dad4dfb9a3e75951fd95521a92236385e66b5c71c
name: python-solver-multiRPC-help
arch: noarch
version: 3.0.8
epoch: 0
release: 1
summary: Development documents and examples for solver-multiRPC
url: https://github.com/SYMM-IO/solver-multiRPC.git
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-solver-multiRPC-3.0.8-1.src.rpm
location_href: Packages/python-solver-multiRPC-help-3.0.8-1.noarch.rpm
checksum_type: sha256
description:
  `solver-MultiRpc` is a robust library designed to interact with Ethereum smart contracts
  using multiple RPC endpoints. This ensures reliability and availability
  by distributing the load across various endpoints and retrying operations on failure.
  The library provides both asynchronous (`AsyncMultiRpc`) and
  synchronous (`MultiRpc`) interfaces to suit different use cases.



  - **Multiple RPC Support**: Seamlessly switch between different RPCs to ensure uninterrupted interactions.
  - **Gas Management**: Fetch gas prices from multiple sources to ensure transactions are sent with an appropriate fee.
  - **Robust Error Handling**: Designed to handle failures gracefully, increasing the reliability of your applications.
  - **Easy-to-use API**: Interact with Ethereum smart contracts using a simple and intuitive API.



  Install `solver-MultiRpc` using pip:

  ```bash
  pip install solver-multiRPC
  ```



  Here's a quick example to get you started:



  Below is an example of how to use the AsyncMultiRpc class for asynchronous operations:

  ```python
  import asyncio
  import json
  from src.multirpc.utils import NestedDict
  from multirpc import AsyncMultiRpc


  async def main():
      rpcs = NestedDict({
          "view": {
              1: ['https://1rpc.io/ftm', 'https://rpcapi.fantom.network', 'https://rpc3.fantom.network'],
              2: ['https://rpc.fantom.network', 'https://rpc2.fantom.network', ],
              3: ['https://rpc.ankr.com/fantom'],
          },
          "transaction": {
              1: ['https://1rpc.io/ftm', 'https://rpcapi.fantom.network', 'https://rpc3.fantom.network'],
              2: ['https://rpc.fantom.network', 'https://rpc2.fantom.network', ],
              3: ['https://rpc.ankr.com/fantom'],
          }
      })
      with open("abi.json", "r") as f:
          abi = json.load(f)
      multi_rpc = AsyncMultiRpc(rpcs, 'YOUR_CONTRACT_ADDRESS', contract_abi=abi, enable_estimate_gas_limit=True)
      multi_rpc.set_account("YOUR_PUBLIC_ADDRESS", "YOUR_PRIVATE_KEY")

      result = await multi_rpc.functions.YOUR_FUNCTION().call()
      print(result)


  asyncio.run(main())
  ```



  Below is an example of how to use the MultiRpc class for synchronous operations:

  ```python
  from multirpc import MultiRpc


  def main():
      multi_rpc = MultiRpc(rpcs, 'YOUR_CONTRACT_ADDRESS', contract_abi=abi, enable_estimate_gas_limit=True)
      multi_rpc.set_account("YOUR_PUBLIC_ADDRESS", "YOUR_PRIVATE_KEY")

      result = multi_rpc.functions.YOUR_FUNCTION().call()
      print(result)


  main()
  ```

  Replace placeholders like `YOUR_CONTRACT_ADDRESS`, `YOUR_PUBLIC_ADDRESS`, `YOUR_PRIVATE_KEY`, and `YOUR_FUNCTION` with
  appropriate values.





  Initialize the `MultiRpc` class with your RPC URLs, contract address, and contract ABI:

  ```python
  multi_rpc = MultiRpc(rpcs, contract_address='YOUR_CONTRACT_ADDRESS', contract_abi=abi)
  ```
  - `enable_estimate_gas_limit=True` will check if tx can be done successfully without paying fee,
  and also calculate gas limit for tx



  Set the Ethereum account details (address and private key) for sending transactions:

  ```python
  multi_rpc.set_account("YOUR_PUBLIC_ADDRESS", "YOUR_PRIVATE_KEY")
  ```



  Call a function from your contract:

  ```python
  result = await multi_rpc.functions.YOUR_FUNCTION().call()
  ```
  By default we return tx_receipt(wait for 90 second).
  if you don't want to return tx_receipt, pass `wait_for_receipt=0` to `call()`



  You can call a transaction function with a different private key by passing the
  `private_key`, `address` parameter to the `call()` method. Here’s an example:

  ```python
  result = await multi_rpc.functions.YOUR_FUNCTION().call(address=PublicKey, private_key=PrivateKey)
  ```



  You can specify a block identifier when calling view functions to get the state of the
  contract at a specific block. Here's an example:

  _Note that the majority of free RPCs only support querying blocks up to 10 minutes earlier._

  ```python

  result = multi_rpc.functions.yourViewFunction().call(block_identifier='latest')
  ```



  you can also use `mutlicall()` for calling a view function multiple time with different parameters. Here's an example:

  ```python
  results = multi_rpc.functions.yourViewFunction([(param1, params2), (param1, params2)]).multicall()
  ```



  You can specify a view policy to determine how view function calls are handled.
  The available view policies are `MostUpdated` and `FirstSuccess`. Here’s an example:

  ```python
  multi_rpc = MultiRpc(rpc_urls, contract_address, contract_abi, view_policy=ViewPolicy.FirstSuccess)
  ```



  You can pass a `GasEstimation` object to the `MultiRpc` or `AsyncMultiRpc` class
  to configure how gas prices are estimated. Here is an example of how to do this:

  ```python
  from multirpc import MultiRpc, GasEstimation, GasEstimationMethod

  gas_estimation = GasEstimation(
      chain_id=1,  # Mainnet
      providers=[],  # List of AsyncWeb3 providers
      default_method=GasEstimationMethod.GAS_API_PROVIDER,
      gas_api_provider='https://gasstation-mainnet.matic.network'  # Replace with your API provider
  )


  multi_rpc = MultiRpc(rpc_urls, contract_address, contract_abi, gas_estimation=gas_estimation)
  ```

  The `GasEstimation` class allows you to implement a custom gas estimation method.
  You need to extend the `GasEstimation` class and override the _`custom_gas_estimation` method with your custom logic.
  Here is an example:

  ```python
  from multirpc import GasEstimation, TxPriority, GasEstimationMethod
  from web3 import Web3
  from web3.types import Wei


  class CustomGasEstimation(GasEstimation):

      async def _custom_gas_estimation(self, priority: TxPriority, gas_upper_bound: float) -> dict:
          
          custom_gas_price = 50  # Replace with your custom logic
          if custom_gas_price > gas_upper_bound:
              raise OutOfRangeTransactionFee(f"Custom gas price {custom_gas_price} exceeds upper bound {gas_upper_bound}")
          return {
              "gasPrice": Web3.to_wei(custom_gas_price, 'gwei')
          }



  custom_gas_estimation = CustomGasEstimation(
      chain_id=1,
      providers=[],
      default_method=GasEstimationMethod.CUSTOM,
  )


  multi_rpc = MultiRpc(rpc_urls, contract_address, contract_abi, gas_estimation=custom_gas_estimation)
  ```

  You can specify which gas estimation method in `call()` method. Here's an example:

  ```python
  tx_hash = multi_rpc.functions.yourTransactionFunction().call(
      gas_estimation_method=GasEstimationMethod.RPC,  # Specify the gas estimation method
  )
  ```

  By default, we check all possible ways(api, rpc, fixed, custom) to get `gasPrice`.
  but, if you pass method we only use passed method



  Contributions are welcome! Please open an issue or submit a pull request on our GitHub repository.


pkgId: 883f9a48bffe906aa671d809c0fcf5fc3dd8ba45b5b9d7ee26be3c8a13eaacfd
name: python-somacore-help
arch: noarch
version: 1.0.26
epoch: 0
release: 1
summary: Development documents and examples for somacore
url: https://pypi.org/project/somacore/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-somacore-1.0.26-1.src.rpm
location_href: Packages/python-somacore-help-1.0.26-1.noarch.rpm
checksum_type: sha256
description:
  `somacore` is the Python interpretation of the [abstract SOMA specification](https://github.com/single-cell-data/SOMA/blob/main/abstract_specification.md).
  If you’re using SOMA to store or retrive data, you probably want to **install a SOMA implementation instead**, and not this package directly:

  - [tiledbsoma](https://pypi.org/project/tiledbsoma/) ([source code](https://github.com/single-cell-data/TileDB-SOMA/))

  This core pacakge contains base interfaces, shared types, and other cross-implementation code.
  It is intended for use primarily by SOMA implementors or libraries that handle SOMA data, rather than end users.


pkgId: 1b8755e4ec945a318d6c64920a10583250aecb6b15ca6a6ec730995939ba5103
name: python-sonnencharger-help
arch: noarch
version: 0.2.0
epoch: 0
release: 1
summary: Development documents and examples for sonnencharger
url: https://github.com/rustydust/python_sonnencharger
rpm_license: GPLv3
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sonnencharger-0.2.0-1.src.rpm
location_href: Packages/python-sonnencharger-help-0.2.0-1.noarch.rpm
checksum_type: sha256
description:
  Read status information from a SonnenCharger type wallbox





  ``` bash
  pip3 install sonnencharger
  ```


  [Download the archive from pypi.org](https://pypi.org/project/sonnencharger/#files) and unpack where needed ;)



  ``` python
  from sonnencharger import sonnencharger

  sc_host = '192.168.1.2'
  sc_port = 502  # optional, default=502


  sc = sonnencharger(sc_host, sc_port)

  print(sc.get_sysinfo())	    # retrieve general wallbox information
  print(sc.get_connectors())  # retrieve status of the connectors
  ```





  ``` python
  {
    'connectors': 1,
    'hwrevision': '1.23',
    'model': 'YOUR-MODEL-ID',
    'serial': '1234567890',
    'swrevision': '1.23.45'
   }
   ```

   

   ``` python
  {
  	0: {
  		'active_session_duration': 77127,
  		'active_session_imported_energy': 4.667,
  		'ev_max_phase_current': 14.784,
  		'ev_max_power': 0.0,
  		'ev_required_energy': 0.0,
  		'l1_active_power': 0.0,
  		'l1_current': 0.0,
  		'l1_ln_voltage': 234.4,
  		'l1_phase': 1,
  		'l2_active_power': 0.0,
  		'l2_current': 0.0,
  		'l2_ln_voltage': 233.96,
  		'l2_phase': 2,
  		'l3_active_power': 0.0,
  		'l3_current': 0.0,
  		'l3_ln_voltage': 235.34,
  		'l3_phase': 3,
  		'max_current': 16.0,
  		'net_frequency': 49.99,
  		'num_phases': 3,
  		'power_factor': 0.0,
  		'session_departure_time': 1673110800,
  		'session_id': 0,
  		'state': 'Vehicle has paused charging',
  		'state_numeric': 5,
  		'target_current': 16.0,
  		'total_active_power': 0.0,
  		'type': 'CableType2',
  		'type_numeric': 2,
  		'vehicle_connected_phases': 'Three phases',
  		'vehicle_connected_phases_code': 0,
  		'vehicle_connected_phases_numeric': 3
  	}
  }
  ```


pkgId: 7420038491bb66eba17674c4ead3a3f9bbca1c1c03fda9cd5dcfe4081d7106bd
name: python-sophosfirewall-python-help
arch: noarch
version: 0.1.59
epoch: 0
release: 1
summary: Development documents and examples for sophosfirewall-python
url: https://pypi.org/project/sophosfirewall-python/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sophosfirewall-python-0.1.59-1.src.rpm
location_href: Packages/python-sophosfirewall-python-help-0.1.59-1.noarch.rpm
checksum_type: sha256
description:
  The Sophos Firewall Python Software Development Kit (SDK) provides a Python module for working with the [XML API](https://doc.sophos.com/nsg/sophos-firewall/20.0/API/index.html) of Sophos Firewall.

  For installation and usage details please see the [documentation](https://sophosfirewall-python.readthedocs.io/)


  The Sophos Firewall Python SDK was developed by a small community of engineers within Sophos who will be maintaining the project. Questions can be posted to the [Q&A](https://github.com/sophos/sophos-firewall-sdk/discussions/categories/q-a) section of the Github project. If you are hitting a bug, please open a new [Issue](https://github.com/sophos/sophos-firewall-sdk/issues) and fill out the Bug Report template.  If you would like to see a new feature implemented, please fill out the Feature Request template.

  > This project will utilize a community support model as outlined above. Support will not be provided by Sophos Technical Support.



  We welcome contributors to the project. To work on a new feature, fork the project and then develop your feature within the fork. When the new feature is ready for review, please submit a [Pull Request](https://github.com/sophos/sophos-firewall-sdk/pulls).

  To be merged into the project, the following requirements must be met:
  - Passing Pylint tests
  - Code formatted with Black
  - Unit tests written with Pytest


  The main code to be updated when developing new features is inside of the `SophosFirewall` class, which is located in the `firewallapi.py` module. Functionality is implemented by defining methods under the class. There are currently three types of methods: `GET`, `CREATE`, and `UPDATE`. The [API Documentation](https://docs.sophos.com/nsg/sophos-firewall/18.0/API/index.html) describes how the API calls are structured.


  GET methods provide retrieval of existing firewall configuration settings. They are implemented by calling the `get_tag` and/or the `get_tag_with_filter` methods of the class. The `get_tag` method requests a specified XML tag from the API and returns the content as a Python `dict` object. The `get_tag` will return all objects for the specified XML tag. The `get_tag_with_filter` method requests an XML tag from the API with specified filter criteria such as `=`, `!=`, or `like`. This allows for filtering of the returned data. Below is an example of a GET method that requests IP Hosts from the firewall using the `IPHost` XML tag. It utilizes both the `get_tag` and the `get_tag_with_filter` class methods, depending on the options provided to the method. If the calling program specifies no options, then all records are returned using the `get_tag` method. Otherwise, the results can be filtered by specifying the name or IP address. When name or IP address are provided, the `get_tag_with_filter` method is used to filter the results.

  ```python
      def get_ip_host(
          self, name: str = None, ip_address: str = None, operator: str = "="):
          """Get IP Host object(s)

          Args:
              name (str, optional): IP object name. Returns all objects if not specified.
              ip_address (str, optional): Query by IP Address.
              operator (str, optional): Operator for search. Default is "=". Valid operators: =, !=, like.
          """
          if name:
              return self.get_tag_with_filter(
                  xml_tag="IPHost", key="Name", value=name, operator=operator
              )
          if ip_address:
              return self.get_tag_with_filter(
                  xml_tag="IPHost",
                  key="IPAddress",
                  value=ip_address,
                  operator=operator,
              )
          return self.get_tag(xml_tag="IPHost")
  ```


  Create methods are used to create new configuration objects on the firewall. To define a new Create method, the XML payload for the request must first be created in a template and stored in the `templates` directory. The XML payload in the template can contain [Jinja variables](https://jinja.palletsprojects.com/en/3.1.x/templates/#variables) that will be populated when the template is rendered. Below is an example template containing the XML payload to create an IP Host. In the template, the values within the double brackets `{{ var }}` are variables that are passed in by the create method arguments.

  ```xml
  <Request>
     <Login>
          <Username>{{username}}</Username>
          <Password >{{password}}</Password>
      </Login>
      <Set operation="add">
      <IPHost transactionid="">
          <Name>{{ name }}</Name>
          <IPFamily>IPv4</IPFamily>
          <HostType>IP</HostType>
          <IPAddress>{{ ip_address }}</IPAddress>
      </IPHost>
     </Set>
  </Request>
  ```
  Once the template is defined, a new create method can be written using the `submit_template` method. The `submit_template` method will render the template, passing in any variables that are specified in the new create method. It will then issue a `POST` request against the firewall API to create the new object.

  Below is the method to create an IP Host. The source program must specify the `name` and `ip_address` as arguments when calling the function. These values are then populated in a dictionary called `params` and are passed to the `submit_template` method. There is also an optional `debug` argument which causes the API response to be output to screen for troubleshooting purposes.

  ```python
  def create_ip_host(
      self, name: str, ip_address: str, debug: bool = False
  ):
      """Create IP address object

      Args:
          name (str): Name of the object
          ip_address (str): Host IP address
          debug (bool, optional): Turn on debugging. Defaults to False.
      Returns:
          dict: XML response converted to Python dictionary
      """
      self._validate_ip_address(ip_address)

      params = {"name": name, "ip_address": ip_address}
      resp = self.submit_template(
          "createiphost.j2", template_vars=params, debug=debug
      )
      return resp
  ```

  Update methods provide the ability to change existing configuration on the firewall. When defining update methods, it is often necessary to first do a GET request to retrieve the existing configuration. This is because often the existing configuration must be in the payload in addition to any modifications. For example, when updating a URL Group with a new entry, the list must contain the existing entries along with the new one. Otherwise, the list will only contain the new entry when updated. Update methods can therefore first use an existing get method if defined, or can use the `get_tag` and/or `get_tag_with_filter` methods. Then, the information from the get request can be parsed and modified as necessary. Finally, the template can be submitted with the `submit_template` method, using the modified variables from the get request when rendering the template.

  Below is the code to update a URL Group on the firewall. It first does a get request using the existing `get_urlgroup` method. It parses the existing list of URLs from the response, and then adds the new domain to the list. Finally, it uses the `submit_template` method to submit the `updateurlgroup.j2` template, passing in as variables the name of the list to be updated and the updated domain list.

  ```python
      def update_urlgroup(
          self, name: str, domain: str, debug: bool = False
      ):
          """Adds a specified domain to a web URL Group

          Args:
              name (str): URL Group name
              domain (str): Domain to be added to URL Group
              debug (bool, optional): Enable debug mode. Defaults to False.

          Returns:
              dict: XML response converted to Python dictionary
          """
          
          resp = self.get_urlgroup(name=name)
          if "URLlist" in resp["Response"]["WebFilterURLGroup"]:
              exist_list = (
                  resp.get("Response").get("WebFilterURLGroup").get("URLlist").get("URL")
              )
          else:
              exist_list = None
          domain_list = []
          if exist_list:
              if isinstance(exist_list, str):
                  domain_list.append(exist_list)
              elif isinstance(exist_list, list):
                  domain_list = exist_list
          domain_list.append(domain)

          params = {"name": name, "domain_list": domain_list}
          resp = self.submit_template(
              "updateurlgroup.j2", template_vars=params, debug=debug
          )
          return resp
  ```



  Pytest test cases are in the `unittests.py` module. The tests are executed by Github Actions on commits to the `develop` and/or `main` branch. It is not required to create new tests for Get methods, but it is recommended for Create or Update methods. Success and failure cases should be covered. The existing tests utilize the methods under test with sample input data and compare against a mocked API response. Please see the `test_create_rule` and `test_failed_create_rule` tests in the `unittests.py` for reference.


  Functional tests can be run against an actual firewall to ensure SDK functions are working properly. The functional tests are also run with Pytest, and require a few environment variables to connect to the target firewall:

  ```bash
  export XG_USERNAME="<your firewall username>"
  export XG_PASSWORD="<your firewall password>"
  export XG_HOSTNAME="<your firewall hostname>"
  ```

  To run the functional tests:
  ```
  pytest sophosfirewall_python/tests/functional.py -s -vv
  ```

  > The tests will create objects on the firewall prefixed with `FUNC_`. At the end of the test run, these objects will be deleted.


pkgId: 4861ae179600705c9ecc2d01a4ab23a7b520d2d3fa885572640875b03fce3369
name: python-soundscapecode-help
arch: noarch
version: 1.1.3
epoch: 0
release: 1
summary: Development documents and examples for soundscapecode
url: https://github.com/jpkemp/soundscapecode
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-soundscapecode-1.1.3-1.src.rpm
location_href: Packages/python-soundscapecode-help-1.1.3-1.noarch.rpm
checksum_type: sha256
description:
  Python implementation of the soundscape code [[1]](#1), ported from a Matlab example [[2]](#2).


  ```
  pip install soundscapecode
  ```


  Values can be calculated individually:
  ```
  import soundscapecode as ssc

  fs = 48000
  mock_sound = np.random.rand(fs*60, 1)
  periodicity = ssc.periodicity(mock_sound, fs)
  ```

  Or to calculate all values for one recording:
  ```
  from soundscapecode import SoundscapeCode

  fs = 48000
  n_mins = 3
  mock_sound = np.random.rand(fs*n_mins*60, 1)
  soundscape = SoundscapeCode(mock_sound, fs)
  for dt in soundscape["dt"]:
      print(dt)
  ```


  Check the documentation at <a href=https://soundscapecode.readthedocs.io/en/latest>readthedocs</a>.


  Please contact me with any questions
  <a href=https://au.linkedin.com/in/james-kemp-11874a93><img src=https://blog-assets.hootsuite.com/wp-content/uploads/2018/09/In-2C-54px-R.png
      width = 18 height = 15 /></a>
  <a href=https://www.researchgate.net/profile/James_Kemp6><img src=https://www.researchgate.net/apple-touch-icon-180x180.png
      width=15 height=15 /></a>


  <a id="1">[1]</a>
  Dylan Wilford, Jennifer Miksis-Olds, Bruce Martin, Kim Lowell; Introduction and application of a proposed method for quantitative soundscape analysis: The soundscape code. J. Acoust. Soc. Am. 1 April 2021; 149 (4_Supplement): A72. https://doi.org/10.1121/10.0004555
  </br>
  <a id="2">[2]</a>
  https://www.mathworks.com/matlabcentral/fileexchange/172434-sscmetrics-a-matlab-tool-to-compute-the-soundscape-code


pkgId: 3a746321a5a347239ad584a6745e073993b910f5d15383b5755ba6971327795b
name: python-space-rocks-help
arch: noarch
version: 1.9.12
epoch: 0
release: 1
summary: Development documents and examples for space-rocks
url: https://rocks.readthedocs.io/en/latest/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-space-rocks-1.9.12-1.src.rpm
location_href: Packages/python-space-rocks-help-1.9.12-1.noarch.rpm
checksum_type: sha256
description:
  <p align="center">
    <img width="260" src="https://raw.githubusercontent.com/maxmahlke/rocks/master/docs/_static/logo_rocks.svg">
  </p>

  <p align="center">
    <a href="https://github.com/maxmahlke/rocks#features"> Features </a> - <a href="https://github.com/maxmahlke/rocks#install"> Install </a> - <a href="https://github.com/maxmahlke/rocks#documentation"> Documentation </a>
  </p>

  <div align="center">
    <a href="https://img.shields.io/pypi/pyversions/space-rocks">
      <img src="https://img.shields.io/pypi/pyversions/space-rocks"/>
    </a>
    <a href="https://img.shields.io/pypi/v/space-rocks">
      <img src="https://img.shields.io/pypi/v/space-rocks"/>
    </a>
    <a href="https://readthedocs.org/projects/rocks/badge/?version=latest">
      <img src="https://readthedocs.org/projects/rocks/badge/?version=latest"/>
    </a>
    <a href="https://arxiv.org/abs/2209.10697">
      <img src="https://img.shields.io/badge/arXiv-2209.10697-f9f107.svg"/>
    </a>
  </div>




  Explore asteroid data on the command-line...

  ``` sh
  $ rocks id 221
  (221) Eos

  $ rocks class Eos
  MB>Outer

  $ rocks albedo Eos
  0.136 +- 0.004

  $ rocks taxonomy Eos
  K

  $ rocks density Eos
  4.559e+03 +- 1.139e+03 kg/m$^3$
  ```

  ... and in a `python` script.

  ``` python
  >>> import rocks
  >>> rocks.identify("1902ug")
  ('Fortuna', 19)
  >>> ceres = rocks.Rock("ceres")
  >>> ceres.diameter.value
  848.4
  >>> ceres.diameter.unit
  'km'
  >>> ceres.mass.value
  9.384e+20
  >>> ceres.mass.error
  6.711e+17
  ```



  Install from PyPi using `pip`:

       $ pip install space-rocks

  The minimum required `python` version is 3.8.




  Check out the documentation at [rocks.readthedocs.io](https://rocks.readthedocs.io/en/latest/) or run

       $ rocks docs

  For a quick overview, check out the jupyter notebooks:

  [Basic Usage](https://github.com/maxmahlke/rocks/blob/master/docs/tutorials/rocks_basic_usage.ipynb) - [Bibliography Management](https://github.com/maxmahlke/rocks/blob/master/docs/tutorials/literature.ipynb)


pkgId: 16999b2d71fd998091afc6a713f73576ee1c1b6170f5873746238f941ced5a21
name: python-spacr-help
arch: noarch
version: 0.3.80
epoch: 0
release: 1
summary: Development documents and examples for spacr
url: https://github.com/EinarOlafsson/spacr
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-spacr-0.3.80-1.src.rpm
location_href: Packages/python-spacr-help-0.3.80-1.noarch.rpm
checksum_type: sha256
description:
  Spatial phenotype analysis of CRISPR-Cas9 screens (SpaCr). The spatial organization of organelles and proteins within cells constitutes a key level of functional regulation. In the context of infectious disease, the spatial relationships between host cell structures and intracellular pathogens are critical to understanding host clearance mechanisms and how pathogens evade them. SpaCr is a Python-based software package for generating single-cell image data for deep-learning sub-cellular/cellular phenotypic classification from pooled genetic CRISPR-Cas9 screens. SpaCr provides a flexible toolset to extract single-cell images and measurements from high-content cell painting experiments, train deep-learning models to classify cellular/subcellular phenotypes, simulate, and analyze pooled CRISPR-Cas9 imaging screens.


pkgId: 1822cc9ee17e961cd9b9e53608deeb404f87edc2e55ae8a11df9d388d2ac04bc
name: python-spacy-layout-help
arch: noarch
version: 0.0.10
epoch: 0
release: 1
summary: Development documents and examples for spacy-layout
url: https://github.com/explosion/spacy-layout
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-spacy-layout-0.0.10-1.src.rpm
location_href: Packages/python-spacy-layout-help-0.0.10-1.noarch.rpm
checksum_type: sha256
description:
  <a href="https://explosion.ai"><img src="https://explosion.ai/assets/img/logo.svg" width="125" height="125" align="right" /></a>



  This plugin integrates with [Docling](https://ds4sd.github.io/docling/) to bring structured processing of **PDFs**, **Word documents** and other input formats to your [spaCy](https://spacy.io) pipeline. It outputs clean, **structured data** in a text-based format and creates spaCy's familiar [`Doc`](https://spacy.io/api/doc) objects that let you access labelled text spans like sections or headings, and tables with their data converted to a `pandas.DataFrame`.

  This workflow makes it easy to apply powerful **NLP techniques** to your documents, including linguistic analysis, named entity recognition, text classification and more. It's also great for implementing **chunking for RAG** pipelines.

  > 📖 **Blog post:** ["From PDFs to AI-ready structured data: a deep dive"
  ](https://explosion.ai/blog/pdfs-nlp-structured-data) – A new modular workflow for converting PDFs and similar documents to structured data, featuring `spacy-layout` and Docling.

  [![Test](https://github.com/explosion/spacy-layout/actions/workflows/test.yml/badge.svg)](https://github.com/explosion/spacy-layout/actions/workflows/test.yml)
  [![Current Release Version](https://img.shields.io/github/release/explosion/spacy-layout.svg?style=flat-square&logo=github&include_prereleases)](https://github.com/explosion/spacy-layout/releases)
  [![pypi Version](https://img.shields.io/pypi/v/spacy-layout.svg?style=flat-square&logo=pypi&logoColor=white)](https://pypi.org/project/spacy-layout/)
  [![Built with spaCy](https://img.shields.io/badge/built%20with-spaCy-09a3d5.svg?style=flat-square)](https://spacy.io)



  > ⚠️ This package requires **Python 3.10** or above.

  ```bash
  pip install spacy-layout
  ```

  After initializing the `spaCyLayout` preprocessor with an `nlp` object for tokenization, you can call it on a document path to convert it to structured data. The resulting `Doc` object includes layout spans that map into the original raw text and expose various attributes, including the content type and layout features.

  ```python
  import spacy
  from spacy_layout import spaCyLayout

  nlp = spacy.blank("en")
  layout = spaCyLayout(nlp)


  doc = layout("./starcraft.pdf")


  print(doc.text)

  print(doc._.layout)

  print(doc._.tables)

  print(doc._.markdown)


  for span in doc.spans["layout"]:
      
      print(span.text, span.start, span.end, span.start_char, span.end_char)
      
      print(span.label_)
      
      print(span._.layout)
      
      print(span._.heading)
  ```

  If you need to process larger volumes of documents at scale, you can use the `spaCyLayout.pipe` method, which takes an iterable of paths or bytes instead and yields `Doc` objects:

  ```python
  paths = ["one.pdf", "two.pdf", "three.pdf", ...]
  for doc in layout.pipe(paths):
      print(doc._.layout)
  ```

  After you've processed the documents, you can [serialize](https://spacy.io/usage/saving-loading#docs) the structured `Doc` objects in spaCy's efficient binary format, so you don't have to re-run the resource-intensive conversion.

  spaCy also allows you to call the `nlp` object on an already created `Doc`, so you can easily apply a pipeline of components for [linguistic analysis](https://spacy.io/usage/linguistic-features) or [named entity recognition](https://spacy.io/usage/linguistic-features#named-entities), use [rule-based matching](https://spacy.io/usage/rule-based-matching) or anything else you can do with spaCy.

  ```python


  nlp = spacy.load("en_core_web_trf")
  layout = spaCyLayout(nlp)

  doc = layout("./starcraft.pdf")

  doc = nlp(doc)
  ```



  Tables are included in the layout spans with the label `"table"` and under the shortcut `Doc._.tables`. They expose a `layout` extension attribute, as well as an attribute `data`, which includes the tabular data converted to a `pandas.DataFrame`.

  ```python
  for table in doc._.tables:
      
      print(table.start, table.end, table._.layout)
      
      print(table._.data)
  ```

  By default, the span text is a placeholder `TABLE`, but you can customize how a table is rendered by providing a `display_table` callback to `spaCyLayout`, which receives the `pandas.DataFrame` of the data. This allows you to include the table figures in the document text and use them later on, e.g. during information extraction with a trained named entity recognizer or text classifier.

  ```python
  def display_table(df: pd.DataFrame) -> str:
      return f"Table with columns: {', '.join(df.columns.tolist())}"

  layout = spaCyLayout(nlp, display_table=display_table)
  ```





  ```python
  layout = spaCyLayout(nlp)
  doc = layout("./starcraft.pdf")
  print(doc._.layout)
  for span in doc.spans["layout"]:
      print(span.label_, span._.layout)
  ```

  | Attribute | Type | Description |
  | --- | --- | --- |
  | `Doc._.layout` | `DocLayout` | Layout features of the document. |
  | `Doc._.pages` | `list[tuple[PageLayout, list[Span]]]` | Pages in the document and the spans they contain. |
  | `Doc._.tables` | `list[Span]` | All tables in the document. |
  | `Doc._.markdown` | `str` | Markdown representation of the document. |
  | `Doc.spans["layout"]` | `spacy.tokens.SpanGroup` | The layout spans in the document. |
  | `Span.label_` | `str` | The type of the extracted layout span, e.g. `"text"` or `"section_header"`. [See here](https://github.com/DS4SD/docling-core/blob/14cad33ae7f8dc011a79dd364361d2647c635466/docling_core/types/doc/labels.py) for options. |
  | `Span.label` | `int` | The integer ID of the span label. |
  | `Span.id` | `int` | Running index of layout span. |
  | `Span._.layout` | `SpanLayout \| None` | Layout features of a layout span. |
  | `Span._.heading` | `Span \| None` | Closest heading to a span, if available. |
  | `Span._.data` | `pandas.DataFrame \| None` | The extracted data for table spans.



  | Attribute | Type | Description |
  | --- | --- | --- |
  | `page_no` | `int` | The page number (1-indexed). |
  | `width` | `float` | Page with in pixels. |
  | `height` | `float` | Page height in pixels. |



  | Attribute | Type | Description |
  | --- | --- | --- |
  | `pages` | `list[PageLayout]` | The pages in the document. |



  | Attribute | Type | Description |
  | --- | --- | --- |
  | `x` | `float` | Horizontal offset of the bounding box in pixels. |
  | `y` | `float` | Vertical offset of the bounding box in pixels. |
  | `width` | `float` | Width of the bounding box in pixels. |
  | `height` | `float` | Height of the bounding box in pixels. |
  | `page_no` | `int` | Number of page the span is on. |





  Initialize the document processor.

  ```python
  nlp = spacy.blank("en")
  layout = spaCyLayout(nlp)
  ```

  | Argument | Type | Description |
  | --- | --- | --- |
  | `nlp` | `spacy.language.Language` | The initialized `nlp` object to use for tokenization. |
  | `separator` | `str` | Token used to separate sections in the created `Doc` object. The separator won't be part of the layout span. If `None`, no separator will be added. Defaults to `"\n\n"`. |
  | `attrs` | `dict[str, str]` | Override the custom spaCy attributes. Can include `"doc_layout"`, `"doc_pages"`, `"doc_tables"`, `"doc_markdown"`, `"span_layout"`, `"span_data"`, `"span_heading"` and `"span_group"`. |
  | `headings` | `list[str]` | Labels of headings to consider for `Span._.heading` detection. Defaults to `["section_header", "page_header", "title"]`. |
  | `display_table` | `Callable[[pandas.DataFrame], str] \| str` | Function to generate the text-based representation of the table in the `Doc.text` or placeholder text. Defaults to `"TABLE"`. |
  | `docling_options` | `dict[InputFormat, FormatOption]` | [Format options](https://ds4sd.github.io/docling/usage/#advanced-options) passed to Docling's `DocumentConverter`. |
  | **RETURNS** | `spaCyLayout` | The initialized object. |



  Process a document and create a spaCy [`Doc`](https://spacy.io/api/doc) object containing the text content and layout spans, available via `Doc.spans["layout"]` by default.

  ```python
  layout = spaCyLayout(nlp)
  doc = layout("./starcraft.pdf")
  ```

  | Argument | Type | Description |
  | --- | --- | --- |
  | `source` | `str \| Path \| bytes \| DoclingDocument` | Path of document to process, bytes or already created `DoclingDocument`. |
  | **RETURNS** | `Doc` | The processed spaCy `Doc` object. |



  Process multiple documents and create spaCy [`Doc`](https://spacy.io/api/doc) objects. You should use this method if you're processing larger volumes of documents at scale.

  ```python
  layout = spaCyLayout(nlp)
  paths = ["one.pdf", "two.pdf", "three.pdf", ...]
  docs = layout.pipe(paths)
  ```

  | Argument | Type | Description |
  | --- | --- | --- |
  | `sources` | `Iterable[str \| Path \| bytes]` | Paths of documents to process or bytes. |
  | **YIELDS** | `Doc` | The processed spaCy `Doc` object. |


pkgId: 3425c6b20367e1967b6c347613cd7bc6bbd33e1946f2b0b0f15a704f60692488
name: python-sparecores-runner-help
arch: noarch
version: 0.0.30
epoch: 0
release: 1
summary: Development documents and examples for sparecores-runner
url: https://pypi.org/project/sparecores-runner/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-sparecores-runner-0.0.30-1.src.rpm
location_href: Packages/python-sparecores-runner-help-0.0.30-1.noarch.rpm
checksum_type: sha256
description:
  Spare Cores Runner is a command-line tool and Python API designed to simplify the process of provisioning
  and managing cloud instances across various cloud providers.
  It leverages Pulumi to handle infrastructure-as-code and automate the creation, and destruction of
  compute instances in your preferred cloud environment.

  Spare Cores Runner (`sc-runner` from now on) is used by [Spare Cores Inspector](https://github.com/SpareCores/sc-inspector)
  to start up basic cloud instances with the required minimum configuration and environment to start the machine with a custom
  `cloud-init` script, but it can be used to just start an instance with a given SSH key, so it's available for basic
  uses.



  `sc-runner` uses the Spare Cores database to pre-fill the available configuration options, like what regions and instance
  types are available for a given cloud provider.
  To use a given cloud provider, you have to provide credentials for them, either by running it in an environment,
  where the underlying library can pick them up, or by specifying them through environment variables or by command line options.

  For more details, see the supported vendor's Pulumi integration:

  * [AWS](https://www.pulumi.com/registry/packages/aws/installation-configuration/)
  * [Azure](https://www.pulumi.com/registry/packages/azure-native/installation-configuration/)
  * [GCP](https://www.pulumi.com/registry/packages/gcp/installation-configuration/), [GOOGLE_CREDENTIALS](https://www.pulumi.com/registry/packages/gcp/service-account/)
  * [Hetzner Cloud](https://www.pulumi.com/registry/packages/hcloud/)
  * [UpCloud](https://github.com/UpCloudLtd/pulumi-upcloud)



  As `sc-runner` uses Pulumi under the hood to manage the cloud providers, it'll need to have a Pulumi project.
  You can configure Pulumi project-related settings either by specifying them using command line arguments, shown below:

  ```shell
  sc-runner create --help
  Usage: sc-runner create [OPTIONS] COMMAND [ARGS]...

  Options:
    --project-name TEXT        Pulumi project name  [default: runner]
    --work-dir TEXT            Pulumi work dir  [default: /data/workdir]
    --pulumi-home TEXT         Pulumi home  [default: /root/.pulumi]
    --pulumi-backend-url TEXT  Pulumi backend URL  [default: file:///data/backend]
    --stack-name TEXT          Pulumi stack name, defaults to
                               {vendor}.{region}.{zone}.{instance_id} or similar
    --help                     Show this message and exit.

  Commands:
    aws
    azure
    gcp
    hcloud
    upcloud
  ```

  Or by setting the following environment variables:

  * PULUMI_PROJECT_NAME
  * PULUMI_WORK_DIR
  * PULUMI_HOMEPULUMI_BACKEND_URL

  `sc-runner` should create the project on the first invocation, in which it'll create multiple stacks for each
  `vendor.region.zone.instance_id` tuple. This is to allow concurrent creation of the instances, supporting our
  Spare Cores Inspector use case, where we start a given instance type once for collection data from them.






  Create and destroy a default `t3.micro` instance in the default VPC/subnet in AWS:
  ```shell
  sc-runner create aws
  sc-runner destroy aws
  ```

  Create an Azure instance with a public key:
  ```shell
  sc-runner create azure --instance Standard_DS1_v2 --public-key $(cat .ssh/id_ed25519.pub)
  ```

  Create an AWS instance with public IP and an already stored SSH key named `spare_cores`:
  ```shell
  sc-runner create aws --region us-west-2 --instance t4g.large --instance-opts '{"associate_public_ip_address": true,"key_name":"spare-cores"}' --public-key ""
  ```



  ```shell
  sc-runner destroy azure --instance Standard_DS1_v2
  sc-runner destroy aws --region us-west-2 --instance t4g.large
  ```

  You can also user `destroy-stack` instead of `destroy`, which does a `pulumi refresh` first, synchronizing the underlying
  cloud-reality with Pulumi's internal backend and destroys only what's really there (so it won't fail on already deleted
  resources).



  Sometimes Pulumi might leave a lock file in its state store, preventing further operations. With this command you can
  cancel those:

  ```shell
  sc-runner cancel aws --region us-west-2 --instance t4g.large
  ```



  `sc-runner` is available through a Docker image as well, which you can use with the following command:
  ```shell
  docker run --rm -ti ghcr.io/sparecores/sc-runner:main --help
  ```

  You'll have to set up the same environment variables or configure the cloud credentials for Pulumi.


pkgId: f77fc75e829fba578dcdb547e28d9b3f8b1398c83a89d18215e3e3148949fed2
name: python-spark-instructor-help
arch: noarch
version: 0.2.5
epoch: 0
release: 1
summary: Development documents and examples for spark-instructor
url: https://github.com/TJC-LP/spark-instructor
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-spark-instructor-0.2.5-1.src.rpm
location_href: Packages/python-spark-instructor-help-0.2.5-1.noarch.rpm
checksum_type: sha256
description:
  `spark-instructor` combines the capabilities of Apache Spark and the [`instructor`](https://github.com/jxnl/instructor) library to enable AI-powered structured data generation within Spark SQL DataFrames.

  This project aims to bridge the gap between large-scale data processing with Apache Spark and AI-driven content generation. By leveraging the [`instructor`](https://github.com/jxnl/instructor) library's ability to work with various AI models (such as OpenAI, Anthropic, and Databricks), Spark Instructor allows users to create User-Defined Functions (UDFs) that generate structured, AI-powered columns in Spark SQL DataFrames.

  - **AI-Powered UDFs**: Create Spark UDFs that utilize AI models to generate structured data.
  - **Multi-Provider Support**: Work with various AI providers including OpenAI, Anthropic, and Databricks. Support for other providers will be added on an as-needed basis. Contributions for added provider support are highly encouraged.
  - **Type-Safe Responses**: Utilize Pydantic models to ensure type safety and data validation for AI-generated content.
  - **Seamless Integration**: Easily incorporate AI-generated columns into your existing Spark SQL workflows.
  - **Scalable Processing**: Leverage Spark's distributed computing capabilities for processing large datasets with AI augmentation.

  - Enhance datasets with AI-generated insights or summaries.
  - Perform large-scale text classification or entity extraction.
  - Generate structured metadata for unstructured text data.
  - Create synthetic datasets for testing or machine learning purposes.

  1. Run `pip install spark-instructor`, or `pip install spark-instructor[anthropic]` for Anthropic SDK support.
     1. `spark-instructor` must be installed on the Spark driver and workers to generate working UDFs.
  2. Add the necessary environment variables and config to your spark environment (recommended). See the [Spark documentation](https://spark.apache.org/docs/latest/configuration.html#environment-variables) for more details.
     1. For OpenAI support, add `OPENAI_API_KEY=<openai-api-key>`
     2. For Databricks support, add `DATABRICKS_HOST=<databricks-host>` and `DATABRICKS_TOKEN=<databricks-token>`
     3. For Anthropic support, make sure `spark-instructor[anthropic]` is installed and add `ANTHROPIC_API_KEY=<anthropic-api-key>`
     4. For Ollama support, run [init-ollama](init/init-ollama.sh) as an init script to install `ollama` on all nodes

  The following example demonstrates a sample run using the provided `User` model. The `User` model is defined below:
  ```python
  from pydantic import BaseModel
  class User(BaseModel):
      """A user."""
      name: str
      age: int
  ```
  For proper Spark serialization, we import our Pydantic model so that it is accessible on the Spark workers. See [Limitations](#limitations) for more details. `instruct` allows users to generate a custom Pandas UDF, yielding high performance through asynchronous `instructor` calls and Apache Arrow for efficient data transfer between Python and the JVM.
  ```python
  import pyspark.sql.functions as f
  from pyspark.sql import SparkSession
  from spark_instructor import create_chat_completion_messages, instruct
  from spark_instructor.response_models import User

  spark = SparkSession.builder.getOrCreate()

  data = [
      ("Extract Jason is 25 years old.",),
      ("Extract Emma is 30 years old.",),
      ("Extract Michael is 42 years old.",),
  ]

  df = (
     spark.createDataFrame(data, ["content"])
     .withColumn(
        "messages",
        create_chat_completion_messages(
           [
              {"role": f.lit("system"), "content": f.lit("You are a helpful assistant")},
              
              {"role": f.lit("user"), "content": "content"}
           ]
        )
     )
     .withColumn(
        "response",
        instruct(response_model=User, default_model="gpt-4o")(f.col("messages"))
     )
  )

  result_df = df.select(
      "content",
      "messages",
      f.col("response.*")
  )
  result_df.show(truncate=False)
  ```
  ```markdown
  +--------------------------------+---------------------------------------------------------------------------------------------------------------------------------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  |content                         |messages                                                                                                                         |user         |chat_completion                                                                                                                                                                                                                                               |
  +--------------------------------+---------------------------------------------------------------------------------------------------------------------------------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  |Extract Jason is 25 years old.  |[{system, You are a helpful assistant, NULL, NULL, NULL, NULL}, {user, Extract Jason is 25 years old., NULL, NULL, NULL, NULL}]  |{Jason, 25}  |{chatcmpl-9uP7OLHFfh5Ykqn0WWe73PKPT53Os, [{stop, 0, NULL, {NULL, NULL, assistant, NULL, [{call_KWemzBDaMeJ4IUIlV0O615R7, {{"name":"Jason","age":25}, User}, function}]}}], 1723229950, gpt-4o-2024-05-13, chat.completion, NULL, fp_3aa7262c27, {9, 70, 79}}  |
  |Extract Emma is 30 years old.   |[{system, You are a helpful assistant, NULL, NULL, NULL, NULL}, {user, Extract Emma is 30 years old., NULL, NULL, NULL, NULL}]   |{Emma, 30}   |{chatcmpl-9uP7PkPacKjBH6pf4IVGeKauaMvPg, [{stop, 0, NULL, {NULL, NULL, assistant, NULL, [{call_JPnuSpto99mOJMDdzaRtQtiw, {{"name":"Emma","age":30}, User}, function}]}}], 1723229951, gpt-4o-2024-05-13, chat.completion, NULL, fp_3aa7262c27, {9, 70, 79}}   |
  |Extract Michael is 42 years old.|[{system, You are a helpful assistant, NULL, NULL, NULL, NULL}, {user, Extract Michael is 42 years old., NULL, NULL, NULL, NULL}]|{Michael, 42}|{chatcmpl-9uP7QUbUlY3ksplUHpDXQhYUPa3Lu, [{stop, 0, NULL, {NULL, NULL, assistant, NULL, [{call_ABCEAljoRqtTeKwMh6YfnfnC, {{"name":"Michael","age":42}, User}, function}]}}], 1723229952, gpt-4o-2024-05-13, chat.completion, NULL, fp_3aa7262c27, {9, 70, 79}}|
  +--------------------------------+---------------------------------------------------------------------------------------------------------------------------------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  ```
  Note that setting `response_model` is optional, and omitting the argument will result in a standard message. Furthermore, we can pass configuration parameters as PySpark columns.
  ```python
  import pyspark.sql.functions as f
  from pyspark.sql import SparkSession
  from spark_instructor import create_chat_completion_messages, instruct

  spark = SparkSession.builder.getOrCreate()

  data = [
      ("Extract Jason is 25 years old.",),
      ("Extract Emma is 30 years old.",),
      ("Extract Michael is 42 years old.",),
  ]

  df = (
      spark.createDataFrame(data, ["content"])
      .withColumn(
          "messages",
          create_chat_completion_messages(
              [
                  {
                      "role": f.lit("system"),
                      "content": f.lit("You are a helpful assistant who speaks in latin"),
                  },
                  {"role": f.lit("user"), "content": "content"},
              ]
          ),
      )
      .withColumn(
          "response",
          instruct()(
              f.col("messages"),
              
              model=f.when(f.rand(seed=42) > f.lit(0.5), f.lit("claude-3-5-sonnet-20240620")).otherwise(f.lit("gpt-4o")),
              max_tokens=f.lit(400),
              temperature=f.lit(1)
          ),
      )
  )

  result_df = df.select("content", "messages", f.col("response.*"))
  result_df.show(truncate=False)
  ```
  ```markdown
  +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  |content                         |messages                                                                                                                                             |chat_completion                                                                                                                                                                                                      |
  +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  |Extract Jason is 25 years old.  |[{system, You are a helpful assistant who speaks in latin, NULL, NULL, NULL, NULL}, {user, Extract Jason is 25 years old., NULL, NULL, NULL, NULL}]  |{msg_01Fd1w3FVa2PFHD2egVMsYNu, [{stop, 0, NULL, {Iason viginti quinque annos natus est., NULL, assistant, NULL, NULL}}], 1723245768, claude-3-5-sonnet-20240620, chat.completion, NULL, NULL, {16, 25, 41}}          |
  |Extract Emma is 30 years old.   |[{system, You are a helpful assistant who speaks in latin, NULL, NULL, NULL, NULL}, {user, Extract Emma is 30 years old., NULL, NULL, NULL, NULL}]   |{msg_01Le4ChgsBc4vpBEmJytN3wg, [{stop, 0, NULL, {Ecce extractum:\n\nEmma triginta annos nata est., NULL, assistant, NULL, NULL}}], 1723245770, claude-3-5-sonnet-20240620, chat.completion, NULL, NULL, {19, 25, 44}}|
  |Extract Michael is 42 years old.|[{system, You are a helpful assistant who speaks in latin, NULL, NULL, NULL, NULL}, {user, Extract Michael is 42 years old., NULL, NULL, NULL, NULL}]|{chatcmpl-9uTEXQRNSJZTfacsPD2XYfphvtMkj, [{stop, 0, NULL, {Extractum Michaëlis est XLII annorum., NULL, assistant, NULL, NULL}}], 1723245769, gpt-4o-2024-05-13, chat.completion, NULL, fp_3aa7262c27, {11, 28, 39}} |
  +--------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  ```

  Serialization of raw Python code in Spark is tricky. Spark UDFs attempt to pickle everything associated with functions, and it is known that Pydantic objects do not serialize well when defined on the driver level. However, when Pydantic classes are imported from another source, these seem to serialize perfectly fine. See this [example](https://learn.microsoft.com/en-us/answers/questions/1178741/can-not-use-pydantic-objects-in-udf) for more details.
  Even if a Pydantic model is installed at the cluster level, it may not have a well-defined Spark schema. Try to avoid using `typing.Any` or `typing.Union` fields. Very complex types are not guaranteed to work.
  We plan to continue adding generalizable examples to the `response_models.py` module, but users should consider building private Pydantic libraries where necessary, and install those at the cluster level. We will continue to investigate workarounds in the meantime.

  We welcome contributions to Spark Instructor! Please see our [contributing guidelines](docs/contributing.md) for more information on how to get involved.

  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

  This project builds upon the excellent work of the Apache Spark community, the creators of the [`instructor`](https://github.com/jxnl/instructor) library, and the creators of the [`sparkdantic`](https://github.com/mitchelllisle/sparkdantic) library.


