# packages

pkgId: 197d3a59d083e778719c539d20f55f79a4b3c9ab50c1c3c0aaf63330353a01a7
name: python-nice-go-help
arch: noarch
version: 1.0.0
epoch: 0
release: 1
summary: Development documents and examples for nice-go
url: https://IceBotYT.github.io/nice-go
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nice-go-1.0.0-1.src.rpm
location_href: Packages/python-nice-go-help-1.0.0-1.noarch.rpm
checksum_type: sha256
description:
  **Documentation**: [https://IceBotYT.github.io/nice-go](https://IceBotYT.github.io/nice-go)
  **Source Code**: [https://github.com/IceBotYT/nice-go](https://github.com/IceBotYT/nice-go)


pkgId: 10ef6ac360f87ae9d66bd14300c704bd2a74643fe7312843f85d0fe5d09adac5
name: python-nicegui-help
arch: noarch
version: 2.9.0
epoch: 0
release: 1
summary: Development documents and examples for nicegui
url: https://github.com/zauberzeug/nicegui
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nicegui-2.9.0-1.src.rpm
location_href: Packages/python-nicegui-help-2.9.0-1.noarch.rpm
checksum_type: sha256
description:
  <a href="https://nicegui.io/#about">
    <img src="https://raw.githubusercontent.com/zauberzeug/nicegui/main/screenshot.png"
      width="200" align="right" alt="Try online!" />
  </a>



  NiceGUI is an easy-to-use, Python-based UI framework, which shows up in your web browser.
  You can create buttons, dialogs, Markdown, 3D scenes, plots and much more.

  It is great for micro web apps, dashboards, robotics projects, smart home solutions and similar use cases.
  You can also use it in development, for example when tweaking/configuring a machine learning algorithm or tuning motor controllers.

  NiceGUI is available as [PyPI package](https://pypi.org/project/nicegui/), [Docker image](https://hub.docker.com/r/zauberzeug/nicegui) and on [conda-forge](https://anaconda.org/conda-forge/nicegui) as well as [GitHub](https://github.com/zauberzeug/nicegui).

  [![PyPI](https://img.shields.io/pypi/v/nicegui?color=dark-green)](https://pypi.org/project/nicegui/)
  [![PyPI downloads](https://img.shields.io/pypi/dm/nicegui?color=dark-green)](https://pypi.org/project/nicegui/)
  [![Conda version](https://img.shields.io/conda/v/conda-forge/nicegui?color=green&label=conda-forge)](https://anaconda.org/conda-forge/nicegui)
  [![Conda downloads](https://img.shields.io/conda/dn/conda-forge/nicegui?color=green&label=downloads)](https://anaconda.org/conda-forge/nicegui)
  [![Docker pulls](https://img.shields.io/docker/pulls/zauberzeug/nicegui)](https://hub.docker.com/r/zauberzeug/nicegui)<br />
  [![GitHub license](https://img.shields.io/github/license/zauberzeug/nicegui?color=orange)](https://github.com/zauberzeug/nicegui/blob/main/LICENSE)
  [![GitHub commit activity](https://img.shields.io/github/commit-activity/m/zauberzeug/nicegui)](https://github.com/zauberzeug/nicegui/graphs/commit-activity)
  [![GitHub issues](https://img.shields.io/github/issues/zauberzeug/nicegui?color=blue)](https://github.com/zauberzeug/nicegui/issues)
  [![GitHub forks](https://img.shields.io/github/forks/zauberzeug/nicegui)](https://github.com/zauberzeug/nicegui/network)
  [![GitHub stars](https://img.shields.io/github/stars/zauberzeug/nicegui)](https://github.com/zauberzeug/nicegui/stargazers)



  - browser-based graphical user interface
  - implicit reload on code change
  - acts as webserver (accessed by the browser) or in native mode (eg. desktop window)
  - standard GUI elements like label, button, checkbox, switch, slider, input, file upload, ...
  - simple grouping with rows, columns, cards and dialogs
  - general-purpose HTML and Markdown elements
  - powerful high-level elements to
    - plot graphs and charts,
    - render 3D scenes,
    - get steering events via virtual joysticks
    - annotate and overlay images
    - interact with tables
    - navigate foldable tree structures
    - embed video and audio files
  - built-in timer to refresh data in intervals (even every 10 ms)
  - straight-forward data binding and refreshable functions to write even less code
  - notifications, dialogs and menus to provide state of the art user interaction
  - shared and individual web pages
  - easy-to-use per-user and general persistence
  - ability to add custom routes and data responses
  - capture keyboard input for global shortcuts etc.
  - customize look by defining primary, secondary and accent colors
  - live-cycle events and session data
  - runs in Jupyter Notebooks and allows Python's interactive mode
  - auto-complete support for Tailwind CSS
  - SVG, Base64 and emoji favicon support
  - testing framework based on pytest



  ```bash
  python3 -m pip install nicegui
  ```



  Write your nice GUI in a file `main.py`:

  ```python
  from nicegui import ui

  ui.label('Hello NiceGUI!')
  ui.button('BUTTON', on_click=lambda: ui.notify('button was pressed'))

  ui.run()
  ```

  Launch it with:

  ```bash
  python3 main.py
  ```

  The GUI is now available through http://localhost:8080/ in your browser.
  Note: NiceGUI will automatically reload the page when you modify the code.



  The documentation is hosted at [https://nicegui.io/documentation](https://nicegui.io/documentation) and provides plenty of live demos.
  The whole content of [https://nicegui.io](https://nicegui.io) is [implemented with NiceGUI itself](https://github.com/zauberzeug/nicegui/blob/main/main.py)
  and can be started locally with `docker run -p 8080:8080 zauberzeug/nicegui` or by executing `main.py` from this repository.

  You may also have a look at our [in-depth examples](https://github.com/zauberzeug/nicegui/tree/main/examples) of what you can do with NiceGUI.
  In our wiki we have a list of great [NiceGUI projects from the community](https://github.com/zauberzeug/nicegui/wiki#community-projects), a section with [Tutorials](https://github.com/zauberzeug/nicegui/wiki#tutorials), a growing list of [FAQs](https://github.com/zauberzeug/nicegui/wiki/FAQs) and [some strategies for using ChatGPT / LLMs to get help about NiceGUI](https://github.com/zauberzeug/nicegui/wiki#chatgpt).



  We at [Zauberzeug](https://zauberzeug.com) like [Streamlit](https://streamlit.io/)
  but find it does [too much magic](https://github.com/zauberzeug/nicegui/issues/1#issuecomment-847413651) when it comes to state handling.
  In search for an alternative nice library to write simple graphical user interfaces in Python we discovered [JustPy](https://justpy.io/).
  Although we liked the approach, it is too "low-level HTML" for our daily usage.
  But it inspired us to use [Vue](https://vuejs.org/) and [Quasar](https://quasar.dev/) for the frontend.

  We have built on top of [FastAPI](https://fastapi.tiangolo.com/),
  which itself is based on the ASGI framework [Starlette](https://www.starlette.io/)
  and the ASGI webserver [Uvicorn](https://www.uvicorn.org/)
  because of their great performance and ease of use.



  Maintenance of this project is made possible by all the [contributors](https://github.com/zauberzeug/nicegui/graphs/contributors) and [sponsors](https://github.com/sponsors/zauberzeug).
  If you would like to support this project and have your avatar or company logo appear below, please [sponsor us](https://github.com/sponsors/zauberzeug). 💖

  <!-- SPONSORS -->
  <p align="center">
    <a href="https://github.com/lechler-gmbh"><img src="https://github.com/lechler-gmbh.png" width="50px" alt="Lechler GmbH" /></a>
    <a href="https://github.com/Zhifeng2019"><img src="https://github.com/Zhifeng2019.png" width="50px" alt="Zhifeng" /></a>
    <a href="https://github.com/sereneturtlefox"><img src="https://github.com/sereneturtlefox.png" width="50px" alt="None" /></a>
    <a href="https://github.com/whoulden"><img src="https://github.com/whoulden.png" width="50px" alt="Wayne Houlden" /></a>
    <a href="https://github.com/digiquip"><img src="https://github.com/digiquip.png" width="50px" alt="DigiQuip AS" /></a>
  </p>
  <!-- SPONSORS -->

  Consider this low-barrier form of contribution yourself.
  Your [support](https://github.com/sponsors/zauberzeug) is much appreciated.



  Thank you for your interest in contributing to NiceGUI! We are thrilled to have you on board and appreciate your efforts to make this project even better.

  As a growing open-source project, we understand that it takes a community effort to achieve our goals. That's why we welcome all kinds of contributions, no matter how small or big they are. Whether it's adding new features, fixing bugs, improving documentation, or suggesting new ideas, we believe that every contribution counts and adds value to our project.

  We have provided a detailed guide on how to contribute to NiceGUI in our [CONTRIBUTING.md](https://github.com/zauberzeug/nicegui/blob/main/CONTRIBUTING.md) file. We encourage you to read it carefully before making any contributions to ensure that your work aligns with the project's goals and standards.

  If you have any questions or need help with anything, please don't hesitate to reach out to us. We are always here to support and guide you through the contribution process.



  See [DEPENDENCIES.md](https://github.com/zauberzeug/nicegui/blob/main/DEPENDENCIES.md) for a list of web frameworks NiceGUI depends on.


pkgId: 8b5779ea3832efb0944a64c8bf3352bedf6701d8a454e712e92c0c10c69b77ab
name: python-nicegui-router-help
arch: noarch
version: 0.0.2
epoch: 0
release: 1
summary: Development documents and examples for nicegui-router
url: https://github.com/puntorigen/nicegui-router
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nicegui-router-0.0.2-1.src.rpm
location_href: Packages/python-nicegui-router-help-0.0.2-1.noarch.rpm
checksum_type: sha256
description:
  File-based routing and theming for NiceGUI, bringing structured navigation and consistent page themes.


  - **File-Based Routing**: Automatically organize your application routes using a file-based structure, making navigation in NiceGUI applications clean and scalable.
  - **Theming Support**: Apply consistent UI themes across your NiceGUI application for a uniform user experience.
  - **WebSocket and HTTP Route Decorators**: Easy route handling with support for WebSockets and RESTful HTTP methods.
  - **JWT Authentication**: Built-in support for authenticated routes to secure your application.
  - **Dynamic Route Loading**: Dynamically register routes from specified directories, streamlining development workflow.
  - **Custom Error Handling**: Log and manage route errors efficiently.
  - **NiceGUI Integration**: Seamlessly integrated with the NiceGUI environment for web application development.



  This package is designed to simplify the development of applications using NiceGUI by enabling file-based routing and consistent theming. Below is a demonstration of how to set up a simple application using `nicegui-router`.



  ```plaintext
  my_nicegui_app/
  ├── main.py
  └── routes
      ├── home.py
      └── about.py
      └── counter.py
  ```




  ```python
  from nicegui_router import Server
  from pathlib import Path


  server = Server(
      title='Example Server',
      routes_dir=Path(__file__).parent / "routes"
  )


  app = server.app


  if __name__ == '__main__':
      server.listen(port=8080)
  ```


  ```python
  from nicegui_router import page, ui

  @page('/')
  def home():
      ui.markdown("Welcome to the Home Page!")
  ```


  ```python
  from nicegui_router import page, ui, theme

  customTheme = theme(
      {
          'primary': '#FF5733', # orange
          'secondary': '#33FF57', # green
          'accent': '#3357FF'
      }, font="Lato")

  @page(theme=customTheme)
  def about():
      ui.markdown("About Us Page themed with custom colors.")
  ```


  ```python
  from nicegui_router import page, ui, theme, component, use_state

  customTheme = theme(
      {
          'primary': '#FF5733', # orange
          'secondary': '#33FF57', # green
          'accent': '#3357FF'
      }, font="Lato")

  @page(theme=customTheme)
  def counter():
      
      @component
      def customCounter():
          count, setCount = use_state(0)
          return ui.button(f"Count: {count}").on("click", lambda: setCount(count + 1))

      with ui.header():
          title = ui.label("Example 2")
          ui.space()
          customCounter()
      ui.markdown("Custom component with state reactivity.")
  ```


  To start the server, simply run the following command in your terminal from the project's root directory:
  ```bash
  python example/main.py
  ```

  Navigate to `http://localhost:8080` to see your NiceGUI application in action.



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


pkgId: fc444fd62b487122c66a790e2a547b3439cc1093d95bb1ddbbebd65dc6a945bb
name: python-nicegui-tabulator-help
arch: noarch
version: 0.2.1
epoch: 0
release: 1
summary: Development documents and examples for nicegui-tabulator
url: https://pypi.org/project/nicegui-tabulator/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nicegui-tabulator-0.2.1-1.src.rpm
location_href: Packages/python-nicegui-tabulator-help-0.2.1-1.noarch.rpm
checksum_type: sha256
description:
  create from pandas dataframe:
  ```python
  from nicegui_tabulator import tabulator
  import pandas as pd
  df = pd.DataFrame(
      {
          "name": ["Alice", "Bob", "Charlie"],
          "age": [25, 30, 35],
          "color": ["blue", "red", "green"],
          "dob": [None, "2021-01-01", "2021-02-02"],
      }
  )
  tabulator.from_pandas(df)


pkgId: 0889ff50e5b45646717e7628c5e774e25db62f63b2da1416a37e91a71480ced0
name: python-niceml-help
arch: noarch
version: 0.16.0
epoch: 0
release: 1
summary: Development documents and examples for niceml
url: https://pypi.org/project/niceml/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-niceml-0.16.0-1.src.rpm
location_href: Packages/python-niceml-help-0.16.0-1.noarch.rpm
checksum_type: sha256
description:
  [![PyPI](https://img.shields.io/pypi/v/niceml)](
  https://pypi.org/project/niceml/
  )
  ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/niceml)
  [![🧪 Pytest](
  https://github.com/codecentric-oss/niceml/actions/workflows/pytest.yaml/badge.svg)](
  https://github.com/codecentric-oss/niceml/actions/workflows/pytest.yaml)
  ![GitHub commit activity](
  https://img.shields.io/github/commit-activity/m/codecentric-oss/niceml)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](
  https://opensource.org/licenses/MIT)

  **niceML** is a tool to help you set up your machine learning projects faster.
  It provides pipelines for a variety of ML tasks, like

  - **Object Detection**,
  - **Semantic Segmentation**,
  - **Regression**,
  - **Classification**
  - and others.

  All you have to do is configure your pipeline, and you're ready to go!

  You can also add your own components to the build-in dashboard,
  where you can compare the results and performance of your ML models.

  Further documentation is available at [niceML.io](https://niceml.io).

  A lot more documentation will follow soon!


pkgId: fd4b8b1548d59d94577b874affc334d09e0a217f8783ed88bb02b3d0db5b5771
name: python-niceplotly-resampler-help
arch: noarch
version: 0.1.2
epoch: 0
release: 1
summary: Development documents and examples for niceplotly-resampler
url: https://pypi.org/project/niceplotly-resampler/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-niceplotly-resampler-0.1.2-1.src.rpm
location_href: Packages/python-niceplotly-resampler-help-0.1.2-1.noarch.rpm
checksum_type: sha256
description:
  [![PyPI](https://img.shields.io/pypi/v/niceplotly-resampler?color=dark-green)](https://pypi.org/project/niceplotly-resampler/)
  [![PyPI downloads](https://img.shields.io/pypi/dm/niceplotly-resampler?color=dark-green)](https://pypi.org/project/niceplotly-resampler/)
  [![GitHub license](https://img.shields.io/github/license/Vidpic/niceplotly-resampler?color=orange)](https://github.com/Vidpic/niceplotly-resampler/blob/main/LICENSE)
  [![GitHub issues](https://img.shields.io/github/issues/Vidpic/niceplotly-resampler?color=blue)](https://github.com/Vidpic/niceplotly-resampler/issues)

  `NicePloty-Resampler` is a tool for integrating Plotly into NiceGUI, designed to handle large time series datasets efficiently. To achieve this, it dynamically downsamples data based on the current graph view, ensuring smooth user interactions like panning and zooming.

  Instead of implementing its own downsampling algorithms, NicePloty-Resampler utilizes the advanced functionality of [tsdownsample](https://github.com/predict-idlab/tsdownsample), which offers highly optimized methods for selecting representative data points. This allows the library to provide exceptional performance while maintaining simplicity.

  By default, NicePloty-Resampler uses the MinMaxLTTB method to reduce datasets to 1000 key points for visualization.

  ![example](https://github.com/Vidpic/niceplotly-resampler/blob/main/docs/example.gif)


  ```bash
  pip install niceplotly-resampler
  ```



  ```python
  from nicegui import ui
  import plotly.graph_objects as go; import numpy as np
  from niceplotly_resampler import FigureResampler

  x = np.arange(1_000_000)
  noisy_sin = (3 + np.sin(x / 200) + np.random.randn(len(x)) / 10) * x / 1_000

  fig = FigureResampler(go.Figure())
  fig.add_trace(go.Scattergl(name='noisy sine', showlegend=True, x=x, y=noisy_sin))
  fig.update_layout(title='Noisy sine wave example', template='plotly_dark', title_x=0.5)

  with ui.row().classes('w-full h-full'):
      fig.show(options={"displayModeBar": False}).classes('w-full h-full')
  ui.run()
  ```

rpm_license:
  MIT License  Copyright (c) 2024 Vidpic  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: 4a7e394f66a901ef951176db26f959078935a88420ae044767cdfbc119049135
name: python-nightline-help
arch: noarch
version: 0.2.0
epoch: 0
release: 1
summary: Development documents and examples for nightline
url: https://pypi.org/project/nightline/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nightline-0.2.0-1.src.rpm
location_href: Packages/python-nightline-help-0.2.0-1.noarch.rpm
checksum_type: sha256
description:
  <p align="center">
      <img src="docs/assets/logo.png" width="50%">
  </p>
  <p align="center">
      <i>Nightline is a modern Event Listening framework based on Pydantic.</i>
  </p>

  [Docs](https://dref360.github.io/nightline/) [PyPI](https://pypi.org/project/nightline/)

  Supports:
  * ✅ AWS Simple Queue Service (SQS)
  * 🚧 Google PubSub
  * 🚧 RabbitMQ

  **Submit an issue for more integrations!**



  ```python
  from nightline.services.sqs import AWSSQSEventStreamListener
  from pydantic import BaseModel

  class OrderMessage(BaseModel):
      order_id: int
      total: float
      items: list[str]


  listener = AWSSQSEventStreamListener(queue_url="https://your_queue_url")


  def process_message(message: OrderMessage):
      print(f"Processing order {message.order_id}")

  listener.listen(process_message)
  ```



  ```
  pip install nightline[sqs] # For SQS Support
  ```



  Contributions are more than welcome! Please open an issue on Github.



  For support, please open an issue on GitHub.



  This project has been heavily inspired by [FastAPI](https://fastapi.tiangolo.com/), we couldn't have done it without them.


pkgId: 3b79cc39d51cc10bf2cc5b80cd347a1194c9efcb4b5d393589bad36312650441
name: python-nightwatch-chat-help
arch: noarch
version: 0.11.3
epoch: 0
release: 1
summary: Development documents and examples for nightwatch-chat
url: https://github.com/iiPythonx/nightwatch
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nightwatch-chat-0.11.3-1.src.rpm
location_href: Packages/python-nightwatch-chat-help-0.11.3-1.noarch.rpm
checksum_type: sha256
description:
  <h1 align = "center">Nightwatch</h1>
  <div align = "center">

  ![Python](https://img.shields.io/badge/Python-%3E=%203.10-4b8bbe?style=for-the-badge&logo=python&logoColor=white)
  ![Rust](https://img.shields.io/badge/Rust-%3E=%201.60-221f1e?style=for-the-badge&logo=rust&logoColor=white)

  The chatting application to end all chatting applications.

  </div>



  As an end-user, you have multiple clients to pick from when it comes to accessing Nightwatch.
  Here are two of the standard clients for you to choose from:
  - Terminal Client ([based on urwid](https://urwid.org/index.html))
      - Installation is as simple as `pip install nightwatch-chat`.
      - The client can be started by running `nightwatch` in your terminal.

  - Browser App
      - Available in the `nightwatch/web` folder.
      - Alternatively, access it at [nightwatch.iipython.dev](https://nightwatch.iipython.dev).



  Running a Nightwatch server can be a bit trickier then running the client, but follow along:

  ```sh
  git clone https://github.com/iiPythonx/nightwatch && cd nightwatch
  git checkout release
  uv venv
  uv pip install -e .
  uvicorn nightwatch.rics:app --host 0.0.0.0
  ```

  An example NGINX configuration:

  ```conf
  server {

      
      listen              443 ssl;
      ssl_certificate     /etc/ssl/nightwatch.pem;
      ssl_certificate_key /etc/ssl/nightwatch.key;

      
      server_name nightwatch.iipython.dev;
      location /api {
          proxy_pass http://192.168.0.1:8000;
          proxy_http_version 1.1;
      }
      location /api/ws {
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection upgrade;
          proxy_pass http://192.168.0.1:8000/api/ws;
          proxy_http_version 1.1;
      }
  }
  ```



  Configuration is available at:
  - ***nix systems**: ~/.config/nightwatch
  - **Windows**: %LocalAppData%\Nightwatch

  Client (terminal) configuration is available at `client.json`, while the server configuration is stored in `server.json`.
  The Nightwatch client uses the JSON for username, coloring, and more. Check the `/config` command for more information.
  The backend chat server uses the config file for the server name, although more is sure to come.


pkgId: 77151bbc442b0511367623f911aa67a677473bd94998ba55cf2c0e08e7893448
name: python-nihtest-help
arch: noarch
version: 1.9.0
epoch: 0
release: 1
summary: Development documents and examples for nihtest
url: https://github.com/nih-at/nihtest
rpm_license: BSD-3-Clause
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nihtest-1.9.0-1.src.rpm
location_href: Packages/python-nihtest-help-1.9.0-1.noarch.rpm
checksum_type: sha256
description:
  This is nihtest, a testing tool for command line utilities.

  Tests are run in a sandbox directory to guarantee a clean separation of the test.

  It checks that exit code, standard and error outputs are as expected and compares the files in the sandbox after the run with the expected results.

  It is written in Python.

  It is documented in man pages: [nihtest(1)](https://nih.at/nihtest/nihtest.html), the config
  file format [nihtest.conf(5)](https://nih.at/nihtest/nihtest.conf.html) and the test
  case language [nihtest-case(5)](https://nih.at/nihtest/nihtest-case.html).

  The man pages are included in the source distribution tarball in the
  `manpages` directory in man (Linux-like), mdoc (BSD), and HTML
  format. When you're packaging nihtest, please make sure they are
  installed in an appropriate location.


  [![Github Actions Build Status](https://github.com/nih-at/nihtest/workflows/build/badge.svg)](https://github.com/nih-at/nihtest/actions?query=workflow%3Abuild)


pkgId: df77e45661a7cb05c639b825df6667649814e82b4e58e7956a14524eb44dceb3
name: python-nireports-help
arch: noarch
version: 24.1.0
epoch: 0
release: 1
summary: Development documents and examples for nireports
url: https://github.com/nipreps/nireports
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nireports-24.1.0-1.src.rpm
location_href: Packages/python-nireports-help-24.1.0-1.noarch.rpm
checksum_type: sha256
description:
  *NiReports* contains the two main components of the *visual reporting system* of *NiPreps*:
  * **Reportlets**: visualizations for assessing the quality of a particular processing step within the neuroimaging pipeline.
    Typically, reportlets show brain mosaics perhaps with contours and/or segmentations.
    They can be *dynamic* and flicker between two different *states* to help assess the accuracy of image registrations.
    However, the reportlets are not limited to brain mosaics, and can contain correlation plots, BOLD fMRI *carpetplots*, etc.
  * **Assembler**: end-user *NiPreps* write out reportlets to a predetermined folder, which is then queried by the assembler using *PyBIDS*.
    The assembler follows a *report specification* in YAML format, which states the query to find specific reportlets and their corresponding metadata and text annotations.
    As a result, one HTML file with a concatenation of reportlets is produced.


pkgId: d2a180f63c484231c7111cfef395e53f0ab3b0642704438201c660235002da88
name: python-nitransforms-help
arch: noarch
version: 24.1.1
epoch: 0
release: 1
summary: Development documents and examples for nitransforms
url: https://github.com/nipy/nitransforms
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nitransforms-24.1.1-1.src.rpm
location_href: Packages/python-nitransforms-help-24.1.1-1.noarch.rpm
checksum_type: sha256
description:
  [![DOI](https://joss.theoj.org/papers/10.21105/joss.03459/status.svg)](https://doi.org/10.21105/joss.03459)
  [![ISBI2020](https://img.shields.io/badge/doi-10.31219%2Fosf.io%2F8aq7b-blue.svg)](https://doi.org/10.31219/osf.io/8aq7b)
  [![Deps & CI](https://github.com/nipy/nitransforms/actions/workflows/travis.yml/badge.svg)](https://github.com/nipy/nitransforms/actions/workflows/travis.yml)
  [![CircleCI](https://circleci.com/gh/nipy/nitransforms.svg?style=svg)](https://circleci.com/gh/nipy/nitransforms)
  [![codecov](https://codecov.io/gh/nipy/nitransforms/branch/master/graph/badge.svg)](https://codecov.io/gh/nipy/nitransforms)
  [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/nipy/nitransforms/master?filepath=docs%2Fnotebooks%2F)
  [![Docs](https://readthedocs.org/projects/nitransforms/badge/?version=latest)](http://nitransforms.readthedocs.io/en/latest/?badge=latest)

  A development repo for [nipy/nibabel#656](https://github.com/nipy/nibabel/pull/656)


  Spatial transforms formalize mappings between coordinates of objects in biomedical images.
  Transforms typically are the outcome of image registration methodologies, which estimate
  the alignment between two images.
  Image registration is a prominent task present in nearly all standard image processing
  and analysis pipelines.
  The proliferation of software implementations of image registration methodologies has
  resulted in a spread of data structures and file formats used to preserve and communicate
  transforms.
  This segregation of formats precludes the compatibility between tools and endangers the
  reproducibility of results.
  We propose a software tool capable of converting between formats and resampling images
  to apply transforms generated by the most popular neuroimaging packages and libraries
  (AFNI, FSL, FreeSurfer, ITK, and SPM).
  The proposed software is subject to continuous integration tests to check the
  compatibility with each supported tool after every change to the code base.
  Compatibility between software tools and imaging formats is a necessary bridge
  to ensure the reproducibility of results and enable the optimization and evaluation
  of current image processing and analysis workflows.


  *NiTransforms* started as a feature-repo spun off of *NiBabel*.
  Shortly after starting with [nipy/nibabel#656](https://github.com/nipy/nibabel/pull/656), it became apparent that it was going to build up in a humongous PR nobody would be able to review as thoroughly as it would require.
  Also, *NiTransforms* has many connections to BIDS/BIDS-Derivatives and its X5 format specification for transforms, which falls outside of the current scope of *NiBabel*.

  The plan is to make it an isolated tool, and once it is pertinent, proceed with the integration into *NiBabel*.
  Once this repository is ready for integration, we will define what can go into *NiBabel* (presumably everything, except perhaps some final details of the X5 implementation, although *NiBabel* will support the data structure at least logically).
  This is to say that the chances that NiTransforms is integrated into NiBabel are high and scheduled to happen in ~2022 Q2.


pkgId: e191167872db1f6ef33651befd0126bb5c8cdd28fc357e2dc71a51c6d8043af2
name: python-nive-help
arch: noarch
version: 1.6.5
epoch: 0
release: 1
summary: Development documents and examples for nive
url: https://niveapps.com/
rpm_license: GPL 3
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nive-1.6.5-1.src.rpm
location_href: Packages/python-nive-help-1.6.5-1.noarch.rpm
checksum_type: sha256
description:
  This is the base package.

  The source code is hosted on github: https://github.com/nive

  The reform package is a merge of deform and colander and includes several changes
  to make form handling easier. Please see nive.components.reform.README.txt for details.

  Translations can be extracted using lingua>=3.2
  > pip install lingua-3.2
  > bin/pot-create -o nive/locale/nive.pot nive

  library 'pillow' 10> optional. required for extensions.images.


pkgId: 3a5de8b320791175be5398526b736d2ab42a7abd06c7611cbe3834473c5f681c
name: python-nlpbridge-help
arch: noarch
version: 0.5.5
epoch: 0
release: 1
summary: Development documents and examples for nlpbridge
url: https://github.com/GZU4AI/nlpbridge/tree/vitalis
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nlpbridge-0.5.5-1.src.rpm
location_href: Packages/python-nlpbridge-help-0.5.5-1.noarch.rpm
checksum_type: sha256
description:
   - LLM local, remote, config?




  - 3.1 multiagent,
  - 3.2 CRUD with database





  ![struct overview](struct.png)


pkgId: 6e98b44d5c832837963061a5b820d03fa077a083467e6794acd42b9de021c55e
name: python-nmdc-runtime-help
arch: noarch
version: 2.2.0
epoch: 0
release: 1
summary: Development documents and examples for nmdc-runtime
url: https://github.com/microbiomedata/nmdc-runtime
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nmdc-runtime-2.2.0-1.src.rpm
location_href: Packages/python-nmdc-runtime-help-2.2.0-1.noarch.rpm
checksum_type: sha256
description:
  A runtime system for NMDC data management and orchestration.



  http://nmdcstatus.polyneme.xyz/



  * [issues](https://github.com/microbiomedata/issues)
  tracks issues related to NMDC, which may necessitate work across multiple repos.

  * [nmdc-schema](https://github.com/microbiomedata/nmdc-schema/)
  houses the LinkML schema specification, as well as generated artifacts (e.g. JSON Schema).

  * [nmdc-server](https://github.com/microbiomedata/nmdc-server)
  houses code specific to the data portal -- its database, back-end API, and front-end application.

  * [workflow_documentation](https://nmdc-workflow-documentation.readthedocs.io/en/latest/index.html)
  references workflow code spread across several repositories, that take source data and produce computed data.

  * This repo (nmdc-runtime)
     * houses code that takes source data and computed data, and transforms it
       to broadly accommodate downstream applications such as the data portal
     * manages execution of the above (i.e., lightweight data transformations) and also
       of computationally- and data-intensive workflows performed at other sites,
       ensuring that claimed jobs have access to needed configuration and data resources.



  The NMDC metadata as of 2021-10 is available here:

  https://drs.microbiomedata.org/ga4gh/drs/v1/objects/sys086d541

  The link returns a [GA4GH DRS API bundle object record](https://ga4gh.github.io/data-repository-service-schemas/preview/release/drs-1.0.0/docs/#_drs_datatypes), with the NMDC metadata collections (study_set, biosample_set, etc.) as contents, each a DRS API blob object.

  For example the blob for the study_set collection export, named "study_set.jsonl.gz", is listed with DRS API ID "sys0xsry70". Thus, it is retrievable via

  https://drs.microbiomedata.org/ga4gh/drs/v1/objects/sys0xsry70

  The returned blob object record lists https://nmdc-runtime.files.polyneme.xyz/nmdcdb-mongoexport/2021-10-14/study_set.jsonl.gz as the url for an access method.

  The 2021-10 exports are currently all accessible at `https://nmdc-runtime.files.polyneme.xyz/nmdcdb-mongoexport/2021-10-14/${COLLECTION_NAME}.jsonl.gz`, but the DRS API indirection allows these links to change in the future, for mirroring via other URLs, etc. So, the DRS API links should be the links you share.



  The runtime features:

  1. [Dagster](https://docs.dagster.io/concepts) orchestration:
      - dagit - a web UI to monitor and manage the running system.
      - dagster-daemon - a service that triggers pipeline runs based on time or external state.
      - PostgresSQL database - for storing run history, event logs, and scheduler state.
      - workspace code
        - Code to run is loaded into a Dagster `workspace`. This code is loaded from
           one or more dagster `repositories`. Each Dagster `repository` may be run with a different
           Python virtual environment if need be, and may be loaded from a local Python file or
           `pip install`ed from an external source. In our case, each Dagster `repository` is simply
           loaded from a Python file local to the nmdc-runtime GitHub repository, and all code is
           run in the same Python environment.
        - A Dagster repository consists of `solids` and `pipelines`,
           and optionally `schedules` and `sensors`.
           - `solids` represent individual units of computation
           - `pipelines` are built up from solids
           - `schedules` trigger recurring pipeline runs based on time
           - `sensors` trigger pipeline runs based on external state
        - Each `pipeline` can declare dependencies on any runtime `resources` or additional
           configuration. There are MongoDB `resources` defined, as well as `preset`
           configuration definitions for both "dev" and "prod" `modes`. The `preset`s tell Dagster to
           look to a set of known environment variables to load resources configurations, depending on
           the `mode`.

  2. A MongoDB database supporting write-once, high-throughput internal
  data storage by the nmdc-runtime FastAPI instance.

  3. A [FastAPI](https://fastapi.tiangolo.com/) service to interface with the orchestrator and
  database, as a hub for data management and workflow automation.



  Ensure Docker (and Docker Compose) are installed; and the Docker engine is running.

  ```shell
  docker --version
  docker compose version
  docker info
  ```

  Ensure the permissions of `./mongoKeyFile` are such that only the file's owner can read or write the file.

  ```shell
  chmod 600 ./mongoKeyFile
  ```

  Ensure you have a `.env` file for the Docker services to source from. You may copy `.env.example` to
  `.env` (which is gitignore'd) to get started.

  ```shell
  cp .env.example .env
  ```

  Create environment variables in your shell session, based upon the contents of the `.env` file.

  ```shell
  set -a # automatically export all variables
  source .env
  set +a
  ```

  If you are connecting to resources that require an SSH tunnel—for example, a MongoDB server that is only accessible on the NERSC network—set up the SSH tunnel.

  The following command could be useful to you, either directly or as a template (see `Makefile`).

  ```shell
  make nersc-mongo-tunnels
  ```

  Finally, spin up the Docker Compose stack.

  ```bash
  make up-dev
  ```

  Docker Compose is used to start local MongoDB and PostgresSQL (used by Dagster) instances, as well
  as a Dagster web server (dagit) and daemon (dagster-daemon).

  The Dagit web server is viewable at http://127.0.0.1:3000/.

  The FastAPI service is viewable at http://127.0.0.1:8000/ -- e.g., rendered documentation at
  http://127.0.0.1:8000/redoc/.



  Tests can be found in `tests` and are run with the following commands:

  ```bash
  make up-test
  make test
  ```

  As you create Dagster solids and pipelines, add tests in `tests/` to check that your code behaves as
  desired and does not break over time.

  [For hints on how to write tests for solids and pipelines in Dagster, see their documentation
  tutorial on Testing](https://docs.dagster.io/tutorial/testable).



  This repository contains a GitHub Actions workflow that publishes a Python package to [PyPI](https://pypi.org/project/nmdc-runtime/).

  You can also _manually_ publish the Python package to PyPI by issuing the following commands in the root directory of the repository:

  ```
  rm -rf dist
  python -m build
  twine upload dist/*
  ```



  Here are links related to this repository:

  - Production API server: https://api.microbiomedata.org
  - PyPI package: https://pypi.org/project/nmdc-runtime
  - DockerHub image (API server): https://hub.docker.com/r/microbiomedata/nmdc-runtime-fastapi
  - DockerHub image (Dagster): https://hub.docker.com/r/microbiomedata/nmdc-runtime-dagster


pkgId: e08b104cf6100066d05b41df800371c10610844159688802fcdf3167eaa5563c
name: python-nn-fac-help
arch: noarch
version: 0.3.4
epoch: 0
release: 1
summary: Development documents and examples for nn-fac
url: https://gitlab.imt-atlantique.fr/a23marmo/nonnegative-factorization/
rpm_license: BSD
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nn-fac-0.3.4-1.src.rpm
location_href: Packages/python-nn-fac-help-0.3.4-1.noarch.rpm
checksum_type: sha256
description:
  ﻿

  Python code for computing some Nonnegative Factorizations, using either an accelerated version of Hierarchical Alternating Least Squares algorithm (HALS) with resolution of Nonnegative Least Squares problem (NNLS) [1] for factorizations subject to the minimization of the Euclidean/Frobenius norm, or the Multiplicative Update [2,3] for factors, by minimizing the $\beta$-divergence [3]..

  This work has been done during my Research Master's (SIF, master.irisa.fr) internship in PANAMA team at IRISA/Inria Rennes, under the direction of BERTIN Nancy and COHEN Jeremy.

  It has been extended during my PhD in the same Team, under the direction of BERTIN Nancy and COHEN Jeremy and BIMBOT Frederic.



  You can install it using pip:

      pip install nn-fac

  You can then use code by typing:

      import nn_fac

  For example, if you want to use nmf, type:

      import nn_fac.nmf

  Don't hesitate to reach the author in case of problem. Comments are welcomed!


  As of now, algorithms do not work with numpy versions higher than 1.24. This is an issue open on git (https://github.com/ax-le/nn-fac/issues/1), and should be fixed in the future.

  For now, we only can ensure that the algorithms work with numpy version 1.23.5. Sorry for the incovenience.

  Consequently, numpy 1.23.5 is only set to work with python <= 3.11. We recommand using python 3.10.4, as we ensure that the code will work with that version.

  Sorry for the incovenience!



  This toolbox contains a NNLS resolution algorithm, developed as described in [1]. This code is based on COHEN Jeremy python code adaptation of GILLIS Nicolas MatLab code.


  This toolbox contains a MU resolution algorithm, developed as described in [3] for NMF, also extended for tensorial factorizations. This code is based on an internship of Florian VOORWINDEN and has been improved with COHEN Jeremy and Valentin LEPLAT.

  This toolbox also contains 4 factorization methods:

  Nonnegative Matrix Factorization [2] - Factorization of a nonnegative matrix X in two nonnegative matrices W and H, where WH approach X.

  In the hals condition, this is solved by minimizing the Frobenius norm between both matrices X and WH by NNLS.

  In the mu condition, this is solved by minimizing the $\beta$-divergence [3] between both matrices X and WH by Multiplicative Updates.


  Nonnegative Tensor Factorization, also called Nonnegative PARAFAC decomposition. PARAFAC decomposition consists in factorizing a tensor T in a sum of rank-one tensors [4]. By concatenating the vectors along each mode of this sum, we obtain as much factors as the number of modes of the tensor [5]. This algorithm returns these factors.

  In the hals condition, this factorization is computed as an ALS algorithm, described in [6], solved with NNLS, and using the toolbox Tensorly [7]. It returns the nonnegative factors of a nonnegative tensor T.

  In the mu condition, this factorization is computed as NMF subproblems, described in [3], solved with Multiplicative Update, and using the toolbox Tensorly [7]. It returns the nonnegative factors of a nonnegative tensor T subject to the minimization of the $\beta$-divergence.


  Nonnegative Tensor Factorization admitting variability over a factor [8]. More precisely, this implemented version is based on a flexible coupling approach [9], where the coupling is enforced by a penalty term.


  Nonnegative Tucker Decomposition, which consists in factorizing a tensor T in factors (one per mode) and a core tensor, generally of smaller dimensions than T, which links linearly all factors [6]. This algorithm returns these factors and this core tensor.

  In the hals condition, this factorization is computed as an ALS algorithm, described in [6], solved with NNLS, and using the toolbox Tensorly [7]. It also uses a gradient update rule for the core.

  In the mu condition, this factorization is computed as NMF subproblems (computationally optimized with tensor contractions), described in [3], solved with the Multiplicative Update [3], and using the toolbox Tensorly [7].



  You should cite the package `nn_fac`, available on HAL (https://hal.archives-ouvertes.fr/hal-02915456).

  Here are two styles of citations:

  As a bibtex format, this should be cited as: @softwareversion{marmoret2020nn_fac, title={nn\_fac: Nonnegative Factorization techniques toolbox}, author={Marmoret, Axel and Cohen, J{\'e}r{\'e}my}, URL={https://gitlab.inria.fr/amarmore/nonnegative-factorization}, LICENSE = {BSD 3-Clause ''New'' or ''Revised'' License}, year={2020}}

  In the IEEE style, this should be cited as: A. Marmoret, and J.E. Cohen, "nn_fac: Nonnegative Factorization techniques toolbox," 2020, url: https://gitlab.inria.fr/amarmore/nonnegative-factorization.


  [1] N. Gillis and F. Glineur, "Accelerated Multiplicative Updates and Hierarchical ALS Algorithms for Nonnegative Matrix Factorization," Neural Computation 24 (4): 1085-1105, 2012.

  [2] D.D. Lee and H.S. Seung, "Learning the parts of objects by non-negative matrix factorization," Nature, vol. 401, no. 6755, p. 788, 1999.

  [3] C. Févotte, and J. Idier, "Algorithms for nonnegative matrix factorization with the β-divergence", Neural computation, 23(9), pp.2421-2456, 2011.

  [4] R. A Harshman et al. "Foundations of the PARAFAC procedure: Models and conditions for an" explanatory" multimodal factor analysis," 1970.

  [5] J.E. Cohen, and N. Gillis, "Dictionary-based tensor canonical polyadic decomposition," IEEE Transactions on Signal Processing, 66(7), pp.1876-1889, 2017.

  [6] T.G. Kolda, and B.W. Bader, "Tensor decompositions and applications," SIAM review, 51(3), 455-500, 2009.

  [7] J. Kossaifi, Y. Panagakis, A. Anandkumar and M. Pantic, "TensorLy: Tensor Learning in Python," Journal of Machine Learning Research (JMLR), volume 20, number 26, 2019.

  [8] R.A. Harshman, "PARAFAC2: Mathematical and technical notes," UCLA working papers in phonetics 22.3044, 1972.

  [9] J.E. Cohen and R. Bro, "Nonnegative PARAFAC2: a flexible coupling approach," International Conference on Latent Variable Analysis and Signal Separation. Springer. 2018.


pkgId: cc5fdc374a085b29e3b159c627523a2216c7f69adabb049a59c0237224a037e9
name: python-nncf-help
arch: noarch
version: 2.14.1
epoch: 0
release: 1
summary: Development documents and examples for nncf
url: https://github.com/openvinotoolkit/nncf
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nncf-2.14.1-1.src.rpm
location_href: Packages/python-nncf-help-2.14.1-1.noarch.rpm
checksum_type: sha256
description:
  [![GitHub Release](https://img.shields.io/github/v/release/openvinotoolkit/nncf?color=green)](https://github.com/openvinotoolkit/nncf/releases)
  [![Website](https://img.shields.io/website?up_color=blue&up_message=docs&url=https%3A%2F%2Fdocs.openvino.ai%2Fnncf)](https://docs.openvino.ai/nncf)
  [![Apache License Version 2.0](https://img.shields.io/badge/license-Apache_2.0-green.svg)](https://github.com/openvinotoolkit/nncf?tab=Apache-2.0-1-ov-file#readme)
  [![PyPI Downloads](https://static.pepy.tech/badge/nncf)](https://pypi.org/project/nncf/)



  Neural Network Compression Framework (NNCF) provides a suite of post-training
  and training-time algorithms for optimizing inference of neural networks in
  [OpenVINO&trade;](https://docs.openvino.ai) with a minimal accuracy drop.

  NNCF is designed to work with models from [PyTorch](https://pytorch.org/),
  [TensorFlow](https://www.tensorflow.org/), [ONNX](https://onnx.ai/) and
  [OpenVINO&trade;](https://docs.openvino.ai).

  The framework is organized as a Python package that can be built and used
  as a standalone tool. Its architecture is unified to make adding different
  compression algorithms easy for both PyTorch and TensorFlow.

  NNCF provides samples that demonstrate the usage of compression algorithms
  for different use cases and models. See compression results achievable
  with the NNCF-powered samples on the
  [NNCF Model Zoo page](https://github.com/openvinotoolkit/nncf/blob/develop/docs/ModelZoo.md).

  For more information about NNCF, see:

  - [NNCF repository](https://github.com/openvinotoolkit/nncf)
  - [User documentation](https://docs.openvino.ai/nncf)
  - [NNCF API documentation](https://openvinotoolkit.github.io/nncf/autoapi/nncf/)
  - [Usage examples](https://github.com/openvinotoolkit/nncf/tree/develop/docs/usage)
  - [Notebook tutorials](https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/README.md#model-training)



  - [Key Features](#key-features)
  - [Installation](#installation-guide)
  - [Third-party integration](#third-party-repository-integration)
  - [NNCF Compressed Model Zoo](#nncf-compressed-model-zoo)





  | Compression algorithm                                                                                                                                       | OpenVINO  | PyTorch   | TensorFlow    | ONNX          |
  | :---------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------: | :-------: | :-----------: | :-----------: |
  | [Post-Training Quantization](https://github.com/openvinotoolkit/nncf/blob/develop/docs/usage/post_training_compression/post_training_quantization/Usage.md) | Supported | Supported | Supported     | Supported     |
  | [Weight Compression](https://github.com/openvinotoolkit/nncf/blob/develop/docs/usage/post_training_compression/weights_compression/Usage.md)                | Supported | Supported | Not supported | Not supported |
  | [Activation Sparsity](https://github.com/openvinotoolkit/nncf/blob/develop/nncf/experimental/torch/sparsify_activations/ActivationSparsity.md)              | Not supported | Experimental |Not supported| Not supported |



  | Compression algorithm                                                                                                                                                                         | PyTorch      | TensorFlow    |
  | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------: | :-----------: |
  | [Quantization Aware Training](https://github.com/openvinotoolkit/nncf/blob/develop/docs/usage/training_time_compression/quantization_aware_training/Usage.md)                                 | Supported    | Supported     |
  | [Mixed-Precision Quantization](https://github.com/openvinotoolkit/nncf/blob/develop/docs/usage/training_time_compression/other_algorithms/LegacyQuantization.md#mixed-precision-quantization) | Supported    | Not supported |
  | [Sparsity](https://github.com/openvinotoolkit/nncf/blob/develop/docs/usage/training_time_compression/other_algorithms/Sparsity.md)                                                            | Supported    | Supported     |
  | [Filter pruning](https://github.com/openvinotoolkit/nncf/blob/develop/docs/usage/training_time_compression/other_algorithms/Pruning.md)                                                       | Supported    | Supported     |
  | [Movement pruning](https://github.com/openvinotoolkit/nncf/blob/develop/nncf/experimental/torch/sparsity/movement/MovementSparsity.md)                                                        | Experimental | Not supported |

  - Automatic, configurable model graph transformation to obtain the compressed
    model.
    > **NOTE**: Limited support for TensorFlow models. Only models created using
      Sequential or Keras Functional API are supported.
  - Common interface for compression methods.
  - GPU-accelerated layers for faster compressed model fine-tuning.
  - Distributed training support.
  - Git patch for prominent third-party repository
    ([huggingface-transformers](https://github.com/huggingface/transformers))
    demonstrating the process of integrating NNCF into custom training pipelines.
  - Seamless combination of pruning, sparsity, and quantization algorithms. Refer
    to [optimum-intel](https://github.com/huggingface/optimum-intel/tree/main/examples/openvino)
    for examples of joint (movement) pruning, quantization, and distillation
    (JPQD), end-to-end from NNCF optimization to compressed OpenVINO IR.
  - Exporting PyTorch compressed models to ONNX\* checkpoints and TensorFlow
    compressed models to SavedModel or Frozen Graph format, ready to use with
    [OpenVINO&trade; toolkit](https://docs.openvino.ai).
  - Support for [Accuracy-Aware model training](https://github.com/openvinotoolkit/nncf/blob/develop/docs/usage/training_time_compression/other_algorithms/Usage.md#accuracy-aware-model-training)
    pipelines via the [Adaptive Compression Level Training](https://github.com/openvinotoolkit/nncf/blob/develop/docs/accuracy_aware_model_training/AdaptiveCompressionLevelTraining.md)
    and [Early Exit Training](https://github.com/openvinotoolkit/nncf/blob/develop/docs/accuracy_aware_model_training/EarlyExitTraining.md).



  NNCF can be installed as a regular PyPI package:

  ```bash
  pip install nncf
  ```

  For detailed installation instructions, refer to the
  [Installation](https://github.com/openvinotoolkit/nncf/blob/develop/docs/Installation.md) guide.



  - Ubuntu 18.04 or later (64-bit)
  - Python 3.9 or later
  - Supported frameworks:
    - PyTorch >=2.2, <2.5
    - TensorFlow >=2.8.4, <=2.15.1
    - ONNX ==1.16.0
    - OpenVINO >=2022.3.0



  NNCF may be easily integrated into training/evaluation pipelines of third-party
  repositories.

  - [OpenVINO Training Extensions](https://github.com/openvinotoolkit/training_extensions)

    NNCF is integrated into OpenVINO Training Extensions as a model optimization
    backend. You can train, optimize, and export new models based on available
    model templates as well as run the exported models with OpenVINO.

  - [HuggingFace Optimum Intel](https://huggingface.co/docs/optimum/intel/optimization_ov)

    NNCF is used as a compression backend within the renowned `transformers`
    repository in HuggingFace Optimum Intel.



  A list of models and compression results for them can be found at our
  [NNCF Model Zoo page](https://github.com/openvinotoolkit/nncf/blob/develop/docs/ModelZoo.md).



  ```bi
  @article{kozlov2020neural,
      title =   {Neural network compression framework for fast model inference},
      author =  {Kozlov, Alexander and Lazarevich, Ivan and Shamporov, Vasily and Lyalyushkin, Nikolay and Gorbachev, Yury},
      journal = {arXiv preprint arXiv:2002.08679},
      year =    {2020}
  }
  ```



  NNCF as part of the OpenVINO™ toolkit collects anonymous usage data for the
  purpose of improving OpenVINO™ tools. You can opt-out at any time by running
  the following command in the Python environment where you have NNCF installed:

  `opt_in_out --opt_out`

  More information available on [OpenVINO telemetry](https://docs.openvino.ai/nightly/about-openvino/additional-resources/telemetry.html).


pkgId: d4df2f11206b3ebdb263167ab158ef7b3b4f2886837b3394e907f85bf2e7bc05
name: python-nnlite-help
arch: noarch
version: 0.0.2
epoch: 0
release: 1
summary: Development documents and examples for nnlite
url: https://github.com/huangyh09/nnlite
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nnlite-0.0.2-1.src.rpm
location_href: Packages/python-nnlite-help-0.0.2-1.noarch.rpm
checksum_type: sha256
description:
  A light toolbox with utilities and wrappers for Neural Network Models




  ```

  pip install -U nnlite


  pip install -U git+https://github.com/huangyh09/nnlite
  ```



  ```python
  from nnlite import NNWrapper
  from functools import partial

  torch.manual_seed(0)
  dev = 'cuda:0' if torch.cuda.is_available() else 'cpu'


  model = nnwrapper.models.VAE_base(1838, 32, hidden_dims=[64], device=dev)
  criterion = partial(nnwrapper.models.Loss_VAE_Gaussian, beta=1e-3)
  optimizer = torch.optim.Adam(model.parameters(), lr=1e-3, weight_decay=0.95)


  my_wrapper = NNWrapper(model, criterion, optimizer, device=dev)
  my_wrapper.fit(train_loader, epoch=3000, validation_loader=None, verbose=False)
  my_wrapper.predict(test_loader)

  plt.plot(my_wrapper.train_losses)
  ```



  See the [examples](./examples) folder, including
  * CNN-1D: [CamoTSS-CNN-demo.ipynb](./examples/CamoTSS-CNN-demo.ipynb)
  * VAE for 3K PBMC: [PBMC3K_VAE.ipynb](./examples/PBMC3K_VAE.ipynb)
  * and more.


pkgId: 2480c2a8c1f3b21beba4e642f13b0dfe9ba2ee4f94d0565b3eef466be37e3054
name: python-nnthvn-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for nnthvn
url: https://github.com/NeonitTHeav3n/nnthvn
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nnthvn-0.1.0-1.src.rpm
location_href: Packages/python-nnthvn-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  `nnthvn` вЂ” СЌС‚Рѕ РїСЂРѕСЃС‚Р°СЏ Р±РёР±Р»РёРѕС‚РµРєР° РґР»СЏ СЂР°Р±РѕС‚С‹ СЃ С‡РёСЃР»Р°РјРё Рё СЃС‚СЂРѕРєР°РјРё.


  ```bash
  pip install nnthvn


pkgId: 681de45a6e3169765a92e4bb9d1aa33924bddda6aa4b062f53a73c90c058597e
name: python-no-vtf-help
arch: noarch
version: 5.1.0
epoch: 0
release: 1
summary: Development documents and examples for no-vtf
url: https://git.sr.ht/~b5327157/no_vtf
rpm_license: GPL-3.0-only
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-no-vtf-5.1.0-1.src.rpm
location_href: Packages/python-no-vtf-help-5.1.0-1.noarch.rpm
checksum_type: sha256
description:
  ⌂&thinsp;[**Project pages**](https://sr.ht/~b5327157/no_vtf/sources)&nbsp;&nbsp;
  \#&thinsp;[**Source code**](https://git.sr.ht/~b5327157/no_vtf/tree)&nbsp;&nbsp;
  \~&thinsp;[**Changelog**](https://git.sr.ht/~b5327157/no_vtf/refs)&nbsp;&nbsp;
  \>&thinsp;[**Mailing list**](https://lists.sr.ht/~b5327157/no_vtf)&nbsp;&nbsp;
  \+&thinsp;[**Ticket tracker**](https://todo.sr.ht/~b5327157/no_vtf)&nbsp;&nbsp;


pkgId: 3f54e907e6f1709ccc8eb296f83a0a9f58571c3b3d0cc4979580f9ec10aafed2
name: python-nocobase-api-sdk-help
arch: noarch
version: 1.0.0
epoch: 0
release: 1
summary: Development documents and examples for nocobase-api-sdk
url: https://pypi.org/project/nocobase-api-sdk/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nocobase-api-sdk-1.0.0-1.src.rpm
location_href: Packages/python-nocobase-api-sdk-help-1.0.0-1.noarch.rpm
checksum_type: sha256
description:
  ![Version](https://img.shields.io/badge/Version-v1.0.0-green)
  ![Python Version](https://img.shields.io/badge/Python-%E2%89%A53.9-blue)

  `nocobase-api-sdk` 是一个基于 Python 的 SDK，用于集成 nocobase 的 API 能力。


  ```bash
  pip install nocobase-api-sdk
  ```


  - 封装了 nocobase 的 API 接口，提供更简单快捷的操作方式


pkgId: 47525c809326399f265d38d1eb11205df268bd9672788f58ee5ac52a2beeaaf4
name: python-nodanapy-help
arch: noarch
version: 1.0.2
epoch: 0
release: 1
summary: Development documents and examples for nodanapy
url: https://github.com/EverJRamosI
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nodanapy-1.0.2-1.src.rpm
location_href: Packages/python-nodanapy-help-1.0.2-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center" rol="img">
  <img src="https://raw.githubusercontent.com/EverJRamosI/nodanapy/main/docs/images/NODANAPY.png" width="250">
  </div>
  <br>

  ![stars](https://img.shields.io/github/stars/EverJRamosI/nodanapy)
  ![forks](https://img.shields.io/github/forks/EverJRamosI/nodanapy)
  ![watchers](https://img.shields.io/github/watchers/EverJRamosI/nodanapy)
  ![issues](https://img.shields.io/github/issues/EverJRamosI/nodanapy)
  ![license](https://img.shields.io/github/license/EverJRamosI/nodanapy)



  NodAnaPy is the fundamental package petroleum, in this package you will find to determine the Well Nodal Analysis for oil and gas.



  - [Installation](#installation)
  - [Usage](#usage)
  - [Theory](#theory)
  - [Dependencies](#dependencies)
  - [License](#license)


  You can install [NodAnaPy](https://github.com/EverJRamosI/nodanapy/tree/main/nodanapy) using pip:
  ```bash
  pip install nodanapy
  ```


  Here is a quick example of how to use NodAnaPy to calculate the optimal rate of an oil well.

  **INPUT**
  ```python
  import matplotlib.pyplot as plt
  from nodanapy import WellNAOilR

  pr = 4500 # reservoir pressure
  tr = 140 + 460 # reservoir temperature
  ph = 140 # wellhead pressure
  th = 84 + 460 # wellhead temperature
  pb = 1500 # bubble pressure

  well = WellNAOilR(ph, th, pr, tr, pb)

  ipr_well = well.ipr
  vlp_well = well.vlp

  fig, (ax_ql, ax_qg, ax_qo) = plt.subplots(3, 1)

  ax_ql.set_xlabel('Ql(bbl/d)')
  ax_ql.set_ylabel('Pwf(psia)')
  ax_ql.plot(ipr_well.Ql, ipr_well.Pwf)
  ax_ql.plot(vlp_well.Ql, vlp_well.Pwf)

  ax_qg.set_xlabel('Qg(Mscf/d)')
  ax_qg.set_ylabel('Pwf(psia)')
  ax_qg.plot(ipr_well.Qg, ipr_well.Pwf)
  ax_qg.plot(vlp_well.Qg, vlp_well.Pwf)

  ax_qo.set_xlabel('Qo(bbl/d)')
  ax_qo.set_ylabel('Pwf(psia)')
  ax_qo.plot(ipr_well.Qo, ipr_well.Pwf)
  ax_qo.plot(vlp_well.Qo, vlp_well.Pwf)
  ```
  **OUTPUT**

  ![Well Nodal Analysis](https://raw.githubusercontent.com/EverJRamosI/nodanapy/main/docs/images/Figure.png)

  > Ql(bbl/d) vs Pwf(psia); Qg(Mscf/d) vs Pwf(psia); Qo(bbl/d) vs Pwf(psia)


  it will be to calculate inflow performance relationship (IPR) and vertical lift performance (VLP) curves for oil and gas wells. In addition, it will be to determine the holdup liquid well.

  <details>
  <summary>Click to expand the theory section.</summary>


  The curve is calculated using the different correlations, for example:
  - Oil
    - Vogel
    - Fetkovich
  - Gas
    - LIT
    - Darcy


  The curve is calculated using the different correlations, for example:
  - Oil
    - Hagedorn Brown
    - Beggs and Brill
  - Gas
    - Gray

  </details>


  NodAnaPy requires the following Python (=>3.12) libraries:
  1. PetProPy
  2. Numpy
  3. Scipy
  4. Pandas

  ```bash
  pip install -r requirements.txt
  ```


  This project is licensed under the GNU Lesser General Public License v3.0 - see the [LICENSE](https://github.com/EverJRamosI/nodanapy/blob/main/LICENSE) file for details.


  For detailed API documentation, please refer to the [official documentation](https://github.com/EverJRamosI/nodanapy)

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


pkgId: c493e96fb2595301a6c653ac09fc46047656385639851e5d54c2d39e3ff46423
name: python-nodejs-wheel-help
arch: noarch
version: 22.12.0
epoch: 0
release: 1
summary: Development documents and examples for nodejs-wheel
url: https://pypi.org/project/nodejs-wheel/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nodejs-wheel-22.12.0-1.src.rpm
location_href: Packages/python-nodejs-wheel-help-22.12.0-1.noarch.rpm
checksum_type: sha256
description:
  [![Pypi version](https://img.shields.io/pypi/v/nodejs-wheel?label=nodejs-wheel&logo=pypi)](https://pypi.org/project/nodejs-wheel/)
  [![Pypi downloads](https://img.shields.io/pypi/dm/nodejs-wheel)](https://pypi.org/project/nodejs-wheel/)
  [![Pypi downloads](https://img.shields.io/pypi/dw/nodejs-wheel)](https://pypi.org/project/nodejs-wheel/)
  [![Pypi downloads](https://img.shields.io/pypi/dd/nodejs-wheel)](https://pypi.org/project/nodejs-wheel/)

  `nodejs-wheel` is an unofficial repository to distribute Node.js prebuilt wheels through PyPI using

  ```sh
  pip install nodejs-wheel
  ```

  *New in v20.13.0*: If you don't need command line interface (CLI), install only `nodejs-wheel-binaries`, which is a direct dependency of `nodejs-wheel`.

  [![Pypi version](https://img.shields.io/pypi/v/nodejs-wheel-binaries?label=nodejs-wheel-binaries&logo=pypi)](https://pypi.org/project/nodejs-wheel-binaries/)
  [![Pypi downloads](https://img.shields.io/pypi/dm/nodejs-wheel-binaries)](https://pypi.org/project/nodejs-wheel-binaries/)
  [![Pypi downloads](https://img.shields.io/pypi/dw/nodejs-wheel-binaries)](https://pypi.org/project/nodejs-wheel-binaries/)
  [![Pypi downloads](https://img.shields.io/pypi/dd/nodejs-wheel-binaries)](https://pypi.org/project/nodejs-wheel-binaries/)

  ```sh
  pip install nodejs-wheel-binaries
  ```

  The package requires Python 3.7 and above.

  The project is powered by [scikit-build-core](https://github.com/scikit-build/scikit-build-core) and [cibuildwheel](https://github.com/pypa/cibuildwheel).



  | OS      | Arch    | Bit | Conditions     | New in      |
  | ------- | ------- | --- | -------------- | ----------- |
  | Linux   | x86_64  | 64  | glibc >= 2.17  | v18.18.0    |
  | Linux   | x86_64  | 64  | musl >= 1.2    | v20.14.0    |
  | Linux   | aarch64 | 64  | glibc >= 2.17  | v20.13.0    |
  | macOS   | x86_64  | 64  | >= macOS-11    | v18.18.0    |
  | macOS   | arm64   | 64  | >= macOS-11    | v20.11.1    |
  | Windows | amd64   | 64  |                | v18.18.0    |
  | Windows | arm64   | 64  |                | v22.12.0    |





  Only available in the `nodejs-wheel` package.

  ```sh
  node -h
  npm -h
  npx -h
  ```



  *New in v20.13.0*.

  Only support `node`.

  ```sh
  python -m nodejs_wheel --version
  ```



  *New in v20.13.0*.

  ```py
  from nodejs_wheel import (
      node,
      npm,
      npx,
  )

  return_code0 = node(["--version"])
  return_code1 = npm(["--version"])
  return_code2 = npx(["--version"])
  ```

  *New in v20.13.1*: pass `return_completed_process=True` to get `subprocess.CompletedProcess` instead of `int`.

  ```py
  completed_process0 = node(["--version"], return_completed_process=True)
  completed_process1 = npm(["--version"], return_completed_process=True)
  completed_process2 = npx(["--version"], return_completed_process=True)
  ```



  `nodejs-wheel` distributed under the same MIT [license](LICENSE) as [Node.js](https://github.com/nodejs/node).



  The project is inspired by many other similiar projects:

  - [samwillis/nodejs-pypi](https://github.com/samwillis/nodejs-pypi): The package redistribute the official Node.js binaraies to PyPI. However, the offical binary for Nodejs 18 requires GLIBC 2.28, making it unsupported in [manylinux2014](https://github.com/pypa/manylinux) images. Besides, the wheel tag is wrong.
  - [sbwml/node-latest-centos](https://github.com/sbwml/node-latest-centos): Use GitHub Actions to build Node.js in CentOS 7, but is not related to Python or PyPI.
  - [scikit-build/cmake-python-distributions](https://github.com/scikit-build/cmake-python-distributions): Use cibuildwheel and scikit-build to build CMake and distribute CMake in PyPI.

rpm_license:
  Copyright 2023 Jinzhe Zeng  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: d9e7dd7c8ba9e2e5805326709cf66fb74ca35f4c246038f10dfea853cf9fd8e2
name: python-nomad-camels-driver-agilent-34970-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for nomad-camels-driver-agilent-34970
url: https://pypi.org/project/nomad-camels-driver-agilent-34970/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nomad-camels-driver-agilent-34970-0.1.0-1.src.rpm
location_href: Packages/python-nomad-camels-driver-agilent-34970-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  Driver for communicating with a Agilent 34970 series switch matrix written for the measurement software [NOMAD-CAMELS](https://fau-lap.github.io/NOMAD-CAMELS/).


  (De-)Activate (i.e. electrically open/close) connections of the switch matrix modules. Read the integrated DMM. Configure the DMM reading, most integrated. If your use case is not integrated yet, contact us at [nomad-camels@fau.de](mailto:nomad-camels@fau.de).



  For more information and documentation visit [this page](https://fau-lap.github.io/NOMAD-CAMELS/doc/instruments/instruments.html).


pkgId: fb48936da4270177ce06aacf74287427da597ed37cbd58b99d74c0adb01f2027
name: python-nomad-camels-driver-agilent-e363x-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for nomad-camels-driver-agilent-e363x
url: https://pypi.org/project/nomad-camels-driver-agilent-e363x/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nomad-camels-driver-agilent-e363x-0.1.0-1.src.rpm
location_href: Packages/python-nomad-camels-driver-agilent-e363x-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  Driver for communicating with a Agilent E363X series power supply written for the measurement software [NOMAD-CAMELS](https://fau-lap.github.io/NOMAD-CAMELS/).


  Set voltage and current limit for up to all three channels.



  For more information and documentation visit [this page](https://fau-lap.github.io/NOMAD-CAMELS/doc/instruments/instruments.html).


pkgId: a4c4de91ec05f7efaf52d054c4247b2a8771c75f44f15ee176156d41ad01c059
name: python-nomad-camels-driver-andor-shamrock-500-help
arch: noarch
version: 0.1.3
epoch: 0
release: 1
summary: Development documents and examples for nomad-camels-driver-andor-shamrock-500
url: https://pypi.org/project/nomad-camels-driver-andor-shamrock-500/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nomad-camels-driver-andor-shamrock-500-0.1.3-1.src.rpm
location_href: Packages/python-nomad-camels-driver-andor-shamrock-500-help-0.1.3-1.noarch.rpm
checksum_type: sha256
description:
  This package provides a driver of the Andor Shamrock 500 spectrometer for the measurement software [NOMAD CAMELS](https://fau-lap.github.io/NOMAD-CAMELS/).\
  It uses [pylablib](https://pylablib.readthedocs.io/en/latest/devices/AndorShamrock.html) for communication.




  For more information and documentation visit the [CAMELS documentation](https://fau-lap.github.io/NOMAD-CAMELS/doc/instruments/instruments.html).





  Small bugfix for UI on first start


  Fixed closing the manual control on error so it can be restarted without restarting CAMELS.


pkgId: b4c9999fa940a3061e0823bf6bd516fa1aeb1a15f3674d8fc7b89acaa5884599
name: python-nomad-camels-driver-keysight-e5270b-help
arch: noarch
version: 0.1.2
epoch: 0
release: 1
summary: Development documents and examples for nomad-camels-driver-keysight-e5270b
url: https://pypi.org/project/nomad-camels-driver-keysight-e5270b/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nomad-camels-driver-keysight-e5270b-0.1.2-1.src.rpm
location_href: Packages/python-nomad-camels-driver-keysight-e5270b-help-0.1.2-1.noarch.rpm
checksum_type: sha256
description:
  Driver of the Keysight E5270B written for the measurement software [NOMAD-CAMELS](https://fau-lap.github.io/NOMAD-CAMELS/).


  This driver provides voltage and current setting / reading for the available channels of the instrument. The channels can be enabled/disabled and configurations like compliance levels and measurement ranges can be set.



  For more information and documentation visit the NOMAD-CAMELS [documentation](https://fau-lap.github.io/NOMAD-CAMELS/doc/instruments/instruments.html).





  Fixes:
  - UI improvement for first use


pkgId: bf7f4009d9f06b9441441577b32316bf57dd52670ad3fa680544aa2f7f385bcb
name: python-nomad-camels-driver-leybold-c-move-1250-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for nomad-camels-driver-leybold-c-move-1250
url: https://pypi.org/project/nomad-camels-driver-leybold-c-move-1250/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nomad-camels-driver-leybold-c-move-1250-0.1.0-1.src.rpm
location_href: Packages/python-nomad-camels-driver-leybold-c-move-1250-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  Driver for communicating with a Leybold C-Move written for the measurement software [NOMAD-CAMELS](https://fau-lap.github.io/NOMAD-CAMELS/).


  Set the flow value. Also supports interpolation for a different range of the flow value. To change the interpolation, go into the _ophyd.py file.



  For more information and documentation visit [this page](https://fau-lap.github.io/NOMAD-CAMELS/doc/instruments/instruments.html).


pkgId: 7fa780d00c1c559a677bb541f0ca9d2ccb2699d27f09efec4154931e0b564fc9
name: python-nomad-camels-driver-voltcraft-pps-help
arch: noarch
version: 0.1.2
epoch: 0
release: 1
summary: Development documents and examples for nomad-camels-driver-voltcraft-pps
url: https://pypi.org/project/nomad-camels-driver-voltcraft-pps/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nomad-camels-driver-voltcraft-pps-0.1.2-1.src.rpm
location_href: Packages/python-nomad-camels-driver-voltcraft-pps-help-0.1.2-1.noarch.rpm
checksum_type: sha256
description:
  Driver for communicating with a Voltcraft PPS power supply written for the measurement software [NOMAD-CAMELS](https://fau-lap.github.io/NOMAD-CAMELS/).

  Implements the `VISA_Device`, `VISA_Signal_RO`, and `VISA_Signal` classes used in many device drivers.


  Setting voltage and current. By giving a resistance value, one can also set a power instead of a voltage (by a given maximum current value).



  For more information and documentation visit [this page](https://fau-lap.github.io/NOMAD-CAMELS/doc/instruments/instruments.html).


pkgId: af96e5171a23c1f12d940a5c73fd8842475986f0568ff9801e8e64c72a4cc780
name: python-nomad-camels-driver-voltcraft-psp-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for nomad-camels-driver-voltcraft-psp
url: https://pypi.org/project/nomad-camels-driver-voltcraft-psp/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nomad-camels-driver-voltcraft-psp-0.1.0-1.src.rpm
location_href: Packages/python-nomad-camels-driver-voltcraft-psp-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  Driver for communicating with a Voltcraft PSP power supply written for the measurement software [NOMAD-CAMELS](https://fau-lap.github.io/NOMAD-CAMELS/).




  For more information and documentation visit [this page](https://fau-lap.github.io/NOMAD-CAMELS/doc/instruments/instruments.html).


pkgId: 2bb0026fa84ff4b8f2c3e31f6590fbbe59f25f72057ff66caf0d6c26fdb9c60f
name: python-nomad-plugins-help
arch: noarch
version: 0.1.3
epoch: 0
release: 1
summary: Development documents and examples for nomad-plugins
url: https://pypi.org/project/nomad-plugins/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nomad-plugins-0.1.3-1.src.rpm
location_href: Packages/python-nomad-plugins-help-0.1.3-1.noarch.rpm
checksum_type: sha256
description:
  A plugin for discovering other plugins.

  This `nomad` plugin was generated with `Cookiecutter` along with `@nomad`'s [`cookiecutter-nomad-plugin`](https://github.com/FAIRmat-NFDI/cookiecutter-nomad-plugin) template.




  If you want to develop locally this plugin, clone the project and in the plugin folder, create a virtual environment (you can use Python 3.9, 3.10, or 3.11):
  ```sh
  git clone https://github.com/hampusnasstrom/nomad-plugins.git
  cd nomad-plugins
  python3.11 -m venv .pyenv
  . .pyenv/bin/activate
  ```

  Make sure to have `pip` upgraded:
  ```sh
  pip install --upgrade pip
  ```

  We recommend installing `uv` for fast pip installation of the packages:
  ```sh
  pip install uv
  ```

  Install the `nomad-lab` package:
  ```sh
  uv pip install '.[dev]' --index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple
  ```

  **Note!**
  Until we have an official pypi NOMAD release with the plugins functionality make
  sure to include NOMAD's internal package registry (via `--index-url` in the above command).

  The plugin is still under development. If you would like to contribute, install the package in editable mode (with the added `-e` flag):
  ```sh
  uv pip install -e '.[dev]' --index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple
  ```




  You can run locally the tests:
  ```sh
  python -m pytest -sv tests
  ```

  where the `-s` and `-v` options toggle the output verbosity.

  Our CI/CD pipeline produces a more comprehensive test report using the `pytest-cov` package. You can generate a local coverage report:
  ```sh
  uv pip install pytest-cov
  python -m pytest --cov=src tests
  ```



  We use [Ruff](https://docs.astral.sh/ruff/) for linting and formatting the code. Ruff auto-formatting is also a part of the GitHub workflow actions. You can run locally:
  ```sh
  ruff check .
  ruff format . --check
  ```




  For interactive debugging of the tests, use `pytest` with the `--pdb` flag. We recommend using an IDE for debugging, e.g., _VSCode_. If that is the case, add the following snippet to your `.vscode/launch.json`:
  ```json
  {
    "configurations": [
        {
          "name": "<descriptive tag>",
          "type": "debugpy",
          "request": "launch",
          "cwd": "${workspaceFolder}",
          "program": "${workspaceFolder}/.pyenv/bin/pytest",
          "justMyCode": true,
          "env": {
              "_PYTEST_RAISE": "1"
          },
          "args": [
              "-sv",
              "--pdb",
              "<path-to-plugin-tests>",
          ]
      }
    ]
  }
  ```

  where `<path-to-plugin-tests>` must be changed to the local path to the test module to be debugged.

  The settings configuration file `.vscode/settings.json` automatically applies the linting and formatting upon saving the modified file.




  To view the documentation locally, install the related packages using:
  ```sh
  uv pip install -r requirements_docs.txt
  ```

  Run the documentation server:
  ```sh
  mkdocs serve
  ```




  Currently, NOMAD has two distinct flavors that are relevant depending on your role as an user:
  1. [A NOMAD Oasis](#adding-this-plugin-in-your-nomad-oasis): any user with a NOMAD Oasis instance.
  2. [Local NOMAD installation and the source code of NOMAD](#adding-this-plugin-in-your-local-nomad-installation-and-the-source-code-of-nomad): internal developers.



  Read the [NOMAD plugin documentation](https://nomad-lab.eu/prod/v1/staging/docs/howto/oasis/plugins_install.html) for all details on how to deploy the plugin on your NOMAD instance.



  Modify the text file under `/nomad/default_plugins.txt` and add:
  ```sh
  <other-content-in-default_plugins.txt>
  nomad-plugins==x.y.z
  ```
  where `x.y.z` represents the released version of this plugin.

  Then, go to your NOMAD folder, activate your NOMAD virtual environment and run:
  ```sh
  deactivate
  cd <route-to-NOMAD-folder>/nomad
  source .pyenv/bin/activate
  ./scripts/setup_dev_env.sh
  ```

  Alternatively and only valid for your local NOMAD installation, you can modify `nomad.yaml` to include this plugin, see [NOMAD Oasis - Install plugins](https://nomad-lab.eu/prod/v1/staging/docs/howto/oasis/plugins_install.html).




  The `pyproject.toml` file contains everything that is necessary to turn the project
  into a pip installable python package. Run the python build tool to create a package distribution:

  ```sh
  pip install build
  python -m build --sdist
  ```

  You can install the package with pip:

  ```sh
  pip install dist/nomad-plugins-0.1.0
  ```

  Read more about python packages, `pyproject.toml`, and how to upload packages to PyPI
  on the [PyPI documentation](https://packaging.python.org/en/latest/tutorials/packaging-projects/).




  We use cruft to update the project based on template changes. A `cruft-update.yml` is included in Github workflows to automatically check for updates and create pull requests to apply updates. Follow the [instructions](https://github.blog/changelog/2022-05-03-github-actions-prevent-github-actions-from-creating-and-approving-pull-requests/) on how to enable Github Actions to create pull requests.

  To run the check for updates locally, follow the instructions on [`cruft` website](https://cruft.github.io/cruft/#updating-a-project).



  | Name | E-mail     |
  |------|------------|
  | Hampus Näsström | [hampus.naesstroem@physik.hu-berlin.de](mailto:hampus.naesstroem@physik.hu-berlin.de)

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


pkgId: a92604f9306e6512dc8af14de42b355def24b5e26f0b140babe7e9690ea7fe4c
name: python-nomad-schema-plugin-simulation-workflow-help
arch: noarch
version: 1.0.6
epoch: 0
release: 1
summary: Development documents and examples for nomad-schema-plugin-simulation-workflow
url: https://pypi.org/project/nomad-schema-plugin-simulation-workflow/
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nomad-schema-plugin-simulation-workflow-1.0.6-1.src.rpm
location_href: Packages/python-nomad-schema-plugin-simulation-workflow-help-1.0.6-1.noarch.rpm
checksum_type: sha256
description:
  [![DOI](https://zenodo.org/badge/744481756.svg)](https://zenodo.org/doi/10.5281/zenodo.13844195)

  This is a collection of schemas for various types of simulation workflows.


  Ladines, A.N., Daelman, N., Ghiringhelli, L.M., Ilyas, A., Pizarro, Rudzinski, J.F., & Scheidgen, M NOMAD Schema Plugin Simulation Workflow [Computer software]. https://zenodo.org/doi/10.5281/zenodo.13844195


pkgId: d99e6c52e09dd99e64179d2a48ff0b6dbdfc09404dfdab352764fd0db92be3cb
name: python-nominal-help
arch: noarch
version: 1.20.0
epoch: 0
release: 1
summary: Development documents and examples for nominal
url: https://nominal.io
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nominal-1.20.0-1.src.rpm
location_href: Packages/python-nominal-help-1.20.0-1.noarch.rpm
checksum_type: sha256
description:
  Nominal Python SDK for test data, storage, and compute.


  View on [docs.nominal.io](https://docs.nominal.io/).


  ```sh
  pip install nominal
  ```



  ```py
  import nominal.nominal as nm
  ```

  See examples in the [documentation](https://docs.nominal.io/python/quickstart).


pkgId: 611450f3297b50193ca92baa87d886ed4d8f41feed0c2c86bd1b4effc9187f48
name: python-nomnomdata-auth-help
arch: noarch
version: 3.0.1
epoch: 0
release: 1
summary: Development documents and examples for nomnomdata-auth
url: https://gitlab.com/nomnomdata/tools/nomnomdata-auth
rpm_license: LGPL-3.0-only
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nomnomdata-auth-3.0.1-1.src.rpm
location_href: Packages/python-nomnomdata-auth-help-3.0.1-1.noarch.rpm
checksum_type: sha256
description:
  Tiny library that contains KeyAuth, a requests library authorizer that signs requests with a secret key.


pkgId: 51efe3af1f87c9c805d6892bece65465935d209e6047c6ca92779d97b7521ce3
name: python-nomnomdata-tools-engine-help
arch: noarch
version: 2.0.0
epoch: 0
release: 1
summary: Development documents and examples for nomnomdata-tools-engine
url: https://gitlab.com/nomnomdata/tools/nomnomdata-tools-engine
rpm_license: LGPL-3.0-only
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nomnomdata-tools-engine-2.0.0-1.src.rpm
location_href: Packages/python-nomnomdata-tools-engine-help-2.0.0-1.noarch.rpm
checksum_type: sha256
description:
  `pip install nomnomdata-tools-engine nomnomdata-engine`



  Instructions for how to create, build and deploy a new app available here:

  <https://support.nomnomdata.com/portal/en/kb/articles/creating-your-first-nnd-app>

  Additional toolkit information available here:

  <http://developer.nomnomdata.com/>


pkgId: b14eb90276a65e84453d8aa9af53ed7de5fe91f54f29755221aa2004346a7162
name: python-nondeterminism-help
arch: noarch
version: 3.1.1
epoch: 0
release: 1
summary: Development documents and examples for nondeterminism
url: https://pypi.org/project/nondeterminism/
rpm_license: LICENSE.md
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nondeterminism-3.1.1-1.src.rpm
location_href: Packages/python-nondeterminism-help-3.1.1-1.noarch.rpm
checksum_type: sha256
description:
  > 🗞️ **News**
  >
  > 16 December 2024: `nondeterminism` 3.1.1 has been [released](https://github.com/aeporreca/nondeterminism/releases)! You can install it with `pip install nondeterminism`.

  A Python library for writing nondeterministic algorithms (as in [nondeterministic Turing machines](https://en.wikipedia.org/wiki/Non-deterministic_Turing_machine), not directly related to randomised algorithms or to algorithms that just have inconsistent output due to bugs).

  This library has been mostly designed for two purposes:

  - as a teaching aid, in order to show that yeah, nondeterminism _per se_ doesn’t really exist, but you can still pretend it does[^abstraction], and students can get machine feedback when designing nondeterministic algorithms, instead of just writing pseudocode and crossing fingers;
  - prototyping of nondeterministic algorithms for computer science research (which is actually how this project was born).

  [^abstraction]: The same way that literally every day we pretend, with a straight face too, that `while` loops (or anything related to structured programming) do exist, even though our machines can only do conditional jumps. It’s just that nondeterminism is a less commonly used abstraction.

  This library is not really suitable for production code; its implementation is based on [`fork(2)`](https://en.wikipedia.org/wiki/Fork_(system_call)), so it currently only runs on Unix variants (including Linux, macOS and, I suppose, Windows Subsystem for Linux) and is very slow for any nontrivial practical purpose.[^prolog] On the other hand, the implementation itself might also be of pedagogical interest as a nontrivial example of multiprocessing with shared memory.

  [^prolog]: Notice that practical nondeterministic programming languages are actually available if you need them. The one I’m most familiar with is [Prolog](https://en.wikipedia.org/wiki/Prolog) which, by an amazing coincidence, was conceived by Colmerauer and Roussel precisely here in Marseille on the Luminy campus, where I ([AEP](https://aeporreca.org)) currently work. Prolog is amazing (and one of the inspirations behind this library), but its execution model is harder to reason about in terms of computational complexity (or, in any case, it is less familiar) than the usual imperative execution model. Prolog is also the subject of [the second-best joke about programming languages](http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wrong.html). Besides Prolog, other things of interest in Marseille starting with P are [pastis](https://en.wikipedia.org/wiki/Pastis) and [panisses](https://fr.wikipedia.org/wiki/Panisse).

  > ⚠️ **Warning**
  >
  > Although this library does exploit multiprocessing, it is not multiprocessing-safe itself! Don’t run multiple nondeterministic functions in parallel (although you _can_ call a nondeterministic function from another nondeterministic function, [oracle-like](https://en.wikipedia.org/wiki/Oracle_machine)).




  - [Installation](#installation)
  - [License](#license)
  - [Basic usage](#basic-usage)
    - [A nontrivial example: solving SAT](#a-nontrivial-example-solving-sat)
    - [Who exactly must be `@nondeterministic`?](#who-exactly-must-be-nondeterministic)
    - [Guessing non-`bool` values](#guessing-non-bool-values)
    - [Returning non-`bool` values](#returning-non-bool-values)
    - [A remark about infinite computations](#a-remark-about-infinite-computations)
  - [More types of nondeterminism](#more-types-of-nondeterminism)
    - [Conondeterminism](#conondeterminism)
    - [Alternation](#alternation)
    - [Counting](#counting)
    - [Majority](#majority)
    - [Optimisation](#optimisation)
    - [Custom modes](#custom-modes)
  - [Other examples](#other-examples)




  You can install this library via `pip install nondeterminism`. For the most recent changes, please check the [Git repository](https://github.com/aeporreca/nondeterminism), where you can also find the [bug tracker](https://github.com/aeporreca/nondeterminism/issues).




  In order to promote open research and teaching, the `nondeterminism` library is distributed under the [GNU AGPL](https://www.gnu.org/licenses/agpl-3.0.en.html) license.




  You declare a function nondeterministic by using the `@nondeterministic` decorator and call `guess` inside it (or in a function called by it) in order to get a `True` or a `False`. Which one? Well, `guess` _wants_ your nondeterministic function to succeed, so it will return a result that allows that, if it is possible at all.

  As a trivial example, consider this:

  ```python
  from nondeterminism import *

  @nondeterministic
  def test1():
      x = guess()
      return x
  ```

  The only way for `test` to succeed (i.e., return `True`) is if `x` is `True`, so `guess` will necessarily return `True`:

  ```pycon
  >>> test1()
  True
  ```

  Now consider this slight variation:

  ```python
  from nondeterminism import *

  @nondeterministic
  def test2():
      x = guess()
      return not x
  ```

  In this case, `test2` needs `x` to be `False` in order to succeed, and `guess` will happily oblige:

  ```pycon
  >>> test2()
  True
  ```

  However, consider this third trivial example:

  ```python
  from nondeterminism import *

  @nondeterministic
  def test3():
      x = guess()
      return x and not x
  ```

  Here `guess` cannot make `test3` succeed, since `x and not x` is a contradiction. As a consequence, `guess` will return whatever value (the actual value is unspecified) and let `test3` fail:

  ```pycon
  >>> test3()
  False
  ```




  By generalising the previous, trivial examples we can write a [SAT solver](https://en.wikipedia.org/wiki/SAT_solver) in just a few lines of code:

  ```python
  from inspect import signature
  from nondeterminism import *


  def arity(function):
      return len(signature(function).parameters)

  @nondeterministic
  def is_satisfiable(formula):
      n = arity(formula)
      x = tuple(guess() for i in range(n))
      return formula(*x)
  ```

  The `is_satisfiable` function makes one guess per variable, then evaluates the input formula on the truth assignment obtained this way:

  ```pycon
  >>> def phi(x, y):
  ...     return (x or y) and (x or not y)
  ...
  >>> is_satisfiable(phi)
  True
  >>> def psi(x, y, z):
  ...     return x and not x and z and y
  ...
  >>> is_satisfiable(psi)
  False
  ```

  As a result, `is_satisfiable` returns `True` if and only if there is a satisfying assignment for the variables of `formula`. In other terms, the final result is `True` if and only if one possible computation of `is_satisfiable` (corresponding to a particular sequence of choices made by `guess`) returns `True`.




  The function calling `guess` need not be declared `@nondeterministic` itself, as long as it is called by a `@nondeterministic` function (or by a function called by a `@nondeterministic` function, or so on, recursively).

  For instance, you can rewrite the SAT solver by separating the actual guessing this way, which might even be more readable and reusable:

  ```python
  from inspect import signature
  from nondeterminism import *


  def arity(function):
      return len(signature(function).parameters)

  def guess_assignment(nvars):
      return tuple(guess() for i in range(nvars))

  @nondeterministic
  def is_satisfiable(formula):
      n = arity(formula)
      x = guess_assignment(n)
      return formula(*x)
  ```

  Notice that `guess_assignment` is _not_ declared `@nondeterministic`, while `is_satisfiable` is: it’s the latter function that must return `True` if and only if it has an accepting computation, not `guess_assignment`.

  However, you can _only_ call `guess` from a nondeterministic context, meaning that either the function calling `guess`, or recursively one of the functions calling it, must have been declared `@nondeterministic`. For instance, the following code

  ```python
  from nondeterminism import *

  def test4():
      return guess()
  ```

  produces a `GuessError` at runtime:

  ```pycon
  >>> test4()
  Traceback (most recent call last):
  [...]
  nondeterminism.GuessError: can only guess in a nondeterministic context
  ```




  By default, `guess` returns a `bool` value, either `False` or `True`; but by giving it an optional iterable (such as a `list` or a `set`) as a parameter, you can guess anything you like.

  For instance, the following code solves the [Hamiltonian cycle problem](https://en.wikipedia.org/wiki/Hamiltonian_path_problem) by guessing a permutation of the vertices of the input graph:

  ```python
  @nondeterministic
  def is_hamiltonian(G):
      (V, E) = G
      n = len(V)
      V = V.copy()
      p = []
      while V:
          v = guess(V)
          p.append(v)
          V.remove(v)
      for i in range(n):
          if (p[i], p[(i+1)%n]) not in E:
              return False
      return True
  ```

  This produces:

  ```pycon
  >>> V = {1, 2, 3}
  >>> E = {(1, 3), (3, 1), (3, 2), (2, 1)}
  >>> G = (V, E)
  >>> is_hamiltonian(G)
  True
  ```




  Nondeterministic functions returning `False` or `True` are all fine and dandy, but what if you want to know, e.g., an actual assignment satisfying your formula? Well, you just `return` it!

  ```python
  from inspect import signature
  from nondeterminism import *


  def arity(function):
      return len(signature(function).parameters)

  @nondeterministic
  def satisfy(formula):
      n = arity(formula)
      x = tuple(guess() for i in range(n))
      if formula(*x):
          return x
  ```

  If no satisfying assignment is found, you get `None` (invisible in the Python interpreter) as a result:

  ```pycon
  >>> def phi(x, y):
  ...     return (x or y) and (x or not y)
  ...
  >>> satisfy(phi)
  (True, False)
  >>> def psi(x, y, z):
  ...     return x and not x and z and y
  ...
  >>> satisfy(psi)
  >>>
  ```




  Often nondeterministic algorithms are defined in such a way that even infinite (non-halting) computation paths are allowed, as long as [at least one halting path exists](https://en.wikipedia.org/wiki/Nondeterministic_Turing_machine#Resolution_of_multiple_rules). This is not currently allowed by the `nondeterminism` library: if a sequence of choices leads us to a non-terminating computation, the nondeterministic function will not halt.

  For instance, with the current implementation neither of the following `test5` and `test6` functions halts:

  ```python
  from nondeterminism import *

  @nondeterministic
  def test5():
      while True:
          pass

  @nondeterministic
  def test6():
      halt = guess()
      if halt:
          return True
      else:
          while True:
              pass
  ```

  However, a future version of the `nondeterminism` library _might_ implement [dovetailing](https://en.wikipedia.org/wiki/Dovetailing_(computer_science)) and allow `test6` to halt with a success. (On the other hand, the current behaviour on `test5` is correct, as this function must never halt.)

  > ⚠️ **Warning**
  >
  > If you execute a non-halting nondeterministic function like these (or a very slow one) in the Python interpreter in interactive mode, and you terminate it with a `ctrl-C`, this will probably leave the interpreter in an inconsistent state and you will be forced to restart it.[^restart]

  [^restart]: This is another area where [improvement is needed](https://github.com/aeporreca/nondeterminism/issues/12), if this is possible at all.




  “Classic” nondeterminism as in the previous section allows you to solve all problems in [**NP**](https://en.wikipedia.org/wiki/NP_(complexity)) in (simulated) polynomial time, or the larger nondeterministic classes if you allow more time. The type of guesses we make in this type of algorithms can be called _existential_ or _disjunctive_, since the final result will be a success if and only if at least one of the computation paths is successful.

  The `mode` keyword parameter to `guess` allows us to change the evaluation strategy. The default value of `mode` is `success` (i.e., `guess()` is the same as `guess(mode=success)`), which returns the first non-`None`, non-`False` result if any (or just the first result, if all are `None` or `False`). This is similar to the [`any`](https://docs.python.org/3/library/functions.html#any) Python builtin function, except that it considers values such as `0` and `[]` as successes, and it does not convert successful results to `True`. You can actually use `guess(mode=any)` if you’re only returning `bool` values.




  However, this is just the beginning. The dual of nondeterminism is “conondeterminism”, which uses _universal_ or _conjunctive_ choices. A conondeterministic algorithm is successful if and only if _all_ computation paths are successful; if just one of them fails, then the overall algorithm fails too. The corresponding complexity class is [**coNP**](https://en.wikipedia.org/wiki/Co-NP), assuming polynomial time, and the corresponding `mode` for guess is [`all`](https://docs.python.org/3/library/functions.html#all) (i.e., `guess(mode=all)`).

  A classic example of conondeterministic algorithm is primality testing[^primes]: assuming `n >= 2`, you guess a nontrivial divisor, and if it does indeed divide `n`, then it’s not a prime.

  [^primes]: Of course, since 2002 we know that primality can actually be tested in _deterministic_ polynomial time with the [AKS algorithm](https://en.wikipedia.org/wiki/AKS_primality_test).

  ```python
  from nondeterminism import *

  @nondeterministic
  def is_prime(n):
      if n < 2:
          return False
      d = guess(range(2, n), mode=all)
      return n % d != 0
  ```

  Here is a list of the primes below 50:

  ```pycon
  >>> [n for n in range(50) if is_prime(n)]
  [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
  ```




  It turns out that you can freely mix existential and universal guesses (i.e., `guess(mode=any)` and `guess(mode=all)`) in your nondeterministic algorithms! This is called [alternation](https://en.wikipedia.org/wiki/Alternating_Turing_machine), and it’s extremely powerful: each time you switch from existential to universal guesses (or vice versa) you go one level up in the polynomial hierarchy [**PH**](https://en.wikipedia.org/wiki/Polynomial_hierarchy), and if the number of alternations can depend on the size of the input you can even solve all problems in [**PSPACE**](https://en.wikipedia.org/wiki/PSPACE#Other_characterizations) in polynomial time!

  One of the standard **PSPACE**-complete problem is a variant of SAT called [TQBF](https://en.wikipedia.org/wiki/True_quantified_Boolean_formula) (aka QBF, or QSAT), where each variable is quantified… in an alternated fashion, of course. Given a Boolean formula `phi(x₀, x₁, …, xₙ₋₁)`, is it true that

  > ∃`x₀` ∀`x₁` ∃`x₂` ⋯ $Q_{n-1}$`xₙ₋₁` `phi(x₀, x₁, …, xₙ₋₁)`

  where $Q_i$ is ∃ if $i$ is even and ∀ if $i$ is odd?

  Here is an (unboundedly) alternating algorithm for this problem:

  ```python
  from inspect import signature
  from nondeterminism import *


  def arity(function):
      return len(signature(function).parameters)

  @nondeterministic
  def is_q_valid(formula):
      n = arity(formula)
      x = tuple(guess(mode=any) if i % 2 == 0
                else guess(mode=all)
                for i in range(n))
      return formula(*x)
  ```

  For instance, this gives us:

  ```pycon
  >>> def phi(x, y):
  ...     return (x or y) and (x or not y)
  ...
  >>> is_q_valid(phi)
  True
  >>> def psi(x, y, z):
  ...     return x and not x and z and y
  ...
  >>> is_q_valid(psi)
  False
  ```




  Counting algorithms return the number of successful computations. The corresponding polynomial-time complexity class is **#P** and the corresponding `mode` for `guess` is `sum`. Counting is also extremely powerful, since [you can solve the whole polynomial hierarchy in polynomial time](https://en.wikipedia.org/wiki/Toda%27s_theorem) if you have access to an oracle for a **#P**-complete problem!

  One of the standard **#P**-complete problems is counting how many satisfying truth assignments exist for a given formula (let’s call this number the “satisfiability” of the formula):

  ```python
  from inspect import signature
  from nondeterminism import *


  def arity(function):
      return len(signature(function).parameters)

  @nondeterministic
  def satisfiability(formula):
      n = arity(formula)
      x = tuple(guess(mode=sum) for i in range(n))
      return formula(*x)
  ```

  As an example:

  ```pycon
  >>> def phi(x, y):
  ...     return (x or y) and (x or not y)
  ...
  >>> satisfiability(phi)
  2
  >>> def psi(x, y, z):
  ...     return x and not x and z and y
  ...
  >>> satisfiability(psi)
  0
  ```




  Majority algorithms return `True` if and only if the (strict) majority of the computations are accepting. This is [as powerful as counting](https://en.wikipedia.org/wiki/Toda's_theorem)! The corresponding polynomial-time complexity class is [**PP**](https://en.wikipedia.org/wiki/PP_(complexity)) and the corresponding mode for `guess` is `majority`.

  The standard **PP**-complete problem is [Majority-SAT](https://en.wikipedia.org/wiki/Boolean_satisfiability_problem#Extensions_of_SAT), i.e., deciding whether the majority of assignments to a Boolean formula satisfy it:

  ```python
  from inspect import signature
  from itertools import product
  from nondeterminism import *


  def arity(function):
      return len(signature(function).parameters)

  @nondeterministic
  def is_majority_satisfiable(formula):
      n = arity(formula)
      x = guess(product((False, True), repeat=n),
                mode=majority)
      return formula(*x)
  ```

  Notice that this code, rather that making `n` consecutive majority guesses over `(False, True)`, only makes one `guess` over the `n`-th power of `(False, True)`, i.e., over the set of Boolean tuples of length `n`. This is necessary, since you want to maximise _once_ over this set, rather than maximising `n` times over `(False, True)`.

  For instance:

  ```pycon
  >>> def phi(x, y):
  ...     return (x or y) and (x or not y)
  ...
  >>> is_majority_satisfiable(phi)
  False
  >>> def psi(x, y, z):
  ...     return x or y
  ...
  >>> is_majority_satisfiable(psi)
  True
  ```




  Optimisation algorithm not only give us a (usually non-`bool`-valued) solution to our problem, but one maximising (or minimising) a specific parameter. The corresponding polyonimial-time complexity class is [**OptP**](https://complexityzoo.net/Complexity_Zoo:O#optp), and the corresponding `mode` for `guess` is `maximize(key)` (resp., `minimize(key)`) where `key` is the value to be optimised across all non-`None` solutions.

  As trivial examples, consider maximising or minimising the sum of binary tuples of a given length:

  ```python
  from nondeterminism import *

  @nondeterministic
  def maximize_sum(n):
      return tuple(guess(range(2), mode=maximize(sum))
                   for i in range(n))

  @nondeterministic
  def minimize_sum(n):
      return guess(product(range(2), repeat=n),
                   mode=minimize(sum))
  ```

  Observe how, unlike the majority example above, here you can either make consecutive guesses, or a single guess over the Cartesian product of all sets of choices.

  ```pycon
  >>> maximize_sum(3)
  (1, 1, 1)
  >>> maximize_sum(1)
  (1,)
  >>> maximize_sum(0)
  ()
  >>> minimize_sum(3)
  (0, 0, 0)
  >>> minimize_sum(2)
  (0, 0)
  >>> minimize_sum(0)
  ()
  ```

  By default, the `maximize` and `minimize` modes optimise over the actual solutions themselves (i.e., the `key` is just the identity function), and return `None` if the set of solutions is empty. If using these optimisation modes this way you can drop the parentheses, e.g., you can write `guess(mode=maximize)` instead of `guess(mode=maximize())`.

  For instance, we can re-implement Python’s `max` like this:

  ```python
  @nondeterministic
  def my_max(X):
      return guess(X, mode=maximize)
  ```

  which gives us:

  ```pycon
  >>> my_max(range(10))
  9
  >>> my_max(range(0))
  >>>
  ```




  You can define your own `mode`s for `guess` (e.g., something based on [leaf languages](https://en.wikipedia.org/wiki/Leaf_language)). A `mode` for `guess` is any function taking as input the list of results of the computation of your `@nondeterministic` function (either `bool` values, or whatever that function returns) and computes their combined result.

  For instance, consider “parity algorithm”, which accept if and only if the number of accepting computations is odd. This corresponds to `xor`-ing together all the results:

  ```python
  def xor(lst):
      result = False
      for x in lst:
          result = result is not x
      return result
  ```

  Now you can just use `guess(mode=xor)` in your code. For instance, a funny way of checking if a number is a perfect square is to check if it has an odd number of divisors:

  ```python
  from nondeterminism import *

  @nondeterministic
  def is_square(n):
      d = guess(range(1, n + 1), mode=xor)
      return n % d == 0
  ```

  This gives:

  ```pycon
  >>> [n for n in range(100) if is_square(n)]
  [1, 4, 9, 16, 25, 36, 49, 64, 81]
  ```




  You can find other examples for the `nondeterminism` library by looking for #TodaysNondeterministicAlgorithm on [Twitter](https://x.com/search?q=%23TodaysNondeterministicAlgorithm%20from%3Aaeporreca&src=typed_query&f=live) or [Bluesky](https://bsky.app/hashtag/TodaysNondeterministicAlgorithm?author=aeporreca.org). Notice that these might not be up-to-date with respect to the interface of the library.


pkgId: 3492f0063a082c39ad3c9567add6dbc28fd11baa2ccdc78011e571bfda95c821
name: python-nonebot-adapter-qq-help
arch: noarch
version: 1.6.0
epoch: 0
release: 1
summary: Development documents and examples for nonebot-adapter-qq
url: https://github.com/nonebot/adapter-qq
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-adapter-qq-1.6.0-1.src.rpm
location_href: Packages/python-nonebot-adapter-qq-help-1.6.0-1.noarch.rpm
checksum_type: sha256
description:
  <p align="center">
    <a href="https://nonebot.dev/"><img src="https://raw.githubusercontent.com/nonebot/adapter-qq/master/assets/logo.png" width="200" height="200" alt="nonebot-adapter-qq"></a>
  </p>

  <div align="center">



  _✨ QQ 协议适配 ✨_

  </div>



  修改 NoneBot 配置文件 `.env` 或者 `.env.*`。



  如果使用 WebSocket 连接方式，请参考 [driver](https://nonebot.dev/docs/appendices/config#driver) 配置项，添加 `HTTPClient` 和 `WebSocketClient` 支持。如：

  ```dotenv
  DRIVER=~httpx+~websockets
  DRIVER=~aiohttp
  ```

  如果使用 WebHook 连接方式，则添加 `ASGIServer` 支持。如：

  ```dotenv
  DRIVER=~fastapi
  ```



  是否为沙盒模式，默认为 `False`。

  ```dotenv
  QQ_IS_SANDBOX=true
  ```



  配置机器人帐号 `id` `token` `secret`，intent 需要根据机器人类型以及需要的事件进行配置。



  通过配置项 `use_websocket` 来选择是否启用 WebSocket 连接，当前默认为 `True`。如果关闭 WebSocket 连接方式，则可以通过 WebHook 方式来连接机器人，请在 QQ 开放平台中配置机器人回调地址：`https://host:port/qq/webhook`。



  Intent 仅对 WebSocket 连接方式生效。以下为所有 Intent 配置项以及默认值：

  ```json
  {
    "guilds": true,
    "guild_members": true,
    "guild_messages": false,
    "guild_message_reactions": true,
    "direct_message": false,
    "open_forum_event": false,
    "audio_live_member": false,
    "c2c_group_at_messages": false,
    "interaction": false,
    "message_audit": true,
    "forum_event": false,
    "audio_action": false,
    "at_messages": true
  }
  ```



  私域频道机器人示例

  ```dotenv
  QQ_BOTS='
  [
    {
      "id": "xxx",
      "token": "xxx",
      "secret": "xxx",
      "intent": {
        "guild_messages": true,
        "at_messages": false
      },
      "use_websocket": false
    }
  ]
  '
  ```

  公域群机器人示例

  ```dotenv
  QQ_BOTS='
  [
    {
      "id": "xxx",
      "token": "xxx",
      "secret": "xxx",
      "intent": {
        "c2c_group_at_messages": true
      },
      "use_websocket": false
    }
  ]
  '
  ```


pkgId: 2140de5a7ba30f79fabd489e6424a415966de26b226895d12c9b509ca3964b02
name: python-nonebot-plugin-add-friends-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-add-friends
url: https://github.com/hakunomiko/nonebot-plugin-add-friends
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-add-friends-0.1.0-1.src.rpm
location_href: Packages/python-nonebot-plugin-add-friends-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://v2.nonebot.dev/store"><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/nbp_logo.png" width="180" height="180" alt="NoneBotPluginLogo"></a>
    <br>
    <p><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/NoneBotPlugin.svg" width="240" alt="NoneBotPluginText"></p>
  </div>

  <div align="center">



  _✨ 处理好友申请和群邀请，支持查看申请、手动同意/拒绝申请、同意/拒绝全部申请。 ✨_


  <a href="https://github.com/hakunomiko/nonebot-plugin-add-friends/stargazers">
          <img alt="GitHub stars" src="https://img.shields.io/github/stars/hakunomiko/nonebot-plugin-add-friends" alt="stars">
  </a>
  <a href="./LICENSE">
      <img src="https://img.shields.io/github/license/hakunomiko/nonebot-plugin-add-friends.svg" alt="license">
  </a>
  <a href="https://pypi.python.org/pypi/nonebot-plugin-add-friends">
      <img src="https://img.shields.io/pypi/v/nonebot-plugin-add-friends.svg" alt="pypi">
  </a>
  <img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="python">

  </div>



  此插件用于远程处理好友申请和加群邀请，支持查看申请、手动同意/拒绝申请、同意/拒绝全部申请。



  <details open>
  <summary>使用 nb-cli 安装</summary>
  在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

      nb plugin install nonebot-plugin-add-friends

  </details>

  <details>
  <summary>使用包管理器安装</summary>
  在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令

  <details>
  <summary>pip</summary>

      pip install nonebot-plugin-add-friends
  </details>
  <details>
  <summary>pdm</summary>

      pdm add nonebot-plugin-add-friends
  </details>
  <details>
  <summary>poetry</summary>

      poetry add nonebot-plugin-add-friends
  </details>
  <details>
  <summary>conda</summary>

      conda install nonebot-plugin-add-friends
  </details>

  打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入

      plugins = ["nonebot_plugin_add_friends"]

  </details>



  在 nonebot2 项目的`.env`文件中添加下表中的必填配置

  | 配置项 | 必填 | 默认值 | 说明 |
  |:-----:|:----:|:----:|:----:|
  | SUPERUSERS | 是 | 无 | Bot的超级用户，用于接收、同意/拒绝好友申请及群邀请信息。 |
  | friend_path | 否 | ./data/friend | 好友申请及群邀请列表保存目录 |



  | 指令 | 权限 | 需要@ | 范围 | 说明 |
  |:-----:|:----:|:----:|:----:|:----:|
  | 查看申请 | 主人 | 否 | 私聊 | 查看待处理申请 |
  | 同意/拒绝申请 <QQ号/群号> | 主人 | 否 | 私聊 | 同意/拒绝申请 |
  | 同意/拒绝全部申请 | 主人 | 否 | 私聊 | 同意/拒绝全部申请 |


  感谢以下开发者对本插件作出的贡献：
  [Agnes4m](https://github.com/Agnes4m/nonebot_plugin_friends)


pkgId: b4365ea60ab683e35ddb5d2402efbaa14d910e66d6df3a2ea5cc1d9f422b7835
name: python-nonebot-plugin-addons-manager-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-addons-manager
url: https://pypi.org/project/nonebot-plugin-addons-manager/
rpm_license: GPL-3.0-only
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-addons-manager-0.1.0-1.src.rpm
location_href: Packages/python-nonebot-plugin-addons-manager-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://v2.nonebot.dev/store"><img src="https://github.com/A-kirami/nonebot-plugin-addons-manager/blob/resources/nbp_logo.png" width="180" height="180" alt="NoneBotPluginLogo"></a>
    <br>
    <p><img src="https://github.com/A-kirami/nonebot-plugin-addons-manager/blob/resources/NoneBotPlugin.svg" width="240" alt="NoneBotPluginText"></p>
  </div>

  <div align="center">



  _✨ 求生之路addons文件夹Q群管理插件 ✨_


  <a href="./LICENSE">
      <img src="https://img.shields.io/github/license/owner/nonebot-plugin-addons-manager.svg" alt="license">
  </a>
  <a href="https://pypi.python.org/pypi/nonebot-plugin-addons-manager">
      <img src="https://img.shields.io/pypi/v/nonebot-plugin-addons-manager.svg" alt="pypi">
  </a>
  <img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="python">

  </div>



  这个插件是用来对求生之路服务器上的addons文件夹进行管理，使用此插件可以方便在QQ群中直接进行vpk文件的增删改查，其中除了查询以外的所有操作均可设置插件管理员权限，防止恶意破坏服务器文件夹，如果不想让他人查询服务器上的特定vpk文件，可以将文件后缀设置为VPK，上传vpk文件只需有权限的人将vpk文件传至群文件即可，其余指令请查看下面使用部分

  **如果觉得插件不错的话请动手点点右上角的star收藏一下**


  1. 安装nonebot2
  2. 下载插件，下载安装查看下面安装部分
  3. 将nonebot与机器人框架对接，如NapCat，LLOneBot


  1. <a href="https://blog.csdn.net/iteapoy/article/details/141254725?ops_request_misc=%257B%2522request%255Fid%2522%253A%25229784319256f6f0009c0e7e959b22a141%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=9784319256f6f0009c0e7e959b22a141&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-141254725-null-null.142^v100^pc_search_result_base7&utm_term=nonebot&spm=1018.2226.3001.4187">
     <p>Python聊天机器人-NoneBot2入门</p>
  </a>

  2. <a href="https://nonebot.dev/docs/">
     <p>NoneBot官方文档</p>
  </a>

  3. <a href="https://llonebot.github.io/zh-CN/guide/getting-started">
      <p>LLOneBot官方文档</p>
  </a>

  4. <a href="https://napneko.pages.dev/config/basic">
     <p>NapCat官方文档</p>
  </a>

  借鉴了一些下面两个插件的代码与思路：
  1. <a href="https://github.com/LiLuo-B/nonebot-plugin-valve-server-query">
     <p>nonebot-plugin-valve-server-query</p>
  </a>

  2. <a href="https://github.com/Agnes4m/nonebot_plugin_l4d2_server">
     <p>nonebot_plugin_l4d2_server</p>
  </a>




  <details open>
  <summary>使用 nb-cli 安装</summary>
  在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

      nb plugin install nonebot-plugin-addons-manager

  </details>

  <details>
  <summary>使用包管理器安装</summary>
  在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令

  <details>
  <summary>pip</summary>

      pip install nonebot-plugin-addons-manager
  </details>
  <details>
  <summary>pdm</summary>

      pdm add nonebot-plugin-addons-manager
  </details>
  <details>
  <summary>poetry</summary>

      poetry add nonebot-plugin-addons-manager
  </details>
  <details>
  <summary>conda</summary>

      conda install nonebot-plugin-addons-manager
  </details>

  打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入

      plugins = ["nonebot_plugin_addons_manager"]

  </details>



  在 nonebot2 项目的`.env`文件中添加下表中的必填配置

  | 配置项 | 必填 | 默认值 |                                                       说明                                                        |
  |:-----:|:----:|:----:|:---------------------------------------------------------------------------------------------------------------:|
  | destination_path | 是 | 无 | addons文件夹的路径 例：destination_path="/root/Steam/steamapps/common/Left 4 Dead 2 Dedicated Server/left4dead2/addons" |
  | admin_qq | 否 | [] |                          将管理员的QQ添加至列表中，多个管理员用逗号隔开，该值为空即所有人均有权限 例：admin_qq=[1111,2222]                           |



  | 指令 | 权限 | 需要@ | 范围 | 说明 |
  |:-----:|:----:|:----:|:----:|:----:|
  | /file | 所有人 | 否 | 群聊 | 查询当前服务器中的所有vpk文件 |
  | /rename | 插件管理员 | 否 | 群聊/私聊 | 重命名vpk文件名字，原名字和新名字之间用逗号隔开 |
  | /delete | 插件管理员 | 否 | 群聊/私聊 | 删除服务器vpk文件，紧跟需要删除的vpk文件名 |
  | 无 | 插件管理员 | 否 | 群聊 | 插件管理员直接上传vpk文件，检测到vpk文件之后会自动下载至addons文件夹中 |


  <img src="images/uoload.png">


  <img src="images/query.png">


  <img src="images/rename.png">


  <img src="images/delete.png">


pkgId: 2dd69f905f8939bf5db5978a9a49ff3456e4d35e433b3ec20b3f35a11e5eb3f9
name: python-nonebot-plugin-amitabha-help
arch: noarch
version: 0.1.5
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-amitabha
url: https://pypi.org/project/nonebot-plugin-amitabha/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-amitabha-0.1.5-1.src.rpm
location_href: Packages/python-nonebot-plugin-amitabha-help-0.1.5-1.noarch.rpm
checksum_type: sha256
description:
  2024 12.14 v0.1.5
  修复插件依赖问题
  2024 12.12 v0.1.4
  移除不必要的配置项引用
  2024 12.12 v0.1.3
  使用localstore数据存储标准
  2024 12.9 v0.1.2
  修复已知问题，构建项目发布至pypi
  2024 12.7 v0.1.0


pkgId: 434cd0fcb79e169739897d13d14f4b200cd68e68b61046d815688270ccc04cd5
name: python-nonebot-plugin-csgomarket-help
arch: noarch
version: 0.1.7
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-csgomarket
url: https://github.com/Florenz0707/nonebot-plugin-csmarket.git
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-csgomarket-0.1.7-1.src.rpm
location_href: Packages/python-nonebot-plugin-csgomarket-help-0.1.7-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://v2.nonebot.dev/store"><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/nbp_logo.png" width="180" height="180" alt="NoneBotPluginLogo"></a>
    <br>
    <p><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/NoneBotPlugin.svg" width="240" alt="NoneBotPluginText"></p>
  </div>

  <div align="center">



  _✨ CS饰品查询插件 ✨_


  <a href="./LICENSE">
      <img src="https://img.shields.io/github/license/Florenz0707/nonebot-plugin-csmarket.svg" alt="license">
  </a>
  <a href="https://pypi.python.org/pypi/nonebot-plugin-csmarket">
      <img src="https://img.shields.io/pypi/v/nonebot-plugin-csmarket.svg" alt="pypi">
  </a>
  <img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="python">

  </div>



  适用于NoneBot, OneBot v11的插件，可以查询 Counter Strike 2 市场信息，包括大盘数据、饰品信息与各类排行榜。



  <details open>
  <summary>使用 nb-cli 安装</summary>
  在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

      nb plugin install nonebot-plugin-csmarket

  </details>

  <details>
  <summary>使用包管理器安装</summary>
  在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令

  <details>
  <summary>pip</summary>

      pip install nonebot-plugin-csmarket
  </details>
  <details>
  <summary>pdm</summary>

      pdm add nonebot-plugin-csmarket
  </details>
  <details>
  <summary>poetry</summary>

      poetry add nonebot-plugin-csmarket
  </details>
  <details>
  <summary>conda</summary>

      conda install nonebot-plugin-csmarket
  </details>

  打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入

      plugins = ["nonebot_plugin_csmarket"]

  </details>



  无



  | 指令 | 权限 | 需要@ | 范围 | 说明 |
  |:-----:|:----:|:----:|:----:|:----:|
  | cs.help | 群员 | 否 | 群聊 | 输出帮助信息 |
  | cs.search | 群员 | 否 | 群聊 | 查询指定饰品 |
  | cs.rank | 群员 | 否 | 群聊 | 查询饰品排行榜 |
  | cs.market | 群员 | 否 | 群聊 | 查询市场大盘 |

  无

  本项目由 [P-trd](https://github.com/7dul2/P-trd)  移植而来
  该插件的主要编写者是 **Zaxpris**, Florenz0707只是小修小补，膜拜大佬。
  数据来源：cs-ob.com
  **Version**: 0.1.0


pkgId: 93ec06bd8ee05464b4ee95c49a939a1bcd019d7765a40b527de8be587f995f49
name: python-nonebot-plugin-dialectlist-help
arch: noarch
version: 2.6.1
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-dialectlist
url: https://pypi.org/project/nonebot-plugin-dialectlist/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-dialectlist-2.6.1-1.src.rpm
location_href: Packages/python-nonebot-plugin-dialectlist-help-2.6.1-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://v2.nonebot.dev/store"><img src="./docs/NoneBotPlugin.svg" width="400" alt="NoneBotPluginLogo"></a>
    <br>
    <p><img src="https://s2.loli.net/2022/06/16/xsVUGRrkbn1ljTD.png" width="240" alt="NoneBotPluginText"></p>
  </div>

  <div align="center">


  nonebot-plugin-dialectlist

  <p align="center">
    <a href="https://pypi.python.org/pypi/nonebot-plugin-dialectlist">
      <img src="https://img.shields.io/pypi/v/nonebot-plugin-dialectlist.svg" alt="pypi">
    </a>

    <img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="python">

    <a href="https://qm.qq.com/q/Yty2yc9Bee">
      <img src="https://img.shields.io/badge/QQ%E7%BE%A4-1128359833-orange?style=flat-square" alt="QQ Chat Group">
    </a>
  </p>

  \>💬**看看群友们这些天在群里水了多少话**💬<
  </div>



  通过`pip`或`nb`安装：
  - 通过 pip 安装
  ```bash
  pip install nonebot-plugin-dialectlist
  ```
  - 通过 nb-cli 安装
  ```bash
  nb plugin install nonebot-plugin-dialectlist
  ```




  1. [nonebot-plugin-datastore](https://github.com/he0119/nonebot-plugin-datastore) ————本地化储存
  2. [nonebot-plugin-userinfo](https://github.com/noneplugin/nonebot-plugin-userinfo) ————获取用户信息
  3. [nonebot-plugin-apscheduler](https://github.com/nonebot/plugin-apscheduler) ————定时发送排行榜信息
  4. [nonebot-plugin-alconna](https://github.com/ArcletProject/nonebot-plugin-alconna) ————实现命令解析
  5. [nonebot-plugin-chatrecorder](https://github.com/noneplugin/nonebot-plugin-chatrecorder) ————实现消息储存
  6. [nonebot-plugin-cesaa](https://github.com/MountainDash/nonebot-plugin-send-anything-anywhere) ————实现多平台

   **⚠注意** 若先前没有安装过```nonebot-plugin-chatrecorder```或者```nonebot-plugin-orm```，则会在启动时报错，请按报错的提示安装数据库！



  需要**提前配置**本插件所**依赖的插件**！

  在 .env 中，可以添加以下配置项
  ```python
  dialectlist__get_num: int = 5  # 获取人数数量
  dialectlist__font: str = "SimHei"  # 字体格式
  dialectlist__suffix: bool = True  # 是否显示后缀
  dialectlist__excluded_self: bool = True  # 是否排除自己
  dialectlist__visualization: bool = True  # 是否可视化
  dialectlist__show_text_rank: bool = True  # 是否显示文本排名
  dialectlist__counting_cache: bool = False  # 计数缓存(能够提高回复速度)
  dialectlist__excluded_people: List[str] = []  # 排除的人的QQ号
  dialectlist__use_user_info_cache: bool = False  # 是否使用用户信息缓存
  dialectlist__aggregate_transmission: bool = False  # 是否聚合转发消息
  dialectlist__timezone: Optional[str] = "Asia/Shanghai"  # 时区，影响统计时间
  dialectlist__string_suffix: str = "统计花费时间:{timecost}秒"  # 消息格式后缀
  dialectlist__template_path: str = "./template/rank_template.j2"  # 模板路径
  dialectlist__string_format: str = "第{index}名：\n{nickname},{chatdatanum}条消息\n"  # 消息格式
  ```
  💭也可以不进行配置，这将会使插件按照默认配置运行

   

  > 在旧版插件（2.0.0 以下）中，dialectlist 与后面的配置项只隔了一个下划线，若更新到新版本以后需要俩个下划线。


  __！！注意！！__
  新版本指令调用方式改变，改为更易理解也更好打的 B 话榜。
  同时也可以用类似 `/今日废话榜` 的方式（只要改前面的就好了）（算是给 [盘古之白](https://github.com/vinta/pangu.js) 风格爱好者的福利吧？）





  -`/B话榜` ————看看有史以来（机器人存在以来）群友们发了多少消息！ （好像没写）

  -`/今日B话榜` ————看看今天的群友发了多少消息！

  -`/昨日B话榜` ————看看昨天的群友发了多少消息！

  -`/前日B话榜` ————看看前天的群友发了多少消息！

  -`/本周B话榜` ————看看本周的群友发了多少消息！

  -`/上周B话榜` ————看看上周的群友发了多少消息！

  -`/本月B话榜` ————看看这个月的群友发了多少消息！

  -`/年度B话榜` ————看看今年的群友发了多少消息！

  -`/历史B话榜` ————看看历史上（机器人存在以来）的群友发了多少消息！



  -`/看看B话 [@某人|QQ号]` ————看看这个b人在这个b群发了多少b话！





  `/{时间类型（今日|年度）?}{B话榜|废话榜} {时间类型？} {ISO8601 格式时间 ?} {群号} {关键词}`

  如：`/B话榜 历史 2024-01-01~2024-01-02 12345678 女装`

  也可以 `/{时间类型（今日|年度）?}{B话榜|废话榜} {时间类型？} {ISO8601 格式时间 ?} -g {群号} -k {关键词}`

  以下调用方法均合法：

  `/今日B话榜 -g 12345678 -k 女装`
  `/昨日B话榜 -k 女装`
  `/本周B话榜 -g 12345678`



  `/看看B话 {@|QQ号} {群号？} {关键词？}`

  以下调用方法均合法：

  `/kkb 114514 1919810 ♂`
  `/kkb @man -k ♂`

  > [!IMPORTANT]
  > 关键词支持正则表达式！



  | 平台 | 是否经过测试 | 是否能够正常工作 | 测试环境 |
  |:-----:|:----:|:----:| :----: |
  | Onebot | ✅ | ✅ | NapCat + Window11|
  | 飞书  | ❌ | ❓ | 🤔 |
  | Red  | ❌ | ❓ | 🤔 |
  | DoDo  | ❌ | ❓ | 🤔 |
  | Mirai  | ❌ | ❓ | 🤔 |
  | 开黑啦  | ❌ | ❓ | 🤔 |
  | Kritor  | ❌ | ❓ | 🤔 |
  | Ntchat  | ❌ | ❓ | 🤔 |
  | Satori  | ❌ | ❓ | 🤔 |
  | Telegram | ❌ | ❓ | 🤔  |
  | Discord  | ❌ | ❓ | 🤔 |
  | Tailchat  | ❌ | ❓ | 🤔 |
  | QQ 官方接口  | ❌ | ❓ | 🤔 |
  | Rocket.Chat  | ❌ | ❓ | 🤔 |

  - 如果你测试过能够使用，请在 Issue 中指出





  [群连接](https://qm.qq.com/q/Yty2yc9Bee)

  <details>
  <summary>群二维码 点我展开</summary>

  ![7a4bd22dea47d25d9b632d4b2696d4cd](https://github.com/ChenXu233/nonebot_plugin_dialectlist/assets/91937041/61fd7010-e2b2-4f13-b209-9c0faf8a517f)

  </details>

  ![9c149e99ca747c13892be3f9fbeedf31](https://github.com/user-attachments/assets/d02d108c-1ab3-4ad1-9123-c1a98862e627)




  本插件的__init__.py 中的处理函数参考了词云中的方法 ~~（其实大部分都是 Ctrl+C Ctr+V）~~

  [nonebot-plugin-wordcloud](https://github.com/he0119/nonebot-plugin-wordcloud)

  感谢以下开发者作出的贡献：

  <a href="https://github.com/ChenXu233/nonebot_plugin_dialectlist/graphs/contributors">
    <img src="https://contrib.rocks/image?repo=ChenXu233/nonebot_plugin_dialectlist&max=1000" />
  </a>



  - [x] 适配全平台

  - [x] 更好看的图片渲染

  - [x] 添加一些全新的可配置项

  - [x] 尝试利用 jinja2 模板引擎制作可视化图片

  - [x] 私聊的查询（超级用户可以任意查询群聊的信息）一半完成

  - [x] 特殊的储存方案优化消息统计

  - [x] 查询带某关键词的消息量

  - [x] 合并转发

   待补充。.....



  <details>
  <summary>点我展开</summary>



    - 看看群里群友能有多话痨



    - 支持频道咯！(*^_^*)



    - 排行榜可视化



    - 添加了一些可配置项



    - 适配新版本的 chatrecorder, 暂时停止频道支持



    - 理论支持全平台！暂停图片支持。




    - 恢复图片支持。



    - 优化代码，添加一些新的可配置项。



    - 添加一些新的可配置项。

  </details>


  ~~整个项目快被我写成屎山了~~


pkgId: 55bc56ccd1eb495bbd27fbce63f840cfbf2f23692900e04a2bce1cd37aac1268
name: python-nonebot-plugin-fakepic-help
arch: noarch
version: 0.2.2
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-fakepic
url: https://github.com/lm175/nonebot-plugin-fakepic
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-fakepic-0.2.2-1.src.rpm
location_href: Packages/python-nonebot-plugin-fakepic-help-0.2.2-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://v2.nonebot.dev/store"><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/nbp_logo.png" width="180" height="180" alt="NoneBotPluginLogo"></a>
    <br>
    <p><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/NoneBotPlugin.svg" width="240" alt="NoneBotPluginText"></p>
  </div>

  <div align="center">



  _✨ NoneBot伪造聊天截图插件 ✨_


  <a href="./LICENSE">
      <img src="https://img.shields.io/github/license/lm175/nonebot-plugin-fakepic.svg" alt="license">
  </a>
  <a href="https://pypi.python.org/pypi/nonebot-plugin-fakepic">
      <img src="https://img.shields.io/pypi/v/nonebot-plugin-fakepic.svg" alt="pypi">
  </a>
  <img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="python">

  </div>


  </details>



  nonebot2插件，使用pillow库进行图片绘制

  使用示例: 3889009218【2.5条悟】说你好像误会了什么 你才是挑战者+1980765716说龙鳞，反反，成双之流星+3889009218说抱歉没能让宿傩大人尽兴



  <details open>
  <summary>（推荐）使用 nb-cli 安装</summary>
  在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

      nb plugin install nonebot-plugin-fakepic

  </details>

  <details>
  <summary>使用包管理器安装</summary>
  在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令

      pip install nonebot-plugin-fakepic


  打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入

      plugins = ["nonebot_plugin_fakepic"]

  </details>



  在 nonebot2 项目的`.env`文件中添加下表中的必填配置

  | 配置项 | 必填 | 默认值 | 说明 |
  |:-----:|:----:|:----:|:----:|
  | fakepic_user_split | 否 | "+" | 分隔不同用户的符号 |
  | fakepic_message_split | 否 | " " | 分隔同一用户的几条消息 |
  | fakepic_nick_start | 否 | "【" | 获取昵称的起始符号 |
  | fakepic_nick_end | 否 | "】" | 获取昵称的终止符号 |
  | fakepic_add_level_icon | 否 | True | 是否为用户添加等级图标 |
  | fakepic_add_bot_icon | 否 | True | 是否为官方机器人添加bot图标 |
  | fakepic_del_cqface | 否 | True | 是否删除QQ表情的CQ码 |
  | fakepic_nick_font | 否 | "" | 昵称首选字体 |
  | fakepic_chat_font | 否 | "" | 聊天首选字体 |
  | fakepic_fallback_nickfonts | 否 | [] | 昵称备选字体 |
  | fakepic_fallback_chatfont | 否 | [] | 聊天备选字体 |

  若添加字体配置后文字位置发生较大偏移，可添加以下配置进行修正

  | 配置项 | 必填 | 默认值 | 说明 |
  |:-----:|:----:|:----:|:----:|
  | fakepic_correct_nick | 否 | [0, 0] | 昵称位置 |
  | fakepic_correct_chat | 否 | [0, 0] | 聊天文字位置 |



  | 指令 | 权限 | 需要@ | 范围 | 说明 |
  |:-----:|:----:|:----:|:----:|:----:|
  | <QQ号>说<消息内容> | 无 | 否 | 私聊/群聊 | 分隔符号可在配置中修改 |
  | <QQ号>【用户昵称】说<消息内容> | 无 | 否 | 私聊/群聊 | 指定用户昵称 |



  <img src="https://github.com/lm175/nonebot-plugin-fakepic/blob/master/preview/command.jpg" width="606" height="826" />
  <img src="https://github.com/lm175/nonebot-plugin-fakepic/blob/master/preview/result.png" width="450" height="640" />



  - 可在指令中通过【】符号指定用户的昵称
  - 增加备选字体的配置项


pkgId: 97a4c5547a9f41edc60cafa1b31772c9aaa37196f20f509255f5442d65fd9e7b
name: python-nonebot-plugin-flo-luck-help
arch: noarch
version: 0.1.1
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-flo-luck
url: https://pypi.org/project/nonebot-plugin-flo-luck/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-flo-luck-0.1.1-1.src.rpm
location_href: Packages/python-nonebot-plugin-flo-luck-help-0.1.1-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://v2.nonebot.dev/store"><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/nbp_logo.png" width="180" height="180" alt="NoneBotPluginLogo"></a>
    <br>
    <p><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/NoneBotPlugin.svg" width="240" alt="NoneBotPluginText"></p>
  </div>

  <div align="center">



  _✨ NoneBot 插件: Florenz 版本的 jrrp ✨_


  <a href="./LICENSE">
      <img src="https://img.shields.io/github/license/florenz0707/nonebot-plugin-flo-luck.svg" alt="license">
  </a>
  <a href="https://pypi.python.org/pypi/nonebot-plugin-flo-luck">
      <img src="https://img.shields.io/pypi/v/nonebot-plugin-flo-luck.svg" alt="pypi">
  </a>
  <img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="python">

  </div>





  Florenz 版本的 jrrp。主要追加了特殊列表与排行功能。
  列表内容：QQ号，该用户使用时发送的特别问候，该用户幸运值的下限和上限。



  <details open>
  <summary>使用 nb-cli 安装</summary>
  在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

      nb plugin install nonebot-plugin-flo-luck

  </details>

  <details>
  <summary>使用包管理器安装</summary>
  在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令

  <details>

  <summary>pip</summary>

      pip install nonebot-plugin-flo-luck
  </details>

  <details>
  <summary>poetry</summary>

      poetry add nonebot-plugin-flo-luck
  </details>

  打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入

      plugins = ["nonebot_plugin_flo_luck"]

  </details>



  无



  |             指令              |    权限     | 需要@ | 范围 |             说明              |
  |:---------------------------:|:---------:|:---:|:--:|:---------------------------:|
  |            jrrp             |    所有     |  否  | 所有 |           查看今日人品            |
  | jrrp.week  (month/year/all) |    所有     |  否  | 所有 |           查看平均人品            |
  |       jrrp.add/del id       | SUPERUSER |  否  | 所有 | 从特殊列表中加入/移除该QQ  （具体参数请看元数据） |
  |         jrrp.check          | SUPERUSER |  否  | 所有 |          查看特殊列表内容           |
  |          jrrp.rank          |    所有     |  否  | 所有 |       查看自己的幸运值在今日的排行        |

  大部分代码源于：[nonebot-plugin-jrrp2](https://github.com/Rene8028/nonebot_plugin_jrrp2)
  本插件主要增加了特殊列表与排行功能
  Version: 0.1.0


pkgId: 40c12a872c131bfe8623d325880b0cddebce7d618edd3fab47a8e6ee852dec2b
name: python-nonebot-plugin-htmlrender-help
arch: noarch
version: 0.5.1
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-htmlrender
url: https://github.com/kexue-z/nonebot-plugin-htmlrender
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-htmlrender-0.5.1-1.src.rpm
location_href: Packages/python-nonebot-plugin-htmlrender-help-0.5.1-1.noarch.rpm
checksum_type: sha256
description:
  - 通过浏览器渲染图片
  - 可通过查看`example`参考使用实例
  - 如果有安装浏览器等问题，先查看文档最底下的`常见问题`再去看 issue 有没有已经存在的



  - 通过 html 和浏览器生成图片
  - 支持`纯文本` `markdown` 和 `jinja2` 模板输入
  - 通过 CSS 来控制样式



  参考[example/plugins/render/**init**.py](example/plugins/render/__init__.py)

  ```py
  from nonebot import require
  require("nonebot_plugin_htmlrender")



  from nonebot_plugin_htmlrender import (
      text_to_pic,
      md_to_pic,
      template_to_pic,
      get_new_page,
  )



  ```



  ```ini

  htmlrender_browser = "chromium"

  htmlrender_browser = "firefox"


  htmlrender_download_host = ""


  htmlrender_proxy_host = "http://127.0.0.1:7890"






  htmlrender_browser_channel = ""


  htmlrender_browser_executable_path = ""




  htmlrender_connect_over_cdp = "http://127.0.0.1:1234"
  ```



  - 使用 `GitHub-light` 样式
  - 支持绝大部分 md 语法
  - 代码高亮
  - latex 数学公式 （感谢@[MeetWq](https://github.com/MeetWq)）
    - 使用 `$$...$$` 来输入独立公式
    - 使用 `$...$` 来输入行内公式
  - 图片需要使用外部连接并使用`html`格式 否则文末会超出截图范围
  - 图片可使用 md 语法 路径可为 `绝对路径`(建议), 或 `相对于template_path` 的路径



  - 使用 jinja2 模板引擎
  - 页面参数可自定义



  [example.md](docs/example.md)



  ![](docs/text2pic.png)



  ![](docs/md2pic.png)



  ![](docs/html2pic.png)



  ![](docs/template2pic.png)



  - [MeetWq](https://github.com/MeetWq) 提供数学公式支持代码和代码高亮





  - 一般为缺少必要的运行环境，如中文字体等



  - 参考[Dao-bot Dockerfile](https://github.com/kexue-z/Dao-bot/blob/a7b35d6877b24b2bbd72039195bd1b3afebb5cf6/Dockerfile#L12-L15)

  ```sh
  apt update && apt install -y locales locales-all fonts-noto libnss3-dev libxss1 libasound2 libxrandr2 libatk1.0-0 libgtk-3-0 libgbm-dev libxshmfence1
  ```

  - 然后设置 ENV local

  ```sh
  LANG zh_CN.UTF-8
  LANGUAGE zh_CN.UTF-8
  LC_ALL zh_CN.UTF-8
  ```



  - ~~小心 CentOS~~
  - 参考[CentOS Dockerfile](https://github.com/kumaraditya303/playwright-centos/blob/master/Dockerfile)
  - 添加中文字体库
  - ~~最佳解决办法~~
    - 使用 Docker 然后用 Python 镜像 按照上面 Ubuntu 的写 `dockerfile`

  下面这个依赖运行一下 也许就可以用了

  ```sh
  dnf install -y alsa-lib at-spi2-atk at-spi2-core atk cairo cups-libs dbus-libs expat flac-libs gdk-pixbuf2 glib2 glibc gtk3 libX11 libXcomposite libXdamage libXext libXfixes libXrandr libXtst libcanberra-gtk3 libdrm libgcc libstdc++ libxcb libxkbcommon libxshmfence libxslt mesa-libgbm nspr nss nss-util pango policycoreutils policycoreutils-python-utils zlib cairo-gobject centos-indexhtml dbus-glib fontconfig freetype gtk2 libXcursor libXi libXrender libXt liberation-fonts-common liberation-sans-fonts libffi mozilla-filesystem p11-kit-trust pipewire-libs harfbuzz-icu libglvnd-glx libglvnd-egl libnotify opus woff2 gstreamer1-plugins-base gstreamer1-plugins-bad-free openjpeg2 libwebp enchant libsecret hyphen libglvnd-gles
  ```

rpm_license:
  MIT License  Copyright (c) 2021 kexue  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: 5da2817806a65ebcd5d511839d766207bc5d7469bae9c6ebf254f16e8606e438
name: python-nonebot-plugin-mccheck-help
arch: noarch
version: 0.1.38
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-mccheck
url: https://github.com/molanp/nonebot_plugin_mccheck
rpm_license: GPL-3.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-mccheck-0.1.38-1.src.rpm
location_href: Packages/python-nonebot-plugin-mccheck-help-0.1.38-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://v2.nonebot.dev/store"><img src="https://github.com/KomoriDev/nonebot-plugin-kawaii-status/raw/master/docs/NoneBotPlugin.svg" alt="NoneBotPluginLogo"></a>
  </div>

  <div align="center">




  _✨ Minecraft 服务器查询插件 ✨_


  <a href="./LICENSE">
      <img src="https://img.shields.io/github/license/molanp/nonebot_plugin_mccheck.svg" alt="license">
  </a>
  <a href="https://pypi.python.org/pypi/nonebot-plugin-mccheck">
      <img src="https://img.shields.io/pypi/v/nonebot-plugin-mccheck.svg" alt="pypi">
  </a>
  <img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="python">
  <img src="https://img.shields.io/pypi/dm/nonebot-plugin-mccheck" alt="pypi-download-count">
  </div>

  简体中文|[English](README_en.md)



  Minecraft服务器状态查询，支持IPv6

  > 与[https://github.com/molanp/zhenxun_plugin_mccheck/](https://github.com/molanp/zhenxun_plugin_mccheck)同步更新



  以下提到的方法任选 **其一** 即可

  <details open>
  <summary>[推荐]使用 nb-cli 安装</summary>
  在 Bot 的根目录下打开命令行, 输入以下指令即可安装

  ```shell
  nb plugin install nonebot-plugin-mccheck
  ```

  </details>

  <details>
  <summary>使用包管理器安装</summary>
  在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令

  ```shell
  pip install nonebot-plugin-mccheck

  pdm add nonebot-plugin-mccheck

  poetry add nonebot-plugin-mccheck

  conda install nonebot-plugin-mccheck
  ```

  打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入
  ```toml
      plugin["nonebot_plugin_mccheck"]
  ```
  </details>



  - [x] 支持全平台适配器
  - [x] 适配Unicode全字体与字形
  - [x] 渲染Motd样式
  - [x] 查询服务器昵称
  - [x] 查询服务器最大人数,当前人数和玩家列表
  - [x] 查询服务器motd
  - [x] 返回服务器地址及端口
  - [x] 返回服务器在线状态
  - [x] 查询服务器延迟
  - [x] 更精确的延迟
  - [x] 支持互通服务器双次查询
  - [x] 错误信息反馈
  - [x] 端口自动补全
  - [x] 智能判断IP地址是否正确
  - [x] 不依赖任何外部api
  - [x] 支持特殊端口查询(如`2`,`80`,`443`等)
  - [x] 查询服务器favicon
  - [x] 多语言
  - [x] SRV支持
  - [x] 完全彩色下划线/删除线
  - [x] 获取服务器协议号



  - [ ] 敬请期待



  v0.1.37
  ![v0.1.37](https://github.com/user-attachments/assets/619b9dc0-cda3-4949-9647-8f15e5db9ca5)



  在 nonebot2 项目的`.env`文件中添加下表中的必填配置

  | 配置项 | 必填 | 默认值 | 说明 |
  |:-----:|:----:|:----:|:----:|
  | `MCC__LANGUAGE` | 否 | `zh-cn` | 插件渲染图片所使用的语言<br>可用语言:[`zh-cn`,`zh-tw`,`en`] |
  | `MCC__TYPE` | 否 | `0` | 插件发送的消息类型(`0`为HTML渲染图片, `1`为图片, `2`为文本) |



  | 类型 | 特殊样式 | Favicon | 完全彩色下划线/删除线 | 全Unicode字体支持 |
  |:-----:|:-----:|:-----:|:-----:|:-----:|
  | 文本 | ❌ | ⭕ | ❌ | ⭕ |
  | 图片 | ⭕ | ⭕ | ⭕ | ❌ |
  | HTML | ⭕ | ⭕ | ⭕ | ⭕ |



  |命令|参数|范围|说明|
  |:---:|:---:|:---:|:---:|
  |`查服/mcheck`|`[ip]:[端口]` 或 `[ip]`|私聊/群聊|查询服务器状态|
  |`设置语言/set_lang`|语言名称|私聊/群聊|设置插件渲染图片所使用的语言|
  |`当前语言/lang_now`|无|私聊/群聊|查看当前插件渲染图片所使用的语言|
  |`语言列表/lang_list`|无|私聊/群聊|查看插件支持的语言列表|


pkgId: 7cd25ef989f3524811f7f3c3a940bb0d1d1eede152fd093b1bcda4a12c66a505
name: python-nonebot-plugin-mmm-help
arch: noarch
version: 0.2.3
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-mmm
url: https://pypi.org/project/nonebot-plugin-mmm/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-mmm-0.2.3-1.src.rpm
location_href: Packages/python-nonebot-plugin-mmm-help-0.2.3-1.noarch.rpm
checksum_type: sha256
description:
  <p align="center">
    <a href="https://nonebot.dev/"><img src="https://nonebot.dev/logo.png" width="200" height="200" alt="nonebot"></a>
  </p>

  <div align="center">



  ![License](https://img.shields.io/github/license/eya46/nonebot-plugin-mmm)
  ![Python](https://img.shields.io/badge/python-3.9+-blue.svg)
  ![NoneBot](https://img.shields.io/badge/nonebot-2.3.0+-red.svg)
  </div>

  <div align="center">

  ![:eya46](https://count.getloli.com/get/@:eya46-plugin-mmm?theme=gelbooru)

  </div>



  让 `onebot v11` 协议中 `bot` 的消息作为正常事件进行处理

  > 使用 `plugin-alconna` 记得添加 `ALCONNA_RESPONSE_SELF=True` 配置
  >
  > 原因: https://github.com/nonebot/plugin-alconna/releases/tag/v0.53.0


  > [!WARNING]
  > - 小心死循环！
  > - 在 `PrivateMessageEvent` 事件中, 使用 `send_msg` 给bot自己发消息会重定向到 `target_id`(如果存在的话)
  >  - 请使用 `send_private_msg` 给bot自己发消息





  - `pip install nonebot-plugin-mmm`
  - `poetry add nonebot-plugin-mmm`
  - `pdm add nonebot-plugin-mmm`

  > 在 `bot.py` 中添加 `nonebot.load_plugin("nonebot_plugin_mmm")`



  - `nb plugin install nonebot-plugin-mmm`





  - `mmm_block`: 是否block `message_sent` 后续matcher, 默认为 `True`
  - `mmm_priority`: on `message_sent` 的优先级, 默认为 `0`
  - `mmm_private`: 是否处理私聊消息, 默认为 `True`
  - `mmm_group`: 是否处理群聊消息, 默认为 `True`
  - `mmm_self`: 是否处理自己发给自己的消息, 默认为 `False`
  - `mmm_only_text`: 是否只处理文本消息, 默认为 `False`
  - `mmm_text_check`: 是否只处理符合指定开头的消息, 默认为 `False`
  - `mmm_use_nb_start` 是否使用 `nonebot2` 的 `COMMAND_START`, 默认为 `False`
  - `mmm_text_start`: 检查的消息开头, 默认为 `{"",}` 即任何消息都通过
  - `mmm_lstrip`: 是否去除消息前缀, 默认为 `False`
  - `mmm_lstrip_num`: 去除消息前缀的数量, 默认为 `1`

  ```toml
  mmm_block = True
  mmm_priority = 0
  mmm_private = True
  mmm_group = True
  mmm_self = False

  mmm_only_text = False # 只处理文本消息
  mmm_text_check = False # 只处理符合指定开头的消息
  mmm_use_nb_start = False # 使用 nonebot2 的 COMMAND_START
  mmm_text_start = [".", "/"] # 检查的消息开头 默认为 ["",] 即任何消息都通过
  mmm_lstrip = False # 去除消息前缀
  mmm_lstrip_num = 1 # 去除消息前缀的数量
  ```



  ```toml
  python = "^3.9"
  nonebot2 = "^2.3.0"
  nonebot-adapter-onebot = "^2.1.0"
  ```


pkgId: d31fd9208111b19363153db0229cf2ec7066035edf76d82d98928e274e78d068
name: python-nonebot-plugin-multimodal-gemini-help
arch: noarch
version: 0.0.5
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-multimodal-gemini
url: https://github.com/zhiyu1998/nonebot-plugin-multimodal-gemini
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-multimodal-gemini-0.0.5-1.src.rpm
location_href: Packages/python-nonebot-plugin-multimodal-gemini-help-0.0.5-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://v2.nonebot.dev/store"><img src="https://s2.loli.net/2024/12/05/97BPodAZpy4GEuh.png" width="180" height="180" alt="NoneBotPluginLogo"></a>
    <br>
    <p><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/NoneBotPlugin.svg" width="240" alt="NoneBotPluginText"></p>
  </div>

  <div align="center">



  _✨Nonebot2 的谷歌 Gemini 多模态助手，一个命令即可玩转 Gemini 的多模态！✨_

  <a href="./LICENSE">
      <img src="https://img.shields.io/github/license/owner/nonebot-plugin-multimodal-gemini.svg" alt="license">
  </a>
  <a href="https://pypi.org/project/nonebot-plugin-multimodal-gemini/">
      <img src="https://img.shields.io/pypi/v/nonebot-plugin-multimodal-gemini.svg" alt="pypi">
  </a>
  <img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="python">

  </div>



  <details open>
  <summary>使用 nb-cli 安装</summary>
  在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

      nb plugin install nonebot-plugin-multimodal-gemini

  </details>

  <details>
  <summary>使用包管理器安装</summary>
  在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令

  <details>
  <summary>pip</summary>

      pip install nonebot-plugin-multimodal-gemini
  </details>
  <details>
  <summary>pdm</summary>

      pdm add nonebot-plugin-multimodal-gemini
  </details>
  <details>
  <summary>poetry</summary>

      poetry add nonebot-plugin-multimodal-gemini
  </details>
  <details>
  <summary>conda</summary>

      conda install nonebot-plugin-multimodal-gemini
  </details>

  打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入

      plugins = ["nonebot-plugin-multimodal-gemini"]

  </details>



  | 配置项 | 必填 | 默认值 |       说明       |
  |:-----:|:----:|:----:|:--------------:|
  | gm_api_key | 是 | 无 | [Gemini API Key](https://aistudio.google.com/app/apikey?) |
  | gm_model | 否 | gemini-2.0-flash-exp |   Gemini 模型    |
  | gm_prompt | 否 | 请用中文回答以下问题： |      提示词（不要设置太长）       |




  |       指令        | 权限 | 需要@ |  范围   | 说明 |
  |:---------------:|:----:|:----:|:-----:|:----:|
  | gemini / Gemini | 群员 | 否 | 群聊 | 指令说明 |



  ![](https://s2.loli.net/2024/12/05/2toGhBxZLzeHk9V.png)


pkgId: 2f0469952f5569454ca68eb1e48f0a39b34bcc1718495621e9eaedd59fcc9242
name: python-nonebot-plugin-multimodal-gemini-help
arch: noarch
version: 0.0.6
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-multimodal-gemini
url: https://github.com/zhiyu1998/nonebot-plugin-multimodal-gemini
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-multimodal-gemini-0.0.6-1.src.rpm
location_href: Packages/python-nonebot-plugin-multimodal-gemini-help-0.0.6-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://v2.nonebot.dev/store"><img src="https://s2.loli.net/2024/12/05/97BPodAZpy4GEuh.png" width="180" height="180" alt="NoneBotPluginLogo"></a>
    <br>
    <p><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/NoneBotPlugin.svg" width="240" alt="NoneBotPluginText"></p>
  </div>

  <div align="center">



  _✨Nonebot2 的谷歌 Gemini 多模态助手，一个命令即可玩转 Gemini 的多模态！✨_

  <a href="./LICENSE">
      <img src="https://img.shields.io/github/license/owner/nonebot-plugin-multimodal-gemini.svg" alt="license">
  </a>
  <a href="https://pypi.org/project/nonebot-plugin-multimodal-gemini/">
      <img src="https://img.shields.io/pypi/v/nonebot-plugin-multimodal-gemini.svg" alt="pypi">
  </a>
  <img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="python">

  </div>



  <details open>
  <summary>使用 nb-cli 安装</summary>
  在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

      nb plugin install nonebot-plugin-multimodal-gemini

  </details>

  <details>
  <summary>使用包管理器安装</summary>
  在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令

  <details>
  <summary>pip</summary>

      pip install nonebot-plugin-multimodal-gemini
  </details>
  <details>
  <summary>pdm</summary>

      pdm add nonebot-plugin-multimodal-gemini
  </details>
  <details>
  <summary>poetry</summary>

      poetry add nonebot-plugin-multimodal-gemini
  </details>
  <details>
  <summary>conda</summary>

      conda install nonebot-plugin-multimodal-gemini
  </details>

  打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入

      plugins = ["nonebot-plugin-multimodal-gemini"]

  </details>

  > [!IMPORTANT]
  > 请确保已安装可用的浏览器, 如有关于缺失浏览器的报错, 请尝试进入Bot虚拟环境 (如果有) 并运行`playwright install`命令



  | 配置项 | 必填 | 默认值 |       说明       |
  |:-----:|:----:|:----:|:--------------:|
  | gm_api_key | 是 | 无 | [Gemini API Key](https://aistudio.google.com/app/apikey?) |
  | gm_model | 否 | gemini-2.0-flash-exp |   Gemini 模型    |
  | gm_prompt | 否 | 请用中文回答以下问题： |      提示词（不要设置太长）       |




  |       指令        | 权限 | 需要@ |  范围   | 说明 |
  |:---------------:|:----:|:----:|:-----:|:----:|
  | gemini / Gemini | 群员 | 否 | 群聊 | 指令说明 |



  ![](https://s2.loli.net/2024/12/05/2toGhBxZLzeHk9V.png)



  同时感谢以下开发者对 `Nonebot - Gemini 多模态助手` 作出的贡献：

  <a href="https://github.com/zhiyu1998/nonebot-plugin-multimodal-gemini/graphs/contributors">
    <img src="https://contrib.rocks/image?repo=zhiyu1998/nonebot-plugin-multimodal-gemini&max=1000" />
  </a>


pkgId: cfd1aac6d98807ae472f22cdcc678f5547d4a0d7407b4a97c1be0852e030db1e
name: python-nonebot-plugin-pjsekaihelper-help
arch: noarch
version: 1.0.14
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-pjsekaihelper
url: https://pypi.org/project/nonebot-plugin-pjsekaihelper/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-pjsekaihelper-1.0.14-1.src.rpm
location_href: Packages/python-nonebot-plugin-pjsekaihelper-help-1.0.14-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://v2.nonebot.dev/store"><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/nbp_logo.png" width="180" height="180" alt="NoneBotPluginLogo"></a>
    <br>
    <p><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/NoneBotPlugin.svg" width="240" alt="NoneBotPluginText"></p>
  </div>

  <div align="center">



  _✨ 世界计划小助手 ✨_

  ![LICENSE](https://img.shields.io/github/license/Ant1816/nonebot-plugin-pjsekaihelper.svg)
  [![PYPI](https://img.shields.io/pypi/v/nonebot-plugin-pjsekaihelper.svg)](https://pypi.python.org/pypi/nonebot-plugin-pjsekaihelper)
  ![Python3.9+](https://img.shields.io/badge/Python-3.9+-blue)
  ![nonebot2](https://img.shields.io/badge/NoneBot2-2.3.1+-red)
  ![onebotv11](https://img.shields.io/badge/OneBot-v11-yellow)

  </div>



  世界计划插件，拥有组建车队等功能，持续开发中

  <div align="center">



  </div>



  <details open>
  <summary>使用 nb-cli 安装</summary>
  在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

      nb plugin install nonebot-plugin-pjsekaihelper

  </details>

  <details>
  <summary>使用包管理器安装</summary>
  在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令

  <details>
  <summary>pip</summary>

      pip install nonebot-plugin-pjsekaihelper
  </details>
  <details>
  <summary>pdm</summary>

      pdm add nonebot-plugin-pjsekaihelper
  </details>
  <details>
  <summary>poetry</summary>

      poetry add nonebot-plugin-pjsekaihelper
  </details>
  <details>
  <summary>conda</summary>

      conda install nonebot-plugin-pjsekaihelper
  </details>

  打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入

      plugins = ["nonebot_plugin_pjsekaihelper"]

  </details>



  在 nonebot2 项目的`.env`文件中添加下表中的必填配置

  | 配置项 | 必填 | 默认值 | 说明 |
  |:-----:|:----:|:----:|:----:|
  | 无 | 无 | 无 | 无 |



  | 指令 | 权限 | 需要@ | 范围 | 说明 |
  |:-----:|:----:|:----:|:----:|:----:|
  | pjsk help | 群员 | 否 | 群聊 | 获取指令帮助 |
  | 建车队/组队/组车队 <房间号> <服务器(日/台/韩/国际/中)> | 群员 | 否 | 群聊 | 创建一个车队 |
  | 删除车队/删队/删车队 <房间号> | 群主/管理员/SUPERUSER | 否 | 群聊 | 删除指定车队 |
  | 车队号/房间号/车号/有烤吗/有烤嘛/ycm | 群员 | 否 | 群聊 | 发送房间列表 |
  | 重置车队列表 | SUPERUSER | 否 | 群聊 | 清空房间列表 |


  - [x] 跨群车队组建
  - [ ] 随机抽卡
  - [ ] 表情包生成
  - [ ] 用户数据处理


  ![效果图](https://raw.githubusercontent.com/Ant1816/Ant1816/refs/heads/main/pjsekai.png)

rpm_license:
  MIT License  Copyright (c) 2024 Ant1  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: 7630ca1b33a011a4c6468091fc183ae3c87339686ea64f566a66496aacdd2177
name: python-nonebot-plugin-pjsekaihelper-help
arch: noarch
version: 1.0.19
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-pjsekaihelper
url: https://pypi.org/project/nonebot-plugin-pjsekaihelper/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-pjsekaihelper-1.0.19-1.src.rpm
location_href: Packages/python-nonebot-plugin-pjsekaihelper-help-1.0.19-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://v2.nonebot.dev/store"><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/nbp_logo.png" width="180" height="180" alt="NoneBotPluginLogo"></a>
    <br>
    <p><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/NoneBotPlugin.svg" width="240" alt="NoneBotPluginText"></p>
  </div>

  <div align="center">



  _✨ 世界计划小助手 ✨_

  ![LICENSE](https://img.shields.io/github/license/Ant1816/nonebot-plugin-pjsekaihelper.svg)
  [![PYPI](https://img.shields.io/pypi/v/nonebot-plugin-pjsekaihelper.svg)](https://pypi.python.org/pypi/nonebot-plugin-pjsekaihelper)
  ![Python3.9+](https://img.shields.io/badge/Python-3.9+-blue)
  ![nonebot2](https://img.shields.io/badge/NoneBot2-2.3.1+-red)
  ![onebotv11](https://img.shields.io/badge/OneBot-v11-yellow)

  </div>



  世界计划插件，拥有组建车队等功能，持续开发中

  <div align="center">



  </div>



  <details open>
  <summary>使用 nb-cli 安装</summary>
  在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

      nb plugin install nonebot-plugin-pjsekaihelper

  </details>

  <details>
  <summary>使用包管理器安装</summary>
  在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令

  <details>
  <summary>pip</summary>

      pip install nonebot-plugin-pjsekaihelper
  </details>
  <details>
  <summary>pdm</summary>

      pdm add nonebot-plugin-pjsekaihelper
  </details>
  <details>
  <summary>poetry</summary>

      poetry add nonebot-plugin-pjsekaihelper
  </details>
  <details>
  <summary>conda</summary>

      conda install nonebot-plugin-pjsekaihelper
  </details>

  打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入

      plugins = ["nonebot_plugin_pjsekaihelper"]

  </details>



  在 nonebot2 项目的`.env`文件中添加下表中的必填配置

  | 配置项 | 必填 | 默认值 | 说明 |
  |:-----:|:----:|:----:|:----:|
  | 无 | 无 | 无 | 无 |



  | 指令 | 权限 | 需要@ | 范围 | 说明 |
  |:-----:|:----:|:----:|:----:|:----:|
  | pjsk help | 群员 | 否 | 群聊 | 获取指令帮助 |
  | 建车队/组队/组车队 <房间号> <服务器(日/台/韩/国际/中)> | 群员 | 否 | 群聊 | 创建一个车队 |
  | 删除车队/删队/删车队 <房间号> | 群主/管理员/SUPERUSER | 否 | 群聊 | 删除指定车队 |
  | 车队号/房间号/车号/有烤吗/有烤嘛/ycm | 群员 | 否 | 群聊 | 发送房间列表 |
  | 重置车队列表 | SUPERUSER | 否 | 群聊 | 清空房间列表 |


  &#x1F7E9; 跨群车队组建

  &#x1F7E8; 表情包生成

  &#x1F7E5; 随机抽卡

  &#x1F7E5; 用户数据处理


  ![效果图](https://raw.githubusercontent.com/Ant1816/Ant1816/refs/heads/main/pjsekai.png)

rpm_license:
  MIT License  Copyright (c) 2024 Ant1  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: 502777be6fe61d32f812b12cbc88d029edf04574008e4c1d9b4108dbef582fed
name: python-nonebot-plugin-resolver2-help
arch: noarch
version: 1.4.5
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-resolver2
url: https://github.com/fllesser/nonebot-plugin-resolver2
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-resolver2-1.4.5-1.src.rpm
location_href: Packages/python-nonebot-plugin-resolver2-help-1.4.5-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">
      <a href="https://v2.nonebot.dev/store">
      <img src="./.docs/NoneBotPlugin.svg" width="300" alt="logo"></a>
  </div>

  <div align="center">



  _✨ NoneBot2 链接分享解析器重制版 ✨_


  <a href="./LICENSE">
      <img src="https://img.shields.io/github/license/fllesser/nonebot-plugin-resolver2.svg" alt="license">
  </a>
  <a href="https://pypi.python.org/pypi/nonebot-plugin-resolver2">
      <img src="https://img.shields.io/pypi/v/nonebot-plugin-resolver2.svg" alt="pypi">
  </a>
  <img src="https://img.shields.io/badge/python-3.10+-blue.svg" alt="python">

  </div>



  [nonebot-plugin-resolver](https://github.com/zhiyu1998/nonebot-plugin-resolver) 重制版
  - 重构了整体结构，使用 localstore 存储下载的数据，并定时清理（原插件全是用的绝对路径，给孩子改哭了）
  - 匹配消息换用 on_keyword，防止正则导致 Bot 卡死
  - 优化了一些交互体验，尽可能避免刷屏（还没改到自己满意）
  - 添加了 B站，Youtube 音频下载功能
  - ......

  触发解析的消息形态:
  - BV号
  - 链接(全平台)
  - 小程序(B站)
  - 卡片(B站[包括av号], 网易云)

  支持的平台:
  - B站(video, audio, pic)
  - 抖音(video, pic)
  - 网易云(audio)
  - 微博(video, pic)
  - 小红书(video, pic)
  - 酷狗(audio)
  - 网易云(audio)
  - acfun(video)
  - youtube(video, audio)
  - tiktok(video)
  - twitter(video, pic)


  > [!Warning]
  > **如果你已经在使用 nonebot-plugin-resolver，请在安装此插件前卸载**

  <details open>
  <summary>使用 nb-cli 安装/更新</summary>
  在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

      nb plugin install nonebot-plugin-resolver2 --upgrade

  </details>

  <details>
  <summary>使用包管理器安装</summary>
  在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令

  <details>
  <summary>pip</summary>

      pip install --upgrade nonebot-plugin-resolver2
  </details>
  <details>
  <summary>pdm</summary>

      pdm add nonebot-plugin-resolver2
  </details>
  <details>
  <summary>poetry</summary>

      poetry add nonebot-plugin-resolver2
  </details>
  <details>
  <summary>conda</summary>

      conda install nonebot-plugin-resolver2
  </details>

  打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入

      plugins = ["nonebot_plugin_resolver2"]

  </details>

  <details open>
  <summary>安装必要组件</summary>
  <summary>1. 大部分解析都依赖于 ffmpeg</summary>

      
      sudo apt-get install ffmpeg
      ffmpeg -version
      
      
  <summary>2. 抖音解析需要 JavaScript Runtime</summary>

      
      sudo apt-get install nodejs
      
  </details>



  在 nonebot2 项目的`.env`文件中添加下表中的必填配置

  | 配置项 | 必填 | 默认值 | 说明 |
  |:-----:|:----:|:----:|:----:|
  | NICKNAME | 否 | [""] | nonebot2内置配置，可作为解析结果消息的前缀 |
  | r_xhs_ck | 否 | "" | 小红书 cookie，想要解析小红书必填|
  | r_douyin_ck | 否 | "" | 抖音 cookie，想要解析抖音必填 |
  | r_bili_ck | 否 | "" | B站 cookie, 可不填，若填写，必须含有 SESSDATA 项，可附加 B 站 AI 总结功能 |
  | r_ytb_ck | 否 | "" | Youtube cookie, Youtube 视频因人机检测下载失败，需填 |
  | r_is_oversea | 否 | False | 海外服务器部署，或者使用了透明代理，设置为 True |
  | r_proxy | 否 | 'http://127.0.0.1:7890' | # 代理，仅在 r_is_oversea=False 时生效 |
  | r_video_duration_maximum | 否 | 480 | 视频最大解析长度，单位：_秒_ |
  | r_disable_resolvers | 否 | [] | 全局禁止的解析，示例 r_disable_resolvers=["bilibili", "douyin"] 表示禁止了哔哩哔哩和抖, 请根据自己需求填写["bilibili", "douyin", "kugou", "twitter", "ncm", "ytb", "acfun", "tiktok", "weibo", "xiaohongshu"] |



  | 指令 | 权限 | 需要@ | 范围 | 说明 |
  |:-----:|:----:|:----:|:----:|:----:|
  | 开启解析 | SUPERUSER/OWNER/ADMIN | 是 | 群聊 | 开启解析 |
  | 关闭解析 | SUPERUSER/OWNER/ADMIN | 是 | 群聊 | 关闭解析 |
  | 开启所有解析 | SUPERUSER | 否 | 私聊 | 开启所有群的解析 |
  | 关闭所有解析 | SUPERUSER | 否 | 私聊 | 关闭所有群的解析 |
  | 查看关闭解析 | SUPERUSER | 否 | - | 获取已经关闭解析的群聊 |
  | bm BV... | USER | 否 | - | 下载 b站 音乐 |



  大部分解析代码来自 [nonebot-plugin-resolver](https://github.com/zhiyu1998/nonebot-plugin-resolver)


pkgId: b53eaedf0ecb7f7f78818bdae20ea4a000324ebe9517eae33f548cd70312a845
name: python-nonebot-plugin-summary-help
arch: noarch
version: 0.4.2
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-summary
url: https://pypi.org/project/nonebot-plugin-summary/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-summary-0.4.2-1.src.rpm
location_href: Packages/python-nonebot-plugin-summary-help-0.4.2-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://v2.nonebot.dev/store"><img src="./docs/NoneBotPlugin.svg" width="400" alt="NoneBotPluginLogo"></a>
    <br>
    <p><img src="https://s2.loli.net/2022/06/16/xsVUGRrkbn1ljTD.png" width="240" alt="NoneBotPluginText"></p>
  </div>

  <div align="center">


  nonebot-plugin-summary

  <p align="center">
    <a href="https://pypi.python.org/pypi/nonebot-plugin-summary">
      <img src="https://img.shields.io/pypi/v/nonebot-plugin-summary.svg" alt="pypi">
    </a>

    <img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="python">

    <a href="https://qm.qq.com/q/Yty2yc9Bee">
      <img src="https://img.shields.io/badge/QQ%E7%BE%A4-1128359833-orange?style=flat-square" alt="QQ Chat Group">
    </a>
  </p>

  \>💬**使用AI总结群友说了什么B话**💬<
  </div>



  通过`pip`或`nb`安装：

  - 通过 pip 安装
  ```shell
  pip install nonebot-plugin-summary
  ```

  - 通过 nb-cli安装
  ```shell
  nb plugin install nonebot-plugin-summary
  ```



  1. [nonebot-plugin-datastore](https://github.com/he0119/nonebot-plugin-datastore) ————本地化储存
  2. [nonebot-plugin-userinfo](https://github.com/noneplugin/nonebot-plugin-userinfo) ————获取用户信息
  3. [nonebot-plugin-alconna](https://github.com/ArcletProject/nonebot-plugin-alconna) ————实现命令解析
  4. [nonebot-plugin-chatrecorder](https://github.com/noneplugin/nonebot-plugin-chatrecorder) ————实现消息储存
  5. [nonebot-plugin-saa](https://github.com/MountainDash/nonebot-plugin-send-anything-anywhere) ————实现多平台

   **⚠注意** 若先前没有安装过```nonebot-plugin-chatrecorder```或者```nonebot-plugin-orm```，则会在启动时报错，请按报错的提示安装数据库！



  需要**提前配置**本插件所**依赖的插件**！

  在 .env 中，可以添加以下配置项
  ```python
  SUMMARY__TOKEN = your_token #必填！！
  SUMMARY__BASE_URL = "https://api.gpt.ge/v1" #可选，默认为 https://api.gpt.ge/v1
  SUMMARY__MODEL_NAME = "gpt-4o-mini" #可选，默认为 gpt-4o-mini
  SUMMARY__DEFAULT_CONTEXT = 100 #可选，默认为 100,获取上下文数量
  ```

  必须填写TOKEN，否则无法使用！TOKEN就是API_KEY！理论上支持所有OpenAI格式的访问和返回。





  /总结 ————使用AI总结群友说了什么B话！




  /总结 100 114514 1919810 2024-01-01~2024-01-02

  /总结 {总结消息数} {用户id} {群号} {时间范围}



  | 平台 | 是否经过测试 | 是否能够正常工作 | 测试环境 |
  |:-----:|:----:|:----:| :----: |
  | Onebot | ✅ | ✅ | NapCat + Window11|
  | 飞书  | ❌ | ❓ | 🤔 |
  | Red  | ❌ | ❓ | 🤔 |
  | DoDo  | ❌ | ❓ | 🤔 |
  | Mirai  | ❌ | ❓ | 🤔 |
  | 开黑啦  | ❌ | ❓ | 🤔 |
  | Kritor  | ❌ | ❓ | 🤔 |
  | Ntchat  | ❌ | ❓ | 🤔 |
  | Satori  | ❌ | ❓ | 🤔 |
  | Telegram | ❌ | ❓ | 🤔  |
  | Discord  | ❌ | ❓ | 🤔 |
  | Tailchat  | ❌ | ❓ | 🤔 |
  | QQ 官方接口  | ❌ | ❓ | 🤔 |
  | Rocket.Chat  | ❌ | ❓ | 🤔 |

  - 如果你测试过能够使用，请在 Issue 中指出





  [群连接](https://qm.qq.com/q/Yty2yc9Bee)

  <details>
  <summary>群二维码 点我展开</summary>

  ![7a4bd22dea47d25d9b632d4b2696d4cd](https://github.com/ChenXu233/nonebot_plugin_dialectlist/assets/91937041/61fd7010-e2b2-4f13-b209-9c0faf8a517f)

  </details>



  感谢我的学长免费给我提供了API_KEY！

  感谢以下开发者作出的贡献：

  <a href="https://github.com/ChenXu233/nonebot-plugin-summary/graphs/contributors">
    <img src="https://contrib.rocks/image?repo=ChenXu233/nonebot-plugin-summary&max=1000" />
  </a>



  - [x] 适配全平台

  - [x] 实现总结以转发消息发送

  - [x] 实现总结特定人的消息总结

  - [ ] 实现转发消息总结

  - [ ] 实现总结以图片发送

  - [ ] 实现总结跳转

  - [ ] 移除HIM

   待补充。.....


  ~~整个项目快被我写成屎山了~~


pkgId: 50010af43f37979aaa612277169032d8e9bd0cc3be60c29595d82b96bcf4fcf7
name: python-nonebot-plugin-tetris-stats-help
arch: noarch
version: 1.7.0
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-tetris-stats
url: https://github.com/A-Minos/nonebot-plugin-tetris-stats
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-tetris-stats-1.7.0-1.src.rpm
location_href: Packages/python-nonebot-plugin-tetris-stats-help-1.7.0-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">

  <p align="center">
    <img src="img/logo.svg" width="200" height="200" alt="logo" title="Tetris Stats"></a>
  </p>



  ✨ 一款基于 [NoneBot2](https://github.com/nonebot/nonebot2) 的用于查询 Tetris 相关游戏玩家数据的插件 ✨

  </div>

  <p align="center">
  <a href="https://github.com/shoucandanghehe/nonebot-plugin-tetris-stats/blob/main/LICENSE">
    <img
      src="https://img.shields.io/github/license/shoucandanghehe/nonebot-plugin-tetris-stats"
      alt="License"
    />
  </a>
  <a href="https://www.python.org/">
    <img
      src="https://img.shields.io/badge/Python-3.10+-blue"
      alt="Python"
    />
  </a>
  <a href="https://pypi.python.org/pypi/nonebot-plugin-tetris-stats">
    <img
      src="https://img.shields.io/pypi/v/nonebot-plugin-tetris-stats"
      alt="PyPi"
    />
  </a>
  <a href="https://github.com/charliermarsh/ruff">
    <img
      src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v1.json"
      alt="Ruff"
    />
  </a>
  <a href="https://gitmoji.dev">
    <img
      src="https://img.shields.io/badge/gitmoji-%20😜%20😍-FFDD67.svg?style=flat-square"
      alt="Gitmoji"
    />
  </a>
  <a href="https://wakatime.com/badge/user/138b2226-8e02-42be-b99d-35c05198836f/project/65f5bdf7-45ec-479a-8dd2-18c498c910ca">
    <img
      src="https://wakatime.com/badge/user/138b2226-8e02-42be-b99d-35c05198836f/project/65f5bdf7-45ec-479a-8dd2-18c498c910ca.svg"
      alt="wakatime"
      />
  </a>
  </p>



  - [TETR.IO](https://tetr.io/)
  - [茶服](https://teatube.cn/tos/)
  - [TOP](http://tetrisonline.pl/)



  - 使用 nb-cli

  ```bash
  nb plugin install nonebot-plugin-tetris-stats
  ```

  - 使用 poetry

  ```bash
  poetry add nonebot-plugin-tetris-stats
  ```

  - 使用 pip ~~不推荐~~

  ```bash
  pip install nonebot-plugin-tetris-stats
  ```



  - 参考 NoneBot2 文档 [加载插件](https://nonebot.dev/docs/tutorial/create-plugin#%E5%8A%A0%E8%BD%BD%E6%8F%92%E4%BB%B6)



  - [NoneBot2](https://v2.nonebot.dev/)
  - 所有为机器人生态做出贡献的人❤️



  本项目使用 [AGPL-3.0](https://github.com/shoucandanghehe/nonebot-plugin-tetris-stats/blob/main/LICENSE) 许可证开源



  <a href="https://star-history.com/#A-Minos/nonebot-plugin-tetris-stats&Date">
   <picture>
     <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=A-Minos/nonebot-plugin-tetris-stats&type=Date&theme=dark" />
     <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=A-Minos/nonebot-plugin-tetris-stats&type=Date" />
     <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=A-Minos/nonebot-plugin-tetris-stats&type=Date" />
   </picture>
  </a>


pkgId: 1ca9c10eb6a2864f3dd49d8b3aa68e95fd52f130ce83548fe0b53d4c2ef82efc
name: python-nonebot-plugin-voicemusic-help
arch: noarch
version: 0.1.17
epoch: 0
release: 1
summary: Development documents and examples for nonebot-plugin-voicemusic
url: https://github.com/Onimaimai/nonebot-plugin-voicemusic
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot-plugin-voicemusic-0.1.17-1.src.rpm
location_href: Packages/python-nonebot-plugin-voicemusic-help-0.1.17-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">
    <a href="https://v2.nonebot.dev/store"><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/nbp_logo.png" width="180" height="180" alt="NoneBotPluginLogo"></a>
    <br>
    <p><img src="https://github.com/A-kirami/nonebot-plugin-template/blob/resources/NoneBotPlugin.svg" width="240" alt="NoneBotPluginText"></p>
  </div>

  <div align="center">



  _✨ NoneBot 语音发送点歌插件 ✨_



  从 QChatGPT 移植的 Nonebot 语音收听点歌插件



  [QChatGPT_Plugin_Music](https://github.com/zzseki/QChatGPT_Plugin_Music)

  [QChatGPT_Plugin_QQMusic](https://github.com/wcwq98/ChatGPT_Plugin_QQMusic)

  [星之阁API](https://api.xingzhige.com)



  <details open>
  <summary>使用 nb-cli 安装</summary>
  在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

      nb plugin install nonebot-plugin-voicemusic

  </details>

  <details>
  <summary>使用包管理器安装</summary>
  在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令

  <details>
  <summary>pip</summary>

      pip install nonebot-plugin-voicemusic
  </details>
  <details>
  <summary>pdm</summary>

      pdm add nonebot-plugin-voicemusic
  </details>
  <details>
  <summary>poetry</summary>

      poetry add nonebot-plugin-voicemusic
  </details>
  <details>
  <summary>conda</summary>

      conda install nonebot-plugin-voicemusic
  </details>

  打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入

      plugins = ["nonebot_plugin_voicemusic"]

  </details>



  需要下载安装ffmpeg

  Linux可执行如下命令来安装ffmpeg
  ```
  sudo apt install ffmpeg
  ```

  在 nonebot2 项目的`.env`文件中添加下表中的必填配置

  | 配置项 | 必填 | 说明 |
  |:-----:|:----:|:----:|
  | uin | 是 | 提供key的qq号 |
  | key | 是 | qqmusic_key |

  例：

  ```
  UIN = "YOUR_UIN" # 请将这里的'YOUR_UIN'替换为提供key的qq号
  ```
  ```
  SKEY = "YOUR_SKEY" # 请将这里的'YOUR_SKEY'替换为获取的qqmusic_key
  ```

  获取qqmusic_key/qm_keyst的方法:[打开QQ音乐官网](https://y.qq.com/),登录后按f12并切换到应用（application）后在cookies中寻找参数填入就好
  只能获取QQ音乐上有的音乐



  | 指令 | 权限 | 需要@ | 范围 | 说明 |
  |:-----:|:----:|:----:|:----:|:----:|
  | 点歌 <歌名> <歌手> | 群员 | 否 | 群聊 | 歌手为可选项 |


  ![919e9a51d7af4dc558b2b4968f3a13c3](https://github.com/user-attachments/assets/ec29fffe-7aee-44c6-a66b-c4f68e1bba40)


pkgId: 998e67249b88da82a65b55f0afaaf0269733bac387f006c8ff96ddd85dae1c24
name: python-nonebot_plugin_chatrecorder-help
arch: noarch
version: 0.7.0
epoch: 0
release: 1
summary: Development documents and examples for nonebot_plugin_chatrecorder
url: https://github.com/noneplugin/nonebot-plugin-chatrecorder
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonebot_plugin_chatrecorder-0.7.0-1.src.rpm
location_href: Packages/python-nonebot_plugin_chatrecorder-help-0.7.0-1.noarch.rpm
checksum_type: sha256
description:
  <div align="center">

    <a href="https://nonebot.dev/">
      <img src="https://nonebot.dev/logo.png" width="200" height="200" alt="nonebot">
    </a>



  _✨ [Nonebot2](https://github.com/nonebot/nonebot2) 聊天记录插件 ✨_

  <p align="center">
    <img src="https://img.shields.io/github/license/noneplugin/nonebot-plugin-chatrecorder" alt="license">
    <img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="Python">
    <img src="https://img.shields.io/badge/nonebot-2.3.0+-red.svg" alt="NoneBot">
    <a href="https://pypi.org/project/nonebot-plugin-chatrecorder">
      <img src="https://badgen.net/pypi/v/nonebot-plugin-chatrecorder" alt="pypi">
    </a>
  </p>

  </div>

  将聊天消息存至数据库中，方便其他插件使用。



  - 使用 nb-cli

  ```shell
  nb plugin install nonebot_plugin_chatrecorder
  ```

  - 使用 pip

  ```shell
  pip install nonebot_plugin_chatrecorder
  ```



  > 以下配置项可在 `.env.*` 文件中设置，具体参考 [NoneBot 配置方式](https://nonebot.dev/docs/appendices/config)



  - 类型：`bool`
  - 默认：`True`
  - 说明：是否记录机器人自己发出的消息



  其他插件可使用本插件提供的接口获取消息记录

  先在插件代码最前面声明依赖：

  ```python
  from nonebot import require
  require("nonebot_plugin_chatrecorder")
  ```

  使用示例：

  > [!NOTE]
  >
  > 插件依赖 [nonebot-plugin-uninfo](https://github.com/RF-Tar-Railt/nonebot-plugin-uninfo) 插件来获取会话相关信息
  >
  > 会话相关字段如 `scene_id`、`scene_type`、`scope` 可以查看 `nonebot-plugin-uninfo` 插件中的说明

  - 获取当前群内成员 "12345" 和 "54321" 1天之内的消息记录

  ```python
  from nonebot.adapters.onebot.v11 import GroupMessageEvent
  from nonebot_plugin_chatrecorder import get_message_records

  @matcher.handle()
  async def _(event: GroupMessageEvent):
      records = await get_message_records(
          user_ids=["12345", "54321"],
          scene_ids=[str(event.group_id)],
          time_start=datetime.utcnow() - timedelta(days=1),
      )
  ```

  > [!NOTE]
  >
  > `time_start` 和 `time_stop` 参数 传入的 `datetime` 对象必须为 [感知型对象](https://docs.python.org/zh-cn/3/library/datetime.html#determining-if-an-object-is-aware-or-naive)（即包含时区信息），或者确保其为 UTC 时间

  - 获取当前会话成员 1 天之内的消息记录

  ```python
  from nonebot_plugin_uninfo import Uninfo
  from nonebot_plugin_chatrecorder import get_message_records

  @matcher.handle()
  async def _(session: Uninfo):
      records = await get_message_records(
          session=session,
          time_start=datetime.utcnow() - timedelta(days=1),
      )
  ```

  > [!NOTE]
  >
  > 可以传入 [nonebot-plugin-uninfo](https://github.com/RF-Tar-Railt/nonebot-plugin-uninfo) 插件获取的 `Session` 对象来筛选消息记录
  >
  > 传入 `Session` 时可以通过 `filter_scene`、`filter_user` 等选项来控制要筛选的会话级别

  - 获取当前 群聊/私聊 除机器人发出的消息外，其他消息的纯本文形式

  ```python
  from nonebot_plugin_uninfo import Uninfo
  from nonebot_plugin_chatrecorder import get_messages_plain_text

  @matcher.handle()
  async def _(session: Uninfo):
      msgs = await get_messages_plain_text(
          session=session,
          filter_scene=True,
          filter_user=False,
          types=["message"],
      )
  ```

  详细参数及说明见代码注释





  从 `0.1.x` 版本升级到 `0.2.x` 版本时，需要添加如下配置项以完成迁移

  > #### `chatrecorder_record_migration_bot_id`
  >
  > - 类型：`Optional[str]`
  > - 默认：`None`
  > - 说明：在旧版本(0.1.x) 时使用的机器人账号(机器人qq号)，用于数据库迁移；若使用过此插件的旧版本则必须配置，数据库迁移完成后可删除；未使用过旧版本可不配置



  从 `0.2.x` 版本升级到 `0.3.x` ~ `0.4.x` 版本时，会自动运行迁移脚本，或运行 `nb datastore upgrade` 进行迁移

  若聊天记录很多，迁移可能会花费较长时间，在迁移过程中不要关闭程序



  从 `0.4.x` 版本升级到 `0.5.x` 版本时，插件数据库依赖由 [nonebot-plugin-datastore](https://github.com/he0119/nonebot-plugin-datastore) 迁移至 [nonebot-plugin-orm](https://github.com/nonebot/plugin-orm)

  要迁移聊天记录，需要同时安装 `nonebot-plugin-datastore` 和 `nonebot-plugin-orm`，运行 `nb orm upgrade` 进行迁移

  若聊天记录很多，迁移可能会花费较长时间，在迁移过程中不要关闭程序



  若要从 `0.2.x` 版本直接升级到 `0.5.x`，需要先升级到 `0.4.x` 版本，运行 `nb datastore upgrade` 完成迁移后，再继续升级



  `0.7.x` 版本会话信息获取插件从 [nonebot-plugin-session](https://github.com/noneplugin/nonebot-plugin-session) 替换为 [nonebot-plugin-uninfo](https://github.com/RF-Tar-Railt/nonebot-plugin-uninfo)

  需安装 [nonebot-session-to-uninfo](https://github.com/noneplugin/nonebot-session-to-uninfo)（迁移完成后可删除），并运行 `nb datastore upgrade` 进行聊天记录迁移

  若聊天记录很多，迁移可能会花费较长时间，在迁移过程中不要关闭程序



  > [!NOTE]
  >
  > 由于在 OneBot V11 适配器中，机器人**发送的消息**中可能存在 base64 形式的图片、语音等，
  >
  > 为避免消息记录文件体积过大，本插件会将 base64 形式的图片、语音等存成文件，并在消息记录中以文件路径替代。
  >
  > 这些文件会放置在 [nonebot-plugin-localstore](https://github.com/nonebot/plugin-localstore) 插件设置的缓存目录，**建议定期清理**



  - [x] OneBot v11
  - [x] OneBot v12
  - [x] Console
  - [x] Kaiheila
  - [x] Telegram
  - [x] Feishu
  - [x] Discord
  - [x] DoDo
  - [x] Satori
  - [x] QQ



  - [nonebot-plugin-send-anything-anywhere](https://github.com/felinae98/nonebot-plugin-send-anything-anywhere) 项目的灵感来源以及部分实现的参考
  - [uy/sun](https://github.com/he0119) 感谢歪日佬的技术支持


pkgId: 8b486081292c36b90337fd2a40f3a86d4c1973be837b40430a6988374d2eff54
name: python-nonex-help
arch: noarch
version: 0.1.2
epoch: 0
release: 1
summary: Development documents and examples for nonex
url: https://pypi.org/project/nonex/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nonex-0.1.2-1.src.rpm
location_href: Packages/python-nonex-help-0.1.2-1.noarch.rpm
checksum_type: sha256
description:
  A few None-safe functions missing from the standard library. Inspired by [Hack](https://hacklang.org)'s funcX pattern.


pkgId: a2b54d9ef87a684430db04b6ab6e0866c567dbcd6e9adba78bb382c625917be0
name: python-normliv-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for normliv
url: https://gitlab.com/finug/normalize-livonian
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-normliv-0.1.0-1.src.rpm
location_href: Packages/python-normliv-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  *NormLiv* is a Python package which quickly normalizes Livonian orthographies based on the chosen standard. It focuses on Unicode normalization to avoid confusions between diacritics and codes.



  Settings below are the default. They can be manually disabled:

  - Removes the broken tone
  - Replaces the vowels ǭ, y, ȳ, ü, ǖ
  - Palatalized letters are normalized as described below
  - Uses a *Normalization Form Canonical Composition* (NFC) Unicode transcription, where all combinable codepoints are composed.

  > **Warning !** Because of the NFC conversion, some other characters might be affected. See more details [here](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms)




  Latvian and Livonian palatalized consonants are written with a comma below or above. However, when Latvian (and Livonian) needed to be represented as codepoints in the 90s, the first unicode standard used characters labelled "with cedilla", although they are represented with a comma. Nowadays, the cedilla is still used but displayed as a comma for most consonants *except* t. The solution adopted here is the following:

  - Replace cedilla by comma for t
  - Replace comma by cedilla for other consonants.

  The use of the comma (the only correct representation) can be enforced. See more on this issue:

  - https://www.unicode.org/L2/L2013/13155r-cedilla-comma.pdf
  - https://en.wikipedia.org/wiki/Cedilla
  - http://diacritics.typo.cz/index.php?id=9





  *NormLiv* is available through the PyPi repositories and can be installed via:

  ```
  pip install normliv
  ```



  ``` python
  from normliv import normalize
  text = '...'
  print(normalize(text))
  ```



  Parameters for the `normalize` function:

  - text (str): The string to transliterate.
  - tone (bool): Whether the tone should be kept. Defaults to False.
  - eastern (bool): Whether the distinction between *ǭ* and *ō* should be kept. Defaults to False
  - rounded (bool): Whether the *y/ü* and *ö* should be kept. Defaults to False.
  - convention (str): Unicode convention to use. One of:
      - NFC (Composed, default)
      - NFD (Decomposed).



  - Handle caps
  - More options for custom transcriptions
  - More tests


pkgId: 0f94eb03219d22312bb8cd8ad47e80e6712d8655316a3fd0328344f15cd79f45
name: python-nosa-autostreamlit-help
arch: noarch
version: 0.1.2
epoch: 0
release: 1
summary: Development documents and examples for nosa-autostreamlit
url: https://github.com/thesnak/nosa-autostreamlit
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nosa-autostreamlit-0.1.2-1.src.rpm
location_href: Packages/python-nosa-autostreamlit-help-0.1.2-1.noarch.rpm
checksum_type: sha256
description:
  <p align="center">
    <img src="https://raw.githubusercontent.com/thesnak/nosa-autostreamlit/main/assets/nosa_autostreamlit_logo.webp" alt="Nosa-autoStreamlit Logo" width="200"/>
  </p>





  Nosa-autoStreamlit is an advanced Python framework that automates the creation of machine learning and data visualization Streamlit applications. Designed to simplify complex data science workflows with powerful, user-friendly tools.

  ![Python Version](https://img.shields.io/badge/python-3.8+-blue.svg)
  ![Streamlit](https://img.shields.io/badge/streamlit-1.10.0+-green.svg)
  ![License](https://img.shields.io/github/license/thesnak/nosa-autostreamlit)




  - Supports classification and regression problems
  - Advanced preprocessing techniques
  - Multiple machine learning models
  - Cross-validation
  - Hyperparameter tuning
  - Model saving and loading


  - Multiple visualization types
  - Interactive Plotly plots
  - Easy-to-use interface







  ```bash
  pip install nosa-autostreamlit
  ```

  ```bash
  pip install git+https://github.com/thesnak/nosa-autostreamlit.git
  ```



  ```bash

  git clone https://github.com/yourusername/nosa-autostreamlit.git
  cd nosa-autostreamlit


  python -m venv venv
  source venv/bin/activate  # On Windows use `venv\Scripts\activate`


  pip install -r requirements.txt
  ```


  - PyPI Package: https://pypi.org/project/nosa-autostreamlit/
  - GitHub Repository: https://github.com/thesnak/nosa-autostreamlit




  ```python
  from nosa_autostreamlit.generators import AdvancedMachineLearningGenerator


  generator = AdvancedMachineLearningGenerator()


  generator.load_data(
      data,
      target_column='target',
      problem_type='classification'
  )


  generator.advanced_preprocessing()
  generator.train_multiple_models()
  generator.generate_model_comparison_report()
  ```



  ```python
  from nosa_autostreamlit.generators import DataVisualizationGenerator


  generator = DataVisualizationGenerator()


  generator.load_data(data)


  generator.create_histogram()
  generator.create_scatterplot()
  generator.create_boxplot()
  ```


  - **`machine_learning_generator.py`**: Core ML functionality
  - **`data_visualization_generator.py`**: Visualization tools
  - **`advanced_ml_comparison.py`**: Example ML workflow
  - **`advanced_data_viz_example.py`**: Example visualization workflow



  - Streamlit
  - Pandas
  - NumPy
  - Scikit-learn
  - Plotly
  - Joblib


  Contributions are welcome! Please follow these steps:

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


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


  Your Name - mohamed.mahmoud0726@gmail.com

  Project Link: https://github.com/thesnak/nosa-autostreamlit


  Made with ❤️ by [Mohamed Mahmoud](https://github.com/thesnak)

rpm_license:
  MIT License  Copyright (c) 2024 Mohamed Mahmoud  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: 59c7586e26dabef15b8354b26deb183184b1a37753e7aa4edac45add23d65f37
name: python-not-gitmodules-help
arch: noarch
version: 0.4.4
epoch: 0
release: 1
summary: Development documents and examples for not-gitmodules
url: https://github.com/Armen-Jean-Andreasian/not_gitmodules
rpm_license: Custom License
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-not-gitmodules-0.4.4-1.src.rpm
location_href: Packages/python-not-gitmodules-help-0.4.4-1.noarch.rpm
checksum_type: sha256
description:
  Watch the intro:
  [![](https://markdown-videos-api.jorgenkh.no/youtube/QkFxP_6NA84)](https://youtu.be/QkFxP_6NA84)
  Long story short: `not_gitmodules` is a lightweight, production-ready Python utility designed to simplify managing external modules in


pkgId: 00a3494effb822a83d054c70aee69dc41c0c78b421b04c1cb21f1aa227e61331
name: python-notdiamond-help
arch: noarch
version: 0.3.33
epoch: 0
release: 1
summary: Development documents and examples for notdiamond
url: https://python.notdiamond.ai/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-notdiamond-0.3.33-1.src.rpm
location_href: Packages/python-notdiamond-help-0.3.33-1.noarch.rpm
checksum_type: sha256
description:
  Not Diamond is an AI model router that automatically determines which LLM is best-suited to respond to any query, improving LLM output quality by combining multiple LLMs into a **meta-model** that learns when to call each LLM.



  - **[Maximize output quality](https://notdiamond.readme.io/docs/quickstart)**: Not Diamond [outperforms every foundation model](https://notdiamond.readme.io/docs/benchmark-performance) on major evaluation benchmarks by always calling the best model for every prompt.
  - **[Reduce cost and latency](https://notdiamond.readme.io/docs/cost-and-latency-tradeoffs)**: Not Diamond lets you define intelligent cost and latency tradeoffs to efficiently leverage smaller and cheaper models without degrading quality.
  - **[Train your own router](https://notdiamond.readme.io/docs/router-training-quickstart)**: Not Diamond lets you train your own custom routers optimized to your data and use case.
  - **[Python](https://python.notdiamond.ai/), [TypeScript](https://www.npmjs.com/package/notdiamond), and [REST API](https://notdiamond.readme.io/reference/api-introduction) support**: Not Diamond works across a variety of stacks.



  **Python**: Requires **Python 3.10+**. It’s recommended that you create and activate a [virtualenv](https://virtualenv.pypa.io/en/latest/) prior to installing the package. For this example, we'll be installing the optional additional `create` dependencies, which you can learn more about [here](https://notdiamond.readme.io/docs/model_select-vs-create).

  ```shell
  pip install notdiamond[create]
  ```



  Make sure to install `libmagic` if you intend to use the `create` or `rag` extras:

  ```bash
  brew install libmagic
  ```



  Create a `.env` file with your [Not Diamond API key](https://app.notdiamond.ai/keys) and the [API keys of the models](https://notdiamond.readme.io/docs/api-keys) you want to route between:

  ```shell
  NOTDIAMOND_API_KEY = "YOUR_NOTDIAMOND_API_KEY"
  OPENAI_API_KEY = "YOUR_OPENAI_API_KEY"
  ANTHROPIC_API_KEY = "YOUR_ANTHROPIC_API_KEY"
  ```



  Create a new file in the same directory as your `.env` file and copy and run the code below (you can toggle between  Python and TypeScript in the top left of the code block):

  ```python
  from notdiamond import NotDiamond


  client = NotDiamond()


  result, session_id, provider = client.chat.completions.create(
      messages=[
          {"role": "system", "content": "You are a helpful assistant."},
          {"role": "user", "content": "Concisely explain merge sort."}  # Adjust as desired
      ],
      model=['openai/gpt-3.5-turbo', 'openai/gpt-4o', 'anthropic/claude-3-5-sonnet-20240620']
  )

  print("ND session ID: ", session_id)  # A unique ID of Not Diamond's recommendation
  print("LLM called: ", provider.model)  # The LLM routed to
  print("LLM output: ", result.content)  # The LLM response
  ```


pkgId: 8441932c2fbcc988bccc0def8ee1fb4b91f1db1d145d194e4698c8dae979ce21
name: python-notifications-python-client
arch: noarch
version: 10.0.1
epoch: 0
release: 1
summary: Python API client for GOV.UK Notify.
url: https://github.com/alphagov/notifications-python-client
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-notifications-python-client-10.0.1-1.src.rpm
location_href: Packages/python-notifications-python-client-10.0.1-1.noarch.rpm
checksum_type: sha256
description:
  Python API client for GOV.UK Notify - see https://www.notifications.service.gov.uk for more information.

  For usage and documentation see https://docs.notifications.service.gov.uk/python.html


pkgId: eb20211737e23130644a7fc281194eb91804290947085a1713a6a5df0dc037a9
name: python-notion-client-help
arch: noarch
version: 2.3.0
epoch: 0
release: 1
summary: Development documents and examples for notion-client
url: https://github.com/ramnes/notion-sdk-py
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-notion-client-2.3.0-1.src.rpm
location_href: Packages/python-notion-client-help-2.3.0-1.noarch.rpm
checksum_type: sha256
description:
  <!-- markdownlint-disable -->
  ![notion-sdk-py](https://socialify.git.ci/ramnes/notion-sdk-py/image?font=Bitter&language=1&logo=https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2F4%2F45%2FNotion_app_logo.png&owner=1&pattern=Circuit%20Board&theme=Light)

  <div align="center">
    <p>
      <a href="https://pypi.org/project/notion-client"><img src="https://img.shields.io/pypi/v/notion-client.svg" alt="PyPI"></a>
      <a href="tox.ini"><img src="https://img.shields.io/pypi/pyversions/notion-client" alt="Supported Python Versions"></a>
      <br/>
      <a href="LICENSE"><img src="https://img.shields.io/github/license/ramnes/notion-sdk-py" alt="License"></a>
      <a href="https://github.com/ambv/black"><img src="https://img.shields.io/badge/code%20style-black-black" alt="Code style"></a>
      <a href="https://codecov.io/github/ramnes/notion-sdk-py"><img src="https://codecov.io/gh/ramnes/notion-sdk-py/branch/main/graphs/badge.svg" alt="Coverage"></a>
      <a href="https://snyk.io/advisor/python/notion-client"><img src="https://snyk.io/advisor/python/notion-client/badge.svg" alt="Package health"></a>
      <br/>
      <a href="https://github.com/ramnes/notion-sdk-py/actions/workflows/quality.yml"><img src="https://github.com/ramnes/notion-sdk-py/actions/workflows/quality.yml/badge.svg" alt="Code Quality"></a>
      <a href="https://github.com/ramnes/notion-sdk-py/actions/workflows/test.yml"><img src="https://github.com/ramnes/notion-sdk-py/actions/workflows/test.yml/badge.svg" alt="Tests"></a>
      <a href="https://github.com/ramnes/notion-sdk-py/actions/workflows/docs.yml"><img src="https://github.com/ramnes/notion-sdk-py/actions/workflows/docs.yml/badge.svg" alt="Docs"></a>
    </p>
  </div>
  <!-- markdownlint-enable -->

  **_notion-sdk-py_ is a simple and easy to use client library for the official
  [Notion API](https://developers.notion.com/).**

  It is meant to be a Python version of the reference [JavaScript SDK](https://github.com/makenotion/notion-sdk-js),
  so usage should be very similar between both. 😊 (If not, please open an issue
  or PR!)

  > 📢 **Announcement** (18-12-2024) — Release 2.3.0 is out! It adds
  > `in_trash` support for pages, Python 3.13 official support, fixes
  > and security updates.

  <!-- markdownlint-disable -->

  <!-- markdownlint-enable -->
  ```shell
  pip install notion-client
  ```



  > Use Notion's [Getting Started Guide](https://developers.notion.com/docs/getting-started)
  > to get set up to use Notion's API.

  Import and initialize a client using an **integration token** or an
  OAuth **access token**.

  ```python
  import os
  from notion_client import Client

  notion = Client(auth=os.environ["NOTION_TOKEN"])
  ```

  In an asyncio environment, use the asynchronous client instead:

  ```python
  from notion_client import AsyncClient

  notion = AsyncClient(auth=os.environ["NOTION_TOKEN"])
  ```

  Make a request to any Notion API endpoint.

  > See the complete list of endpoints in the [API reference](https://developers.notion.com/reference).

  ```python
  from pprint import pprint

  list_users_response = notion.users.list()
  pprint(list_users_response)
  ```

  or with the asynchronous client:

  ```python
  list_users_response = await notion.users.list()
  pprint(list_users_response)
  ```

  This would output something like:

  ```text
  {'results': [{'avatar_url': 'https://secure.notion-static.com/e6a352a8-8381-44d0-a1dc-9ed80e62b53d.jpg',
                'id': 'd40e767c-d7af-4b18-a86d-55c61f1e39a4',
                'name': 'Avocado Lovelace',
                'object': 'user',
                'person': {'email': 'avo@example.org'},
                'type': 'person'},
               ...]}
  ```

  All API endpoints are available in both the synchronous and asynchronous clients.

  Endpoint parameters are grouped into a single object. You don't need to remember
  which parameters go in the path, query, or body.

  ```python
  my_page = notion.databases.query(
      **{
          "database_id": "897e5a76-ae52-4b48-9fdf-e71f5945d1af",
          "filter": {
              "property": "Landmark",
              "rich_text": {
                  "contains": "Bridge",
              },
          },
      }
  )
  ```



  If the API returns an unsuccessful response, an `APIResponseError` will be raised.

  The error contains properties from the response, and the most helpful is `code`.
  You can compare `code` to the values in the `APIErrorCode` object to avoid
  misspelling error codes.

  ```python
  import logging
  from notion_client import APIErrorCode, APIResponseError

  try:
      my_page = notion.databases.query(
          **{
              "database_id": "897e5a76-ae52-4b48-9fdf-e71f5945d1af",
              "filter": {
                  "property": "Landmark",
                  "rich_text": {
                      "contains": "Bridge",
                  },
              },
          }
      )
  except APIResponseError as error:
      if error.code == APIErrorCode.ObjectNotFound:
          ...  # For example: handle by asking the user to select a different database
      else:
          
          logging.error(error)
  ```



  The client emits useful information to a logger. By default, it only emits warnings
  and errors.

  If you're debugging an application, and would like the client to log request & response
  bodies, set the `log_level` option to `logging.DEBUG`.

  ```python
  notion = Client(
      auth=os.environ["NOTION_TOKEN"],
      log_level=logging.DEBUG,
  )
  ```

  You may also set a custom `logger` to emit logs to a destination other than `stdout`.
  Have a look at [Python's logging cookbook](https://docs.python.org/3/howto/logging-cookbook.html)
  if you want to create your own logger.



  `Client` and `AsyncClient` both support the following options on initialization.
  These options are all keys in the single constructor parameter.

  <!-- markdownlint-disable -->
  | Option | Default value | Type | Description |
  |--------|---------------|---------|-------------|
  | `auth` | `None` | `string` | Bearer token for authentication. If left undefined, the `auth` parameter should be set on each request. |
  | `log_level` | `logging.WARNING` | `int` | Verbosity of logs the instance will produce. By default, logs are written to `stdout`.
  | `timeout_ms` | `60_000` | `int` | Number of milliseconds to wait before emitting a `RequestTimeoutError` |
  | `base_url` | `"https://api.notion.com"` | `string` | The root URL for sending API requests. This can be changed to test with a mock server. |
  | `logger` | Log to console | `logging.Logger` | A custom logger. |



  The following functions can distinguish between full and partial API responses.

  | Function                   | Purpose                                                                                                                                                                  |
  | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
  | `is_full_page`             | Determine whether an object is a full [Page object](https://developers.notion.com/reference/page)                                                                        |
  | `is_full_block`            | Determine whether an object is a full [Block object](https://developers.notion.com/reference/block)                                                                      |
  | `is_full_database`         | Determine whether an object is a full [Database object](https://developers.notion.com/reference/database)                                                                |
  | `is_full_page_or_database` | Determine whether an object is a full [Page object](https://developers.notion.com/reference/page) or [Database object](https://developers.notion.com/reference/database) |
  | `is_full_user`             | Determine whether an object is a full [User object](https://developers.notion.com/reference/user)                                                                        |
  | `is_full_comment`          | Determine whether an object is a full [Comment object](https://developers.notion.com/reference/comment-object)                                                           |
  <!-- markdownlint-enable -->

  ```python
  from notion_client.helpers import is_full_page

  full_or_partial_pages = await notion.databases.query(
      database_id="897e5a76-ae52-4b48-9fdf-e71f5945d1af"
  )

  for page in full_or_partial_pages["results"]:
      if not is_full_page_or_database(page):
          continue
      print(f"Created at: {page['created_time']}")
  ```



  These functions can be helpful for dealing with any of the paginated APIs.

  `iterate_paginated_api(function, **kwargs)` and its async version
  `async_iterate_paginated_api(function, **kwargs)` turn any paginated API into a generator.

  The `function` parameter must accept a `start_cursor` argument. Example: `notion.blocks.children.list`.

  ```python
  from notion_client.helpers import iterate_paginated_api

  for block in iterate_paginated_api(
      notion.databases.query, database_id="897e5a76-ae52-4b48-9fdf-e71f5945d1af"
  ):
      
      ...
  ```

  If you don't need a generator, `collect_paginated_api(function, **kwargs)` and
  its async version `async_collect_paginated_api(function, **kwargs)` have the
  same behavior than the previous functions, but return a list of all results
  from the paginated API.

  ```python
  from notion_client.helpers import collect_paginated_api

  all_results = collect_paginated_api(
      notion.databases.query, database_id="897e5a76-ae52-4b48-9fdf-e71f5945d1af"
  )
  ```



  Run the tests with the `pytest` command. If you want to test against all Python
  versions, you can run `tox` instead.

  The tests are using `pytest-vcr`'s cassettes for simulating requests to the
  Notion API. To create new tests or run them without cassettes, you need to set
  up the environment variables `NOTION_TOKEN` and `NOTION_TEST_PAGE_ID` (a page
  where your integration has all the capabilities enabled).

  The code will use the page at `NOTION_TEST_PAGE_ID` to generate a temporary
  environment with the Notion objects to be tested, which will be deleted
  at the end of the session.



  This package supports the following minimum versions:

  * Python >= 3.7
  * httpx >= 0.15.0

  Earlier versions may still work, but we encourage people building new applications
  to upgrade to the current stable.



  If you want to submit a feature request for Notion's API, or are experiencing
  any issues with the API platform, please email `developers@makenotion.com`.

  If you found a bug with the library, please [submit an issue](https://github.com/ramnes/notion-sdk-py/issues).


pkgId: b210dd881be45ea6172ddf13f9fc40089564cf5f367041b5125fc26eda5cd5e9
name: python-novae-help
arch: noarch
version: 0.2.2
epoch: 0
release: 1
summary: Development documents and examples for novae
url: https://mics-lab.github.io/novae/
rpm_license: BSD-3-Clause
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-novae-0.2.2-1.src.rpm
location_href: Packages/python-novae-help-0.2.2-1.noarch.rpm
checksum_type: sha256
description:
  <p align="center">
    <img src="https://raw.githubusercontent.com/MICS-Lab/novae/main/docs/assets/banner.png" alt="novae_banner" width="100%"/>
  </p>

  <div align="center">

  [![PyPI](https://img.shields.io/pypi/v/novae.svg)](https://pypi.org/project/novae)
  [![Downloads](https://static.pepy.tech/badge/novae)](https://pepy.tech/project/novae)
  [![Docs](https://img.shields.io/badge/docs-mkdocs-blue)](https://mics-lab.github.io/novae)
  ![Build](https://github.com/MICS-Lab/novae/workflows/ci/badge.svg)
  [![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black)
  [![License](https://img.shields.io/pypi/l/novae.svg)](https://github.com/MICS-Lab/novae/blob/main/LICENSE)
  [![Imports: isort](https://img.shields.io/badge/imports-isort-blueviolet)](https://pycqa.github.io/isort/)
  [![codecov](https://codecov.io/gh/MICS-Lab/novae/graph/badge.svg?token=FFI44M52O9)](https://codecov.io/gh/MICS-Lab/novae)

  </div>

  <p align="center"><b><i>
    💫 Graph-based foundation model for spatial transcriptomics data
  </b></i></p>

  Novae is a deep learning model for spatial domain assignments of spatial transcriptomics data (at both single-cell or spot resolution). It works across multiple gene panels, tissues, and technologies. Novae offers several additional features, including: (i) native batch-effect correction, (ii) analysis of spatially variable genes and pathways, and (iii) architecture analysis of tissue slides.



  Check [Novae's documentation](https://mics-lab.github.io/novae/) to get started. It contains installation explanations, API details, and tutorials.



  <p align="center">
    <img src="https://raw.githubusercontent.com/MICS-Lab/novae/main/docs/assets/Figure1.png" alt="novae_overview" width="100%"/>
  </p>

  > **(a)** Novae was trained on a large dataset, and is shared on [Hugging Face Hub](https://huggingface.co/collections/MICS-Lab/novae-669cdf1754729d168a69f6bd). **(b)** Illustration of the main tasks and properties of Novae. **(c)** Illustration of the method behind Novae (self-supervision on graphs, adapted from [SwAV](https://arxiv.org/abs/2006.09882)).






  `novae` can be installed via `PyPI` on all OS, for `python>=3.10`.

  ```
  pip install novae
  ```



  To install `novae` in editable mode (e.g., to contribute), clone the repository and choose among the options below.

  ```sh
  pip install -e .                 # pip, minimal dependencies
  pip install -e '.[dev]'          # pip, all extras
  poetry install                   # poetry, minimal dependencies
  poetry install --all-extras      # poetry, all extras
  ```



  Here is a minimal usage example. For more details, refer to the [documentation](https://mics-lab.github.io/novae/).

  ```python
  import novae

  model = novae.Novae.from_pretrained("MICS-Lab/novae-human-0")

  model.compute_representations(adata, zero_shot=True)
  model.assign_domains(adata)
  ```



  You can cite our [preprint](https://www.biorxiv.org/content/10.1101/2024.09.09.612009v1) as below:

  ```txt
  @article{blampeyNovae2024,
    title = {Novae: A Graph-Based Foundation Model for Spatial Transcriptomics Data},
    author = {Blampey, Quentin and Benkirane, Hakim and Bercovici, Nadege and Andre, Fabrice and Cournede, Paul-Henry},
    year = {2024},
    pages = {2024.09.09.612009},
    publisher = {bioRxiv},
    doi = {10.1101/2024.09.09.612009},
  }
  ```


pkgId: 460788e27148d536c713c94713aea7f6d09f140e8a12a02da65779f402b5106c
name: python-noway-back-help
arch: noarch
version: 1.0.0
epoch: 0
release: 1
summary: Development documents and examples for noway-back
url: https://pypi.org/project/noway-back/
rpm_license: GPL-3
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-noway-back-1.0.0-1.src.rpm
location_href: Packages/python-noway-back-help-1.0.0-1.noarch.rpm
checksum_type: sha256
description:
  ![PyPI Version](https://img.shields.io/pypi/v/noway-back) ![License](https://img.shields.io/pypi/l/noway-back) ![Python Versions](https://img.shields.io/pypi/pyversions/noway-back)

  `noway-back` is a Python package designed to make your workflows simpler, faster, and more reliable. With an intuitive interface and powerful functionality, this package provides the tools you need to stay ahead.



  - **Easy to Use**: Simplify complex tasks with minimal setup.
  - **Lightweight**: A minimalistic approach without unnecessary bloat.
  - **Reliable**: Built with stability and performance in mind.



  You can install `noway-back` via pip:

  ```bash
  pip install noway-back


pkgId: 8f00cab75e73a39821390f222e6284107bfeb814d045b1eda558badf23b10a18
name: python-npc-ephys-help
arch: noarch
version: 0.1.32
epoch: 0
release: 1
summary: Development documents and examples for npc-ephys
url: https://pypi.org/project/npc-ephys/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-npc-ephys-0.1.32-1.src.rpm
location_href: Packages/python-npc-ephys-help-0.1.32-1.noarch.rpm
checksum_type: sha256
description:
  Tools for accessing and processing raw ephys data, compatible with data in the cloud.

  [![PyPI](https://img.shields.io/pypi/v/npc_ephys.svg?label=PyPI&color=blue)](https://pypi.org/project/npc_ephys/)
  [![Python version](https://img.shields.io/pypi/pyversions/npc_ephys)](https://pypi.org/project/npc_ephys/)

  [![Coverage](https://img.shields.io/codecov/c/github/AllenInstitute/npc_ephys?logo=codecov)](https://app.codecov.io/github/AllenInstitute/npc_ephys)
  [![CI/CD](https://img.shields.io/github/actions/workflow/status/AllenInstitute/npc_ephys/publish.yml?label=CI/CD&logo=github)](https://github.com/AllenInstitute/npc_ephys/actions/workflows/publish.yml)
  [![GitHub issues](https://img.shields.io/github/issues/AllenInstitute/npc_ephys?logo=github)](https://github.com/AllenInstitute/npc_ephys/issues)


  ```bash
  conda create -n npc_ephys python>=3.9
  conda activate npc_ephys
  pip install npc_ephys
  ```


  [`wavpack-numcodecs`](https://github.com/AllenNeuralDynamics/wavpack-numcodecs)
  is used to read compressed ephys data from S3 (stored in Zarr format). On Windows, that requires C++
  build tools to be installed: if `pip install npc_ephys` fails you'll likely need to download it [from here](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022).


  ```python
  >>> import npc_ephys


  >>> recording_path = 's3://aind-ephys-data/ecephys_670248_2023-08-03_12-04-15/ecephys_clipped/Record Node 102/experiment1/recording1'
  >>> sync_path = 's3://aind-ephys-data/ecephys_670248_2023-08-03_12-04-15/behavior/20230803T120415.h5'
  >>> timing_data = next(npc_ephys.get_ephys_timing_on_sync(sync_path, recording_path))
  >>> timing_data.device.name, timing_data.sampling_rate, timing_data.start_time
  ('Neuropix-PXI-100.ProbeA-AP', 30000.070518634246, 20.080209634424037)



  >>> si = npc_ephys.get_spikeinterface_data('s3://codeocean-s3datasetsbucket-1u41qdg42ur9/4797cab2-9ea2-4747-8d15-5ba064837c1c')


  >>> si = npc_ephys.get_spikeinterface_data('670248_2023-08-03_0')

  >>> si
  SpikeInterfaceKS25Data(session='670248_2023-08-03_0', root=S3Path('s3://codeocean-s3datasetsbucket-1u41qdg42ur9/4797cab2-9ea2-4747-8d15-5ba064837c1c'))


  >>> si.version
  '0.97.1'
  >>> ''.join(si.probes)
  'ABCEF'
  >>> si.quality_metrics_df('probeA').columns
  Index(['num_spikes', 'firing_rate', 'presence_ratio', 'snr',
          'isi_violations_ratio', 'isi_violations_count', 'rp_contamination',
          'rp_violations', 'sliding_rp_violation', 'amplitude_cutoff',
          'drift_ptp', 'drift_std', 'drift_mad', 'isolation_distance', 'l_ratio',
          'd_prime'],
          dtype='object')
  >>> si.spike_indexes('probeA')
  array([      491,       738,       835, ..., 143124925, 143125165, 143125201])
  >>> si.unit_indexes('probeA')
  array([ 56,  61, 161, ..., 151,  72,  59])
  ```


  See instructions in https://github.com/AllenInstitute/npc_ephys/CONTRIBUTING.md and the original template: https://github.com/AllenInstitute/copier-pdm-npc/blob/main/README.md


pkgId: 70ed466f31ded6b2e6e8047e9798d638d4c391a3633a73689ee3ff3b7f10b19b
name: python-npc-mvr-help
arch: noarch
version: 0.1.11
epoch: 0
release: 1
summary: Development documents and examples for npc-mvr
url: https://pypi.org/project/npc-mvr/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-npc-mvr-0.1.11-1.src.rpm
location_href: Packages/python-npc-mvr-help-0.1.11-1.noarch.rpm
checksum_type: sha256
description:
  Tools for reading raw video data from MindScope Neuropixels experiments, compatible with data in the cloud.

  [![PyPI](https://img.shields.io/pypi/v/npc_mvr.svg?label=PyPI&color=blue)](https://pypi.org/project/npc_mvr/)
  [![Python version](https://img.shields.io/pypi/pyversions/npc_mvr)](https://pypi.org/project/npc_mvr/)

  [![Coverage](https://img.shields.io/codecov/c/github/AllenInstitute/npc_mvr?logo=codecov)](https://app.codecov.io/github/AllenInstitute/npc_mvr)
  [![CI/CD](https://img.shields.io/github/actions/workflow/status/AllenInstitute/npc_mvr/publish.yml?label=CI/CD&logo=github)](https://github.com/AllenInstitute/npc_mvr/actions/workflows/publish.yml)
  [![GitHub issues](https://img.shields.io/github/issues/AllenInstitute/npc_mvr?logo=github)](https://github.com/AllenInstitute/npc_mvr/issues)


  ```bash
  conda create -n npc_mvr python>=3.9
  conda activate npc_mvr
  pip install npc_mvr
  ```


  ```python
  >>> import npc_mvr

  >>> d = npc_mvr.MVRDataset('s3://aind-ephys-data/ecephys_670248_2023-08-03_12-04-15/behavior')


  >>> d.video_paths['behavior']
  S3Path('s3://aind-ephys-data/ecephys_670248_2023-08-03_12-04-15/behavior/Behavior_20230803T120430.mp4')
  >>> d.info_paths['behavior']
  S3Path('s3://aind-ephys-data/ecephys_670248_2023-08-03_12-04-15/behavior/Behavior_20230803T120430.json')


  >>> type(d.video_data['behavior'])
  <class 'cv2.VideoCapture'>
  >>> type(d.info_data['behavior'])
  <class 'dict'>
  >>> type(d.sync_data)
  <class 'npc_sync.sync.SyncDataset'>




  >>> d.frame_times['behavior']
  array([       nan,   14.08409,   14.10075, ..., 5084.4582 , 5084.47487, 5084.49153])

  >>> d.validate()
  ```


  See instructions in https://github.com/AllenInstitute/npc_mvr/CONTRIBUTING.md and the original template: https://github.com/AllenInstitute/copier-pdm-npc/blob/main/README.md


pkgId: bfa58cf12005484eccf3ad84dd1b8588bb45ccd0b9124f680f2108b8cf8e059c
name: python-npcsimulator-help
arch: noarch
version: 0.1.6
epoch: 0
release: 1
summary: Development documents and examples for npcsimulator
url: https://github.com/j-peyton/NPCPackage
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-npcsimulator-0.1.6-1.src.rpm
location_href: Packages/python-npcsimulator-help-0.1.6-1.noarch.rpm
checksum_type: sha256
description:
  1. [Features](#features)
  2. [Installation](#installation)
  3. [Usage](#usage)
      - [Basic Usage](#basic-usage)
      - [Input Arguments](#input-arguments)
  4. [CLI Examples](#examples)


pkgId: 0715548dc60f562191fe3202fd640fb9045d278d4d63755223d5a2133374ae3e
name: python-nr-metadata-help
arch: noarch
version: 2.0.51
epoch: 0
release: 1
summary: Development documents and examples for nr-metadata
url: https://github.com/Narodni-repozitar/ne-metadata
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nr-metadata-2.0.51-1.src.rpm
location_href: Packages/python-nr-metadata-help-2.0.51-1.noarch.rpm
checksum_type: sha256
description:
  This github project generates:

  * `nr-metadata` - runtime support containing marshmallow, serializers, ... for NR metadata (documents and data)
  * `oarepo-model-builder-nr` - a plugin for oarepo-model-builder to generate



  None yet. If you introduce any incompatible changes (vs previous major version),
  enumerate them here and link the readme file from the previous major version
  for reference.



  See the `examples/model.yaml` file for a skeleton of a repository
  which uses nr metadata document model. An even easier way is to use the
  [nrp](https://narodni-repozitar.github.io/developer-docs/docs/technology/invenio/nrp-toolchain/)
  command to generate a documents- or data- compatible repository.
  See the same pages to get help about the model contents.



  Branches are always named "aa.bb" and denote the version of the contained metadata schema.



  Package needs to be updated whenever the version of oarepo-model-builder and
  other builder plugins changes and influences the generated files.

  The package version is always in the form of `aa.bb.ccc`, where `aa.bb` is the version
  of the metadata schema and `ccc` is the version of the python package.

  To rebuild python packages:

  - [ ] Create a development branch (named after the issue inside linear or github issue)
  - [ ] Implement your changes
  - [ ] Increase the version number in `version` file
  - [ ] Run `build.sh` (note - this has to be run after modification to the `version` file)
  - [ ] Create a merge request to the `aa.bb` branch
  - [ ] Create a new github release.



  To update the model version,
  - [ ] start by creating a new branch with the name `aa.bb`, where `aa.bb` represents the new model version.

      For example, if the current version is `2.0` and your changes are minor,
      the new version should be `2.1`, while major changes warrant
      a version bump to `3.0`.

  - [ ] Set this branch as the default branch on GitHub.

  - [ ] Rename files inside the `model` directory to include the correct version
  - [ ] Change the model version inside the `build.sh` script

  - [ ] Make your modifications to the files within the model directory
  - [ ] Update the content of the `version` file to reflect the new version as
  `aa.bb.0`
  - [ ] Execute the `build.sh` script to ensure that everything builds correctly
  - [ ] Push your changes to GitHub
  - [ ] Mark the branch as the default branch
  - [ ] Create a new GitHub release.


pkgId: aa5c39460245fbfe6929316fb1d18d355ca7d9eda3889008cb83c357cddc5b8c
name: python-nr-oaipmh-harvesters-help
arch: noarch
version: 1.0.27
epoch: 0
release: 1
summary: Development documents and examples for nr-oaipmh-harvesters
url: https://pypi.org/project/nr-oaipmh-harvesters/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nr-oaipmh-harvesters-1.0.27-1.src.rpm
location_href: Packages/python-nr-oaipmh-harvesters-help-1.0.27-1.noarch.rpm
checksum_type: sha256
description:
  This package provides oai-pmh transformers for harvesting external repositories.
  The following repositories are currently supported (other might work with the same transformers):

  * NUSL - national repository of grey literature

  ```bash
  invenio oarepo oai harvester add nusl \
      --name "NUSL harvester" \
      --url http://invenio.nusl.cz/oai2d/ \
      --set global \
      --prefix marcxml \
      --loader sickle \
      --transformer marcxml \
      --transformer nusl \
      --writer 'service{service=nr_documents}'
  ```


pkgId: 99f78046b92f9bfe064496bb10e2988cb8e4cd585729254f4b3a25b033a1e5a3
name: python-nrkdl-help
arch: noarch
version: 1.2.2
epoch: 0
release: 1
summary: Development documents and examples for nrkdl
url: https://pypi.org/project/nrkdl/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nrkdl-1.2.2-1.src.rpm
location_href: Packages/python-nrkdl-help-1.2.2-1.noarch.rpm
checksum_type: sha256
description:
  [![Releases](https://img.shields.io/github/v/release/jenslys/nrkdl.svg)](https://github.com/jenslys/nrkdl/releases/)

  Download content from nrk.no

  **Disclaimer:** This is for educational and personal purposes **ONLY**.
  See NRKs copyright [here](https://www.nrk.no/etikk/opphavsrett-pa-nrk.no-1.2843522).



  - [nrkdl](#nrkdl)
    - [Table of contents](#table-of-contents)
    - [Installation](#installation)
    - [Updating](#updating)
      - [System requirements](#system-requirements)
    - [Usage](#usage)
      - [Example usage](#example-usage)
        - [Download an entire tv-show with subtitles](#download-an-entire-tv-show-with-subtitles)
        - [Download a single tv-show episode](#download-a-single-tv-show-episode)
        - [Download a movie](#download-a-movie)
        - [Search for a series and download all seasons](#search-for-a-series-and-download-all-seasons)
        - [Search for a specific episode](#search-for-a-specific-episode)
      - [Supported sites](#supported-sites)





  ```bash
  pip install nrkdl
  ```



  ```bash
  pip install nrkdl --upgrade
  ```



  - [python3](https://www.geeksforgeeks.org/how-to-install-python-on-windows/)
  - [ffmpeg](https://www.geeksforgeeks.org/how-to-install-ffmpeg-on-windows/)



  ```text
  usage: nrkdl.py [-h] (--search SEARCH | --url URL) [--season SEASON] [--episode EPISODE] [--write-subs] [--keep-subs] [--audio-only] [--write-metadata]

  options:
    -h, --help         show this help message and exit
    --search SEARCH    Search for Movie/TV-show, and then download (e.g: Exit)
    --url URL          URL for the Movie/TV-show (e.g: https://tv.nrk.no/program/KOID75006720)
    --season SEASON    Season number (e.g: 1) (Only works if --search is used) (0 for all)
    --episode EPISODE  Episode number (e.g: 1) (Only works if --search is used) (0 for all)
    --write-subs       Download and embed subtitles to file
    --keep-subs        Prevent the subtitle files from being deleted after being embeded
    --audio-only       Only extract audio files
    --write-metadata   Write metadata to file
  ```





  ```bash
  nrkdl --url https://tv.nrk.no/serie/exit --write-subs
  ```



  ```bash
  nrkdl --url https://tv.nrk.no/serie/exit/sesong/2/episode/6/
  ```



  ```bash
  nrkdl --url https://tv.nrk.no/program/MSUI31006017
  ```



  ```bash
  nrkdl --search rådebank --season 0
  ```



  ```
  nrkdl --search exit --season 2 --episode 6
  ```



  ```text
  NRK
  NRKPlaylist
  NRKRadioPodkast
  NRKSkole: NRK Skole
  NRKTV: NRK TV and NRK Radio
  NRKTVDirekte: NRK TV Direkte and NRK Radio Direkte
  NRKTVEpisode
  NRKTVEpisodes
  NRKTVSeason
  NRKTVSeries
  ```


pkgId: 88cc0b807552b64fa708e2b0d8d08c8df41814655444590a075ef89862aa3d8e
name: python-nrpylatex-help
arch: noarch
version: 1.4.0
epoch: 0
release: 1
summary: Development documents and examples for nrpylatex
url: https://github.com/nrpy/nrpylatex
rpm_license: BSD-2-Clause
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nrpylatex-1.4.0-1.src.rpm
location_href: Packages/python-nrpylatex-help-1.4.0-1.noarch.rpm
checksum_type: sha256
description:
  [![CI](https://github.com/zachetienne/nrpylatex/actions/workflows/main.yaml/badge.svg)](https://github.com/zachetienne/nrpylatex/actions/workflows/main.yaml)
  [![PyPI](https://img.shields.io/pypi/v/nrpylatex.svg)](https://pypi.org/project/nrpylatex/)
  [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/zachetienne/nrpylatex.git/HEAD?filepath=docs%2FNRPyLaTeX%20Tutorial.ipynb)
  [![arXiv](https://img.shields.io/badge/arXiv-2111.05861-B31B1B)](https://arxiv.org/abs/2111.05861)
  [NRPy+](https://github.com/zachetienne/nrpytutorial)'s LaTeX Interface to SymPy (CAS) for General Relativity
  - automatic expansion of
    - [Einstein summation convention](https://en.wikipedia.org/wiki/Einstein_notation)
    - Levi-Civita and Christoffel symbols
    - Lie and covariant derivatives
    - metric inverse and determinant
  - automatic index raising and lowering
  - arbitrary coordinate system (default)
  - exception handling and debugging

  To install **NRPyLaTeX** using [PyPI](https://pypi.org/project/nrpylatex/), run the following command in the terminal
      $ pip install nrpylatex

  If you are using Mathematica instead of SymPy, run the following code to convert your output
      from sympy import mathematica_code
      namespace = parse_latex(...)
      for var in namespace:
          exec(f'{var} = mathematica_code({var})')
  If you are using a different CAS, reference the SymPy [documentation](https://docs.sympy.org/latest/modules/printing.html) to find the relevant printing function.

  [Quick Start](https://mybinder.org/v2/gh/zachetienne/nrpylatex.git/HEAD?filepath=docs%2FNRPyLaTeX%20Tutorial.ipynb) | [NRPy+ Integration](https://mybinder.org/v2/gh/zachetienne/nrpytutorial/HEAD?filepath=Tutorial-SymPy_LaTeX_Interface.ipynb) | [Guided Example (BSSN Formalism)](https://mybinder.org/v2/gh/zachetienne/nrpytutorial/HEAD?filepath=Tutorial-LaTeX_Interface_Example-BSSN_Cartesian.ipynb)

  [Getting Started and API Reference](https://zachetienne.github.io/nrpylatex/)

  **Python REPL or Script (*.py)**
      >>> from nrpylatex import parse_latex
      >>> parse_latex(r"""
      ('G', 'GammaUDD', 'gDD', 'gUU', 'epsilonUUUU', 'RUDDD', 'K', 'RUUUU', 'M', 'r', 'theta', 'RDDDD', 'gdet')
      >>> from sympy import simplify
      >>> print(simplify(K))
      48*G**2*M**2/r**6
  **IPython REPL or Jupyter Notebook**
      In [1]: %load_ext nrpylatex
      In [2]: %parse_latex
      Out[2]: ('G', 'GammaUDD', 'gDD', 'gUU', 'epsilonUUUU', 'RUDDD', 'K', 'RUUUU', 'M', 'r', 'theta', 'RDDDD', 'gdet')
      In [3]: from sympy import simplify
      In [4]: print(simplify(K))
      Out[4]: 48*G**2*M**2/r**6


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



  The `nrtk` package is an open source toolkit for evaluating the natural robustness of computer vision
  algorithms to various perturbations, including sensor-specific changes to camera focal length, aperture
  diameter, etc. Functionality is provided through [Strategy](https://en.wikipedia.org/wiki/Strategy_pattern)
  and [Adapter](https://en.wikipedia.org/wiki/Adapter_pattern) patterns to allow for modular integration
  into systems and applications.

  We have also created the [`nrtk-jatic`](https://github.com/Kitware/nrtk-jatic) package to support AI T&E
  use-cases and workflows, through interoperability with the [`maite`](https://github.com/mit-ll-ai-technology/maite)
  library and integration with other [JATIC](https://cdao.pages.jatic.net/public/) tools. Users seeking to use NRTK to
  perturb MAITE-wrapped datasets or evaluate MAITE-wrapped models should
  start with the `nrtk-jatic` package.

  <!-- :auto installation: -->

  Ensure the source tree is acquired locally before proceeding.

  To install the current version via `pip`:
  ```bash
  pip install nrtk
  ```

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

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

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

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

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

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

  <!-- :auto documentation: -->

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

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

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

  cd docs

  poetry run make html

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

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



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

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

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

  poetry run pre-commit install

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

  <!-- :auto contributing: -->

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

  <!-- :auto license: -->

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

  <!-- :auto contacts: -->


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


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



  The `nrtk-jatic` package is an extension of the Natural Robustness Toolkit
  ([NRTK](https://github.com/Kitware/nrtk)) containing implementations
  and examples in compliance with protocols from the Modular AI Trustworthy Engineering
  ([MAITE](https://github.com/mit-ll-ai-technology/maite)) library.
  These packages (among others) are developed under the
  [Joint AI Test Infrastructure Capability (JATIC) program](https://cdao.pages.jatic.net/public/)
  for AI Test & Evaluation (T&E) and AI Assurance.



  The `nrtk-jatic` package consists of implementations and utilities that ensure
  interoperability of `nrtk` functionality with `maite`. The scripts under
  `src/nrtk_jatic/interop` consist of protocol implementations that are compliant
  with `maite`'s dataset and augmentation protocols. The `src/nrtk_jatic/utils`
  folder houses generic util scripts and the NRTK CLI entrypoint script.
  Finally, the `examples` folder consists of Jupyter notebooks showing
  end-to-end ML T&E workflows demonstrating natural robustness testing of computer vision models with `nrtk`,
  and integrations of `nrtk` with other JATIC tools,
  by using the interoperability standards provided by `maite`

  Additional information about JATIC and its design principles can be found
  [here](https://cdao.pages.jatic.net/public/program/design-principles/).

  <!-- :auto installation: -->

  Ensure the source tree is acquired locally before proceeding.

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

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

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

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

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

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

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

  <!-- :auto documentation: -->

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

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

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

  cd docs

  poetry run make html

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

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



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

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

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

  poetry run pre-commit install

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

  <!-- :auto contributing: -->

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

  <!-- :auto license: -->

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

  <!-- :auto contacts: -->


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


pkgId: 5f3ec5e7cf01ecc14339eb919686aba99e35ebea89d13c98cd2e6c20996cac9c
name: python-ns1-python-help
arch: noarch
version: 0.23.0
epoch: 0
release: 1
summary: Development documents and examples for ns1-python
url: https://github.com/ns1/ns1-python
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ns1-python-0.23.0-1.src.rpm
location_href: Packages/python-ns1-python-help-0.23.0-1.noarch.rpm
checksum_type: sha256
description:
  > This project is in [active development](https://github.com/ns1/community/blob/master/project_status/ACTIVE_DEVELOPMENT.md).
  A Python SDK for accessing NS1, the Data Driven DNS platform.


pkgId: 4a86a7ff8bfa88576b0ec61bedaca39b2bd6fb8c8855d71d39c03e9bb57b9503
name: python-nshconfig-help
arch: noarch
version: 0.35.1
epoch: 0
release: 1
summary: Development documents and examples for nshconfig
url: https://pypi.org/project/nshconfig/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nshconfig-0.35.1-1.src.rpm
location_href: Packages/python-nshconfig-help-0.35.1-1.noarch.rpm
checksum_type: sha256
description:
  Fully typed configuration management, powered by [Pydantic](https://github.com/pydantic/pydantic/).

  **[📚 Documentation](https://nima.sh/nshconfig/) | [🔧 Installation Guide](https://nima.sh/nshconfig/installation.html)**



  `nshconfig` is a Python library that enhances Pydantic with additional features for configuration management, particularly useful for machine learning experiments and other applications requiring strongly typed configurations.



  ```bash
  pip install nshconfig
  ```

  To install all optional dependencies, use:

  ```bash
  pip install nshconfig[extra]
  ```

  Please see the [Installation Guide](https://nima.sh/nshconfig/installation.html) for more details.



  ```python
  import nshconfig as C

  class MyConfig(C.Config):
      field1: int
      field2: str
      field3: C.AllowMissing[float] = C.MISSING

  config = MyConfig.draft()
  config.field1 = 42
  config.field2 = "hello"
  final_config = config.finalize()
  ```



  - Draft configs for intuitive configuration creation
  - Multiple configuration formats (Python, JSON, YAML)
  - Dynamic type registry for plugin systems
  - Configuration code generation tools
  - Built-in PyTorch Lightning integration
  - MISSING constant for optional fields

  For detailed examples and API reference, please visit the [documentation](https://nima.sh/nshconfig/).



  Contributions are welcome! Please see our [Contributing Guide](https://nima.sh/nshconfig/contributing.html) for details.



  Built on top of the excellent [pydantic](https://github.com/pydantic/pydantic/) library.



  MIT License


pkgId: 4fe9cfe90e38887c7eeb12511f4a80482aa22744ece9d8236ddf60aa221d6a4e
name: python-nsp2visasim-help
arch: noarch
version: 1.4.1.post2
epoch: 0
release: 1
summary: Development documents and examples for nsp2visasim
url: https://pypi.org/project/nsp2visasim/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nsp2visasim-1.4.1.post2-1.src.rpm
location_href: Packages/python-nsp2visasim-help-1.4.1.post2-1.noarch.rpm
checksum_type: sha256
description:
  This package contains a simulation of an Arduino VISA device connected to a small circuit to measure the voltage versus current characteristics of a LED. It is created for a [programming course](https://natuurkundepracticumamsterdam.github.io/ecpc/) in the physics and astronomy joint degree bachelor programme at the Vrije Universiteit and the University of Amsterdam. Students use the actual device and circuit while on campus. This package simulates [this firmware](https://github.com/davidfokkema/arduino-visa-firmware).




  In your controller code, replace:

  ```python
  import pyvisa
  ```

  with:

  ```python
  try:
        from nsp2visasim import sim_pyvisa as pyvisa
  except ModuleNotFoundError:
        import pyvisa
  ```

  Then, if you use Poetry, add it to your existing project with:

  ```console
  poetry add --group dev nsp2visasim
  ```

  If you don't use Poetry, install `nsp2visasim` with:

  ```console
  pip install nsp2visasim
  ```

  You now appear to have an additional VISA device connected to your system. If an
  actual Arduino is attached, you can choose to open the simulation or the actual
  Arduino by selecting the correct port name. Your code should work exactly the
  same as before.

  A session might look like this:

  ```console
  $ diode list
  The following devices are connected to your computer:

  ASRL/dev/cu.URT1::INSTR
  ASRL/dev/cu.URT2::INSTR
  ASRL/dev/cu.Bluetooth-Incoming-Port::INSTR
  ASRL/dev/cu.usbmodem14501::INSTR
  ASRL::SIMLED::INSTR

  $ diode info SIMLED
  Device identification: Simulated Arduino VISA firmware (LED experiment)

  $ diode measure SIMLED -v 2.5 -n 10
  Measured current through diode: 3.048 +- 0.030 mA @ 1.805 +- 0.011 V.
  ```


pkgId: 7364efd52ee65138b0d78ae05abd9b0b9c3426bb807d56eccc9d65a9802ce536
name: python-nuclei-counter-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for nuclei-counter
url: https://pypi.org/project/nuclei-counter/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nuclei-counter-0.1.0-1.src.rpm
location_href: Packages/python-nuclei-counter-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  This python program processes and counts nuclei in images. The following sections detail how to use the various command-line arguments available in the program.


  On windows-based systems, you may use one of the pre-built executable files provided in [releases](https://github.com/rbudnar/nuclei_counter/releases); this does not require installation of python. However, if you wish to modify the code, you must clone this repository and build or run the program from source.

  **NOTE:** Due to using pyinstaller to package this code as a windows executable, this file may be flagged as a virus or as malware. This is unfortunately common for software built using pyinstaller. If your antivirus blocks the file, you'll need to flag it as safe when downloading it.


  To build or run this program as a python script, ensure you have [python 3.10](https://www.python.org/downloads/) or later installed on your system. Then clone this repository by downloading and extracting the zip file or by using git.


  This library uses a [PEP-518](https://peps.python.org/pep-0518/) compliant pyproject.toml file to manage project dependencies. To install this library locally, you may use your preferred python package manager (e.g., [poetry](https://python-poetry.org/)) or run the following from the repository root:

  ```
  pip install -e .
  ```

  This will install all project dependencies and allow you to run the project as a python script from the command line. If you've downloaded the executable file, replace `python count_nuclei.py` with `count_nuclei.exe`; all command line options remain the same.


  To use this program, open a terminal and change your working directory into `\nuclei_counter` where `count_nuclei.py` exists. You may run the python program with the  command line arguments as described; note that only `--img_dir` is required; other arguments may be omitted.



  Specify the directory containing the images you wish to process.

  **Usage:**

  ```
  python count_nuclei.py --img_dir "path/to/your/image/directory"
  ```



  Defines where the results files should be saved. If not specified, results will be saved in a folder named `results` in the current working directory.

  **Usage:**

  ```
  python count_nuclei.py --img_dir "path/to/your/image/directory" --output_dir "path/to/your/output/directory"
  ```



  Include this flag if you wish to save the transformed images used during the counting process. This flag is optional and excluding it will not save a copy of the transformed images.

  **Usage:**

  ```
  python count_nuclei.py --img_dir "path/to/your/image/directory" --save_images
  ```



  Specify the filename of the resulting CSV that contains the count of nuclei. If not provided, it will default to `count_results.csv`.

  **Usage:**

  ```
  python count_nuclei.py --img_dir "path/to/your/image/directory" --output_count_filename "your_desired_filename.csv"
  ```

  **Default:**
  count_results.csv



  To use all the arguments in one command:

  ```
  python count_nuclei.py --img_dir "path/to/images" --output_dir "path/to/output" --save_images --output_count_filename "results.csv"
  ```


  See the [LICENSE](/LICENSE) file for license rights and limitations (MIT).


pkgId: e43d1eb6ccfb77f5e381d2de58b8d798c641f0719d8a60af99c6eb4ed402536f
name: python-nuclia-help
arch: noarch
version: 4.3.10
epoch: 0
release: 1
summary: Development documents and examples for nuclia
url: https://nuclia.com
rpm_license: BSD
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nuclia-4.3.10-1.src.rpm
location_href: Packages/python-nuclia-help-4.3.10-1.noarch.rpm
checksum_type: sha256
description:
  In order to install

  ```bash
  pip install nuclia
  ```





  You can login with your Nuclia user [How to sign-up](https://nuclia.cloud/user/signup) via

  ```bash
  nuclia auth login
  ```



  You can login to a specific knowledgebox if you have a Service Token (How to get a Service Token) or your NucliaDB is [deployed on-premise](https://docs.nuclia.dev/docs/nucliadb/deploy)

  ```bash
  nuclia auth kb --url KB_URL --token SERVICE_TOKEN
  ```

  KB_URL its the url of the Knowledge Box. On the cloud service you can retrieve it on the dashboard. On the on-premise/community deployment its the url mapped to it.



  You can login with a Nuclia Understanding API key to process files, predict and train using our system

  ```bash
  nuclia auth nua --key ZZZZ
  ```



  You can find the documentation [here](https://github.com/nuclia/nuclia.py/tree/main/docs/01-README.md)


pkgId: 1c0cf7e077583c20efab884e4f411f7723a1a4dd19ce7415e8a3332c6bb872b5
name: python-num2rus-help
arch: noarch
version: 0.0.11
epoch: 0
release: 1
summary: Development documents and examples for num2rus
url: https://github.com/terean-dspd/numbers-2-rus
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-num2rus-0.0.11-1.src.rpm
location_href: Packages/python-num2rus-help-0.0.11-1.noarch.rpm
checksum_type: sha256
description:
  ![Upload Python Package](https://github.com/terean-dspd/numbers-2-rus/workflows/Upload%20Python%20Package/badge.svg)


  Небольшой python пакет для преобразования чисела в текст с учетмо множественного числа.
  A small package to convert float numbers to russian string.


  - bug fix for #8 issue





  `pip install num2rus`



  ```python
   import num2rus
   num2rus.converter(1.10) # один рубль десять копеек
  ```


pkgId: 66782cec21245f6074087d68089c97dd3bcf73475b219cdeb92d6abfd24d5382
name: python-num2words-help
arch: noarch
version: 0.5.14
epoch: 0
release: 1
summary: Development documents and examples for num2words
url: https://github.com/savoirfairelinux/num2words
rpm_license: LGPL
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-num2words-0.5.14-1.src.rpm
location_href: Packages/python-num2words-help-0.5.14-1.noarch.rpm
checksum_type: sha256
description:
  ``num2words`` is a library that converts numbers like ``42`` to words like ``forty-two``.
  It supports multiple languages (see the list below for full list
  of languages) and can even generate ordinal numbers like ``forty-second``
  (although this last feature is a bit buggy for some languages at the moment).
  The project is hosted on GitHub_. Contributions are welcome.


pkgId: fc3166b1c9717a9bd37586e82b4e87cdaa86916f3ad4f227d3740bf86da6aa3f
name: python-numODEsolver-help
arch: noarch
version: 0.4.1
epoch: 0
release: 1
summary: Development documents and examples for numODEsolver
url: https://github.com/lukasnf/Numerical-ODE-Solver
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-numODEsolver-0.4.1-1.src.rpm
location_href: Packages/python-numODEsolver-help-0.4.1-1.noarch.rpm
checksum_type: sha256
description:
  For more documentation take a look at the source code on my GitHub.
  You can modify the script to add more methods, adjust default parameters, or change visualization settings.
  This project is open-source and free to use. Contributions and suggestions are welcome!
  Lukas


pkgId: ac48e01fb98e0958323d9d0d3cf2b2bc0ea179fad70e33639e67845ded21569d
name: python-numba-debuginfo
arch: aarch64
version: 0.60.0
epoch: 0
release: 1
summary: Debug information for package python-numba
url: https://numba.pydata.org
rpm_license: BSD
rpm_group: Development/Debug
rpm_buildhost: localhost
rpm_sourcerpm: python-numba-0.60.0-1.src.rpm
location_href: Packages/python-numba-debuginfo-0.60.0-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug information for package python-numba.
  Debug information is useful when developing applications that use this
  package or when debugging this package.


pkgId: c90d0eb6355d9b9126136289d54c706f9a762010e8e1d2102beed523e9998a9c
name: python-numba-debugsource
arch: aarch64
version: 0.60.0
epoch: 0
release: 1
summary: Debug sources for package python-numba
url: https://numba.pydata.org
rpm_license: BSD
rpm_group: Development/Debug
rpm_buildhost: localhost
rpm_sourcerpm: python-numba-0.60.0-1.src.rpm
location_href: Packages/python-numba-debugsource-0.60.0-1.aarch64.rpm
checksum_type: sha256
description:
  This package provides debug sources for package python-numba.
  Debug sources are useful when developing applications that use this
  package or when debugging this package.


pkgId: 7e1ff4b9915d792551330da4937c816f4b42367aca8fe04b3ada3c1b49c6c90e
name: python-numbat-help
arch: noarch
version: 0.2.2
epoch: 0
release: 1
summary: Development documents and examples for numbat
url: https://github.com/quarkslab/numbat
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-numbat-0.2.2-1.src.rpm
location_href: Packages/python-numbat-help-0.2.2-1.noarch.rpm
checksum_type: sha256
description:
  <img align="right" src="numbat.png" width="250">

  Numbat is an API to create and manipulate Sourcetrail databases. [Sourcetrail](https://github.com/CoatiSoftware/Sourcetrail) is a code source
  explorer which allows users to navigate through the different components (functions, classes, types, etc.) easily.

  Numbat main goal is to offer a full-python SDK given the fact that the current one, SourcetrailDB cannot be used anymore efficiently. It is not user-friendly at first sight, need to be compiled to provide Python bindings and, moreover, it is no longer maintained. Finally, we have added some little new features as finding an element in the database.

  With Numbat, you will be able to visualize your data quickly with the nice graphical Sourcetrail interface. For example, [Pyrrha](https://quarkslab.github.io/pyrrha/) uses Numbat to map firmware structure.





  Numbat is available on `pypi`.
  ```bash
  pip install numbat
  ```


  You can also install it from the `git` repository. Either using the following oneliner:
  ```bash
  pip install 'numbat @ git+https://github.com/quarkslab/numbat'
  ```
  or doing it in few steps:
  ```bash

  git clone git@github.com:quarkslab/numbat.git
  cd numbat

  pip install .
  ```


  If you want to build the documentation by first installing Numbat with the required `[doc]` dependencies and then serve the documentation on a local server.

  ```bash

  cd NUMBAT_DIR
  pip install .[doc]


  pip install 'numbat[doc]'


  mkdocs serve
  ```



  A complete usage with examples is available in the [documentation](https://quarkslab.github.io/numbat/tutorial/) but here is a quick usage to begin with Numbat.

  To use Numbat, you must first create a `SourcetrailDB` object and either create a new database or open an existing one:

  ```python
  from pathlib import Path
  from numbat import SourcetrailDB


  db = SourcetrailDB.open(Path('my_db'), clear=True)


  my_main = db.record_class(name="MyMainClass")
  meth_id = db.record_method(name="main", parent_id=my_main)


  class_id = db.record_class(name="PersonalInfo")
  field_id = db.record_field(name="first_name", parent_id=class_id)


  db.record_ref_usage(meth_id, field_id)


  db.commit()
  db.close()
  ```




  - Sami Babigeon (@sbabigeon), Quarkslab
  - Eloïse Brocas (@ebrocas), Quarkslab


  - Pascal Wu (@pwu42), during his internship at Quarkslab

  The logo is a creation of Benoît Forgette and Sami Babigeon.


pkgId: 21d86d7bdc836101d7c944effdc2560a530b3dfaf05f27f6614aab2bba3363b8
name: python-number_names-help
arch: noarch
version: 0.1.1
epoch: 0
release: 1
summary: Development documents and examples for number_names
url: https://pypi.org/project/number_names/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-number_names-0.1.1-1.src.rpm
location_href: Packages/python-number_names-help-0.1.1-1.noarch.rpm
checksum_type: sha256
description:
  `number_names` converts numbers to their English names.

  The main useful function this package provides is called `name`. Usage
  is as follows:

  ```python
  >>> import number_names
  >>> number_names.name(0)
  'zero'
  >>> number_names.name(1)
  'one'
  >>> number_names.name(2)
  'two'
  >>> number_names.name(123_456_789)
  'one hundred and twenty three million four hundred and fifty six thousand seven hundred and eighty nine'
  >>> number_names.name(3.1415)
  'three point one four one five'
  >>> number_names.name(-10 ** 15)
  'minus one quadrillion'
  >>> number_names.name(10 ** 100000)
  'ten tretriginmilliatrecenduotrigintillion'
  >>> number_names.name(3 + 2j)
  'three plus two i'
  >>> from fractions import Fraction
  >>> number_names.name(Fraction(1, 2))
  'one half'
  >>> number_names.name(Fraction(3, 221))
  'three two hundred and twenty firsts'
  ```


pkgId: 529a4dd95e9e0b5b61f45a79ae79bb1e40ed65dd10a001566e9b118dc4d58bbe
name: python-numbers-parser-help
arch: noarch
version: 4.14.2
epoch: 0
release: 1
summary: Development documents and examples for numbers-parser
url: https://github.com/masaccio/numbers-parser
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-numbers-parser-4.14.2-1.src.rpm
location_href: Packages/python-numbers-parser-help-4.14.2-1.noarch.rpm
checksum_type: sha256
description:
  [![Test Status](https://github.com/masaccio/numbers-parser/actions/workflows/run-all-tests.yml/badge.svg)](https://github.com/masaccio/numbers-parser/actions/workflows/run-all-tests.yml)[![Security Checks](https://github.com/masaccio/numbers-parser/actions/workflows/codeql.yml/badge.svg)](https://github.com/masaccio/numbers-parser/actions/workflows/codeql.yml)[![Code Coverage](https://codecov.io/gh/masaccio/numbers-parser/branch/main/graph/badge.svg?token=EKIUFGT05E)](https://codecov.io/gh/masaccio/numbers-parser)[![PyPI Version](https://badge.fury.io/py/numbers-parser.svg)](https://badge.fury.io/py/numbers-parser)

  `numbers-parser` is a Python module for parsing [Apple Numbers](https://www.apple.com/numbers/)`.numbers` files. It supports Numbers files
  generated by Numbers version 10.3, and up with the latest tested version being 14.1
  (current as of June 2024).

  It supports and is tested against Python versions from 3.9 onwards. It is not compatible
  with earlier versions of Python.



  ```bash
  python3 -m pip install numbers-parser
  ```

  A pre-requisite for this package is [python-snappy](https://pypi.org/project/python-snappy/)
  which will be installed by Python automatically, but python-snappy also requires that the binary
  libraries for snappy compression are present.

  The most straightforward way to install the binary dependencies is to use
  [Homebrew](https://brew.sh) and source Python from Homebrew rather than from macOS as described
  in the [python-snappy github](https://github.com/andrix/python-snappy):

  For Intel Macs:

  ```bash
  brew install snappy python3
  CPPFLAGS="-I/usr/local/include -L/usr/local/lib" \
  python3 -m pip install python-snappy
  ```

  For Apple Silicon Macs:

  ```bash
  brew install snappy python3
  CPPFLAGS="-I/opt/homebrew/include -L/opt/homebrew/lib" \
  python3 -m pip install python-snappy
  ```

  For Linux (your package manager may be different):

  ```bash
  sudo apt-get -y install libsnappy-dev
  ```

  On Windows, you will need to either arrange for snappy to be found for VSC++ or you can install python
  [pre-compiled binary libraries](https://github.com/cgohlke/win_arm64-wheels/) which are only available
  for Windows on Arm. There appear to be no x86 pre-compiled packages for Windows.

  ```text
  pip install python_snappy-0.6.1-cp312-cp312-win_arm64.whl
  ```



  Reading documents:

  ```python
  >>> from numbers_parser import Document
  >>> doc = Document("mydoc.numbers")
  >>> sheets = doc.sheets
  >>> tables = sheets[0].tables
  >>> rows = tables[0].rows()
  ```

  Sheets and tables are iterables that can be indexed using either an
  integer index or using the name of the sheet/table:

  ```python
  >>> doc.sheets[0].name
  'Sheet 1'
  >>> doc.sheets["Sheet 1"].name
  'Sheet 1'
  >>> doc.sheets[0].tables[0].name
  'Table 1'
  >>> doc.sheets[0].tables["Table 1"].name
  'Table 1'
  ```

  `Table` objects have a `rows` method which contains a nested list
  with an entry for each row of the table. Each row is itself a list of
  the column values.

  ```python
  >>> data = sheets["Sheet 1"].tables["Table 1"].rows()
  >>> data[0][0]
  <numbers_parser.cell.EmptyCell object at 0x1022b5710>
  >>> data[1][0]
  <numbers_parser.cell.TextCell object at 0x101eb6790>
  >>> data[1][0].value
  'Debit'
  ```



  Cells are objects with a common base class of `Cell`. All cell types
  have a property `value` which returns the contents of the cell as a
  python datatype. Available cell types are:

  | Cell type    | value type           | Additional properties                                                                                  |
  |--------------|----------------------|--------------------------------------------------------------------------------------------------------|
  | NumberCell   | `float`              |                                                                                                        |
  | TextCell     | `str`                |                                                                                                        |
  | RichTextCell | `str`                | See [Rich text](https://masaccio.github.io/numbers-parser/api/cells.html#numbers_parser.RichTextCell)  |
  | EmptyCell    | `None`               |                                                                                                        |
  | BoolCell     | `bool`               |                                                                                                        |
  | DateCell     | `datetime.datetime`  |                                                                                                        |
  | DurationCell | `datetime.timedelta` |                                                                                                        |
  | ErrorCell    | `None`               |                                                                                                        |
  | MergedCell   | `None`               | See [Merged cells](https://masaccio.github.io/numbers-parser/api/cells.html#numbers_parser.MergedCell) |

  Cell references can be either zero-offset row/column integers or an
  Excel/Numbers A1 notation. Where cell values are not `None` the
  property `formatted_value` returns the cell value as a `str` as
  displayed in Numbers. Cells that have no values in a table are
  represented as `EmptyCell` and cells containing evaluation errors of
  any kind `ErrorCell`.

  ```python
  >>> table.cell(1,0)
  <numbers_parser.cell.TextCell object at 0x1019ade50>
  >>> table.cell(1,0).value
  'Debit'
  >>> table.cell("B2")
  <numbers_parser.cell.NumberCell object at 0x103a99790>
  >>> table.cell("B2").value
  1234.5
  >>> table.cell("B2").formatted_value
  '£1,234.50'
  ```



  Since the return value of `rows()` is a list of lists, you can pass
  this directly to pandas. Assuming you have a Numbers table with a single
  header which contains the names of the pandas series you want to create
  you can construct a pandas dataframe using:

  ```python
  import pandas as pd

  doc = Document("simple.numbers")
  sheets = doc.sheets
  tables = sheets[0].tables
  data = tables[0].rows(values_only=True)
  df = pd.DataFrame(data[1:], columns=data[0])
  ```



  Whilst support for writing numbers files has been stable since version
  3.4.0, you are highly recommended not to overwrite working Numbers files
  and instead save data to a new file.

  Cell values are written using
  [Table.write()](https://masaccio.github.io/numbers-parser/api/table.html#numbers_parser.Table.write) and
  `numbers-parser` will automatically create empty rows and columns
  for any cell references that are out of range of the current table.

  ```python
  doc = Document("write.numbers")
  sheets = doc.sheets
  tables = sheets[0].tables
  table = tables[0]
  table.write(1, 1, "This is new text")
  table.write("B7", datetime(2020, 12, 25))
  doc.save("new-sheet.numbers")
  ```

  Additional tables and worksheets can be added to a `Document` before saving using
  [Document.add_sheet()](https://masaccio.github.io/numbers-parser/api/document.html#numbers_parser.Document.add_sheet) and
  [Sheet.add_table()](https://masaccio.github.io/numbers-parser/api/sheet.html#numbers_parser.Sheet.add_table) respectively:

  ```python
  doc = Document()
  doc.add_sheet("New Sheet", "New Table")
  sheet = doc.sheets["New Sheet"]
  table = sheet.tables["New Table"]
  table.write(1, 1, 1000)
  table.write(1, 2, 2000)
  table.write(1, 3, 3000)
  doc.save("sheet.numbers")
  ```



  `numbers_parser` currently only supports paragraph styles and cell
  styles. The following styles are supported:

  - font attributes: bold, italic, underline, strikethrough
  - font selection and size
  - text foreground color
  - horizontal and vertical alignment
  - cell background color
  - cell background images
  - cell indents (first line, left, right, and text inset)

  Numbers conflates style attributes that can be stored in paragraph
  styles (the style menu in the text panel) with the settings that are
  available on the Style tab of the Text panel. Some attributes in Numbers
  are not applied to new cells when a style is applied.

  To keep the API simple, `numbers-parser` packs all styling into a single
  [Style](https://masaccio.github.io/numbers-parser/api/style.html) object. When a document is saved, the attributes
  not stored in a paragraph style are applied to each cell that includes it.

  Styles are read from cells using the
  [Cell.style](https://masaccio.github.io/numbers-parser/api/cells.html#numbers_parser.Cell.style) property and you can
  add new styles with
  [Document.add_style](https://masaccio.github.io/numbers-parser/api/document.html#numbers_parser.Document.add_style).

  ```python
  red_text = doc.add_style(
      name="Red Text",
      font_name="Lucida Grande",
      font_color=RGB(230, 25, 25),
      font_size=14.0,
      bold=True,
      italic=True,
      alignment=Alignment("right", "top"),
  )
  table.write("B2", "Red", style=red_text)
  table.set_cell_style("C2", red_text)
  ```



  Numbers has two different cell formatting types: data formats and custom
  formats.

  Data formats are presented in Numbers in the Cell tab of the Format pane
  and are applied to individual cells. Like Numbers, `numbers-parsers`
  caches formatting information that is identical across multiple cells.
  You do not need to take any action for this to happen; this is handled
  internally by the package. Changing a data format for cell has no impact
  on any other cells.

  Cell formats are changed using
  [Table.set_cell_formatting()](https://masaccio.github.io/numbers-parser/api/table.html#numbers_parser.Table.set_cell_formatting):

  ```python
  table.set_cell_formatting(
     "C1",
     "date",
     date_time_format="EEEE, d MMMM yyyy"
  )
  table.set_cell_formatting(
     0,
     4,
     "number",
     decimal_places=3,
     negative_style=NegativeNumberStyle.RED
  )
  ```

  Custom formats are shared across a Document and can be applied to
  multiple cells in multiple tables. Editing a custom format changes the
  appearance of data in all cells that share that format. You must first
  add a custom format to the document using
  [Document.add_custom_format()](https://masaccio.github.io/numbers-parser/api/document.html#numbers_parser.Document.add_custom_format)
  before assigning it to cells using
  [Table.set_cell_formatting()](https://masaccio.github.io/numbers-parser/api/table.html#numbers_parser.Table.set_cell_formatting):

  ```python
  long_date = doc.add_custom_format(
     name="Long Date",
     type="date",
     date_time_format="EEEE, d MMMM yyyy"
  )
  table.set_cell_formatting("C1", "custom", format=long_date)
  ```

  A limited number of currencies are formatted using symbolic notation
  rather than an ISO code. These are defined in
  `numbers_parser.currencies` and match the ones chosen by Numbers. For
  example, US dollars are referred to as `US$` whereas Euros and British
  Pounds are referred to using their symbols of `€` and `£`
  respectively.



  `numbers-parser` supports reading and writing cell borders, though the
  interface for each differs. Individual cells can have each of their four
  borders tested, but when drawing new borders, these are set for the
  table to allow for drawing borders across multiple cells. Setting the
  border of merged cells is not possible unless the edge of the cells is
  at the end of the merged region.

  Borders are represented using the [Border](https://masaccio.github.io/numbers-parser/api/border.html) class
  that can be initialized with line width, color and line style. The
  current state of a cell border is read using the
  [Cell.border](https://masaccio.github.io/numbers-parser/api/cells.html#numbers_parser.Cell.border) property
  and [Table.set_cell_border()](https://masaccio.github.io/numbers-parser/api/table.html#numbers_parser.Table.set_cell_border)
  sets the border for a cell edge or a range of cells.



  For more examples and details of all available classes and methods,
  see the [full API docs](https://masaccio.github.io/numbers-parser/).



  When installed from [PyPI](https://pypi.org/project/numbers-parser/),
  a number of command-line scripts are installed:

  - `cat-numbers`: converts Numbers documents into CSV
  - `csv2numbers`: converts CSV files to Numbers documents
  - `unpack-numbers`: converts Numbers documents into JSON files for debug purposes



  This script dumps Numbers spreadsheets into Excel-compatible CSV
  format, iterating through all the spreadsheets passed on the
  command-line.

  ```text
  usage: cat-numbers [-h] [-T | -S | -b] [-V] [--formulas] [--formatting]
                    [-s SHEET] [-t TABLE] [--debug]
                    [document ...]

  Export data from Apple Numbers spreadsheet tables

  positional arguments:
    document              Document(s) to export

  options:
    -h, --help            show this help message and exit
    -T, --list-tables     List the names of tables and exit
    -S, --list-sheets     List the names of sheets and exit
    -b, --brief           Don't prefix data rows with name of sheet/table
                          (default: false)
    -V, --version
    --formulas            Dump formulas instead of formula results
    --formatting          Dump formatted cells (durations) as they appear
                          in Numbers
    -s SHEET, --sheet SHEET
                          Names of sheet(s) to include in export
    -t TABLE, --table TABLE
                          Names of table(s) to include in export
    --debug               Enable debug logging
  ```

  Note: `--formatting` will return different capitalization for 12-hour
  times due to differences between Numbers’ representation of these dates
  and `datetime.strftime`. Numbers in English locales displays 12-hour
  times with ‘am’ and ‘pm’, but `datetime.strftime` on macOS at least
  cannot return lower-case versions of AM/PM.



  This script converts Excel-compatible CSV files into Numbers documents. Output files
  can optionally be provided, but is none are provided, the output is created by replacing
  the input’s files suffix with .numbers. For example:

  ```text
  csv2numbers file1.csv file2.csv -o file1.numbers file2.numbers
  ```

  Columns of data can have a number of transformations applied to them. The primary use-
  case intended for `csv2numbers` is converting banking exports to well-formatted
  spreadsheets.

  ```text
  usage: csv2numbers [-h] [-V] [--whitespace] [--reverse] [--no-header]
                     [--day-first] [--date COLUMNS] [--rename COLUMNS-MAP]
                     [--transform COLUMNS-MAP] [--delete COLUMNS]
                     [-o [FILENAME ...]]
                     [csvfile ...]

  positional arguments:
    csvfile               CSV file to convert

  options:
    -h, --help            show this help message and exit
    -V, --version
    --whitespace          strip whitespace from beginning and end of strings
                          and collapse other whitespace into single space
                          (default: false)
    --reverse             reverse the order of the data rows (default:
                          false)
    --no-header           CSV file has no header row (default: false)
    --day-first           dates are represented day first in the CSV file
                          (default: false)
    --date COLUMNS        comma-separated list of column names/indexes to
                          parse as dates
    --rename COLUMNS-MAP  comma-separated list of column names/indexes to
                          renamed as 'OLD:NEW'
    --transform COLUMNS-MAP
                          comma-separated list of column names/indexes to
                          transform as 'NEW:FUNC=OLD'
    --delete COLUMNS      comma-separated list of column names/indexes to
                          delete
    -o [FILENAME ...], --output [FILENAME ...]
                          output filename (default: use source file with
                          .numbers)
  ```

  The following options affecting the output of the entire file. The default for each is always false.

  - `--whitespace`: strip whitespace from beginning and end of strings and collapse other whitespace into single space
  - `--reverse`: reverse the order of the data rows
  - `--no-header`: CSV file has no header row
  - ``--day-first`: dates are represented day first in the CSV file

  `csv2numbers` can also perform column manipulation. Columns can be identified using their name if the CSV file has a header or using a column index. Columns are zero-indexed and names and indices can be used together on the same command-line. When multiple columns are required, you can specify them using comma-separated values. The format for these arguments, like for the CSV file itself, the Excel dialect.



  Delete columns using `--delete`. The names or indices of the columns to delete are specified as comma-separated values:

  ```text
  csv2numbers file1.csv --delete=Account,3
  ```



  Rename columns using `--rename`. The current column name and new column name are separated by a `:` and each renaming is specified as comma-separated values:

  ```text
  csv2numbers file1.csv --rename=2:Account,"Paid In":Amount
  ```



  The `--date` option identifies a comma-separated list of columns that should be parsed as dates. Use `--day-first` where the day and month is ambiguous anf the day comes first rather than the month.



  Columns can be merged and new columns created using simple functions. The –transform option takes a comma-seperated list of transformations of the form NEW:FUNC=OLD. Supported functions are:

  | Function   | Arguments                   | Description                                                                                                                                                                                                                                                                                                                                           |
  |------------|-----------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
  | MERGE      | dest=MERGE:source           | The dest column is writen with values from one or more columns<br/>indicated by source. For multiple columns, which are separated<br/>by ;, the first empty value is chosen.                                                                                                                                                                          |
  | NEG        | dest=NEG:source             | The dest column contains absolute values of any column that is<br/>negative. This is useful for isolating debits from account<br/>exports.                                                                                                                                                                                                            |
  | POS        | dest=NEG:source             | The dest column contains values of any column that is<br/>positive. This is useful for isolating credits from account<br/>exports.                                                                                                                                                                                                                    |
  | LOOKUP     | dest=LOOKUP:source;filename | A lookup map is read from filename which must be an Apple<br/>Numbers file containing a single table of two columns. The table<br/>is used to match agsinst source, searching the first column<br/>for matches and writing the corresponding value from the second<br/>column to dest. Values are chosen based on the longest<br/>matching substring. |

  Examples:

  ```text
  csv2numbers --transform="Paid In"=POS:Amount,Withdrawn=NEG:Amount file1.csv
  csv2numbers --transform='Category=LOOKUP:Transaction;mapping.numbers' file1.csv
  ```



  Current known limitations of `numbers-parser` which may be implemented in the future are:

  - Table styles that allow new tables to adopt a style across the whole
    table are not suppported
  - Creating cells of type `BulletedTextCell` is not supported
  - New tables are inserted with a fixed offset below the last table in a
    worksheet which does not take into account title or caption size
  - Captions can be created and edited as of numbers-parser version 4.12, but cannot
    be styled. New captions adopt the first caption style available in the current
    document
  - Formulas cannot be written to a document
  - Pivot tables are unsupported and saving a document with a pivot table issues
    a UnsupportedWarning (see [issue 73](https://github.com/masaccio/numbers-parser/issues/73) for details).

  The following limitations are expected to always remain:

  - New sheets insert tables with formats copied from the first table in
    the previous sheet rather than default table formats
  - Due to a limitation in Python’s
    [ZipFile](https://docs.python.org/3/library/zipfile.html), Python
    versions older than 3.11 do not support image filenames with UTF-8 characters
    [Cell.add_style.bg_image()](https://masaccio.github.io/numbers-parser/api/sheet.html#numbers_parser.Style) returns
    `None` for such files and issues a `RuntimeWarning`
    (see [issue 69](https://github.com/masaccio/numbers-parser/issues/69) for details).
  - Password-encrypted documents cannot be opened. You must first re-save without
    a password to read (see [issue 88](https://github.com/masaccio/numbers-parser/issues/88) for details).
    A UnsupportedError exception is raised when such documents are opened.



  All code in this repository is licensed under the [MIT License](https://github.com/masaccio/numbers-parser/blob/master/LICENSE.rst).


pkgId: 706f8962319bc37be4e5981054a41ae86e428dd4744aaae75e384ba0d420ab41
name: python-nun-db-py-help
arch: noarch
version: 0.1.0
epoch: 0
release: 1
summary: Development documents and examples for nun-db-py
url: https://github.com/eewnshit/nun-db-py
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nun-db-py-0.1.0-1.src.rpm
location_href: Packages/python-nun-db-py-help-0.1.0-1.noarch.rpm
checksum_type: sha256
description:
  NunDB Client for interacting with the NunDB WebSocket server. This Python client allows you to authenticate, manage databases, manipulate keys, and set up watchers for key changes in the NunDB server.



  - **Connect to WebSocket**: Connect and authenticate with the NunDB WebSocket server.
  - **Database Management**: Create and manage databases.
  - **Key Management**: Set, get, increment, and remove keys.
  - **Watchers**: Watch keys for changes and execute callbacks when changes occur.
  - **Asynchronous**: Fully asynchronous, based on `asyncio` and `websockets` for non-blocking operations.



  To install the NunDB Python client, you can use `pip`:

  ```bash
  pip install nun-db-py
  ```





  ```python
  import asyncio
  from nun_db_client import NunDB

  async def main():
      
      url = "ws://localhost:9000"
      username = "your_username"
      password = "your_password"

      nun_db, _ = await NunDB.create(url, username, password)

      
      db_name = "test_db"
      db_token = "your_db_token"
      await nun_db.create_db(db_name, db_token)

      
      await nun_db.set("some_key", "some_value")

      
      value = await nun_db.get("some_key")
      print(value)

      
      await nun_db.increment("some_key", 10)

      
      await nun_db.add_watch("some_key", lambda data: print(f"Key changed: {data}"))

      
      await nun_db.remove_watcher("some_key")

      
      await nun_db.close()


  asyncio.run(main())

  ```



  - `connect(url: str, name: str, pwd: str)`: Connect to the NunDB WebSocket server and authenticate.
  - `create_db(db_name: str, db_token: str)`: Create a new database.
  - `set(name: str, value: str)`: Set a key to a specific value.
  - `get(name: str)`: Get the value of a key.
  - `increment(key: str, value: int)`: Increment the value of a key.
  - `remove(key: str)`: Remove a key from the database.
  - `add_watch(name: str, cb: Callable)`: Add a watcher for a key.
  - `remove_watcher(name: str)`: Remove the watcher for a key.
  - `close()`: Close the WebSocket connection.



  You can set up watchers to listen for changes to a key. The callback function will be executed whenever the key is modified.

  Example:
  ```python
  await nun_db.add_watch("some_key", lambda data: print(f"Key {data} changed"))
  ```



  - **get_all_databases()**: Retrieve all databases.
  - **keys_starting_with(prefix: str)**: Retrieve all keys starting with a given prefix.
  - **keys_ending_with(suffix: str)**: Retrieve all keys ending with a given suffix.
  - **keys_contains(supposed_text: str)**: Retrieve all keys that contain a specific substring.



  The client raises exceptions if commands fail. You should handle errors accordingly by wrapping them in try-except blocks.



  To enable logging for commands and responses:

  ```python
  nun_db.show_logs(True)
  ```



  To close the WebSocket connection gracefully, use:

  ```python
  await nun_db.close()
  ```

  Dependencies

      asyncio
      websockets
      re

  License

  MIT License. See LICENSE for more details.


pkgId: 3c3901ebf5e8edcf63f413cbf7cfc3734ec9275096ce19785c2092d0497e35ab
name: python-nvdutils-help
arch: noarch
version: 2.5.0
epoch: 0
release: 1
summary: Development documents and examples for nvdutils
url: https://pypi.org/project/nvdutils/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nvdutils-2.5.0-1.src.rpm
location_href: Packages/python-nvdutils-help-2.5.0-1.noarch.rpm
checksum_type: sha256
description:
  A package for parsing, representing, and filtering NVD data.


  ```sh
  $ mkdir ~/.nvdutils
  $ cd ~/.nvdutils

  $ git clone https://github.com/fkie-cad/nvd-json-data-feeds.git

  $ git clone https://github.com/epicosy/cna-list.git
  ```



  ```python
      from nvdutils.core.loaders.json_loader import JSONFeedsLoader
      from nvdutils.types.options import CVEOptions

      cve_options = CVEOptions()
      cve_options.cwe_options.cwe_id = 'CWE-79'
      cve_options.cwe_options.has_cwe = True
      cve_options.cwe_options.in_secondary = False
      cve_options.cwe_options.is_single = True
      cve_options.cvss_options.has_v3 = True
      cve_options.config_options.is_single_vuln_product = True
      cve_options.desc_options.is_single_component = True
      cve_options.desc_options.is_single_vuln = True

      
      loader = JSONFeedsLoader(data_path='/path/to/nvd-json-data-feeds', options=cve_options,
                               verbose=True)
      loader.load()
      print(len(loader))

      cve = JSONFeedsLoader.load_cve('/path/to/CVE-2019-0001.json')
      print(cve)
  ```


pkgId: 156c66b39e6e74b719bc0d50f14d466c94642fa6f64ea5f7e8327e0e6f2dd558
name: python-nxbench-help
arch: noarch
version: 0.1.14
epoch: 0
release: 1
summary: Development documents and examples for nxbench
url: https://pypi.org/project/nxbench/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-nxbench-0.1.14-1.src.rpm
location_href: Packages/python-nxbench-help-0.1.14-1.noarch.rpm
checksum_type: sha256
description:
  [![Python](https://img.shields.io/pypi/pyversions/nxbench.svg)](https://badge.fury.io/py/nxbench)
  [![PyPI](https://badge.fury.io/py/nxbench.svg)](https://badge.fury.io/py/nxbench)
  [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://pre-commit.com/)
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)



  <p align="center">
    <img src="doc/_static/assets/nxbench_logo.png" alt="NxBench Logo" width="150"/>
  </p>

  **nxbench** is a comprehensive benchmarking suite designed to facilitate comparative profiling of graph analytic algorithms across NetworkX and compatible backends. Built on top of [Airspeed Velocity (ASV)](https://github.com/airspeed-velocity/asv), nxbench places an emphasis on extensible and granular performance analysis, enabling developers and researchers to optimize their graph analysis workflows efficiently and reproducibly.



  - **Cross-Backend Benchmarking**: Leverage NetworkX's backend system to profile algorithms across multiple implementations (NetworkX, nx-parallel, GraphBLAS, and CuGraph)
  - **Configurable Suite**: YAML-based configuration for algorithms, datasets, and benchmarking parameters
  - **Real-World Datasets**: Automated downloading and caching of networks and their metadata from NetworkRepository
  - **Synthetic Graph Generation**: Support for generating benchmark graphs using any of NetworkX's built-in generators
  - **Validation Framework**: Comprehensive result validation for correctness across implementations
  - **Performance Monitoring**: Track execution time and memory usage with detailed metrics
  - **Interactive Visualization**: Dynamic dashboard for exploring benchmark results using Plotly Dash
  - **Flexible Storage**: SQLite-based result storage with pandas integration for analysis
  - **CI Integration**: Support for automated benchmarking through ASV (Airspeed Velocity)



  PyPi:

  ```bash
  pip install nxbench
  ```

  From a local clone:

  ```bash
  make install
  ```

  Docker:

  ```bash

  docker-compose -f docker/docker-compose.cpu.yaml build


  docker-compose -f docker/docker-compose.gpu.yaml build
  ```



  1. Configure your benchmarks in a yaml file (see `configs/example.yaml`):

  ```yaml
  algorithms:
    - name: "pagerank"
      func: "networkx.pagerank"
      params:
        alpha: 0.85
      groups: ["centrality"]

  datasets:
    - name: "karate"
      source: "networkrepository"
  ```

  2. Run benchmarks based on the configuration:

  ```bash
  nxbench --config 'nxbench/configs/example.yaml' benchmark run
  ```

  3. Export results:

  ```bash
  nxbench --config 'nxbench/configs/example.yaml' benchmark export 'results/results.csv' --output-format csv  # convert benchmarked results into csv format.
  ```

  4. View results:

  ```bash
  nxbench viz serve  # visualize results using parallel categories dashboard
  ```

  <p align="center">
    <img src="doc/_static/assets/animation.gif" alt="Parallel Categories Animation" width="1000"/>
  </p>




  The CLI provides comprehensive management of benchmarks, datasets, and visualization:

  ```bash

  nxbench data download karate  # download specific dataset
  nxbench data list --category social  # list available datasets


  nxbench --config 'nxbench/configs/example.yaml' -vvv benchmark run  # debug benchmark runs
  nxbench --config 'nxbench/configs/example.yaml' benchmark export 'results/benchmarks.sqlite' --output-format sql # export the results into a sql database
  ```



  Benchmarks are configured through YAML files with the following structure:

  ```yaml
  algorithms:
    - name: "algorithm_name"
      func: "fully.qualified.function.name"
      params: {}
      requires_directed: false
      groups: ["category"]
      validate_result: "validation.function"

  datasets:
    - name: "dataset_name"
      source: "networkrepository"
      params: {}
  ```



  - NetworkX (default)
  - nx-CuGraph (requires separate CuGraph installation and supported GPU hardware)
  - GraphBLAS Algorithms (optional)
  - nx-parallel (optional)



  ```bash

  NUM_GPU=1 docker-compose -f docker/docker-compose.gpu.yaml up nxbench


  docker-compose -f docker/docker-compose.cpu.yaml up nxbench


  docker-compose -f docker/docker-compose.cpu.yaml up dashboard


  docker-compose -f docker/docker-compose.cpu.yaml run --rm nxbench --config 'nxbench/configs/example.yaml' benchmark run --backend networkx


  docker-compose -f docker/docker-compose.cpu.yaml run --rm nxbench --config 'nxbench/configs/example.yaml' benchmark export results.csv
  ```



  Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details on:

  - Code style guidelines
  - Development setup
  - Testing requirements
  - Pull request process



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



  - NetworkX community for the core graph library and dispatching support
  - NetworkRepository.com for harmonized dataset access
  - ASV team for benchmark infrastructure



  For questions or suggestions:

  - Open an issue on GitHub
  - Email: <dpysalexander@gmail.com>


pkgId: 17624deb2f0271f957b1e850635d2d7788def9a940dafe39f0f0572366c15b0a
name: python-oakvar-help
arch: noarch
version: 2.12.5
epoch: 0
release: 1
summary: Development documents and examples for oakvar
url: https://github.com/rkimoakbioinformatics/oakvar
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-oakvar-2.12.5-1.src.rpm
location_href: Packages/python-oakvar-help-2.12.5-1.noarch.rpm
checksum_type: sha256
description:
  * OakVar is a bridge between cutting-edge genomics research and everyday people.
  * OakVar democratizes access to genomics knowledge for all.


pkgId: c2b0a2e26253e6eaaeef0cac116707f7dc687ee4131a500f91e04b7b3f3d440d
name: python-oarepo-c4gh-help
arch: noarch
version: 0.10
epoch: 0
release: 1
summary: Development documents and examples for oarepo-c4gh
url: https://github.com/oarepo/oarepo-c4gh
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-oarepo-c4gh-0.10-1.src.rpm
location_href: Packages/python-oarepo-c4gh-help-0.10-1.noarch.rpm
checksum_type: sha256
description:
  A Crypt4GH container processing library.
  Copyright (c) 2024 Dominik Pantůček <dominik.pantucek@trustica.cz>
  Distributed under MIT license - see LICENSE for details.
  For usage instructions, see the [generated
  documentation](https://oarepo.github.io/oarepo-c4gh/).
  The [test coverage
  report](https://oarepo.github.io/oarepo-c4gh/cov_html/) is also
  available.


pkgId: 2e5e12b0417755f64adc381a219c4005d55bc4d26b95055e900c41e31b84d59d
name: python-oarepo-communities-help
arch: noarch
version: 5.1.2
epoch: 0
release: 1
summary: Development documents and examples for oarepo-communities
url: https://pypi.org/project/oarepo-communities/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-oarepo-communities-5.1.2-1.src.rpm
location_href: Packages/python-oarepo-communities-help-5.1.2-1.noarch.rpm
checksum_type: sha256
description:
  To init custom fields, add them under COMMUNITIES_CUSTOM_FIELDS key to invenio.cfg,
  for example


  ``` python
  from oarepo_communities.cf.permissions import PermissionsCF
  from oarepo_communities.cf.aai import AAIMappingCF

  COMMUNITIES_CUSTOM_FIELDS = [PermissionsCF("permissions"), AAIMappingCF("aai")]
  COMMUNITIES_CUSTOM_FIELDS_UI = [{
       "section": "settings",
       "fields": [{
                   "field": "permissions",
                   "ui_widget": "Input",
                   "props": {
                               "label":"permissions dict",
                            }
                  }]
   }]
  ```
  and the init cli command:
  invenio communities custom-fields init


pkgId: 3c27720ecc2f8ebdf1a4ea71829720d12b2ea39bad1a5e37422729f4ddfae360
name: python-oarepo-ui-help
arch: noarch
version: 5.2.32
epoch: 0
release: 1
summary: Development documents and examples for oarepo-ui
url: https://github.com/oarepo/oarepo-ui
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-oarepo-ui-5.2.32-1.src.rpm
location_href: Packages/python-oarepo-ui-help-5.2.32-1.noarch.rpm
checksum_type: sha256
description:
  <!--
   Copyright (c) 2022 CESNET

   This software is released under the MIT License.
   https://opensource.org/licenses/MIT
  -->



  This package provides implementation of base UI components for use in dynamic (React JS) & static (Jinja) pages and
  functions to render layouts from model configuration.





  See also [JinjaX documentation](https://jinjax.scaletti.dev/).

  Oarepo builds its static UI pages on top of the JinjaX library.
  To load a Jinja application, a JinjaX component is expected on the input.
  The relative path to the component is taken from the configuration

  Components by default accept record metadata, ui definition and layout definition as parameters.
  To work with parameters within components, you need to define them in the template in the way described in the JinjaX documentation.



  Example of component specification in config:

  ```python
  templates = {
          "detail": "DetailPage",
          "search": "SearchPage"
      }
  ```

  Example of possible contents of the DetailPage component, contained inside `templates/DetailPage.jinja`

  ```json
  {#def metadata, ui, layout #}
  {% extends "oarepo_ui/detail.html" %}

  { block head_links %}

  {{ super() }}
  {{ webpack['docs_app_components.js']}}
  {{ webpack['docs_app_components.css']}}

  { endblock %}

  {% block record_main_content %}
      <Main metadata={{metadata}}></Main>
  {% endblock %}

  {% block record_sidebar %}
      <Sidebar metadata={{metadata}}></Sidebar>
  {% endblock %}
  ```


  Sample of possible contents of Main component:
  ```json
  {#def metadata, ui, layout #}
  <h1 style="margin-bottom: 1em">{{ metadata.title }}</h1>
  <dl class="ui very basic table">
  <Field label="accessibility">{{metadata.accessibility}}</Field>

  ```

  You can also namespace your ui components, by using dot notation:

  ```python
  templates = {
          "detail": "myrepo.DetailPage",
          "search": "myrepo.SearchPage"
      }
  ```

  Then, the component will be loaded from the `templates/myrepo/DetailPage.jinja` file.




  Within the Oarepo-ui library, basic components are defined in the `templates` folder.



  To render a custom layout in a React app (e. g. records search result page), this package provides the `useLayout` hook and an entrypoint
  for bootstrapping [Search UI](https://github.com/inveniosoftware/invenio-search-ui) app. In your `search.html` template, you can use it like this:

  ```jinja
  { extends config.BASE_TEMPLATE %}

  { block javascript %}
      {{ super() }}
      {# imports oarepo-ui JS libraries to be used on page #}
      {{ webpack['oarepo_ui.js'] }}
      {# boots Invenio-Search-UI based search app, with dynamic UI widgets provided by oarepo-ui #}
      {{ webpack['oarepo_ui_search.js'] }}
  { endblock %}

  {# ... #}

  <div class="ui container">
    {# provides a DOM root element for the Search UI to be mounted into #}
    <div data-invenio-search-config='{{ search_app_oarepo_config(app_id="oarepo-search") | tojson }}'></div>
  </div>
  ```

  Next you will need to register an app context processor named `search_app_oarepo_config` and register it
  to blueprint handling the `search.html` template route. In the context processor, you can provide your
  own layout configuration for different parts of UI to be used by `oarepo-ui` libs to generate user interface widgets.

  ```python
  def create_blueprint(app):
      """Blueprint for the routes and resources."""
      blueprint = Blueprint(
          "your-app",
          __name__,
          template_folder="templates",
          static_folder="static",
      )

      blueprint.add_url_rule("/", view_func=search)
      blueprint.app_context_processor(search_app_context)
      return blueprint


  def search():
      """Search template."""
      return render_template('your-app/search.html')

  def search_app_context():
      """Search app context processor."""
      return {
          "search_app_oarepo_config": partial(
              search_app_config,
              "OAREPO_SEARCH",
              [], #current_app.config["OAREPO_FACETS"],1
              current_app.config["OAREPO_SORT_OPTIONS"],
              endpoint="/api/your-records",
              headers={"Accept": "application/json"},
              overrides={
                  "layoutOptions": {
                      "listView": True,
                      "gridView": False,
                      "ResultsList": {
                          "item": {
                              "component": 'segment',
                              "children": [{
                                  "component": "header",
                                  "dataField": "metadata.title"
                              }]
                          }
                      }
                  }
              }
          )
      }
  ```

  In your `invenio.cfg`, customize the general search app settings:

  ```python
  OAREPO_SEARCH = {
      "facets": [],
      "sort": ["bestmatch", "newest", "oldest", "version"],
  }

  OAREPO_SORT_OPTIONS = {
      "bestmatch": dict(
          title=_("Best match"),
          fields=["_score"],  # search defaults to desc on `_score` field
      ),
      "newest": dict(
          title=_("Newest"),
          fields=["-created"],
      ),
      "oldest": dict(
          title=_("Oldest"),
          fields=["created"],
      ),
      "version": dict(
          title=_("Version"),
          fields=["-versions.index"],
      ),
      "updated-desc": dict(
          title=_("Recently updated"),
          fields=["-updated"],
      ),
      "updated-asc": dict(
          title=_("Least recently updated"),
          fields=["updated"],
      ),
  }
  ```


pkgId: 36e15c1307cbb8065e3552d0288fb14462cca23a81e89f7dc1d42c9958deeae6
name: python-oarepo-vocabularies-help
arch: noarch
version: 2.1.11
epoch: 0
release: 1
summary: Development documents and examples for oarepo-vocabularies
url: https://pypi.org/project/oarepo-vocabularies/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-oarepo-vocabularies-2.1.11-1.src.rpm
location_href: Packages/python-oarepo-vocabularies-help-2.1.11-1.noarch.rpm
checksum_type: sha256
description:
  This is an extension of invenio vocabularies that allows:

  * Use the vocabularies with custom fields
  * Treat vocabulary items as hierarchy



  Add `oarepo-runtime`, `oarepo-vocabularies` to your virtualenv an set up the following in your `invenio.cfg`:

  ```python
  from oarepo_vocabularies.services.config import VocabulariesConfig
  from oarepo_vocabularies.resources.config import VocabulariesResourceConfig

  VOCABULARIES_SERVICE_CONFIG = VocabulariesConfig
  VOCABULARIES_RESOURCE_CONFIG = VocabulariesResourceConfig
  ```



  See [NRP documentation](https://narodni-repozitar.github.io/developer-docs/docs/technology/invenio/nrp-toolchain/plugins/vocabularies) for more details.



  It is possible to provide authority sources for vocabularies.
  Configuration:

  ```python
  VOCABULARY_TYPE_METADATA = {
      "funding": {    # vocabulary of funding
          "name": {
              "en": "Funding"
          },
          "authority": FundingService
      }
  }
  ```

  where:

  ```python
  from oarepo_vocabularies.authorities import AuthorityService

  class FundingService(AuthorityService):
      def search(self, query=None, page=1, size=10, **kwargs):
          
          
          return {
              'hits': {
                  'total': 2,
                  'hits': [
                      {"id": "03zsq2967", "title": {"en": "Funding 1"}},
                      {"id": "a4gfhtt56", "title": {"en": "Funding 2"}}
                  ]
              },
              
          }
      def get(self, item_id, *, uow, value, **kwargs):
          

          
          return next(x for x in self.search()['hits']['hits'] if x['id'] == item_id)
  ```



  This extension supports ordering and suggestion in different languages. It is enabled by default
  and enables all languages in `I18N_LANGUAGES`, `BABEL_DEFAULT_LOCALE`. Sorting by `title` sorts
  by the title in the current language, suggestion suggests in `id` and title in the default language.


pkgId: cc1e0307b507a79e5cf9ddb58b9aaec53846ba974fb1c4311c46c63799352159
name: python-oas-yaml-combine-py-help
arch: noarch
version: 0.0.1
epoch: 0
release: 1
summary: Development documents and examples for oas-yaml-combine-py
url: https://github.com/sarpt/oas-yaml-combine-py
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-oas-yaml-combine-py-0.0.1-1.src.rpm
location_href: Packages/python-oas-yaml-combine-py-help-0.0.1-1.noarch.rpm
checksum_type: sha256
description:
  A wrapper over a dynamic library build of [openapi-utils](https://github.com/sarpt/openapi-utils)

  Takes input .yaml file and follows references to inline everything in a single output .yaml file
  Tool can resolve local refs (refs pointing to objects in the same file) and remote refs (refs pointing to object in other files)


  - `liboasyamlcombine.so` from [openapi-utils](https://github.com/sarpt/openapi-utils) needs to be placed in the `vendor` directory (can be obtained from "Releases")
  - python >=3.8
  - OS needs to support .so (linux, unix, etc.)


  The project can be used as either as a cmd which behaves similarily to a cmd from [openapi-utils](https://github.com/sarpt/openapi-utils), or as library exposing `resolve_references` function



  - `help` - help
  - `input` - path to input file that has refs that need to be resolved. When not provided, stdin is used
  - `output` - path to output file to which input file with resolved refs should be saved. When not provided, stdout is used
  - `refsdir` - path to directory where files containing remote refs are stored. When not provided a directory of input-file is used
  - `inlinelocal` - (default: `False`) when set to `True` local refs are replaced with local objects, otherwise local refs stay in place
  - `inlineremote` - (default: `False`) when set to `True` remote refs are replaced with remote objects, otherwise remote refs stay in place
  - `keeplocal` - (default: `False`) when set to `True` along with `inlinelocal` keeps local reference objects after inlining, otherwise deletes them. When set to `True` with `inlinelocal` set to false does nothing to prevent from making dangling local references, and therefore creating incorrect specifications


pkgId: 2a1de30d1154ab9ca7e6bbc403f3be14facd899c803decea5d2e8481847bd0aa
name: python-ob-metaflow-extensions-help
arch: noarch
version: 1.1.114
epoch: 0
release: 1
summary: Development documents and examples for ob-metaflow-extensions
url: https://pypi.org/project/ob-metaflow-extensions/
rpm_license: Commercial
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ob-metaflow-extensions-1.1.114-1.src.rpm
location_href: Packages/python-ob-metaflow-extensions-help-1.1.114-1.noarch.rpm
checksum_type: sha256
description:
  This package installs client side packages for Outerbounds platform. See Outerbounds platform documentation and [Metaflow documentation](https://metaflow.org/) for more info on how to use it.


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

  You will need to grab the latest Gene Ontology description in `.obo` format. Download it from the [official GO site](https://geneontology.org/docs/download-ontology/).
   This is a reasonable format, where each GO term is encoded as a paragraph of key:value lines:
  ```txt
  [Term]
  id: GO:0000001
  name: mitochondrion inheritance
  namespace: biological_process
  def: "The distribution of mitochondria, including the mitochondrial genome, into daughter cells after mitosis or meiosis, mediated by interactions between mitochondria and the cytoskeleton." [GOC:mcc, PMID:10873824, PMID:11389764]
  synonym: "mitochondrial inheritance" EXACT []
  is_a: GO:0048308 ! organelle inheritance
  is_a: GO:0048311 ! mitochondrion distribution
  ```

  Obvisously, `is_a` is the main relationship of interest to build the DAG of GO terms. But `consider`, `replaced_by` and `alias_to` properties are also handled by this package.


  Simply read from a flat `.obo` file
  ```python
  from obogo import create_tree_from_obo
  obogo_tree = create_tree_from_obo('../data/go-basic.obo')
  ```

  You can query a go term by a name or its GO identifier
  ```python
  obogo_tree.view_go_node('GO:1903507')
  obogo_tree.view_go_node('biological process')
  ```

  In order to set the background population of proteins for each GO term, you will need to build a collection of uniprot data containers. In obogo, these are called `UniprotDatum` and can be directly created from a [uniprot proteome xml reference file](https://www.uniprot.org/proteomes?query=*) (eg: [E.coli K12](https://www.uniprot.org/proteomes?facets=proteome_type:1&query=(organism_id:83333))).
  Supposed we downloaded the above mentioned E.Coli K12 proteome xml file named `uniprotkb_proteome_UP000000625.xml`, the collection of uniprot containers can be buildt this way:

  ```python
  from uniprot_redis.store.mockup import UniprotStoreDummy
  from uniprot_redis.wrapper import Collector

  store = UniprotStoreDummy()
  load_data = store.load_uniprot_xml(file="path/to/uniprotkb_proteome_UP000000625.xml")
  store.save_collection('ecoli_K12', load_data)

  my_collection = Collector(store, 'ecoli_K12')
  ```
  This collection is iterable, slice-able or get-able via uniprot Accession numbers.
  ```python
  print(my_collection['P19636'])
  for uniprot_datum in my_collection:
      print(uniprot_datum.id, uniprot_datum.go)
  ```



  Each protein of the collection now has to be attached to the GO terms that are described in its `UniprotDatum` `go` field (see above).
  ```python
  obogo_tree.load_proteins('background', my_collection)
  ```
  The `obogo_tree` represents each GO term as a straight newtworkx node. The `load_proteins` call will set the  for each node the value of their 'background' key to a list of UniprotDatum.

  In most ORA analysis the population of proteins attached to a given node is the union of the proteins attached to its descendant ("GO annotation goes up": "any specific GO term implicitly carries the meaning of a less specific"). Hence, an additional operation is required to propagate protein populations up the tree.
  ```python
  obogo_tree.percolate(percol_type="background")
  ```
  This currently takes around 2mn for E.Coli proteome.


  ```python
  import pickle
  pik_fpath = "obogo_ecoliK12.pik"
  with open(pik_fpath, "wb") as fp:
      pickle.dump(obogo_tree, fp)
  ```

  For this tutorial, we will create a dummy collection of experimental proteins based on a slice of 1200 protein from the proteome and load it into obogo_tree. Note that this time, it is loaded using the `'measured'` argument. Then, we also propagate this additional protein population up the tree.
  ```python
  obo_tree.load_proteins('measured', my_collection[1000:2200])
  obo_tree.percolate(percol_type='measured')
  ```


  We now define a subset of `measured` proteins as "of interest" (aka: over-abundant).

  ```python
  sample = my_collection[1100:1180]
  ```

  For a particular GO term
  ```python
  from obogo.statistics import compute_node_ora
  print( compute_node_ora(obo_tree, sample, 'GO:0006811') )
  print( compute_node_ora(obo_tree, sample, 'metal ion transport') )
  print( compute_node_ora(obo_tree, sample, 'GO:0006811', norm='measured') )
  ```
  The sample parameter can also be a straight Uniprot AC iterator (eg: `['P02930', 'P03819', 'P0A910']`).
  The `norm`` parameter controls the reference population for the Fisher statistic:
  - 'background' : the whole proteome (default)
  - 'measured'   : the proteins of the experiment

  The returned value is a tuple of the form:

  `(GO_identfier, GO_name, total_sample protein carrying the GO term, Fisher test log_odd, Fisher test pvalue, contingency table)`

  A similar operation can be applied to the entiere tree, where a generator of `score` tuples will be returned
  ```python
  from obogo.statistics import score_ora_tree
  for go_score in score_ora_tree(obo_tree, sample):
      print(go_score)
  ```


pkgId: 99d5cfb49696e51bf08881f44525ffaa9d239648ed6573278c99b86d594590d6
name: python-obr-help
arch: noarch
version: 1
epoch: 0
release: 1
summary: Development documents and examples for obr
url: https://pypi.org/project/obr/
rpm_license: Public Domain
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-obr-1-1.src.rpm
location_href: Packages/python-obr-help-1-1.noarch.rpm
checksum_type: sha256
description:
  **NAME**


  ``obr`` - deferred exception handling


  **SYNOPSIS**

  ::

      >>> from obr.object import *
      >>> o = Object()
      >>> o.a = "b"
      >>> str(loads(dumps(o)))
      "{'a': 'b'}"


  **DESCRIPTION**


  ``obr`` contains all the python3 code to program objects in a functional
  way. It provides a base Object class that has only dunder methods, all
  methods are factored out into functions with the objects as the first
  argument. It is called Object Programming (OP), OOP without the
  oriented.

  ``obr`` allows for easy json save//load to/from disk of objects. It
  provides an "clean namespace" Object class that only has dunder
  methods, so the namespace is not cluttered with method names. This
  makes storing and reading to/from json possible.


  **INSTALL**

  ::

      $ pipx install obr
      $ pipx ensurepath


  **SOURCE**

  source is at https://github.com/bthate/obr


  **AUTHOR**

  Bart Thate <bthate@dds.nl>


  **COPYRIGHT**

  ``obr`` is Public Domain.


pkgId: 6db43c6c1df2daa31392d01950ceedc2da85fbcc6875b70fb83a9c1c43d5adb2
name: python-observicia-help
arch: noarch
version: 0.1.7
epoch: 0
release: 1
summary: Development documents and examples for observicia
url: https://github.com/observicia/observicia
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-observicia-0.1.7-1.src.rpm
location_href: Packages/python-observicia-help-0.1.7-1.noarch.rpm
checksum_type: sha256
description:
  Observicia is a Cloud Native observability and policy control SDK for LLM applications. It provides seamless integration with CNCF native observability stack while offering comprehensive token tracking, policy enforcement, and PII protection capabilities.

  [![Documentation](https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat)](https://observicia.readthedocs.io/en/latest/)
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
  [![OpenTelemetry](https://img.shields.io/badge/OpenTelemetry-enabled-blue)](https://opentelemetry.io/)
  [![OPA](https://img.shields.io/badge/OPA-integrated-blue)](https://www.openpolicyagent.org/)



  - **Token Tracking and Management**
    - Real-time token usage monitoring across providers
    - Stream-aware token counting
    - Token usage retention and cleanup
    - Per-session token tracking

  - **Policy Enforcement**
    - Integration with Open Policy Agent (OPA)
    - Support for multiple policy evaluation levels
    - Risk level assessment (low, medium, high, critical)
    - Custom policy definition support
    - Synchronous and asynchronous policy evaluation

  - **LLM Provider Integration**
    - OpenAI (fully implemented)
      - Chat completions (sync/async)
      - Text completions (sync/async)
      - Embeddings
      - Image generation
      - File operations
      - Streaming support
    - Basic scaffolding for:
      - Anthropic
      - LiteLLM
      - WatsonX

  - **Observability Features**
    - OpenTelemetry integration
    - Span-based tracing for all LLM operations
    - Configurable logging (console, file, OTLP)
    - Mermaid diagram generation from telemetry data
    - Detailed request/response tracing
    - Custom attribute tracking



  1. Install the SDK:
  ```bash
  pip install observicia
  ```

  2. Create a configuration file (`observicia_config.yaml`):
  ```yaml
  service_name: patient-rag-app
  otel_endpoint: null
  opa_endpoint: http://opa-server:8181/
  policies:
    - name: pii_check
      path: policies/pii
      description: Check for PII in responses
      required_trace_level: enhanced
      risk_level: high
    - name: prompt_compliance
      path: policies/prompt_compliance
      description: Check for prompt compliance
      required_trace_level: basic
      risk_level: medium
  logging:
    file: "rag-app.json"
    telemetry:
      enabled: true
      format: "json"
    messages:
      enabled: true
      level: "INFO"
    chat:
      enabled: true
      level: "both"
      file: "rag-chat.json"
  ```

  3. Initialize in your code:
  ```python
  from observicia import init


  init()


  from openai import OpenAI
  client = OpenAI()
  ```





  - Kubernetes cluster with:
    - OpenTelemetry Collector
    - Open Policy Agent
    - Jaeger (optional)
    - Prometheus (optional)



  The SDK includes Kubernetes manifests for deploying:
  - OpenTelemetry Collector
  - Open Policy Agent
  - Jaeger
  - Prometheus
  - PII detection service
  - Prompt compliance service

  See the [deploy/k8s](deploy/k8s) directory for complete deployment manifests.



  The SDK includes two example applications:

  1. **Simple Chat Application** ([examples/simple-chat](examples/simple-chat))
     - Basic chat interface using OpenAI
     - Demonstrates token tracking and tracing
     - Shows streaming response handling

  2. **RAG Application** ([examples/rag-app](examples/rag-app))
     - Retrieval-Augmented Generation example
     - Shows policy enforcement for PII protection
     - Demonstrates context tracking



  ```mermaid
  flowchart TB
      App[Application] --> SDK[Observicia SDK]
      SDK --> Providers[LLM Providers]
      SDK --> OPA[Open Policy Agent]
      SDK --> OTEL[OpenTelemetry Collector]
      OTEL --> Jaeger[Jaeger]
      OTEL --> Prom[Prometheus]
      OPA --> PII[PII Detection Service]
      OPA --> Compliance[Prompt Compliance Service]
  ```



  - **Context Manager**: Manages trace context and session tracking
  - **Policy Engine**: Handles policy evaluation and enforcement
  - **Token Tracker**: Monitors token usage across providers
  - **Patch Manager**: Manages LLM provider SDK instrumentation
  - **Tracing Manager**: Handles OpenTelemetry integration



  - ✅ Core Framework
  - ✅ OpenAI Integration
  - ✅ Basic Policy Engine
  - ✅ Token Tracking
  - ✅ OpenTelemetry Integration
  - 🚧 Additional Provider Support
  - 🚧 Advanced Policy Features
  - 🚧 UI Components



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


pkgId: e9604e06ef3318999b9238a657a601ecc7cd8050d81e7371571787757c43ac5e
name: python-obx-help
arch: noarch
version: 33
epoch: 0
release: 1
summary: Development documents and examples for obx
url: https://pypi.org/project/obx/
rpm_license: Public Domain
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-obx-33-1.src.rpm
location_href: Packages/python-obx-help-33-1.noarch.rpm
checksum_type: sha256
description:
  **NAME**


  ``OBX`` - a clean namespace.


  **SYNOPSIS**

  ::

      >>> from obx import *
      >>> o = Object()
      >>> o.a = "b"
      >>> str(loads(dumps(o)))
      "{'a': 'b'}"


  **DESCRIPTION**


  ``OBX`` contains all the python3 code to program objects in a functional
  way. It provides a base Object class that has only dunder methods, all
  methods are factored out into functions with the objects as the first
  argument. It is called Object Programming (OP), OOP without the
  oriented.

  ``OBX`` allows for easy json save//load to/from disk of objects. It
  provides an "clean namespace" Object class that only has dunder
  methods, so the namespace is not cluttered with method names. This
  makes storing and reading to/from json possible.


  **INSTALL**

  ::

      $ pipx install obx
      $ pipx ensurepath


  **SOURCE**

  source is at https://github.com/bthate/obx


  **AUTHOR**

  Bart Thate <bthate@dds.nl>


  **COPYRIGHT**

  ``OBX`` is Public Domain.


pkgId: 816b3012c6298f13151af9114a047bdc20394f1b9a84c2734985532540125f8b
name: python-ocatari-help
arch: noarch
version: 2.0.0
epoch: 0
release: 1
summary: Development documents and examples for ocatari
url: https://github.com/k4ntz/OC_Atari
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ocatari-2.0.0-1.src.rpm
location_href: Packages/python-ocatari-help-2.0.0-1.noarch.rpm
checksum_type: sha256
description:
  Instructions to help users get started with OCAtari.

  List any software, tools, or dependencies needed to run the project.
  For the complete list, see requirements.txt

  We are currently supporting versions > 3.9

  ```sh
  pip install "gymnasium[atari, accept-rom-license]"
  ```

  You can install OCAtari in multiple ways. The recommended way is to use the provided Dockerfile to install all requirements, such as the Atari ROMs and Gymnasium.
  Alternatively, you can install with pip:
  ```sh

  pip install ocatari
  ```
  If you want the current state, please clone the repository and use:
  ```sh
  pip install -e .
  ```
  To modify the code, you can clone/fork this repo and run:
  ```sh

  git clone https://github.com/k4ntz/OC_Atari.git

  cd ocatari

  python setup.py develop
  ```

  To use the OCAtari environments:
  ```python
  from ocatari.core import OCAtari
  import random
  env = OCAtari("ALE/Pong-v5", mode="ram", hud=True, render_mode="rgb_array")
  observation, info = env.reset()
  action = random.randint(0, env.nb_actions-1)
  obs, reward, terminated, truncated, info = env.step(action)


pkgId: 13eb2afb8c1787bf8482651cf86acd6fce88aa32f737c23e66886e4d3e341f4b
name: python-ocdsextensionregistry-help
arch: noarch
version: 0.6.0
epoch: 0
release: 1
summary: Development documents and examples for ocdsextensionregistry
url: https://github.com/open-contracting/extension_registry.py
rpm_license: BSD
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ocdsextensionregistry-0.6.0-1.src.rpm
location_href: Packages/python-ocdsextensionregistry-help-0.6.0-1.noarch.rpm
checksum_type: sha256
description:
  |PyPI Version| |Build Status| |Coverage Status| |Python Version|

  This Python package eases access to information about extensions in the `Open Contracting Data Standard <https://standard.open-contracting.org>`__'s `extension registry <https://github.com/open-contracting/extension_registry>`__.

  It includes Python classes for programmatic access, as well as a suite of command-line tools which can:

  * download any versions of extensions
  * generate POT files (message catalogs) from extension files, as part of a translation worlflow
  * generate a data file in JSON format, that provides all the information about versions of extensions

  The basic package includes only the Python classes for programmatic access:

  .. code-block:: bash

      pip install ocdsextensionregistry

  To install the command-line tools, `follow these instructions <https://ocdsextensionregistry.readthedocs.io/en/latest/cli.html>`__.

  If you are viewing this on GitHub or PyPI, open the `full documentation <https://ocdsextensionregistry.readthedocs.io/>`__ for additional details.

  .. |PyPI Version| image:: https://img.shields.io/pypi/v/ocdsextensionregistry.svg
     :target: https://pypi.org/project/ocdsextensionregistry/
  .. |Build Status| image:: https://github.com/open-contracting/extension_registry.py/actions/workflows/ci.yml/badge.svg
     :target: https://github.com/open-contracting/extension_registry.py/actions/workflows/ci.yml
  .. |Coverage Status| image:: https://coveralls.io/repos/github/open-contracting/extension_registry.py/badge.svg?branch=main
     :target: https://coveralls.io/github/open-contracting/extension_registry.py?branch=main
  .. |Python Version| image:: https://img.shields.io/pypi/pyversions/ocdsextensionregistry.svg
     :target: https://pypi.org/project/ocdsextensionregistry/


pkgId: b852d0c2e0f9b52190b314a54775a4525c909b0855dd98639446b2f919200470
name: python-ocdskit-help
arch: noarch
version: 1.3.0
epoch: 0
release: 1
summary: Development documents and examples for ocdskit
url: https://github.com/open-contracting/ocdskit
rpm_license: BSD
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ocdskit-1.3.0-1.src.rpm
location_href: Packages/python-ocdskit-help-1.3.0-1.noarch.rpm
checksum_type: sha256
description:
  |PyPI Version| |Build Status| |Coverage Status| |Python Version|

  A suite of command-line tools for working with OCDS data to:

  * create compiled releases, versioned releases and record packages
  * upgrade from an old version of OCDS to a new version
  * detect the format of an OCDS file
  * wrap releases in a release package, or records in a record package
  * combine small packages into large packages
  * split large packages into small packages
  * generate a spreadsheet version of a JSON schema

  .. tip::

     Want to `download OCDS data <https://data.open-contracting.org/>`__? Use the `OCP Data Registry <https://data.open-contracting.org/>`__.

  If you are viewing this on GitHub or PyPI, open the `full documentation <https://ocdskit.readthedocs.io/>`__ for additional details.

  .. |PyPI Version| image:: https://img.shields.io/pypi/v/ocdskit.svg
     :target: https://pypi.org/project/ocdskit/
  .. |Build Status| image:: https://github.com/open-contracting/ocdskit/actions/workflows/ci.yml/badge.svg
     :target: https://github.com/open-contracting/ocdskit/actions/workflows/ci.yml
  .. |Coverage Status| image:: https://coveralls.io/repos/github/open-contracting/ocdskit/badge.svg?branch=main
     :target: https://coveralls.io/github/open-contracting/ocdskit?branch=main
  .. |Python Version| image:: https://img.shields.io/pypi/pyversions/ocdskit.svg
     :target: https://pypi.org/project/ocdskit/


pkgId: 95edff0ced7a69ef34cc97b7ef846b4372eeed9624590921d8514cd9e7e4b750
name: python-ocf-data-sampler-help
arch: noarch
version: 0.0.32
epoch: 0
release: 1
summary: Development documents and examples for ocf-data-sampler
url: https://pypi.org/project/ocf-data-sampler/
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ocf-data-sampler-0.0.32-1.src.rpm
location_href: Packages/python-ocf-data-sampler-help-0.0.32-1.noarch.rpm
checksum_type: sha256
description:
  *Part of the [Open Climate Fix](https://github.com/orgs/openclimatefix/people) community.*
  [![OCF Logo](https://cdn.prod.website-files.com/62d92550f6774db58d441cca/6324a2038936ecda71599a8b_OCF_Logo_black_trans.png)](https://openclimatefix.org)

rpm_license:
  MIT License  Copyright (c) 2023 Open Climate Fix  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: 8ab29ccce9cce3b6723ed7a3eeb018dbcf9cebb86fb42138ef3e66e9df4967a0
name: python-ocfl-rehydration-help
arch: noarch
version: 1.1.1
epoch: 0
release: 1
summary: Development documents and examples for ocfl-rehydration
url: https://github.com/harvard-lts/ocfl_rehydration
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ocfl-rehydration-1.1.1-1.src.rpm
location_href: Packages/python-ocfl-rehydration-help-1.1.1-1.noarch.rpm
checksum_type: sha256
description:
  OCFL Rehydration reconstitutes DRS objects from their OCFL representation

  This tool has no dependencies on any external services such as the DRS database or storage.
  The expectation is that the OCFL object root directory for a DRS object exists on local disk.
  This tool takes as input the location of the OCFL object root directory and recreates the a representation of the DRS object in a form similar to what the depositor initially supplied in the DRS batch for ingest.
  Specifically, the resultant object is created in a directory named after the supplied object name;
  the data files are created with their supplied file names within directories named with their supplied names.


  The tool is a python command-line application that is designed to be run within a Docker container.
  To build the Docker image:
  ```
  docker build -t rehydrate:latest .
  ```

  To run the application after a Docker image has been built as detailed above:
  ```
  docker run --rm --mount type=bind,source=${PWD},target=/tmp -it rehydrate -h

  usage: main.py [-h] -i INPUT_DIR -o OUTPUT_DIR

  Converts the OCFL form of a DRS Object and reconstitutes (rehydrates) a form expected by curators. The input is the OCFL
  object root directory of object to rehydrate.

  options:
    -h, --help            show this help message and exit
    -i INPUT_DIR, --input_dir INPUT_DIR
                          Local directory containing the OCFL Object root of the object to rehydrate
    -o OUTPUT_DIR, --output_dir OUTPUT_DIR
                          Local directory where rehydrated object will be written
  ```


  The directory '102559752' is the OCFL object root directory for a DRS object.
  OCFL object root directories contain the top-level 'inventory.json', the object version namaste file (e.g. '0=ocfl_object_1.0') and OCFL version directories.
  ```
  docker run --rm --mount type=bind,source=${PWD},target=/tmp -it rehydrate -i /tmp/input/102559752 -o /tmp/output
  ```

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


pkgId: 00b097e4379448cff118fb483f95c8a017971378a4994888a9bc8188f684835c
name: python-ocnn-help
arch: noarch
version: 2.2.6
epoch: 0
release: 1
summary: Development documents and examples for ocnn
url: https://github.com/octree-nn/ocnn-pytorch
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ocnn-2.2.6-1.src.rpm
location_href: Packages/python-ocnn-help-2.2.6-1.noarch.rpm
checksum_type: sha256
description:
  **[Documentation](https://ocnn-pytorch.readthedocs.io)**

  [![Documentation Status](https://readthedocs.org/projects/ocnn-pytorch/badge/?version=latest)](https://ocnn-pytorch.readthedocs.io/en/latest/?badge=latest)
  [![Downloads](https://static.pepy.tech/badge/ocnn)](https://pepy.tech/project/ocnn)
  [![Downloads](https://static.pepy.tech/badge/ocnn/month)](https://pepy.tech/project/ocnn)
  [![PyPI](https://img.shields.io/pypi/v/ocnn)](https://pypi.org/project/ocnn/)

  This repository contains the **pure PyTorch**-based implementation of
  [O-CNN](https://wang-ps.github.io/O-CNN.html). The code has been tested with
  `Pytorch>=1.6.0`, and `Pytorch>=1.9.0` is preferred. The *original*
  implementation of O-CNN is based on C++ and CUDA and can be found
  [here](https://github.com/Microsoft/O-CNN), which has received
  [![stars - O-CNN](https://img.shields.io/github/stars/microsoft/O-CNN?style=social)](https://github.com/microsoft/O-CNN) and
  [![forks - O-CNN](https://img.shields.io/github/forks/microsoft/O-CNN?style=social)](https://github.com/microsoft/O-CNN).


  O-CNN is an octree-based 3D convolutional neural network framework for 3D data.
  O-CNN constrains the CNN storage and computation into non-empty sparse voxels
  for efficiency and uses the `octree` data structure to organize and index these
  sparse voxels. Currently, this type of 3D convolution is known as Sparse
  Convolution in the research community.


  The concept of Sparse Convolution in O-CNN is the same with
  [SparseConvNet](https://openaccess.thecvf.com/content_cvpr_2018/papers/Graham_3D_Semantic_Segmentation_CVPR_2018_paper.pdf),
  [MinkowskiNet](https://github.com/NVIDIA/MinkowskiEngine), and
  [SpConv](https://github.com/traveller59/spconv).
  The key difference is that our O-CNN uses `octrees` to index the sparse voxels,
  while these works use `Hash Tables`. However, I believe that `octrees` may be
  the right choice for Sparse Convolution. With `octrees`, I can implement the
  Sparse Convolution with pure PyTorch. More importantly, with `octrees`, I can
  also build efficient transformers for 3D data --
  [OctFormer](https://github.com/octree-nn/octformer), which is extremely hard
  with `Hash Tables`.


  Our O-CNN is published in SIGGRAPH 2017, SparseConvNet is published in CVPR
  2018, and MinkowskiNet is published in CVPR 2019. Actually, our O-CNN was
  submitted to SIGGRAPH in the end of 2016 and was officially accepted in March,
  2017. <!-- The camera-ready version of our O-CNN was submitted to SIGGRAPH in April, 2018. -->
  We just did not post our paper on Arxiv during the review process of SIGGRAPH.
  Therefore, **the idea of constraining CNN computation into sparse non-emtpry
  voxels, i.e. Sparse Convolution,  is first proposed by our O-CNN**.




  - **Simplicity**. The ocnn-pytorch is based on pure PyTorch, it is portable and
    can be installed with a simple command:`pip install ocnn`. Other sparse
    convolution frameworks heavily rely on C++ and CUDA, and it is complicated to
    configure the compiling environment.

  - **Efficiency**. The ocnn-pytorch is very efficient compared with other sparse
    convolution frameworks.  It only takes 18 hours to train the network on
    ScanNet for 600 epochs with 4 V100 GPUs. For reference, under the same
    training settings, MinkowskiNet 0.4.3 takes 60 hours and MinkowskiNet 0.5.4
    takes 30 hours.



    ```bibtex
    @article {Wang-2017-ocnn,
      title    = {{O-CNN}: Octree-based Convolutional Neural Networksfor {3D} Shape Analysis},
      author   = {Wang, Peng-Shuai and Liu, Yang and Guo, Yu-Xiao and Sun, Chun-Yu and Tong, Xin},
      journal  = {ACM Transactions on Graphics (SIGGRAPH)},
      volume   = {36},
      number   = {4},
      year     = {2017},
    }
    ```


pkgId: cdb31f1f399016ab4dadfa6d6c22e64d7801ffef07399828c0a47c08a70c1a98
name: python-ocpiupdate-help
arch: noarch
version: 0.4.0
epoch: 0
release: 1
summary: Development documents and examples for ocpiupdate
url: https://pypi.org/project/ocpiupdate/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ocpiupdate-0.4.0-1.src.rpm
location_href: Packages/python-ocpiupdate-help-0.4.0-1.noarch.rpm
checksum_type: sha256
description:
  `ocpiupdate` updates OpenCPI Projects to use style associated with newer
  versions of OpenCPI.

  For example:

  - Using `<worker>-<model>.xml` for the Worker Description files, instead of
    `<worker>.xml`.
  - Using `<component>.comp/<component>-comp.xml` for Component Specification
    files instead of `specs/<component>[-_]spec.xml`.
  - Using `xml` files instead of `Makefile`s.



  This library requires Python 3.11 or newer. This means it doesn't support the
  default system `python3` install on Ubuntu 20.04 or Ubuntu 22.04.

  If you use a system with Python 3.10 or older, you need to either:

  - Install a newer `python3` just for this library.
      - I'd recommend using a tool like [`uv`](https://docs.astral.sh/uv).
  - Download and run the containerised version.





  You can install the latest release from [PyPi](https://pypi.org/project/ocpiupdate):

  ```bash
  pip install ocpiupdate
  ```

  Or, you can install this repository directly:

  ```bash

  pip install git+https://gitlab.com/dawalters/ocpiupdate


  pip install git+https://gitlab.com/dawalters/ocpiupdate@v0.4.0
  ```



  The [`containers`](https://gitlab.com/dawalters/ocpiupdate/-/tree/develop/containers)
  directory contains a variety of containers, relying only on a local
  installation of `docker` or `podman`.

  You can download a built container from the
  [Gitlab Container Registry](https://gitlab.com/dawalters/ocpiupdate/container_registry)

  Usage example:

  ```bash
  project_directory=/path/to/project/root

  container_name=ocpiupdate:v0.4.0

  additional_arguments="--dry-run --verbose"


  docker run \
      --volume "$project_directory":/tmp \
      --workdir /tmp \
      "$container_name" \
      "$additional_arguments"
  ```

  See [`containers/scripts/ocpiupdate.sh`](https://gitlab.com/dawalters/ocpiupdate/-/tree/develop/containers/scripts/ocpiupdate.sh)
  for a more complex example.



  You can download source releases from the
  [Gitlab Releases page](https://gitlab.com/dawalters/ocpiupdate/-/releases).



  Until documentation becomes available, you can follow the release posts
  available on
  [the OpenCPI forum](https://opencpi.dev/t/script-to-automate-updating-aspects-of-older-opencpi-projects).

  This includes examples of usage, and discussion of how to write configuration
  files.



  This repository has no affiliation with OpenCPI.

  The maintainer doesn't maintain OpenCPI.


pkgId: 6c4f06c411aa5348e8161b27f632785d44a879d2c910a529d982297571f2d6f5
name: python-ocpsvg-help
arch: noarch
version: 0.3.3
epoch: 0
release: 1
summary: Development documents and examples for ocpsvg
url: https://pypi.org/project/ocpsvg/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ocpsvg-0.3.3-1.src.rpm
location_href: Packages/python-ocpsvg-help-0.3.3-1.noarch.rpm
checksum_type: sha256
description:
  - works at the [`OCP`](https://github.com/CadQuery/OCP) level
  - uses [`svgelements`](https://github.com/meerk40t/svgelements) to:
    - convert SVG path strings to and from `TopoDS_Edge`, `TopoDS_Wire`, and `TopoDS_Face` objects
    - import `TopoDS_Wire` and `TopoDS_Face` objects from an SVG document
  - can be used to add SVG functionality (import and export) to higher level API


pkgId: f79d79eded5960037413fb2c7f42c755611f3881bbb5ee69fe6db9f586cb6856
name: python-ocsf-validator-help
arch: noarch
version: 0.2.3
epoch: 0
release: 1
summary: Development documents and examples for ocsf-validator
url: https://pypi.org/project/ocsf-validator/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-ocsf-validator-0.2.3-1.src.rpm
location_href: Packages/python-ocsf-validator-help-0.2.3-1.noarch.rpm
checksum_type: sha256
description:
  A utility to validate contributions to the [OCSF
  schema](https://github.com/ocsf/ocsf-schema), intended to prevent human error
  when contributing to the schema in order to keep the schema machine-readable.

  OCSF provides several include mechanisms to facilitate reuse, but this means
  individual schema files may be incomplete. This complicates using off-the-shelf
  schema definition tools for validation.

  [Query](https://www.query.ai) is a federated search solution that normalizes
  disparate security data to OCSF. This validator is adapted from active code and
  documentation generation tools written by the Query team.





   - python >3.11
   - pip
   - A copy of the [OCSF schema](https://github.com/ocsf/ocsf-schema)



  You can install the validator with `pip`:

  ```
  $ pip install ocsf-validator
  ```



  You can run the validator against your working copy of the schema to identify problems before submitting a PR. Invoke the validator using `python` and provide it with the path to the root of your working copy.

  Examples:
  ```
  $ python -m ocsf_validator .
  $ python -m ocsf_validator ../ocsf-schema
  ```




  The validator performs the following tests on a copy of the schema:

   - The schema is readable and all JSON is valid. [FATAL]
   - The directory structure meets expectations. [WARNING]
   - The targets in `$include`, `profiles`, and `extends` directives can be found. [ERROR]
   - All required attributes in schema definition files are present. [WARNING]
   - There are no unrecognized attributes in schema definition files. [WARNING]
   - All attributes in the attribute dictionary are used. [WARNING]
   - There are no name collisions within a record type. [WARNING]
   - All attributes are defined in the attribute dictionary. [WARNING]

  If any ERROR or FATAL tests fail, the validator exits with a non-zero exit code.




  The OCSF metaschema is represented as record types by filepath, achieved as follows:

   1. Record types are represented using Python's type system by defining them as Python `TypedDict`s in `types.py`. This allows the validator to take advantage of Python's reflection capabilities.
   2. Files and record types are associated by pattern matching the file paths. These patterns are named in `matchers.py` to allow mistakes to be caught by a type checker.
   3. Types are mapped to filepath patterns in `type_mapping.py`.

  The contents of the OCSF schema to be validated are primarily represented as a `Reader` defined in `reader.py`. `Reader`s load the schema definitions to be validated from a source (usually from a filesystem) and contain them without judgement. The `process_includes` function and other contents of `processor.py` mutate the contents of a `Reader` by applying OCSF's various include mechanisms.

  Validators are defined in `validators.py` and test the schema contents for various problematic conditions. Validators should pass `Exception`s to a special error `Collector` defined in `errors.py`. This module also defines a number of custom exception types that represent problematic schema states. The `Collector` raises errors by default, but can also hold them until they're aggregated by a larger validation process (e.g., the `ValidationRunner`).

  The `ValidationRunner` combines all of the building blocks above to read a proposed schema from a filesystem, validate the schema, and provide useful output and a non-zero exit code if any errors were encountered.




  After checking out, you'll want to install dependencies:
  ```
  poetry install
  ```

  Before committing, run the formatters and tests:
  ```
  poetry run isort .
  poetry run black .
  poetry run pyright
  poetry run pytest
  ```

  If you're adding a validator, do the following:
   - Write your `validate_` function in `validate.py` to apply a function to the relevant keys in a reader that will run your desired validation. See `validators.py` for examples.
   - Add any custom errors in `errors.py`.
   - Create an option to change its severity level in `ValidatorOptions` and map it in the constructor of `ValidationRunner` in `runner.py`.
   - Invoke the new validator in `ValidationRunner.validate`.


pkgId: 32039dcf4b26a345c5656dd100a94d9391579408f5759eca60852d7eb6d0c2c5
name: python-octue-help
arch: noarch
version: 0.61.0
epoch: 0
release: 1
summary: Development documents and examples for octue
url: https://www.github.com/octue/octue-sdk-python
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-octue-0.61.0-1.src.rpm
location_href: Packages/python-octue-help-0.61.0-1.noarch.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/octue.svg)](https://badge.fury.io/py/octue)
  [![Release](https://github.com/octue/octue-sdk-python/actions/workflows/release.yml/badge.svg)](https://github.com/octue/octue-sdk-python/actions/workflows/release.yml)
  [![codecov](https://codecov.io/gh/octue/octue-sdk-python/branch/main/graph/badge.svg?token=4KdR7fmwcT)](https://codecov.io/gh/octue/octue-sdk-python)
  [![Documentation Status](https://readthedocs.org/projects/octue-python-sdk/badge/?version=latest)](https://octue-python-sdk.readthedocs.io/en/latest/?badge=latest)
  [![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/ambv/black)
  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.10961975.svg)](https://doi.org/10.5281/zenodo.10961975)



  The python SDK for running [Octue](https://octue.com) data services, digital twins, and applications - get faster data
  groundwork so you have more time for the science!

  Read the docs [here.](https://octue-python-sdk.readthedocs.io/en/latest/)

  Uses our [twined](https://twined.readthedocs.io/en/latest/) library for data validation.



  To install, run one of:

  ```shell
  pip install octue
  ```

  ```shell
  poetry add octue
  ```

  The command line interface (CLI) can then be accessed via:

  ```shell
  octue --help
  ```

  ```text
  Usage: octue [OPTIONS] COMMAND [ARGS]...

    The CLI for the Octue SDK. Use it to start an Octue data service or digital
    twin locally or run an analysis on one locally.

    Read more in the docs: https://octue-python-sdk.readthedocs.io/en/latest/

  Options:
    --id UUID                       UUID of the analysis being undertaken. None
                                    (for local use) will cause a unique ID to be
                                    generated.
    --logger-uri TEXT               Stream logs to a websocket at the given URI.
    --log-level [debug|info|warning|error]
                                    Log level used for the analysis.  [default:
                                    info]
    --force-reset / --no-force-reset
                                    Forces a reset of analysis cache and outputs
                                    [For future use, currently not implemented]
                                    [default: force-reset]
    --version                       Show the version and exit.
    -h, --help                      Show this message and exit.

  Commands:
    deploy  Deploy a python app to the cloud as an Octue service or digital...
    run     Run an analysis on the given input data using an Octue service...
    start   Start an Octue service or digital twin locally as a child so it...
  ```



  When code is deprecated, it will still work but a deprecation warning will be issued with a suggestion on how to update
  it. After an adjustment period, deprecations will be removed from the codebase according to the [code removal schedule](https://github.com/octue/octue-sdk-python/issues/415).
  This constitutes a breaking change.





  We use [Poetry](https://python-poetry.org/) as our package manager. For development, run the following from the
  repository root, which will editably install the package:

  ```shell
  poetry install --all-extras
  ```

  Then run the tests to check everything's working.



  These environment variables need to be set to run the tests:

  - `GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/service/account/file.json`
  - `TEST_PROJECT_NAME=<name-of-google-cloud-project-to-run-pub-sub-tests-on>`

  Then, from the repository root, run

  ```shell
  python3 -m unittest
  ```

  or

  ```shell
  tox
  ```



  Take a look at our [contributing](/docs/contributing.md) page.


pkgId: b2cbff4ecf0c5573df1b3abe3873a3c53127b6d3c194db0d20241722180ec083
name: python-odfdo-help
arch: noarch
version: 3.13.1
epoch: 0
release: 1
summary: Development documents and examples for odfdo
url: https://github.com/jdum/odfdo
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-odfdo-3.13.1-1.src.rpm
location_href: Packages/python-odfdo-help-3.13.1-1.noarch.rpm
checksum_type: sha256
description:
  [![Release](https://img.shields.io/github/v/release/jdum/odfdo)](https://img.shields.io/github/v/release/jdum/odfdo)
  [![Build Status](https://img.shields.io/github/actions/workflow/status/jdum/odfdo/main.yml?branch=devel)](https://img.shields.io/github/actions/workflow/status/jdum/odfdo/main.yml?branch%3Adevel)
  [![License](https://img.shields.io/github/license/jdum/odfdo)](https://img.shields.io/github/license/jdum/odfdo)
  [![PyPI Downloads](https://static.pepy.tech/badge/odfdo/month)](https://pepy.tech/projects/odfdo)

  Python library for OpenDocument format (ODF)

  ![logo](https://raw.githubusercontent.com/jdum/odfdo/master/odfdo.png)

  `odfdo` is a Python3 library implementing the ISO/IEC 26300 OpenDocument Format
  standard.

  Project:
  https://github.com/jdum/odfdo

  Author:
  jerome.dumonteil@gmail.com

  License:
  Apache License, Version 2.0

  `odfdo` is a derivative work of the former `lpod-python` project.



  Installation from Pypi (recommended):

  ```python
  pip install odfdo
  ```

  Installation from sources (requiring setuptools):

  ```python
  pip install .
  ```

  After installation from sources, you can check everything is working (some requirements: `pytest`, Pillow, ...):

  ```python
  pytest
  ```

  The tests should run for a few seconds or minutes and issue no error.

  The full test suite uses `tox` to check different `Python` and `lxml` versions.

  A special effort is made to limit the dependencies of this library: the only dependency (outside development) is `lxml`. The `lxml` versions depend mainly on the version of Python used, see the `pyproject.toml` file for details.



      from odfdo import Document, Paragraph

      doc = Document('text')
      doc.body.append(Paragraph("Hello world!"))
      doc.save("hello.odt")



  'Intended Audience :: Developers'



  There is no detailed documentation or tutorial, but:

  -   the `recipes` folder contains more than 60 working sample scripts,
  -   the `doc` folder contains an auto generated HTML documentation, including recipes.

  When installing odfdo, a few scripts are installed:

  -   `odfdo-diff`: show a _diff_ between two .odt document.
  -   `odfdo-folder`: convert standard ODF file to folder and files, and reverse.
  -   `odfdo-show`: dump text from an ODF file to the standard output, and optionally styles and meta informations.
  -   `odfdo-styles`: command line interface tool to manipulate styles of ODF files.
  -   `odfdo-replace`: find a pattern (regex) in an ODF file and replace by some string.
  -   `odfdo-userfield`: show or set the user-field content in an ODF file.
  -   `odfdo-highlight`: highlight the text matching a pattern (regex) in an ODF file.
  -   `odfdo-headers`: print the headers of an ODF file.
  -   `odfdo-table-shrink`: shrink tables to optimize width and height.
  -   `odfdo-markdown`: export text document in Markdown format to stdout.

  About styles: the best way to apply style is by merging styles from a template
  document into your generated document (See `odfdo-styles` script).
  Styles are a complex matter in ODF, so trying to generate styles programmatically
  is not recommended.



  `odfdo` is intended to facilitate the generation of ODF documents,
  nevertheless a basic knowledge of the ODF format is necessary.

  ODF document rendering can vary greatly from software to software. Especially the
  "styles" of the document allow an adaptation of the rendering for a particular
  software.

  The best (only ?) way to apply style is by merging styles from a template
  document into your generated document. However a few recipes show how to make
  programmatically some basic styles: `create_basic_text_styles`, `add_text_span_styles`).



  I you work on `.ods` files (spreadsheet), you may be interested by these scripts using
  this library to parse/generate `.ods` files:
  `https://github.com/jdum/odsgenerator` and `https://github.com/jdum/odsparsator`



  `lpod-python` was written in 2009-2010 as a Python 2.x library,
  see: `https://github.com/lpod/lpod-python`

  `odfdo` is an adaptation of this former project. `odfdo` main changes from `lpod`:

  -   `odfdo` requires Python version 3.9 to 3.13. For previous Python versions see older releases.
  -   API change: more pythonic.
  -   include recipes.
  -   use Apache 2.0 license.


pkgId: 7e20e1687746e8bf884aa1c7d65579d1e9b7abfb181146ededce119b2f9d6a6c
name: python-odoo-configurator-help
arch: noarch
version: 3.6.6
epoch: 0
release: 1
summary: Development documents and examples for odoo-configurator
url: https://github.com/ScalizerOrg/odoo-configurator
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-odoo-configurator-3.6.6-1.src.rpm
location_href: Packages/python-odoo-configurator-help-3.6.6-1.noarch.rpm
checksum_type: sha256
description:
  Odoo Configurator simplifies and automates the configuration of Odoo using YAML files.
  It allows you to update the database, install/update/uninstall modules, configure settings,
  manage users, and perform various data manipulation operations.
  It is an essential tool for Odoo administrators looking to streamline their configuration workflow.

      pip install odoo-configurator

      odoo-configurator ./work_dir/project_name.local.yml
  To run a configuration from the source code:
      /odoo-configurator/start_config.py ./work_dir/project_name.local.yml
  Provided file must contain the auth/odoo section to set connexion parameters.

  ```yml
      name: project_name local
      version: 16.0
      inherits:
          - ../work_dir/project_name/project_name.yml
      auth:
          odoo:
              url: http://project_name.localhost
              dbname: project_name
              username: admin
              password: admin123
  ```
  The`version` parameter is required for odoo versions >= 15.0
  It's also possible to provide auth for other odoo servers, these connections can be used in python script files and specific imports.
  ```yml
      auth:
        odoo:
          url: http://project_name.localhost
          dbname: project_name
          username: admin
          password: admin
          version: 16.0
        odoo_base_v8:
          url: http://old.odoo.localhost
          dbname: project_name_v8
          username: admin
          password: admin
          version: 8.0
        odoo_base_v17:
          url: http://next.odoo.localhost
          dbname: project_name_v17
          username: admin
          password: admin
          version: 17.0
  ```

  Inherits param provide a list of configuration files witch content is merged before execution.
  ```yml
      inherits:
          - ../work_dir/project_name/sales.yml
          - ../work_dir/project_name/account.yml
   ```

  Script Files param provide a list of configuration files witch content will be executed sequentially.
  ```yml
      script_files:
          - ../work_dir/project_name/script1.yml
          - ../work_dir/project_name/script2.yml
  ```

  **Install Mode**: To import datas with the value **on_install_only: True** add the "--install" parameter in command
  line:
      ./start_config.py ./clients/name/name.local.yml --install

  Some parameters can be provided by environment variable.
  Use ODOO_URL, ODOO_DB, ODOO_USER and ODOO_PASSWORD instead of using auth/odoo params in config file
  Use KEEPASS_PASSWORD instead of --keepass command line parameter

  To prepare a configuration or add a fix use "pre_update", the given scripts will be executed before the normal configuration.
  ```yml
      pre_update:
          - ../exemple/exemple.pre_update_script.yml
  ```

  To install modules use "modules"
  ```yml
      base:
        modules:
          - example_module
  ```
  To update modules use "updates"
  ```yml
      base:
        updates:
          - example_module
  ```
  To uninstall modules use "uninstall_modules"
  ```yml
      base:
        uninstall_modules:
          - example_module
  ```

  to set the value of a setting (res.config.settings)
  ```yml
      settings:
        config:
          group_use_lead: True
  ```
  For a specific company configuration use the `company_id` parameter:
  ```yml
      settings main_company:
        config:
          company_id: get_ref("base.main_company")
          chart_template_id: get_ref("l10n_fr.l10n_fr_pcg_chart_template")
          context: { 'lang': 'fr_FR' }
  ```
  A context can be passed to the config command.

  to set the value of a system parameter (ir.config_parameter)
  ```yml
  Company System Parameters:
    system_parameter:
      Mail Default From Filter:
        key: mail.default.from_filter
        value: my-company.com
    ```

  If the record with the xml id provided with force_id don't exist, the record will be created.
  ```yml
      Records to create:
          datas:
              My record 1:
                  model: res.partner
                  force_id: external_config.partner_1
                  values:
                      name: Partner 1
                      ref: PARTNER1
              My record 2:
                  model: res.user
                  force_id: base.user_admin
                  values:
                      name: Admin User
  ```

  Using load parameter will speed up creation and update of record compared to single record update.
  ```yml
      Records to load:
          load: True
          model: res.partner
          datas:
              My record 1:
                  force_id: external_config.record1
                  values:
                      name: Record 1
                      ref: REC1
              My record 2:
                  force_id: external_config.record2
                  values:
                      name: Record 2
                      ref: REC2
  ```

  To update values of multiple records, set a domain with "update_domain" :
  ```yml
      Update Example:
        model: res.partner
        update_domain: "[('email','=','example@test.com')]"
        values:
          name: Example
  ```

  All functions in OdooConnection starting by `get_` are callable from yml files.
   - get_ref
   - get_image_url
   - get_image_local
   - get_local_file
   - get_country
   - get_menu
   - get_search_id
   - get_xml_id_from_id
   - get_record
  These functions can be nested by using the o object:
  ```yml
  Ir model Data Config:
    datas:
      Add employee document xmlid:
        model: ir.model.data
        force_id: template_01_employee_01
        values:
          model: paper.paper
          module: external_config
          name: template_01_employee_01
          res_id: get_search_id('paper.paper', [
                  ('template_id', '=', o.get_ref('external_config.template_01')),
                  ('res_id', '=', o.get_ref('external_config.employee_01'))
                  ], 'desc')
  ```

  field_name_id/id : to provide a xmlid to many2one fields instead of a value, without using get_ref
  field_name_ids/id : to provide a list of xmlid to many2many fields
  field_name/json : to provide a list or dict to convert into json string

  To call a model function:
  ```yml
      001 Call Function:
        datas:
          Call Function:
            function: example_function
            model: res.parnter
            res_id: get_ref("base.partner_demo")
            params: ['param1', param2]
            kw: {'extra_param1': get_ref('external_config.extra_param1')}
  ```
  To call an action server (`ir.actions.server`):
  ```yml
      002 Call Action Server:
        datas:
          Call Action Server:
            action_server_id: get_ref("custom_module.action_exemple")
            model: res.parnter
            res_id: get_ref("base.partner_demo")
  ```

  To set groups on a user you can remove previous groups with "unlink all".
  ```yml
      users:
          Portal Users:
              User Example 1:
                  force_id: base.user_example
                  login: example@test.com
                  groups_id:
                      - unlink all
                      - base.group_portal
                  values:
                      name: Portal User Example 1
  ```

  - delete_all
  - delete_domain
  - delete_id
  - deactivate
  - activate
  - update_domain
    - search_value_xml_id
        - this option allows to pass an id from xml_id to a domain
        - Can be used with update_domain, activate, deactivate:
          ```yml
                        Deactivate Partner Title doctor:
                            model: res.partner.title
                            search_value_xml_id: base.res_partner_title_doctor
                            deactivate: "[('id', '=', 'search_value_xml_id')]"
          ```

  To set the translation of a translatable field, use the **languages** option.
  Example:
  ```yml
      Mail Templates:
          datas:
              Notification:
                  model: mail.template
                  force_id: mail.notification_template
                  languages:
                      - fr_FR
                      - en_US
                  values:
                      body_html: |
                          <table>
                              <tbody>
                              Text for french and english
                              </tbody>
                          </table>
  ```

  To set a Mattermost url and channel where to send notifications:
  ```yml
      mattermost_channel: my-channel
      mattermost_url: https://mattermost.xxx.com/hooks/dfh654fgh
  ```
  To avoid Mattermost notification, add in main yaml file:
  ```yml
      no_notification: True
  ```

  Keepass is a tool to store and protect passwords.
  Available functions to use stored values in Keepass:
  ```yml
      password: get_keepass_password('path/passwords.kdbx', 'Folder Name', 'Key Name')
      user: get_keepass_user('path/passwords.kdbx', 'Folder Name', 'Key Name')
      url: get_keepass_url('path/passwords.kdbx', 'Folder Name', 'Key Name')
  ```
  To avoid to repeat path and group in Keepass functions, you can set `keepass_path` and `keepass_group`
  ```yml
  keepass_path: path/passwords.kdbx
  keepass_group: Folder Name
  my_secret: get_keepass_password('Key Name')
  ```
  3 ways to pass the Keepass password to odoo-configurator :
   - Provide Keepass password with the keepass parameter in command line: `--keepass='mdp***'`
   - Set the `KEEPASS_PASSWORD` environment variable
   - Manually. If it's required odoo-configurator will ask to type the password with the prompt `Keepass Password:`
   In PyCharm, to type the Keepass password, please check the `Emulate terminal in output console` option in your run/debug configuration.

  Bitwarden is a tool to store and protect passwords. Make sure Bitwarden CLI is installed.
  Credentials to connect to Bitwarden Vault can be set by environment variables, please report to the [s6r-bitwarden-cli documentation](https://pypi.org/project/s6r-bitwarden-cli)
  An over option is to set the value of `bitwarden_username` and  `bitwarden_password` in yml file. Obviously, do not save password directly in your yml file, use Keepass functions for example.
  ```yml
  bitwarden_username: get_keepass_user('Bitwarden')
  bitwarden_password: get_keepass_password('Bitwarden')
  ```

  Columns in the CSV file must be the technical name of the field.
  A column "id" is required to allow update of datas.
  In yml file, use the **import_csv** entry in the **import_data** section:
  ```yml
      import_data:
          import_csv Product Template:
              on_install_only: True
              model: product.template
              name_create_enabled_fields: uom_id,uom_po_id,subscription_template_id
              file_path: ../datas/todoo/product.template.csv
              specific_import: base/import_specific.py
              specific_method: import_partner
              batch_size: 200
              skip_line: 1420
              limit: 100
              context: {'install_mode': True}
  ```

    - model
    - file_path

    - **name_create_enabled_fields** : List of the fields which are allowed to "Create the record if it doesn't exist"
    - **on_install_only** : Do the csv export only in **Install Mode**
    - **context** : Provide a specific context for imports
    - **specific_import** : Path to a specific Python file
    - **specific_method** : Import method to use form the file **specific_import**
    - **batch_size** : Number of records by load batch
    - **limit** : Maximum number of record to import
    - **skip_line** : index of the record to start with

  Use the **import_data** section:
  ```yml
  Import Scripts:
    import_data:
      Task Import 001:
        model: project.product
        file_path: scripts/products.csv
        specific_import: scripts/import_products.py
        specific_method: import_products
  ```
  scripts/import_products.py :
  ```python
  from odoo_configurator.import_manager import ImportManager
  def import_products(self, file_path, model, params):
      self.set_params(params)
      fields = self.get_model_fields(model)
      raw_datas = self.parse_csv_file_dictreader(file_path, fields)
      m_order = self.odoo.model('sale.order')
      orders = m_order.search([], context=self._context)
      self.logger.info('Orders : %s' % ','.join([o['name'] for o in orders]))
      company_ids_cache = self.odoo.get_id_ref_dict('res.company')
      company_xmlid_cache = self.odoo.get_xmlid_dict('res.company')
      products = self.odoo.search('product.template', [], context=self._context)
  ImportManager.import_products = import_products
  ```

  Use the **python_script** section:
  ```yml
  python_script:
    Data Transfer:
      file: scripts/transfer_script.py
      method: data_transfer
      params:
        param1: TEST
  ```
  It's possible to add connection to other odoo database by adding, for exemple, _odoo_base_v16_ in the **auth** section.
  _odoo_base_v16_ can be used easily in python scripts by referring to self.odoo_base_v16:
  ```yml
  auth:
    odoo:
      url: http://odoo_my_customer17.localhost
      dbname: my_customer17
      username: admin
      password: admin
      version: 17.0
    odoo_base_v16:
      url: http://odoo_my_customer16.localhost
      dbname: my_customer16
      username: admin
      password: admin
      version: 16.0
  ```
  scripts/transfer_script.py :
  ```python
  from src.odoo_configurator.import_manager import ImportManager
  def data_transfer(self, params=dict):
      
      analytic_lines = self.odoo.search("account.analytic.line", [], fields=['name', 'partner_id'])
      for analytic_line in analytic_lines:
          if analytic_line['partner_id']:
              partner_id = analytic_line['partner_id'][0]
              
              partner = self.odoo_base_v16.read('res.partner', [partner_id], fields=['name', 'email'])
              if partner:
                  self.logger.info('analytic_line %s partner %s' % (analytic_line['id'], partner[0]['name']))
  ImportManager.data_transfer = data_transfer
  ```

  Use the **sql_auth** section:
  ```yml
  sql_auth:
    sql_my_shop:
      db_type: postgresql
      url: localhost
      dbname: my_shop_prod
      username: admin
      password: get_keepass_password('My Shop Admin')
  ```

   * Postgresql (postgresql)
   * MS SQL Server (mssql)
   * MySQL (mysql)
  scripts/sql_transfer_script.py :
  ```python
  from src.odoo_configurator.import_manager import ImportManager
  def sql_transfer(self, params=dict):
      query = 'select name, email from res_partner'
      cr = self.sql_my_shop.execute(query)
      for partner_values in cr.fetchall():
              self.logger.info('Partner %s' % partner_values['name'])
  ImportManager.sql_transfer = sql_transfer
  ```

  'import_configurator_model_file' configuration will generate a res_partner.yml file in the **config** directory
  ```yml
  Actions:
      import_configurator_model_file:
          Portal Form:
              model: res.partner
              domain: [['is_company', '=', True]]  # Don't use parenthesis in the domain
              order_by: name, ref
              force_export_fields: ["email_formatted", "country_code"]
              excluded_fields: ["email", "country_id"]
              context: {'active_test': False}
  ```
  'import_configurator_module' configuration will generate a 'studio_customization' directory in the **config** directory, with a file for each model containing the records of the module.
  ```yml
   Actions:
      import_configurator_module:
          module: 'studio_customization'
  ```

  Some configurations need to be executed on every platform until the production release. After that we need to archive these configuration files.
  We will store the files in the directory *release_config* for example.
  To run all these files, add the **release_directory** parameter in your main configuration file:
  ```yml
      release_directory: ./release_config
  ```
  To back up the release files after the execution of the production configuration, add the **clear_release_directory** parameter in you production configuration file.
  ```yml
    clear_release_directory: True
  ```

  * David Halgand
  * Michel Perrocheau - [Github](https://github.com/myrrkel)

  This software was created by [Hodei](https://www.hodei.net) formerly Teclib' ERP,
  maintenance is now being handled by [Scalizer](https://www.scalizer.fr).
  <div style="text-align: center;">
  [![Scaliser](./logo_scalizer.png)](https://www.scalizer.fr)
  [![Hooei](./logo_hodei.jpg)](https://www.hodei.net)
  </div>

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


pkgId: 9577c420ab9e9cdef131a11d48fc88fc64698d4b94f2e5058d5d18d81373df64
name: python-odoo-driver-help
arch: noarch
version: 0.9.12
epoch: 0
release: 1
summary: Development documents and examples for odoo-driver
url: https://gitlab.com/grap-rhone-alpes/odoo-driver
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-odoo-driver-0.9.12-1.src.rpm
location_href: Packages/python-odoo-driver-help-0.9.12-1.noarch.rpm
checksum_type: sha256
description:
  ![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)
  ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/odoo-driver)
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/odoo-driver)
  ![GitLab last commit](https://img.shields.io/gitlab/last-commit/60778766)
  ![GitLab stars](https://img.shields.io/gitlab/stars/60778766?style=social)



  This tools is intented to be used with the Odoo Point of sale application. It replaces the Odoo [IoT Box](https://www.odoo.com/app/iot) or the
  Community [pywebdriver](https://github.com/pywebdriver/pywebdriver) library.

  Once installed locally in the cashier computer, devices will be discovered by the tool,
  once plugged, and communication can be done with the Odoo Point of Sale module.



  1. [Run](#run)
  2. [Usage](#usage)
  3. [Installation](#installation)
  4. [Related Odoo Modules](#related-odoo-modules)
  5. [Compatible Devices](#compatible-devices)
  6. [How to Contribute](#how-to-contribute)
  7. [Development](#development)
  7. [Roadmap and Known Issues](#roadmap-and-known-issues)
  8. [Credits](#credits)



  ```shell
  odoo-driver\
    --address 0.0.0.0\
    --port 8069\
    --secure\
    --refresh-devices-delay 1\
    --log-level INFO\
    --log-folder false\
    --options EXTRA_OPTIONS
  ```

  (The values displayed above are the default values.

  * ``-a / --address``: address where the web service will be available

  * ``-p / --port``: port where the web service will be available

  * ``--secure/--unsecure``: expose webservice with https
    (or http, if ``--unsecure`` is selected).

  * ``-r / --refresh-devices-delay``: interval in seconds
    between two checks of devices connected to usb ports.

  * ``-l / --log-level``: Possible values:
    ``TRACE`` / ``DEBUG`` / ``INFO`` / ``SUCCESS`` /
    ``WARNING`` / ``ERROR`` / ``CRITICAL``.
    Note:
    - ``TRACE`` will log all the http call.
    - ``DEBUG`` will log all the data received, including images received by the
      printer device.
    - Use ``INFO`` level or higher in production outside a debugging situation.

  * ``-f / --log-folder``: Optional directory that will contains logs.
    If defined, it should exist and be writable.

  * ``--options``: Json formatted data to pass to devices. Ex:
    ``'{"scale": {"polynomial": 123456}}'``
    That will pass the polynomial value to the scale device.
    Note: don't forget the simple quote at the beginning and the end of the
    dictionnary.



  Go the home page of the tool, via https://localhost:8069.

  If you choose https deployment, you should accept the first time
  a security exception in your browser.

  ![security_exception](https://gitlab.com/grap-rhone-alpes/odoo-driver/-/raw/main/odoo_driver/static/readme/security_exception.png)


  Pages are available to test connections, see errors, etc.

  ![home_page](https://gitlab.com/grap-rhone-alpes/odoo-driver/-/raw/main/odoo_driver/static/readme/home_page.png)





  * install the latest released version:

  ```shell
  pipx install odoo-driver
  ```odoo

  * _or_ Install the latest version:

  ```shell
  pipx install git+https://gitlab.com/grap-rhone-alpes/odoo-driver.git
  ```

  Note: use ``--python python3.9`` (or higher) option, if your default python environment is under python 3.9 version.



  This will create a service (via systemd) that will execute odoo-driver in the background and launches at startup.

  ```shell
  wget https://gitlab.com/grap-rhone-alpes/odoo-driver/-/raw/main/debian_install.sh


  sudo sh debian_install.sh
  ```

  Once installed, you can run the following system command.

  ```shell

  sudo systemctl status odoo-driver.service


  sudo journalctl -fu odoo-driver.service
  ```



  Compatibility of the library with Odoo Modules, depending on the version.



  - Printer (+ Cashbox): ``point_of_sale`` (Odoo CE)

  - Display: [``pos_odoo_driver_display``](https://github.com/grap/odoo-addons-pos)

  - Payment: [``pos_odoo_driver_payment``](https://github.com/grap/odoo-addons-pos)

  - Scale: ``point_of_sale`` (Odoo CE)



  <table style="width: 100%;">
      <tbody>
          <tr>
              <th colspan="2"><h3>Printers</h3></th>
          </tr>
          <tr>
              <td>
                <li>
                  Epson - TM-T20II<br/>
                  Epson - TM-T20III<br/>
                  Epson - TM-T88V
                </li>
              </td>
              <td>
                <img src="https://gitlab.com/grap-rhone-alpes/odoo-driver/-/raw/main/odoo_driver/static/devices/printer__epson__tm_t20.png" width="200" height="200" />
              </td>
          </tr>
          <tr>
              <th colspan="2"><h3>Display</h3></th>
          </tr>
          <tr>
              <td>Aures - OCD 300</td>
              <td>
                <img src="https://gitlab.com/grap-rhone-alpes/odoo-driver/-/raw/main/odoo_driver/static/devices/display__aures__ocd_300.png" width="200" height="200" />
              </td>
          </tr>
          <tr>
              <th colspan="2"><h3>Payment Terminal</h3></th>
          </tr>
          <tr>
              <td>Ingenico - Move/5000</td>
              <td>
                <img src="https://gitlab.com/grap-rhone-alpes/odoo-driver/-/raw/main/odoo_driver/static/devices/payment__ingenico__move_5000.png" width="200" height="200" />
              </td>
          </tr>
          <tr>
              <th colspan="2"><h3>Scale</h3></th>
          </tr>
          <tr>
              <td>Mettler Toledo - Ariva S</td>
              <td>
                <img src="https://gitlab.com/grap-rhone-alpes/odoo-driver/-/raw/main/odoo_driver/static/devices/scale__mettler_toledo__ariva_s.png" width="200" height="200" />
              </td>
          </tr>
      </tbody>
  </table>





  * If the project is not translated into your language,
    you can propose a translation.

  * If you've encountered a problem or bug that you've solved,
    the patch will be very welcome !



  Please **do not propose** a Merge Request before opening first an issue on gitlab,
  if you want to add new feature, new devices, etc.

  Maintaining a driver library is an impossible task if you don't own the device.
  If the device or the feature you propose is not in the Roadmap of the GRAP company,
  it will be refused, to avoid rising technical debt.

  In that case, do not hesitate to fork the project, to implement your change
  in a dedicated branch.



  See the dedicated section [here](https://gitlab.com/grap-rhone-alpes/odoo-driver/-/blob/main/DEVELOP.md).



  See the dedicated section [here](https://gitlab.com/grap-rhone-alpes/odoo-driver/-/blob/main/ROADMAP.md).





  * GRAP <https://www.grap.coop>



  * Sylvain LE GAL <sylvain.legal@grap.coop>



  Part of the code in this project comes from the following projects, including:

    * [Pywebdriver](https://github.com/pywebdriver/pywebdriver) (AGPL-3.0), by GRAP. Main contributors are:

      * Sylvain LE GAL <sylvain.legal@grap.coop>
      * Sylvain CALADOR <sylvain.calador@akretion.com>
      * Sébastien BEAU <sebastien.beau@akretion.com>
      * Carmen BIANCA BAKKER <carmen@coopiteasy.be>
      * Alexis DE LATTRE <alexis.delattre@akretion.com>
      * Quentin DUPONT <quentin.dupont@grap.coop>
      * Pierrick BRUN <pierrick.brun@akretion.com>
      * Hugues DE KEYZER  <hugues@coopiteasy.be>

    * [hw_dialog06_scale](https://github.com/coopiteasy/iot/tree/12.0-dialog06/hw_dialog06_scale) (AGPL-3.0), by Coop It Easy. Main contributors are:

      * Vincent Van Rossem <vincent.vanrossem@camptocamp.com>

    * [pyposdisplay](https://github.com/akretion/pyposdisplay) (AGPL-3.0), by Akretion. Main contributors are:

      * Alexis DE LATTRE <alexis.delattre@akretion.com>
      * Sébastien BEAU <sebastien.beau@akretion.com>

  The following projects were also useful and were studied to realize this library.

    * [Odoo](https://github.com/odoo/odoo) (AGPL-3.0 up to version 8.0, and then LGPL-3.0 from version 9.0 onwards), by Odoo SA, specially "hw_" modules.



  * [Main Application icon](https://www.flaticon.com/fr/icones-gratuites/hub-usb), by AbtoCreative (Flaticon).

  * [Credit Card Payment Terminal Icon](https://www.flaticon.com/fr/icone-gratuite/terminal-de-paiement_6137350), created by ToZ Icon (Flaticon).

  * [LCD Customer Display Icon](https://www.flaticon.com/fr/icone-gratuite/lcd_9622586), created by Iconic Panda (Flaticon).

  * [Thermal Receipt Printer Icon](https://www.flaticon.com/fr/icone-gratuite/facture_1649343), created by Icongeek26 (Flaticon).

  * [Scale Icon](https://www.flaticon.com/fr/icone-gratuite/pesee_1104592), created by itim2101 (Flaticon).


pkgId: 89fa6f340a8c6e244e10ba9e87fbba81936580cdc338def91ac3cd878aa2c526
name: python-odoo-toolkit-help
arch: noarch
version: 0.1.25
epoch: 0
release: 1
summary: Development documents and examples for odoo-toolkit
url: https://pypi.org/project/odoo-toolkit/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-odoo-toolkit-0.1.25-1.src.rpm
location_href: Packages/python-odoo-toolkit-help-0.1.25-1.noarch.rpm
checksum_type: sha256
description:
  This toolkit contains a few useful tools for Odoo development. The tools are primarily aimed at Odoo employees.

  The quickest way to get started is to install the tools using:

  ```console
  $ pipx install odoo-toolkit
  ```

  > [!TIP]
  > You can run any command with the `--help` option to find out all options you can use.

  **Usage**:

  ```console
  $ otk [OPTIONS] COMMAND [ARGS]...
  ```

  **Options**:

  * `--install-completion`: Install completion for the current shell.
  * `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
  * `--version`: Show the version and exit.
  * `--help`: Show this message and exit.






  | Command                             | Purpose                                                                             |
  | ----------------------------------- | ----------------------------------------------------------------------------------- |
  | [`otk export-pot`](#otk-export-pot) | Export Odoo translation files (.pot) to each module's i18n folder.                  |
  | [`otk create-po`](#otk-create-po)   | Create Odoo translation files (.po) according to their .pot files.                  |
  | [`otk update-po`](#otk-update-po)   | Update Odoo translation files (.po) according to a new version of their .pot files. |
  | [`otk merge-po`](#otk-merge-po)     | Merge multiple translation files (.po) into one.                                    |
  |                                     | [Available Languages](#available-languages)                                         |



  | Command                                 | Purpose                                                                              |
  | --------------------------------------- | ------------------------------------------------------------------------------------ |
  |                                         | [Odoo Development Server](#odoo-development-server)                                  |
  | [`otk dev start`](#otk-dev-start)       | Start an Odoo Development Server using Docker and launch a terminal session into it. |
  | [`otk dev start-db`](#otk-dev-start-db) | Start a standalone PostgreSQL container for your Odoo databases.                     |
  | [`otk dev stop`](#otk-dev-stop)         | Stop and delete all running containers of the Odoo Development Server.               |



  | Command                             | Purpose                                                                                        |
  | ----------------------------------- | ---------------------------------------------------------------------------------------------- |
  | [`otk multiverse`](#otk-multiverse) | Set up an Odoo Multiverse environment, having different branches checked out at the same time. |





  **Export Odoo translation files (.pot) to each module's i18n folder.**

  This command can autonomously start separate Odoo servers to export translatable terms for one or more modules. A separate server will be started for Community, Community (Localizations), Enterprise, and Enterprise (Localizations) modules with only the modules installed to be exported in that version.

  When exporting the translations for `base`, we install all possible modules to ensure all terms added in by other modules get exported in the `base.pot` files as well.

  You can also export terms from your own running server using the `--no-start-server` option and optionally passing the correct arguments to reach your Odoo server.

  > [!NOTE]
  > Without any options specified, the command is supposed to run from within the parent directory where your `odoo` and `enterprise` repositories are checked out with these names. Your database is supposed to run on `localhost` using port `5432`, accessible without a password using your current user.
  >
  > Of course, all of this can be tweaked with the available options. 😉



  ```console
  $ otk export-pot [OPTIONS] MODULES...
  ```
  e.g.

  ```console
  $ otk export-pot -p 8079 account mrp sale
  ```



  * `MODULES...`: Export .pot files for these Odoo modules, or either `all`, `community`, or `enterprise`.  **[required]**



  **Odoo Server Options**:

  * `--start-server / --own-server`: Start an Odoo server automatically or connect to your own server.  [default: `start-server`]
  * `--full-install`: Install every available Odoo module.
  * `-c, --com-path PATH`: Specify the path to your Odoo Community repository.  [default: `odoo`]
  * `-e, --ent-path PATH`: Specify the path to your Odoo Enterprise repository.  [default: `enterprise`]
  * `-u, --username TEXT`: Specify the username to log in to Odoo.  [default: `admin`]
  * `-p, --password TEXT`: Specify the password to log in to Odoo.  [default: `admin`]
  * `--host TEXT`: Specify the hostname of your Odoo server.  [default: `localhost`]
  * `--port INTEGER`: Specify the port of your Odoo server.  [default: `8069`]

  **Database Options**:

  * `-d, --database TEXT`: Specify the PostgreSQL database name used by Odoo.  [default: `__export_pot_db__`]
  * `--db-host TEXT`: Specify the PostgreSQL server's hostname.  [default: `localhost`]
  * `--db-port INTEGER`: Specify the PostgreSQL server's port.  [default: `5432`]
  * `--db-username TEXT`: Specify the PostgreSQL server's username.
  * `--db-password TEXT`: Specify the PostgreSQL user's password.

  **Options:**

  * `--help`: Show this message and exit.



  **Create Odoo translation files (.po) according to their .pot files.**

  This command will provide you with a clean .po file per language you specified for the given modules. It basically copies all entries from the .pot file in the module and completes the metadata with the right language information. All generated .po files will be saved in the respective modules' `i18n` directories.

  > [!NOTE]
  > Without any options specified, the command is supposed to run from within the parent directory where your `odoo` and `enterprise` repositories are checked out with these names.



  ```console
  $ otk create-po [OPTIONS] MODULES...
  ```
  e.g.

  ```console
  $ otk create-po -l nl -l fr -l de l10n_be l10n_be_reports
  ```



  * `MODULES...`: Create .po files for these Odoo modules, or either `all`, `community`, or `enterprise`.  **[required]**



  * [`-l, --languages LANG`](#available-languages): Create .po files for these languages, or `all`.  [default: None] **[required]**
  * `-c, --com-path PATH`: Specify the path to your Odoo Community repository.  [default: `odoo`]
  * `-e, --ent-path PATH`: Specify the path to your Odoo Enterprise repository.  [default: `enterprise`]
  * `--help`: Show this message and exit.




  **Update Odoo translation files (.po) according to a new version of their .pot files.**

  This command will update the .po files for the provided modules according to a new .pot file you might have exported in their `i18n` directory.

  > [!NOTE]
  > Without any options specified, the command is supposed to run from within the parent directory where your `odoo` and `enterprise` repositories are checked out with these names.



  ```console
  $ otk update-po [OPTIONS] MODULES...
  ```
  e.g.
  ```console
  $ otk update-po -l nl -l fr account account_accountant
  ```



  * `MODULES...`: Update .po files for these Odoo modules, or either `all`, `community`, or `enterprise`.  **[required]**



  * [`-l, --languages LANG`](#available-languages): Update .po files for these languages, or `all`.  [default: `all`]
  * `-c, --com-path PATH`: Specify the path to your Odoo Community repository.  [default: `odoo`]
  * `-e, --ent-path PATH`: Specify the path to your Odoo Enterprise repository.  [default: `enterprise`]
  * `--help`: Show this message and exit.




  **Merge multiple translation files (.po) into one.**

  The order of the files determines which translation takes priority. Empty translations in earlier files will be completed with translations from later files, taking the first one in the order they occur.

  If the option `--overwrite` is active, existing translations in earlier files will always be overwritten by translations in later files. In that case the last file takes precedence.

  The .po metadata is taken from the first file by default, or the last if `--overwrite` is active.



  ```console
  $ otk merge-po [OPTIONS] PO_FILES...
  ```
  e.g.
  ```console
  $ otk merge-po -o nl_merged.po nl.po nl_BE.po
  ```



  * `PO_FILES...`: Merge these .po files together.  [required]



  * `-o, --output-file PATH`: Specify the output .po file.  [default: `merged.po`]
  * `--overwrite`: Overwrite existing translations.
  * `--help`: Show this message and exit.




  When `LANG` is given as a type, any of the following language codes can be used. They are all available in Odoo.

  > [!TIP]
  > When creating new .po files, always try to use the most generic language possible. That way, all more specific languages can fall back on that one.

  | Code     | Language                     | Code       | Language              |
  | -------- | ---------------------------- | ---------- | --------------------- |
  | `all`    | *All languages*              | `he`       | Hebrew                |
  | `am`     | Amharic                      | `hi`       | Hindi                 |
  | `ar`     | Arabic                       | `hr`       | Croatian              |
  | `ar_SY`  | Arabic (Syria)               | `hu`       | Hungarian             |
  | `az`     | Azerbaijani                  | `id`       | Indonesian            |
  | `be`     | Belarusian                   | `it`       | Italian               |
  | `bg`     | Bulgarian                    | `ja`       | Japanese              |
  | `bn`     | Bengali                      | `ka`       | Georgian              |
  | `bs`     | Bosnian                      | `kab`      | Kabyle                |
  | `ca`     | Catalan                      | `km`       | Khmer                 |
  | `cs`     | Czech                        | `ko`       | Korean                |
  | `da`     | Danish                       | `ko_KP`    | Korean (North Korea)  |
  | `de`     | German                       | `lb`       | Luxembourgish         |
  | `de_CH`  | German (Switzerland)         | `lo`       | Lao                   |
  | `el`     | Greek                        | `lt`       | Lithuanian            |
  | `en_AU`  | English (Australia)          | `lv`       | Latvian               |
  | `en_CA`  | English (Canada)             | `mk`       | Macedonian            |
  | `en_GB`  | English (United Kingdom)     | `ml`       | Malayalam             |
  | `en_IN`  | English (India)              | `mn`       | Mongolian             |
  | `en_NZ`  | English (New Zealand)        | `ms`       | Malay                 |
  | `es`     | Spanish                      | `my`       | Burmese               |
  | `es_419` | Spanish (Latin America)      | `nb`       | Norwegian Bokmål      |
  | `es_AR`  | Spanish (Argentina)          | `nl`       | Dutch                 |
  | `es_BO`  | Spanish (Bolivia)            | `nl_BE`    | Dutch (Belgium)       |
  | `es_CL`  | Spanish (Chile)              | `pl`       | Polish                |
  | `es_CO`  | Spanish (Colombia)           | `pt`       | Portuguese            |
  | `es_CR`  | Spanish (Costa Rica)         | `pt_AO`    | Portuguese (Angola)   |
  | `es_DO`  | Spanish (Dominican Republic) | `pt_BR`    | Portuguese (Brazil)   |
  | `es_EC`  | Spanish (Ecuador)            | `ro`       | Romanian              |
  | `es_GT`  | Spanish (Guatemala)          | `ru`       | Russian               |
  | `es_MX`  | Spanish (Mexico)             | `sk`       | Slovak                |
  | `es_PA`  | Spanish (Panama)             | `sl`       | Slovenian             |
  | `es_PE`  | Spanish (Peru)               | `sq`       | Albanian              |
  | `es_PY`  | Spanish (Paraguay)           | `sr`       | Serbian               |
  | `es_UY`  | Spanish (Uruguay)            | `sr@latin` | Serbian (Latin)       |
  | `es_VE`  | Spanish (Venezuela)          | `sv`       | Swedish               |
  | `et`     | Estonian                     | `sw`       | Swahili               |
  | `eu`     | Basque                       | `te`       | Telugu                |
  | `fa`     | Persian                      | `th`       | Thai                  |
  | `fi`     | Finnish                      | `tl`       | Tagalog / Filipino    |
  | `fr`     | French                       | `tr`       | Turkish               |
  | `fr_BE`  | French (Belgium)             | `uk`       | Ukrainian             |
  | `fr_CA`  | French (Canada)              | `vi`       | Vietnamese            |
  | `fr_CH`  | French (Switzerland)         | `zh_CH`    | Chinese (Simplified)  |
  | `gl`     | Galician                     | `zh_HK`    | Chinese (Hong Kong)   |
  | `gu`     | Gujarati                     | `zh_TW`    | Chinese (Traditional) |




  **Run an Odoo Development Server using Docker.**

  The following commands allow you to automatically start and stop a fully configured Docker container to run your Odoo server(s) during development.

  > [!IMPORTANT]
  > These tools require [Docker Desktop](https://www.docker.com/products/docker-desktop/) to be installed on your system.

  The Docker container is configured to resemble Odoo's CI or production servers and thus tries to eliminate discrepancies between your local system and the CI or production server.



  ```console
  $ otk dev [OPTIONS] COMMAND [ARGS]...
  ```



  * `--help`: Show this message and exit.



  **Start an Odoo Development Server using Docker and launch a terminal session into it.**

  This command will start both a PostgreSQL container and an Odoo container containing your source code, located on your machine at the location specified by `-w`. Your specified workspace will be sourced in the container at the location `/code` and allows live code updates during local development.

  You can choose to launch a container using Ubuntu 24.04 [`-u noble`] (default, recommended starting from version 18.0) or 22.04 [`-u jammy`] (for earlier versions).

  When you're done with the container, you can exit the session by running the `exit` command. At this point, the container will still be running and you can start a new session using the same `otk dev start` command.



  The `jammy` container exposes ports `8070`, `8071`, `8072`, `8073` and `8074`. The default port `8069` inside the container is mapped to `8070` on your machine and the other 4 are transparently mapped to their own port.

  The `noble` container exposes ports `8075`, `8076`, `8077`, `8078` and `8079`. The default port `8069` inside the container is mapped to `8075` on your machine and the other four are transparently mapped to their own port.

  This allows you to run up to 5 different servers per Docker container, all accessible on your local machine. If you also have a local server running on default port `8069`, it will not clash with the Docker ports.



  The command starts a separate PostgreSQL container that you can access from your host machine at `localhost:5432` by default, using `odoo` as username and password. Inside your other Docker container, the hostname of this server is `db`.



  The container contains some helpful aliases that you can use to run and debug Odoo from your workspace (*either `/code` or `/code/<branch>` if you're using the multiverse setup*). They contain the right configuration to connect to the PostgreSQL database and set very high time limits by default (useful for debugging). You can check them in [`.bash_aliases`](odoo_toolkit/docker/.bash_aliases).

  **Running Odoo** (from within the workspace folder)
  - `o-bin` can be used instead of `odoo/odoo-bin` with the same arguments.

  **Running an Odoo shell** (from within the workspace folder)
  - `o-bin-sh` can be used instead of `odoo/odoo-bin shell` with the same arguments.

  **Upgrading Odoo** (from within the workspace folder)
  - `o-bin-up` can be used instead of `odoo/odoo-bin --upgrade-path=...` with the same arguments.

  **Debugging Odoo** (from within the workspace folder)
  - `o-bin-deb` can be used instead of `odoo/odoo-bin` with the same arguments, starts a debug session using [`debugpy`](https://github.com/microsoft/debugpy) and waits for your local debugger to connect to it before starting.

  **Debugging Odoo Upgrade** (from within the workspace folder)
  - `o-bin-deb-up` can be used instead of `odoo/odoo-bin --upgrade-path=...` with the same arguments, starts a debug session using [`debugpy`](https://github.com/microsoft/debugpy) and waits for your local debugger to connect to it before starting.

  > [!TIP]
  > Every alias can be appended by `-c` or `-e` to have the addons paths for respectively Community or Enterprise (e.g. `o-bin-deb-up-c`).

  > [!TIP]
  > Compatible [Visual Studio Code](https://code.visualstudio.com/) debug configurations are available in [`launch.json`](odoo_toolkit/multiverse_config/.vscode/launch.json).

  The most common PostgreSQL commands have also been aliased to use the right database and credentials, so you could just run e.g. `dropdb <database>`.



  The configuration for the Docker containers is located in the `odoo_toolkit/docker` folder in this repository. The [`compose.yaml`](odoo_toolkit/docker/compose.yaml) file defines an `odoo-noble` and `odoo-jammy` service that run the development containers with the right configuration and file mounts, and a `db` service that runs the PostgreSQL server.

  The development container configuration is laid out in [`noble.Dockerfile`](odoo_toolkit/docker/noble.Dockerfile) and [`jammy.Dockerfile`](odoo_toolkit/docker/jammy.Dockerfile).



  ```console
  $ otk dev start [OPTIONS]
  ```
  e.g.
  ```console
  $ otk dev start -u jammy
  ```



  * `-w, --workspace PATH`: Specify the path to your development workspace that will be mounted in the container's `/code` directory.  [default: `~/code/odoo`]
  * `-u, --ubuntu-version [noble|jammy]`: Specify the Ubuntu version to run in this container.  [default: `noble`]
  * `-p, --db-port INTEGER`: Specify the port on your local machine the PostgreSQL database should listen on.  [default: `5432`]
  * `--rebuild`: Rebuild the Docker image to get the latest dependencies.
  * `--help`: Show this message and exit.




  **Start a standalone PostgreSQL container for your Odoo databases.**

  You can use this standalone container if you want to connect to it from your local machine which is running Odoo. By default it will listen on port 5432, but you can modify this if you already have another PostgreSQL server running locally.



  ```console
  $ otk dev start-db [OPTIONS]
  ```



  * `-p, --port INTEGER`: Specify the port on your local machine the PostgreSQL database should listen on.  [default: `5432`]
  * `--help`: Show this message and exit.




  **Stop and delete all running containers of the Odoo Development Server.**

  This is useful if you want to build a new version of the container, or you want the container to have the latest version of `odoo-toolkit`.

  Running this is also necessary if you updated the `odoo-toolkit` package on your local machine. If not, your container won't be able to mount the configuration files.



  ```console
  $ otk dev stop [OPTIONS]
  ```



  * `--help`: Show this message and exit.




  **Set up an Odoo Multiverse environment, having different branches checked out at the same time.**

  This way you can easily work on tasks in different versions without having to switch branches, or easily compare behaviors in different versions.

  The setup makes use of the [`git worktree`](https://git-scm.com/docs/git-worktree) feature to prevent having multiple full clones of the repositories for each version. The `git` history is only checked out once, and the only extra data you have per branch are the actual source files.

  The easiest way to set this up is by creating a directory for your multiverse setup and then run this command from that directory.

  > [!IMPORTANT]
  > Make sure you have set up your GitHub SSH key beforehand in order to clone the repositories.

  You can run the command as many times as you want. It will skip already existing branches and repositories and only renew their configuration (when passed the `--reset-config` option).

  > [!TIP]
  > If you're using [Visual Studio Code](https://code.visualstudio.com/), you can use the `--vscode` option to have the script copy some [default configuration](odoo_toolkit/multiverse_config/.vscode) to each branch folder. It contains recommended plugins, plugin configurations and debug configurations (that also work with the Docker container started via [`otk dev start`](#otk-dev-start)).



  The command will basically do the following:

  1. Clone the repositories that have multiple active branches (among `odoo`, `enterprise`, `design-themes`, `documentation`, `industry` and `o-spreadsheet`) as [bare repositories](https://git-scm.com/docs/git-clone#Documentation/git-clone.txt-code--barecode) to a `.multiverse-source/<repository>` folder (we don't need the source files themselves here). We set them up in a way that we can correctly create worktrees for each branch. We add the remote `origin` (`git@github.com:odoo/<repository>.git`) for all repositories and the remote `dev` (`git@github.com:odoo-dev/<repository>.git`) for all except the `documentation` and `o-spreadsheet` repositories.

  2. Clone the single-branch repositories (among `upgrade`, `upgrade-util`, `odoofin` and `internal`) to the root of your multiverse directory.

  3. Create a directory per branch in your multiverse directory, and a directory per multi-branch repository inside each branch directory. We use [`git worktree add`](https://git-scm.com/docs/git-worktree#Documentation/git-worktree.txt-addltpathgtltcommit-ishgt) to add a worktree for the correct branch for each repository.

  4. Create a symlink to each single-branch repository in each branch directory, since they all use the same `master` branch of these repositories.

  5. Copy all [configuration files](odoo_toolkit/multiverse_config) into each branch directory and set up the Javascript tooling for `odoo` and `enterprise` (located in the `tooling` directory inside the `web` module).

  6. Set up a Python virtual environment ([`venv`](https://docs.python.org/3/library/venv.html)) in the `.venv` directory inside each branch directory and install all requirements of `odoo` and `documentation`, as well as the recommended ones in [`requirements.txt`](odoo_toolkit/multiverse_config/requirements.txt).
     *You can use this environment from the branch directory using `source .venv/bin/activate`.*

  After all that is done, your directory structure should look like this with the default repositories selected:

  ```
  <multiverse-folder>
  ├── .worktree-source
  │   ├── odoo (bare)
  │   ├── enterprise (bare)
  │   └── design-themes (bare)
  ├── 16.0
  │   └── ...
  ├── 17.0
  │   └── ...
  ├── saas-17.2
  │   └── ...
  ├── saas-17.4
  │   └── ...
  ├── 18.0
  │   ├── .venv (Python virtual environment)
  │   ├── odoo (18.0)
  │   ├── enterprise (18.0)
  │   ├── design-themes (18.0)
  │   ├── upgrade (symlink to ../upgrade)
  │   ├── upgrade-util (symlink to ../upgrade-util)
  │   ├── pyproject.toml
  │   └── requirements.txt
  ├── master
  │   └── ...
  ├── upgrade (master)
  └── upgrade-util (master)
  ```



  ```console
  $ otk multiverse [OPTIONS]
  ```
  e.g.
  ```console
  $ otk multiverse -b 16.0 -b 17.0 -b 18.0 -r odoo -r enterprise -r upgrade -r upgrade-util --vscode
  ```



  * `-b, --branches TEXT`: Specify the Odoo branches you want to add.  [default: `16.0`, `17.0`, `saas-17.2`, `saas-17.4`, `18.0`, `master`]
  * `-r, --repositories REPO`: Specify the Odoo repositories you want to sync.  [default: `odoo`, `enterprise`, `design-themes`, `upgrade`, `upgrade-util`]
  * `-d, --multiverse-dir PATH`: Specify the directory in which you want to install the multiverse setup.  [default: `<current working directory>`]
  * `--reset-config`: Reset every specified worktree's Ruff config, Python virtual environment and dependencies, and optional Visual Studio Code config.
  * `--vscode`: Copy settings and debug configurations for Visual Studio Code.
  * `--help`: Show this message and exit.



  `REPO` can be any of these repositories:
  - [`odoo`](https://github.com/odoo/odoo)
  - [`enterprise`](https://github.com/odoo/enterprise)
  - [`design-themes`](https://github.com/odoo/design-themes)
  - [`documentation`](https://github.com/odoo/documentation)
  - [`upgrade`](https://github.com/odoo/upgrade)
  - [`upgrade-util`](https://github.com/odoo/upgrade-util)
  - [`odoofin`](https://github.com/odoo/odoofin)
  - [`industry`](https://github.com/odoo/industry)
  - [`o-spreadsheet`](https://github.com/odoo/o-spreadsheet)
  - [`internal`](https://github.com/odoo/internal)


pkgId: e6186f88ba24ded4b7f80c47397770a2091741cfc79214690db0ce32cc178823
name: python-odoo-toolkit-help
arch: noarch
version: 0.1.28
epoch: 0
release: 1
summary: Development documents and examples for odoo-toolkit
url: https://pypi.org/project/odoo-toolkit/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
rpm_sourcerpm: python-odoo-toolkit-0.1.28-1.src.rpm
location_href: Packages/python-odoo-toolkit-help-0.1.28-1.noarch.rpm
checksum_type: sha256
description:
  This toolkit contains a few useful tools for Odoo development. The tools are primarily aimed at Odoo employees.

  The quickest way to get started is to install the tools using:

  ```console
  $ pipx install odoo-toolkit
  ```

  > [!TIP]
  > You can run any command with the `--help` option to find out all options you can use.

  **Usage**:

  ```console
  $ otk [OPTIONS] COMMAND [ARGS]...
  ```

  **Options**:

  * `--install-completion`: Install completion for the current shell.
  * `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
  * `--version`: Show the version and exit.
  * `--help`: Show this message and exit.






  | Command                             | Purpose                                                                             |
  | ----------------------------------- | ----------------------------------------------------------------------------------- |
  | [`otk export-pot`](#otk-export-pot) | Export Odoo translation files (.pot) to each module's i18n folder.                  |
  | [`otk create-po`](#otk-create-po)   | Create Odoo translation files (.po) according to their .pot files.                  |
  | [`otk update-po`](#otk-update-po)   | Update Odoo translation files (.po) according to a new version of their .pot files. |
  | [`otk merge-po`](#otk-merge-po)     | Merge multiple translation files (.po) into one.                                    |
  |                                     | [Available Languages](#available-languages)                                         |



  | Command                                 | Purpose                                                                              |
  | --------------------------------------- | ------------------------------------------------------------------------------------ |
  |                                         | [Odoo Development Server](#odoo-development-server)                                  |
  | [`otk dev start`](#otk-dev-start)       | Start an Odoo Development Server using Docker and launch a terminal session into it. |
  | [`otk dev start-db`](#otk-dev-start-db) | Start a standalone PostgreSQL container for your Odoo databases.                     |
  | [`otk dev stop`](#otk-dev-stop)         | Stop and delete all running containers of the Odoo Development Server.               |



  | Command                             | Purpose                                                                                        |
  | ----------------------------------- | ---------------------------------------------------------------------------------------------- |
  | [`otk multiverse`](#otk-multiverse) | Set up an Odoo Multiverse environment, having different branches checked out at the same time. |





  **Export Odoo translation files (.pot) to each module's i18n folder.**

  This command can autonomously start separate Odoo servers to export translatable terms for one or more modules. A separate server will be started for Community, Community (Localizations), Enterprise, and Enterprise (Localizations) modules with only the modules installed to be exported in that version.

  When exporting the translations for `base`, we install all possible modules to ensure all terms added in by other modules get exported in the `base.pot` files as well.

  You can also export terms from your own running server using the `--own-server` option and optionally passing the correct arguments to reach your Odoo server.

  > [!NOTE]
  > Without any options specified, the command is supposed to run from within the parent directory where your `odoo` and `enterprise` repositories are checked out with these names. Your database is supposed to run on `localhost` using port `5432`, accessible without a password using your current user.
  >
  > Of course, all of this can be tweaked with the available options. 😉



  ```console
  $ otk export-pot [OPTIONS] MODULES...
  ```
  e.g.

  ```console
  $ otk export-pot --db-username odoo --db-password odoo "account_*" mrp sale
  ```



  * `MODULES...`: Export .pot files for these Odoo modules (supports glob patterns), or either `all`, `community`, or `enterprise`.  **[required]**



  **Odoo Server Options**:

  * `--start-server / --own-server`: Start an Odoo server automatically or connect to your own server.  [default: `start-server`]
  * `--full-install`: Install every available Odoo module.
  * `-c, --com-path PATH`: Specify the path to your Odoo Community repository.  [default: `odoo`]
  * `-e, --ent-path PATH`: Specify the path to your Odoo Enterprise repository.  [default: `enterprise`]
  * `-u, --username TEXT`: Specify the username to log in to Odoo.  [default: `admin`]
  * `-p, --password TEXT`: Specify the password to log in to Odoo.  [default: `admin`]
  * `--host TEXT`: Specify the hostname of your Odoo server.  [default: `localhost`]
  * `--port INTEGER`: Specify the port of your Odoo server.  [default: `8069`]

  **Database Options**:

  * `-d, --database TEXT`: Specify the PostgreSQL database name used by Odoo.  [default: `__export_pot_db__`]
  * `--db-host TEXT`: Specify the PostgreSQL server's hostname.  [default: `localhost`]
  * `--db-port INTEGER`: Specify the PostgreSQL server's port.  [default: `5432`]
  * `--db-username TEXT`: Specify the PostgreSQL server's username.
  * `--db-password TEXT`: Specify the PostgreSQL user's password.

  **Options:**

  * `--help`: Show this message and exit.



  **Create Odoo translation files (.po) according to their .pot files.**

  This command will provide you with a clean .po file per language you specified for the given modules. It basically copies all entries from the .pot file in the module and completes the metadata with the right language information. All generated .po files will be saved in the respective modules' `i18n` directories.

  > [!NOTE]
  > Without any options specified, the command is supposed to run from within the parent directory where your `odoo` and `enterprise` repositories are checked out with these names.



  ```console
  $ otk create-po [OPTIONS] MODULES...
  ```
  e.g.

  ```console
  $ otk create-po -l nl -l fr -l de l10n_be l10n_be_reports
  ```



  * `MODULES...`: Create .po files for these Odoo modules, or either `all`, `community`, or `enterprise`.  **[required]**



  * [`-l, --languages LANG`](#available-languages): Create .po files for these languages, or `all`.  [default: None] **[required]**
  * `-c, --com-path PATH`: Specify the path to your Odoo Community repository.  [default: `odoo`]
  * `-e, --ent-path PATH`: Specify the path to your Odoo Enterprise repository.  [default: `enterprise`]
  * `--help`: Show this message and exit.




  **Update Odoo translation files (.po) according to a new version of their .pot files.**

  This command will update the .po files for the provided modules according to a new .pot file you might have exported in their `i18n` directory.

  > [!NOTE]
  > Without any options specified, the command is supposed to run from within the parent directory where your `odoo` and `enterprise` repositories are checked out with these names.



  ```console
  $ otk update-po [OPTIONS] MODULES...
  ```
  e.g.
  ```console
  $ otk update-po -l nl -l fr account account_accountant
  ```



  * `MODULES...`: Update .po files for these Odoo modules, or either `all`, `community`, or `enterprise`.  **[required]**



  * [`-l, --languages LANG`](#available-languages): Update .po files for these languages, or `all`.  [default: `all`]
  * `-c, --com-path PATH`: Specify the path to your Odoo Community repository.  [default: `odoo`]
  * `-e, --ent-path PATH`: Specify the path to your Odoo Enterprise repository.  [default: `enterprise`]
  * `--help`: Show this message and exit.




  **Merge multiple translation files (.po) into one.**

  The order of the files determines which translation takes priority. Empty translations in earlier files will be completed with translations from later files, taking the first one in the order they occur.

  If the option `--overwrite` is active, existing translations in earlier files will always be overwritten by translations in later files. In that case the last file takes precedence.

  The .po metadata is taken from the first file by default, or the last if `--overwrite` is active.



  ```console
  $ otk merge-po [OPTIONS] PO_FILES...
  ```
  e.g.
  ```console
  $ otk merge-po -o nl_merged.po nl.po nl_BE.po
  ```



  * `PO_FILES...`: Merge these .po files together.  [required]



  * `-o, --output-file PATH`: Specify the output .po file.  [default: `merged.po`]
  * `--overwrite`: Overwrite existing translations.
  * `--help`: Show this message and exit.




  When `LANG` is given as a type, any of the following language codes can be used. They are all available in Odoo.

  > [!TIP]
  > When creating new .po files, always try to use the most generic language possible. That way, all more specific languages can fall back on that one.

  | Code     | Language                     | Code       | Language              |
  | -------- | ---------------------------- | ---------- | --------------------- |
  | `all`    | *All languages*              | `he`       | Hebrew                |
  | `am`     | Amharic                      | `hi`       | Hindi                 |
  | `ar`     | Arabic                       | `hr`       | Croatian              |
  | `ar_SY`  | Arabic (Syria)               | `hu`       | Hungarian             |
  | `az`     | Azerbaijani                  | `id`       | Indonesian            |
  | `be`     | Belarusian                   | `it`       | Italian               |
  | `bg`     | Bulgarian                    | `ja`       | Japanese              |
  | `bn`     | Bengali                      | `ka`       | Georgian              |
  | `bs`     | Bosnian                      | `kab`      | Kabyle                |
  | `ca`     | Catalan                      | `km`       | Khmer                 |
  | `cs`     | Czech                        | `ko`       | Korean                |
  | `da`     | Danish                       | `ko_KP`    | Korean (North Korea)  |
  | `de`     | German                       | `lb`       | Luxembourgish         |
  | `de_CH`  | German (Switzerland)         | `lo`       | Lao                   |
  | `el`     | Greek                        | `lt`       | Lithuanian            |
  | `en_AU`  | English (Australia)          | `lv`       | Latvian               |
  | `en_CA`  | English (Canada)             | `mk`       | Macedonian            |
  | `en_GB`  | English (United Kingdom)     | `ml`       | Malayalam             |
  | `en_IN`  | English (India)              | `mn`       | Mongolian             |
  | `en_NZ`  | English (New Zealand)        | `ms`       | Malay                 |
  | `es`     | Spanish                      | `my`       | Burmese               |
  | `es_419` | Spanish (Latin America)      | `nb`       | Norwegian Bokmål      |
  | `es_AR`  | Spanish (Argentina)          | `nl`       | Dutch                 |
  | `es_BO`  | Spanish (Bolivia)            | `nl_BE`    | Dutch (Belgium)       |
  | `es_CL`  | Spanish (Chile)              | `pl`       | Polish                |
  | `es_CO`  | Spanish (Colombia)           | `pt`       | Portuguese            |
  | `es_CR`  | Spanish (Costa Rica)         | `pt_AO`    | Portuguese (Angola)   |
  | `es_DO`  | Spanish (Dominican Republic) | `pt_BR`    | Portuguese (Brazil)   |
  | `es_EC`  | Spanish (Ecuador)            | `ro`       | Romanian              |
  | `es_GT`  | Spanish (Guatemala)          | `ru`       | Russian               |
  | `es_MX`  | Spanish (Mexico)             | `sk`       | Slovak                |
  | `es_PA`  | Spanish (Panama)             | `sl`       | Slovenian             |
  | `es_PE`  | Spanish (Peru)               | `sq`       | Albanian              |
  | `es_PY`  | Spanish (Paraguay)           | `sr`       | Serbian               |
  | `es_UY`  | Spanish (Uruguay)            | `sr@latin` | Serbian (Latin)       |
  | `es_VE`  | Spanish (Venezuela)          | `sv`       | Swedish               |
  | `et`     | Estonian                     | `sw`       | Swahili               |
  | `eu`     | Basque                       | `te`       | Telugu                |
  | `fa`     | Persian                      | `th`       | Thai                  |
  | `fi`     | Finnish                      | `tl`       | Tagalog / Filipino    |
  | `fr`     | French                       | `tr`       | Turkish               |
  | `fr_BE`  | French (Belgium)             | `uk`       | Ukrainian             |
  | `fr_CA`  | French (Canada)              | `vi`       | Vietnamese            |
  | `fr_CH`  | French (Switzerland)         | `zh_CH`    | Chinese (Simplified)  |
  | `gl`     | Galician                     | `zh_HK`    | Chinese (Hong Kong)   |
  | `gu`     | Gujarati                     | `zh_TW`    | Chinese (Traditional) |




  **Run an Odoo Development Server using Docker.**

  The following commands allow you to automatically start and stop a fully configured Docker container to run your Odoo server(s) during development.

  > [!IMPORTANT]
  > These tools require [Docker Desktop](https://www.docker.com/products/docker-desktop/) to be installed on your system.

  The Docker container is configured to resemble Odoo's CI or production servers and thus tries to eliminate discrepancies between your local system and the CI or production server.



  ```console
  $ otk dev [OPTIONS] COMMAND [ARGS]...
  ```



  * `--help`: Show this message and exit.



  **Start an Odoo Development Server using Docker and launch a terminal session into it.**

  This command will start both a PostgreSQL container and an Odoo container containing your source code, located on your machine at the location specified by `-w`. Your specified workspace will be sourced in the container at the location `/code` and allows live code updates during local development.

  You can choose to launch a container using Ubuntu 24.04 [`-u noble`] (default, recommended starting from version 18.0) or 22.04 [`-u jammy`] (for earlier versions).

  When you're done with the container, you can exit the session by running the `exit` command. At this point, the container will still be running and you can start a new session using the same `otk dev start` command.



  The `jammy` container exposes ports `8070`, `8071`, `8072`, `8073` and `8074`. The default port `8069` inside the container is mapped to `8070` on your machine and the other 4 are transparently mapped to their own port.

  The `noble` container exposes ports `8075`, `8076`, `8077`, `8078` and `8079`. The default port `8069` inside the container is mapped to `8075` on your machine and the other four are transparently mapped to their own port.

  This allows you to run up to 5 different servers per Docker container, all accessible on your local machine. If you also have a local server running on default port `8069`, it will not clash with the Docker ports.



  The command starts a separate PostgreSQL container that you can access from your host machine at `localhost:5432` by default, using `odoo` as username and password. Inside your other Docker container, the hostname of this server is `db`.



  The container contains some helpful aliases that you can use to run and debug Odoo from your workspace (*either `/code` or `/code/<branch>` if you're using the multiverse setup*). They contain the right configuration to connect to the PostgreSQL database and set very high time limits by default (useful for debugging). You can check them in [`.bash_aliases`](odoo_toolkit/docker/.bash_aliases).

  **Running Odoo** (from within the workspace folder)
  - `o-bin` can be used instead of `odoo/odoo-bin` with the same arguments.

  **Running an Odoo shell** (from within the workspace folder)
  - `o-bin-sh` can be used instead of `odoo/odoo-bin shell` with the same arguments.

  **Upgrading Odoo** (from within the workspace folder)
  - `o-bin-up` can be used instead of `odoo/odoo-bin --upgrade-path=...` with the same arguments.

  **Debugging Odoo** (from within the workspace folder)
  - `o-bin-deb` can be used instead of `odoo/odoo-bin` with the same arguments, starts a debug session using [`debugpy`](https://github.com/microsoft/debugpy) and waits for your local debugger to connect to it before starting.

  **Debugging Odoo Upgrade** (from within the workspace folder)
  - `o-bin-deb-up` can be used instead of `odoo/odoo-bin --upgrade-path=...` with the same arguments, starts a debug session using [`debugpy`](https://github.com/microsoft/debugpy) and waits for your local debugger to connect to it before starting.

  > [!TIP]
  > Every alias can be appended by `-c` or `-e` to have the addons paths for respectively Community or Enterprise (e.g. `o-bin-deb-up-c`).

  > [!TIP]
  > Compatible [Visual Studio Code](https://code.visualstudio.com/) debug configurations are available in [`launch.json`](odoo_toolkit/multiverse_config/.vscode/launch.json).

  The most common PostgreSQL commands have also been aliased to use the right database and credentials, so you could just run e.g. `dropdb <database>`.



  The configuration for the Docker containers is located in the `odoo_toolkit/docker` folder in this repository. The [`compose.yaml`](odoo_toolkit/docker/compose.yaml) file defines an `odoo-noble` and `odoo-jammy` service that run the development containers with the right configuration and file mounts, and a `db` service that runs the PostgreSQL server.

  The development container configuration is laid out in [`noble.Dockerfile`](odoo_toolkit/docker/noble.Dockerfile) and [`jammy.Dockerfile`](odoo_toolkit/docker/jammy.Dockerfile).



  ```console
  $ otk dev start [OPTIONS]
  ```
  e.g.
  ```console
  $ otk dev start -u jammy
  ```



  * `-w, --workspace PATH`: Specify the path to your development workspace that will be mounted in the container's `/code` directory.  [default: `~/code/odoo`]
  * `-u, --ubuntu-version [noble|jammy]`: Specify the Ubuntu version to run in this container.  [default: `noble`]
  * `-p, --db-port INTEGER`: Specify the port on your local machine the PostgreSQL database should listen on.  [default: `5432`]
  * `--rebuild`: Rebuild the Docker image to get the latest dependencies.
  * `--help`: Show this message and exit.




  **Start a standalone PostgreSQL container for your Odoo databases.**

  You can use this standalone container if you want to connect to it from your local machine which is running Odoo. By default it will listen on port 5432, but you can modify this if you already have another PostgreSQL server running locally.



  ```console
  $ otk dev start-db [OPTIONS]
  ```



  * `-p, --port INTEGER`: Specify the port on your local machine the PostgreSQL database should listen on.  [default: `5432`]
  * `--help`: Show this message and exit.




  **Stop and delete all running containers of the Odoo Development Server.**

  This is useful if you want to build a new version of the container, or you want the container to have the latest version of `odoo-toolkit`.

  Running this is also necessary if you updated the `odoo-toolkit` package on your local machine. If not, your container won't be able to mount the configuration files.



  ```console
  $ otk dev stop [OPTIONS]
  ```



  * `--help`: Show this message and exit.




  **Set up an Odoo Multiverse environment, having different branches checked out at the same time.**

  This way you can easily work on tasks in different versions without having to switch branches, or easily compare behaviors in different versions.

  The setup makes use of the [`git worktree`](https://git-scm.com/docs/git-worktree) feature to prevent having multiple full clones of the repositories for each version. The `git` history is only checked out once, and the only extra data you have per branch are the actual source files.

  The easiest way to set this up is by creating a directory for your multiverse setup and then run this command from that directory.

  > [!IMPORTANT]
  > Make sure you have set up your GitHub SSH key beforehand in order to clone the repositories.

  You can run the command as many times as you want. It will skip already existing branches and repositories and only renew their configuration (when passed the `--reset-config` option).

  > [!TIP]
  > If you're using [Visual Studio Code](https://code.visualstudio.com/), you can use the `--vscode` option to have the script copy some [default configuration](odoo_toolkit/multiverse_config/.vscode) to each branch folder. It contains recommended plugins, plugin configurations and debug configurations (that also work with the Docker container started via [`otk dev start`](#otk-dev-start)).



  The command will basically do the following:

  1. Clone the repositories that have multiple active branches (among `odoo`, `enterprise`, `design-themes`, `documentation`, `industry` and `o-spreadsheet`) as [bare repositories](https://git-scm.com/docs/git-clone#Documentation/git-clone.txt-code--barecode) to a `.multiverse-source/<repository>` folder (we don't need the source files themselves here). We set them up in a way that we can correctly create worktrees for each branch. We add the remote `origin` (`git@github.com:odoo/<repository>.git`) for all repositories and the remote `dev` (`git@github.com:odoo-dev/<repository>.git`) for all except the `documentation` and `o-spreadsheet` repositories.

  2. Clone the single-branch repositories (among `upgrade`, `upgrade-util`, `odoofin` and `internal`) to the root of your multiverse directory.

  3. Create a directory per branch in your multiverse directory, and a directory per multi-branch repository inside each branch directory. We use [`git worktree add`](https://git-scm.com/docs/git-worktree#Documentation/git-worktree.txt-addltpathgtltcommit-ishgt) to add a worktree for the correct branch for each repository.

  4. Create a symlink to each single-branch repository in each branch directory, since they all use the same `master` branch of these repositories.

  5. Copy all [configuration files](odoo_toolkit/multiverse_config) into each branch directory and set up the Javascript tooling for `odoo` and `enterprise` (located in the `tooling` directory inside the `web` module).

  6. Set up a Python virtual environment ([`venv`](https://docs.python.org/3/library/venv.html)) in the `.venv` directory inside each branch directory and install all requirements of `odoo` and `documentation`, as well as the recommended ones in [`requirements.txt`](odoo_toolkit/multiverse_config/requirements.txt).
     *You can use this environment from the branch directory using `source .venv/bin/activate`.*

  After all that is done, your directory structure should look like this with the default repositories selected:

  ```
  <multiverse-folder>
  ├── .worktree-source
  │   ├── odoo (bare)
  │   ├── enterprise (bare)
  │   └── design-themes (bare)
  ├── 16.0
  │   └── ...
  ├── 17.0
  │   └── ...
  ├── saas-17.2
  │   └── ...
  ├── saas-17.4
  │   └── ...
  ├── 18.0
  │   ├── .venv (Python virtual environment)
  │   ├── odoo (18.0)
  │   ├── enterprise (18.0)
  │   ├── design-themes (18.0)
  │   ├── upgrade (symlink to ../upgrade)
  │   ├── upgrade-util (symlink to ../upgrade-util)
  │   ├── pyproject.toml
  │   └── requirements.txt
  ├── master
  │   └── ...
  ├── upgrade (master)
  └── upgrade-util (master)
  ```



  ```console
  $ otk multiverse [OPTIONS]
  ```
  e.g.
  ```console
  $ otk multiverse -b 16.0 -b 17.0 -b 18.0 -r odoo -r enterprise -r upgrade -r upgrade-util --vscode
  ```



  * `-b, --branches TEXT`: Specify the Odoo branches you want to add.  [default: `16.0`, `17.0`, `saas-17.2`, `saas-17.4`, `18.0`, `master`]
  * `-r, --repositories REPO`: Specify the Odoo repositories you want to sync.  [default: `odoo`, `enterprise`, `design-themes`, `upgrade`, `upgrade-util`]
  * `-d, --multiverse-dir PATH`: Specify the directory in which you want to install the multiverse setup.  [default: `<current working directory>`]
  * `--reset-config`: Reset every specified worktree's Ruff config, Python virtual environment and dependencies, and optional Visual Studio Code config.
  * `--vscode`: Copy settings and debug configurations for Visual Studio Code.
  * `--help`: Show this message and exit.



  `REPO` can be any of these repositories:
  - [`odoo`](https://github.com/odoo/odoo)
  - [`enterprise`](https://github.com/odoo/enterprise)
  - [`design-themes`](https://github.com/odoo/design-themes)
  - [`documentation`](https://github.com/odoo/documentation)
  - [`upgrade`](https://github.com/odoo/upgrade)
  - [`upgrade-util`](https://github.com/odoo/upgrade-util)
  - [`odoofin`](https://github.com/odoo/odoofin)
  - [`industry`](https://github.com/odoo/industry)
  - [`o-spreadsheet`](https://github.com/odoo/o-spreadsheet)
  - [`internal`](https://github.com/odoo/internal)


