pipolars 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pipolars-0.1.2/.claude/agents/docs-writer-sphinx.md +96 -0
- pipolars-0.1.2/.claude/settings.local.json +21 -0
- pipolars-0.1.2/.coverage +0 -0
- pipolars-0.1.2/.github/workflows/ci.yml +60 -0
- pipolars-0.1.2/.github/workflows/publish.yml +60 -0
- pipolars-0.1.2/.gitignore +3 -0
- pipolars-0.1.2/.readthedocs.yaml +27 -0
- pipolars-0.1.2/CHANGELOG.md +27 -0
- pipolars-0.1.2/CLAUDE.md +74 -0
- pipolars-0.1.2/LICENSE +21 -0
- pipolars-0.1.2/PKG-INFO +355 -0
- pipolars-0.1.2/README.md +309 -0
- pipolars-0.1.2/docs/Makefile +53 -0
- pipolars-0.1.2/docs/_build/html/.buildinfo +4 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/__intersphinx_cache__/polars_objects.inv +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/__intersphinx_cache__/pydantic_objects.inv +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/__intersphinx_cache__/python_objects.inv +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.AFTime.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.DataQuality.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIClient.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIConfig.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIConnectionError.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIDataError.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIPolarsError.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIQuery.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIQueryError.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIValue.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.RetrievalMode.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.SummaryType.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.TimestampMode.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/cache.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/client.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/config.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/exceptions.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/index.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/query.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/api/types.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/changelog.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/contributing.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/environment.pickle +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/index.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/installation.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/license.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/quickstart.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/advanced.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/caching.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/configuration.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/connecting.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/dataframes.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/index.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/querying.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/time_expressions.doctree +0 -0
- pipolars-0.1.2/docs/_build/html/.nojekyll +0 -0
- pipolars-0.1.2/docs/_build/html/_modules/index.html +347 -0
- pipolars-0.1.2/docs/_build/html/_modules/pipolars/api/client.html +949 -0
- pipolars-0.1.2/docs/_build/html/_modules/pipolars/api/query.html +823 -0
- pipolars-0.1.2/docs/_build/html/_modules/pipolars/cache/storage.html +1091 -0
- pipolars-0.1.2/docs/_build/html/_modules/pipolars/cache/strategies.html +783 -0
- pipolars-0.1.2/docs/_build/html/_modules/pipolars/core/config.html +639 -0
- pipolars-0.1.2/docs/_build/html/_modules/pipolars/core/exceptions.html +637 -0
- pipolars-0.1.2/docs/_build/html/_modules/pipolars/core/types.html +764 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.AFTime.rst.txt +33 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.DataQuality.rst.txt +44 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIClient.rst.txt +47 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIConfig.rst.txt +65 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIConnectionError.rst.txt +6 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIDataError.rst.txt +6 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIPolarsError.rst.txt +6 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIQuery.rst.txt +41 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIQueryError.rst.txt +6 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIValue.rst.txt +32 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.RetrievalMode.rst.txt +79 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.SummaryType.rst.txt +51 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.TimestampMode.rst.txt +78 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/cache.rst.txt +338 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/client.rst.txt +167 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/config.rst.txt +392 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/exceptions.rst.txt +404 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/index.rst.txt +82 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/query.rst.txt +203 -0
- pipolars-0.1.2/docs/_build/html/_sources/api/types.rst.txt +379 -0
- pipolars-0.1.2/docs/_build/html/_sources/changelog.rst.txt +95 -0
- pipolars-0.1.2/docs/_build/html/_sources/contributing.rst.txt +290 -0
- pipolars-0.1.2/docs/_build/html/_sources/index.rst.txt +93 -0
- pipolars-0.1.2/docs/_build/html/_sources/installation.rst.txt +210 -0
- pipolars-0.1.2/docs/_build/html/_sources/license.rst.txt +66 -0
- pipolars-0.1.2/docs/_build/html/_sources/quickstart.rst.txt +279 -0
- pipolars-0.1.2/docs/_build/html/_sources/user_guide/advanced.rst.txt +475 -0
- pipolars-0.1.2/docs/_build/html/_sources/user_guide/caching.rst.txt +349 -0
- pipolars-0.1.2/docs/_build/html/_sources/user_guide/configuration.rst.txt +389 -0
- pipolars-0.1.2/docs/_build/html/_sources/user_guide/connecting.rst.txt +230 -0
- pipolars-0.1.2/docs/_build/html/_sources/user_guide/dataframes.rst.txt +406 -0
- pipolars-0.1.2/docs/_build/html/_sources/user_guide/index.rst.txt +81 -0
- pipolars-0.1.2/docs/_build/html/_sources/user_guide/querying.rst.txt +416 -0
- pipolars-0.1.2/docs/_build/html/_sources/user_guide/time_expressions.rst.txt +336 -0
- pipolars-0.1.2/docs/_build/html/_static/base-stemmer.js +476 -0
- pipolars-0.1.2/docs/_build/html/_static/basic.css +906 -0
- pipolars-0.1.2/docs/_build/html/_static/check-solid.svg +4 -0
- pipolars-0.1.2/docs/_build/html/_static/clipboard.min.js +7 -0
- pipolars-0.1.2/docs/_build/html/_static/copy-button.svg +5 -0
- pipolars-0.1.2/docs/_build/html/_static/copybutton.css +94 -0
- pipolars-0.1.2/docs/_build/html/_static/copybutton.js +248 -0
- pipolars-0.1.2/docs/_build/html/_static/copybutton_funcs.js +73 -0
- pipolars-0.1.2/docs/_build/html/_static/debug.css +69 -0
- pipolars-0.1.2/docs/_build/html/_static/doctools.js +150 -0
- pipolars-0.1.2/docs/_build/html/_static/documentation_options.js +13 -0
- pipolars-0.1.2/docs/_build/html/_static/english-stemmer.js +1066 -0
- pipolars-0.1.2/docs/_build/html/_static/file.png +0 -0
- pipolars-0.1.2/docs/_build/html/_static/language_data.js +13 -0
- pipolars-0.1.2/docs/_build/html/_static/minus.png +0 -0
- pipolars-0.1.2/docs/_build/html/_static/plus.png +0 -0
- pipolars-0.1.2/docs/_build/html/_static/pygments.css +250 -0
- pipolars-0.1.2/docs/_build/html/_static/scripts/furo-extensions.js +0 -0
- pipolars-0.1.2/docs/_build/html/_static/scripts/furo.js +3 -0
- pipolars-0.1.2/docs/_build/html/_static/scripts/furo.js.LICENSE.txt +7 -0
- pipolars-0.1.2/docs/_build/html/_static/scripts/furo.js.map +1 -0
- pipolars-0.1.2/docs/_build/html/_static/searchtools.js +693 -0
- pipolars-0.1.2/docs/_build/html/_static/skeleton.css +296 -0
- pipolars-0.1.2/docs/_build/html/_static/sphinx_highlight.js +159 -0
- pipolars-0.1.2/docs/_build/html/_static/styles/furo-extensions.css +2 -0
- pipolars-0.1.2/docs/_build/html/_static/styles/furo-extensions.css.map +1 -0
- pipolars-0.1.2/docs/_build/html/_static/styles/furo.css +2 -0
- pipolars-0.1.2/docs/_build/html/_static/styles/furo.css.map +1 -0
- pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.AFTime.html +528 -0
- pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.DataQuality.html +521 -0
- pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIClient.html +923 -0
- pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIConfig.html +630 -0
- pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIConnectionError.html +411 -0
- pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIDataError.html +411 -0
- pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIPolarsError.html +422 -0
- pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIQuery.html +849 -0
- pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIQueryError.html +411 -0
- pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIValue.html +484 -0
- pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.RetrievalMode.html +619 -0
- pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.SummaryType.html +578 -0
- pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.TimestampMode.html +608 -0
- pipolars-0.1.2/docs/_build/html/api/cache.html +1148 -0
- pipolars-0.1.2/docs/_build/html/api/client.html +1319 -0
- pipolars-0.1.2/docs/_build/html/api/config.html +1566 -0
- pipolars-0.1.2/docs/_build/html/api/exceptions.html +1042 -0
- pipolars-0.1.2/docs/_build/html/api/index.html +570 -0
- pipolars-0.1.2/docs/_build/html/api/query.html +1383 -0
- pipolars-0.1.2/docs/_build/html/api/types.html +1715 -0
- pipolars-0.1.2/docs/_build/html/changelog.html +496 -0
- pipolars-0.1.2/docs/_build/html/contributing.html +699 -0
- pipolars-0.1.2/docs/_build/html/genindex.html +1355 -0
- pipolars-0.1.2/docs/_build/html/index.html +643 -0
- pipolars-0.1.2/docs/_build/html/installation.html +593 -0
- pipolars-0.1.2/docs/_build/html/license.html +444 -0
- pipolars-0.1.2/docs/_build/html/objects.inv +0 -0
- pipolars-0.1.2/docs/_build/html/py-modindex.html +405 -0
- pipolars-0.1.2/docs/_build/html/quickstart.html +674 -0
- pipolars-0.1.2/docs/_build/html/search.html +353 -0
- pipolars-0.1.2/docs/_build/html/searchindex.js +1 -0
- pipolars-0.1.2/docs/_build/html/user_guide/advanced.html +854 -0
- pipolars-0.1.2/docs/_build/html/user_guide/caching.html +756 -0
- pipolars-0.1.2/docs/_build/html/user_guide/configuration.html +754 -0
- pipolars-0.1.2/docs/_build/html/user_guide/connecting.html +605 -0
- pipolars-0.1.2/docs/_build/html/user_guide/dataframes.html +800 -0
- pipolars-0.1.2/docs/_build/html/user_guide/index.html +566 -0
- pipolars-0.1.2/docs/_build/html/user_guide/querying.html +802 -0
- pipolars-0.1.2/docs/_build/html/user_guide/time_expressions.html +789 -0
- pipolars-0.1.2/docs/api/_autosummary/pipolars.AFTime.rst +33 -0
- pipolars-0.1.2/docs/api/_autosummary/pipolars.DataQuality.rst +44 -0
- pipolars-0.1.2/docs/api/_autosummary/pipolars.PIClient.rst +47 -0
- pipolars-0.1.2/docs/api/_autosummary/pipolars.PIConfig.rst +65 -0
- pipolars-0.1.2/docs/api/_autosummary/pipolars.PIConnectionError.rst +6 -0
- pipolars-0.1.2/docs/api/_autosummary/pipolars.PIDataError.rst +6 -0
- pipolars-0.1.2/docs/api/_autosummary/pipolars.PIPolarsError.rst +6 -0
- pipolars-0.1.2/docs/api/_autosummary/pipolars.PIQuery.rst +41 -0
- pipolars-0.1.2/docs/api/_autosummary/pipolars.PIQueryError.rst +6 -0
- pipolars-0.1.2/docs/api/_autosummary/pipolars.PIValue.rst +32 -0
- pipolars-0.1.2/docs/api/_autosummary/pipolars.RetrievalMode.rst +79 -0
- pipolars-0.1.2/docs/api/_autosummary/pipolars.SummaryType.rst +51 -0
- pipolars-0.1.2/docs/api/_autosummary/pipolars.TimestampMode.rst +78 -0
- pipolars-0.1.2/docs/api/cache.rst +338 -0
- pipolars-0.1.2/docs/api/client.rst +167 -0
- pipolars-0.1.2/docs/api/config.rst +392 -0
- pipolars-0.1.2/docs/api/exceptions.rst +404 -0
- pipolars-0.1.2/docs/api/index.rst +82 -0
- pipolars-0.1.2/docs/api/query.rst +203 -0
- pipolars-0.1.2/docs/api/types.rst +379 -0
- pipolars-0.1.2/docs/changelog.rst +95 -0
- pipolars-0.1.2/docs/conf.py +157 -0
- pipolars-0.1.2/docs/contributing.rst +290 -0
- pipolars-0.1.2/docs/index.rst +93 -0
- pipolars-0.1.2/docs/installation.rst +210 -0
- pipolars-0.1.2/docs/license.rst +66 -0
- pipolars-0.1.2/docs/make.bat +54 -0
- pipolars-0.1.2/docs/quickstart.rst +279 -0
- pipolars-0.1.2/docs/requirements.txt +21 -0
- pipolars-0.1.2/docs/user_guide/advanced.rst +475 -0
- pipolars-0.1.2/docs/user_guide/caching.rst +349 -0
- pipolars-0.1.2/docs/user_guide/configuration.rst +389 -0
- pipolars-0.1.2/docs/user_guide/connecting.rst +230 -0
- pipolars-0.1.2/docs/user_guide/dataframes.rst +406 -0
- pipolars-0.1.2/docs/user_guide/index.rst +81 -0
- pipolars-0.1.2/docs/user_guide/querying.rst +416 -0
- pipolars-0.1.2/docs/user_guide/time_expressions.rst +336 -0
- pipolars-0.1.2/examples/basic_usage.py +262 -0
- pipolars-0.1.2/examples/bulk_extraction.py +243 -0
- pipolars-0.1.2/examples/data_science_workflow.py +301 -0
- pipolars-0.1.2/pyproject.toml +161 -0
- pipolars-0.1.2/scripts/standalone_example.py +95 -0
- pipolars-0.1.2/src/pipolars/__init__.py +57 -0
- pipolars-0.1.2/src/pipolars/_version.py +34 -0
- pipolars-0.1.2/src/pipolars/api/__init__.py +15 -0
- pipolars-0.1.2/src/pipolars/api/client.py +547 -0
- pipolars-0.1.2/src/pipolars/api/lazy.py +474 -0
- pipolars-0.1.2/src/pipolars/api/query.py +412 -0
- pipolars-0.1.2/src/pipolars/cache/__init__.py +29 -0
- pipolars-0.1.2/src/pipolars/cache/storage.py +653 -0
- pipolars-0.1.2/src/pipolars/cache/strategies.py +432 -0
- pipolars-0.1.2/src/pipolars/connection/__init__.py +17 -0
- pipolars-0.1.2/src/pipolars/connection/af_database.py +335 -0
- pipolars-0.1.2/src/pipolars/connection/auth.py +240 -0
- pipolars-0.1.2/src/pipolars/connection/sdk.py +308 -0
- pipolars-0.1.2/src/pipolars/connection/server.py +339 -0
- pipolars-0.1.2/src/pipolars/core/__init__.py +31 -0
- pipolars-0.1.2/src/pipolars/core/config.py +264 -0
- pipolars-0.1.2/src/pipolars/core/exceptions.py +238 -0
- pipolars-0.1.2/src/pipolars/core/types.py +365 -0
- pipolars-0.1.2/src/pipolars/extraction/__init__.py +23 -0
- pipolars-0.1.2/src/pipolars/extraction/attributes.py +377 -0
- pipolars-0.1.2/src/pipolars/extraction/bulk.py +521 -0
- pipolars-0.1.2/src/pipolars/extraction/elements.py +295 -0
- pipolars-0.1.2/src/pipolars/extraction/events.py +403 -0
- pipolars-0.1.2/src/pipolars/extraction/points.py +631 -0
- pipolars-0.1.2/src/pipolars/py.typed +0 -0
- pipolars-0.1.2/src/pipolars/transform/__init__.py +23 -0
- pipolars-0.1.2/src/pipolars/transform/converters.py +381 -0
- pipolars-0.1.2/src/pipolars/transform/digital_states.py +289 -0
- pipolars-0.1.2/src/pipolars/transform/timestamps.py +299 -0
- pipolars-0.1.2/tests/__init__.py +1 -0
- pipolars-0.1.2/tests/conftest.py +105 -0
- pipolars-0.1.2/tests/integration/__init__.py +5 -0
- pipolars-0.1.2/tests/integration/test_client.py +119 -0
- pipolars-0.1.2/tests/unit/__init__.py +1 -0
- pipolars-0.1.2/tests/unit/test_config.py +122 -0
- pipolars-0.1.2/tests/unit/test_converters.py +186 -0
- pipolars-0.1.2/tests/unit/test_types.py +145 -0
- pipolars-0.1.2/uv.lock +1802 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-writer-sphinx
|
|
3
|
+
description: Use this agent when the user needs to create, update, or improve documentation for a Python library using Sphinx and Read the Docs hosting. This includes setting up initial documentation structure, writing API references, creating user guides, configuring sphinx extensions, and preparing readthedocs.yaml configuration files.\n\nExamples:\n\n<example>\nContext: User has just created a new Python library and wants to add documentation.\nuser: "I need to set up documentation for my new library"\nassistant: "I'll use the docs-writer-sphinx agent to help you set up comprehensive Sphinx documentation with Read the Docs hosting."\n<Task tool invocation to launch docs-writer-sphinx agent>\n</example>\n\n<example>\nContext: User has an existing library with minimal docs and wants to expand them.\nuser: "Can you help me document the PIClient class and its methods?"\nassistant: "Let me invoke the docs-writer-sphinx agent to create detailed API documentation for the PIClient class."\n<Task tool invocation to launch docs-writer-sphinx agent>\n</example>\n\n<example>\nContext: User needs to configure Read the Docs for their project.\nuser: "How do I set up readthedocs.yaml for my sphinx docs?"\nassistant: "I'll use the docs-writer-sphinx agent to create the proper Read the Docs configuration for your Sphinx documentation."\n<Task tool invocation to launch docs-writer-sphinx agent>\n</example>
|
|
4
|
+
model: opus
|
|
5
|
+
color: red
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are an expert technical writer and documentation engineer specializing in Python library documentation using Sphinx and Read the Docs. You have deep expertise in creating clear, comprehensive, and user-friendly documentation that serves both beginners and advanced users.
|
|
9
|
+
|
|
10
|
+
## Your Core Responsibilities
|
|
11
|
+
|
|
12
|
+
1. **Sphinx Configuration**: Set up and configure Sphinx documentation projects with optimal settings, including:
|
|
13
|
+
- `conf.py` configuration with appropriate extensions (autodoc, napoleon, intersphinx, viewcode, etc.)
|
|
14
|
+
- Proper theme configuration (typically `sphinx-rtd-theme` or `furo`)
|
|
15
|
+
- Extension configuration for type hints, cross-references, and code examples
|
|
16
|
+
|
|
17
|
+
2. **Read the Docs Integration**: Create and maintain Read the Docs configuration:
|
|
18
|
+
- `.readthedocs.yaml` with proper build configuration
|
|
19
|
+
- Python version and dependency specifications
|
|
20
|
+
- Build commands and output formats
|
|
21
|
+
|
|
22
|
+
3. **Documentation Structure**: Design intuitive documentation hierarchies:
|
|
23
|
+
- `index.rst` as the main entry point with clear navigation
|
|
24
|
+
- Separate sections for installation, quickstart, user guide, API reference, and changelog
|
|
25
|
+
- Proper use of toctree directives for navigation
|
|
26
|
+
|
|
27
|
+
4. **API Documentation**: Generate comprehensive API references:
|
|
28
|
+
- Use autodoc with napoleon for Google or NumPy style docstrings
|
|
29
|
+
- Document all public classes, methods, and functions
|
|
30
|
+
- Include type annotations and parameter descriptions
|
|
31
|
+
- Provide usage examples within docstrings
|
|
32
|
+
|
|
33
|
+
5. **User Guides**: Create practical documentation:
|
|
34
|
+
- Step-by-step tutorials for common use cases
|
|
35
|
+
- Code examples that users can copy and run
|
|
36
|
+
- Explanation of concepts and architecture when relevant
|
|
37
|
+
|
|
38
|
+
## Documentation Standards
|
|
39
|
+
|
|
40
|
+
- Write in clear, concise language avoiding jargon where possible
|
|
41
|
+
- Use consistent formatting and structure across all pages
|
|
42
|
+
- Include code examples with proper syntax highlighting
|
|
43
|
+
- Add cross-references between related topics using `:ref:`, `:doc:`, and `:class:` roles
|
|
44
|
+
- Ensure all public API elements have complete docstrings
|
|
45
|
+
- Follow the principle of progressive disclosure (simple first, details later)
|
|
46
|
+
|
|
47
|
+
## File Structure You Should Create
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
docs/
|
|
51
|
+
├── conf.py # Sphinx configuration
|
|
52
|
+
├── index.rst # Main landing page
|
|
53
|
+
├── installation.rst # Installation instructions
|
|
54
|
+
├── quickstart.rst # Getting started guide
|
|
55
|
+
├── user_guide/ # Detailed usage documentation
|
|
56
|
+
│ ├── index.rst
|
|
57
|
+
│ └── *.rst
|
|
58
|
+
├── api/ # API reference
|
|
59
|
+
│ ├── index.rst
|
|
60
|
+
│ └── *.rst
|
|
61
|
+
├── changelog.rst # Version history
|
|
62
|
+
├── requirements.txt # Docs dependencies
|
|
63
|
+
└── Makefile # Build shortcuts
|
|
64
|
+
.readthedocs.yaml # RTD configuration (in repo root)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Quality Checklist
|
|
68
|
+
|
|
69
|
+
Before considering documentation complete, verify:
|
|
70
|
+
- [ ] All public API elements are documented
|
|
71
|
+
- [ ] Code examples are tested and working
|
|
72
|
+
- [ ] Navigation is intuitive and complete
|
|
73
|
+
- [ ] Cross-references resolve correctly
|
|
74
|
+
- [ ] Build completes without warnings
|
|
75
|
+
- [ ] Mobile/responsive layout works
|
|
76
|
+
|
|
77
|
+
## Working with Existing Code
|
|
78
|
+
|
|
79
|
+
When documenting an existing codebase:
|
|
80
|
+
1. Analyze the project structure to understand the architecture
|
|
81
|
+
2. Identify the main entry points users will interact with
|
|
82
|
+
3. Review existing docstrings and enhance where needed
|
|
83
|
+
4. Create documentation that matches the actual code organization
|
|
84
|
+
5. Reference the project's CLAUDE.md or similar files for context on architecture and patterns
|
|
85
|
+
|
|
86
|
+
## Best Practices for This Project (PIPolars)
|
|
87
|
+
|
|
88
|
+
Given this is a Python library for PI System data extraction:
|
|
89
|
+
- Emphasize Windows and PI AF SDK requirements prominently
|
|
90
|
+
- Document time expression formats (`*-1h`, `*-1d`, `t`, `y`) clearly
|
|
91
|
+
- Show examples with Polars DataFrame outputs
|
|
92
|
+
- Include troubleshooting for common PI connection issues
|
|
93
|
+
- Document the layered architecture (api, connection, extraction, transform, cache, core)
|
|
94
|
+
- Highlight the fluent query builder pattern
|
|
95
|
+
|
|
96
|
+
You should proactively create all necessary files, suggest improvements to existing docstrings, and ensure the documentation builds successfully with `sphinx-build`.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(tree:*)",
|
|
5
|
+
"Bash(cat:*)",
|
|
6
|
+
"Bash(uv run pytest:*)",
|
|
7
|
+
"Bash(uv run python:*)",
|
|
8
|
+
"Bash(uv sync:*)",
|
|
9
|
+
"Bash(uv run:*)",
|
|
10
|
+
"Bash(set UV_LINK_MODE=copy)",
|
|
11
|
+
"Bash(\".venv\\\\Scripts\\\\ruff.exe\" check src)",
|
|
12
|
+
"Bash(\".venv\\\\Scripts\\\\python.exe\" -m pytest tests/unit -v)",
|
|
13
|
+
"Bash(\".venv\\\\Scripts\\\\python.exe\" -m mypy src)",
|
|
14
|
+
"Bash(mkdir -p:*)",
|
|
15
|
+
"Bash(uv pip install:*)",
|
|
16
|
+
"Bash(git -C \"C:\\\\Users\\\\serdar.gundogdu\\\\OneDrive - Enerjisa Üretim\\\\GOALS\\\\01_PROJECTS\\\\AI-FIRST_2026\\\\pipolars\" log --oneline)",
|
|
17
|
+
"Bash(git -C \"C:\\\\Users\\\\serdar.gundogdu\\\\OneDrive - Enerjisa Üretim\\\\GOALS\\\\01_PROJECTS\\\\AI-FIRST_2026\\\\pipolars\" remote:*)",
|
|
18
|
+
"Bash(uv build:*)"
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
}
|
pipolars-0.1.2/.coverage
ADDED
|
Binary file
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: windows-latest
|
|
12
|
+
strategy:
|
|
13
|
+
fail-fast: false
|
|
14
|
+
matrix:
|
|
15
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
with:
|
|
20
|
+
fetch-depth: 0
|
|
21
|
+
|
|
22
|
+
- name: Install uv
|
|
23
|
+
uses: astral-sh/setup-uv@v4
|
|
24
|
+
|
|
25
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
26
|
+
run: uv python install ${{ matrix.python-version }}
|
|
27
|
+
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: uv sync --all-extras
|
|
30
|
+
|
|
31
|
+
- name: Run linting
|
|
32
|
+
run: uv run ruff check src
|
|
33
|
+
|
|
34
|
+
- name: Run type checking
|
|
35
|
+
run: uv run mypy src
|
|
36
|
+
|
|
37
|
+
- name: Run unit tests
|
|
38
|
+
run: uv run pytest tests/unit -v
|
|
39
|
+
|
|
40
|
+
build:
|
|
41
|
+
runs-on: windows-latest
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v4
|
|
44
|
+
with:
|
|
45
|
+
fetch-depth: 0
|
|
46
|
+
|
|
47
|
+
- name: Install uv
|
|
48
|
+
uses: astral-sh/setup-uv@v4
|
|
49
|
+
|
|
50
|
+
- name: Build package
|
|
51
|
+
run: uv build
|
|
52
|
+
|
|
53
|
+
- name: Check package metadata
|
|
54
|
+
run: uvx twine check dist/*
|
|
55
|
+
|
|
56
|
+
- name: Upload build artifacts
|
|
57
|
+
uses: actions/upload-artifact@v4
|
|
58
|
+
with:
|
|
59
|
+
name: dist
|
|
60
|
+
path: dist/
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
inputs:
|
|
8
|
+
tag:
|
|
9
|
+
description: 'Git tag to publish (e.g., v0.1.0)'
|
|
10
|
+
required: true
|
|
11
|
+
type: string
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
id-token: write # Required for trusted publishing
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
build:
|
|
18
|
+
runs-on: windows-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
with:
|
|
22
|
+
fetch-depth: 0
|
|
23
|
+
ref: ${{ github.event.inputs.tag || github.ref }}
|
|
24
|
+
|
|
25
|
+
- name: Verify on a tag
|
|
26
|
+
shell: bash
|
|
27
|
+
run: |
|
|
28
|
+
if ! git describe --exact-match --tags HEAD 2>/dev/null; then
|
|
29
|
+
echo "ERROR: Not on a git tag. PyPI requires clean version numbers."
|
|
30
|
+
echo "Current version would be: $(git describe --tags --always)"
|
|
31
|
+
exit 1
|
|
32
|
+
fi
|
|
33
|
+
echo "Building from tag: $(git describe --exact-match --tags HEAD)"
|
|
34
|
+
|
|
35
|
+
- name: Install uv
|
|
36
|
+
uses: astral-sh/setup-uv@v4
|
|
37
|
+
|
|
38
|
+
- name: Build package
|
|
39
|
+
run: uv build
|
|
40
|
+
|
|
41
|
+
- name: Upload build artifacts
|
|
42
|
+
uses: actions/upload-artifact@v4
|
|
43
|
+
with:
|
|
44
|
+
name: dist
|
|
45
|
+
path: dist/
|
|
46
|
+
|
|
47
|
+
publish:
|
|
48
|
+
needs: build
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
environment: pypi
|
|
51
|
+
|
|
52
|
+
steps:
|
|
53
|
+
- name: Download build artifacts
|
|
54
|
+
uses: actions/download-artifact@v4
|
|
55
|
+
with:
|
|
56
|
+
name: dist
|
|
57
|
+
path: dist/
|
|
58
|
+
|
|
59
|
+
- name: Publish to PyPI
|
|
60
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Read the Docs configuration file for PIPolars
|
|
2
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
|
3
|
+
|
|
4
|
+
# Required
|
|
5
|
+
version: 2
|
|
6
|
+
|
|
7
|
+
# Set the OS, Python version, and other tools you might need
|
|
8
|
+
build:
|
|
9
|
+
os: ubuntu-22.04
|
|
10
|
+
tools:
|
|
11
|
+
python: "3.11"
|
|
12
|
+
|
|
13
|
+
# Build documentation in the "docs/" directory with Sphinx
|
|
14
|
+
sphinx:
|
|
15
|
+
configuration: docs/conf.py
|
|
16
|
+
builder: html
|
|
17
|
+
fail_on_warning: false
|
|
18
|
+
|
|
19
|
+
# Declare the Python requirements required to build your documentation
|
|
20
|
+
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
|
|
21
|
+
python:
|
|
22
|
+
install:
|
|
23
|
+
- requirements: docs/requirements.txt
|
|
24
|
+
- method: pip
|
|
25
|
+
path: .
|
|
26
|
+
extra_requirements:
|
|
27
|
+
- docs
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.1.0] - 2024-XX-XX
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Initial release of PIPolars
|
|
15
|
+
- `PIClient` for connecting to PI Data Archive servers
|
|
16
|
+
- `PIQuery` fluent interface for building data extraction queries
|
|
17
|
+
- Polars DataFrame output for high-performance data processing
|
|
18
|
+
- Caching support with multiple backends:
|
|
19
|
+
- In-memory cache
|
|
20
|
+
- SQLite persistent cache
|
|
21
|
+
- Arrow IPC file cache
|
|
22
|
+
- Windows authentication support
|
|
23
|
+
- PI time expression parsing (`*-1h`, `*-1d`, `t`, `y`, etc.)
|
|
24
|
+
- Support for recorded values, interpolated values, and plot values retrieval
|
|
25
|
+
- Summary calculations (average, min, max, total, count, etc.)
|
|
26
|
+
- Digital state value handling
|
|
27
|
+
- Comprehensive type hints with `py.typed` marker
|
pipolars-0.1.2/CLAUDE.md
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
PIPolars is a Python library for extracting data from OSIsoft PI System and converting it to Polars DataFrames. It requires Windows with the PI AF SDK installed.
|
|
8
|
+
|
|
9
|
+
## Development Commands
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Install dependencies
|
|
13
|
+
uv sync --all-extras
|
|
14
|
+
|
|
15
|
+
# Run all tests
|
|
16
|
+
uv run pytest
|
|
17
|
+
|
|
18
|
+
# Run unit tests only
|
|
19
|
+
uv run pytest tests/unit
|
|
20
|
+
|
|
21
|
+
# Run integration tests (requires PI connection)
|
|
22
|
+
PI_SERVER=my-server uv run pytest -m integration
|
|
23
|
+
|
|
24
|
+
# Run tests with coverage
|
|
25
|
+
uv run pytest --cov=pipolars --cov-report=html
|
|
26
|
+
|
|
27
|
+
# Type checking
|
|
28
|
+
uv run mypy src
|
|
29
|
+
|
|
30
|
+
# Linting
|
|
31
|
+
uv run ruff check src
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Architecture
|
|
35
|
+
|
|
36
|
+
The codebase follows a layered architecture in `src/pipolars/`:
|
|
37
|
+
|
|
38
|
+
- **api/** - User-facing API layer
|
|
39
|
+
- `client.py` - `PIClient` class, main entry point for users
|
|
40
|
+
- `query.py` - Fluent query builder (`PIQuery`) for method chaining
|
|
41
|
+
- `lazy.py` - Polars LazyFrame support
|
|
42
|
+
|
|
43
|
+
- **connection/** - PI System connectivity
|
|
44
|
+
- `server.py` - PI Data Archive connections
|
|
45
|
+
- `af_database.py` - AF Database connections
|
|
46
|
+
- `sdk.py` - OSIsoft AF SDK wrapper using pythonnet
|
|
47
|
+
- `auth.py` - Authentication handlers (Windows/explicit)
|
|
48
|
+
|
|
49
|
+
- **extraction/** - Data retrieval from PI
|
|
50
|
+
- `points.py` - Single PI Point extraction
|
|
51
|
+
- `bulk.py` - Bulk operations for multiple tags
|
|
52
|
+
- `attributes.py`, `elements.py`, `events.py` - AF-specific extractors
|
|
53
|
+
|
|
54
|
+
- **transform/** - Data conversion to Polars
|
|
55
|
+
- `converters.py` - PI types to Polars conversion
|
|
56
|
+
- `timestamps.py` - Timestamp normalization
|
|
57
|
+
- `digital_states.py` - Digital state value handling
|
|
58
|
+
|
|
59
|
+
- **cache/** - Result caching layer
|
|
60
|
+
- `storage.py` - Backend implementations (Memory, SQLite, Arrow IPC)
|
|
61
|
+
- `strategies.py` - TTL and eviction strategies
|
|
62
|
+
|
|
63
|
+
- **core/** - Shared types and configuration
|
|
64
|
+
- `config.py` - Pydantic configuration models (`PIConfig`, `PIServerConfig`, `CacheConfig`, etc.)
|
|
65
|
+
- `types.py` - Enums (`RetrievalMode`, `SummaryType`, `CacheBackend`) and data classes (`PIValue`, `TimeRange`)
|
|
66
|
+
- `exceptions.py` - Exception hierarchy rooted at `PIPolarsError`
|
|
67
|
+
|
|
68
|
+
## Key Patterns
|
|
69
|
+
|
|
70
|
+
- Uses Pydantic v2 for configuration validation
|
|
71
|
+
- pythonnet (clr) is used for .NET interop with the PI AF SDK
|
|
72
|
+
- Strict mypy type checking is enforced
|
|
73
|
+
- Integration tests are marked with `@pytest.mark.integration`
|
|
74
|
+
- PI time expressions like `*-1h`, `*-1d`, `t` (today), `y` (yesterday) are supported throughout
|
pipolars-0.1.2/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 serdar gundogdu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|