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.
Files changed (242) hide show
  1. pipolars-0.1.2/.claude/agents/docs-writer-sphinx.md +96 -0
  2. pipolars-0.1.2/.claude/settings.local.json +21 -0
  3. pipolars-0.1.2/.coverage +0 -0
  4. pipolars-0.1.2/.github/workflows/ci.yml +60 -0
  5. pipolars-0.1.2/.github/workflows/publish.yml +60 -0
  6. pipolars-0.1.2/.gitignore +3 -0
  7. pipolars-0.1.2/.readthedocs.yaml +27 -0
  8. pipolars-0.1.2/CHANGELOG.md +27 -0
  9. pipolars-0.1.2/CLAUDE.md +74 -0
  10. pipolars-0.1.2/LICENSE +21 -0
  11. pipolars-0.1.2/PKG-INFO +355 -0
  12. pipolars-0.1.2/README.md +309 -0
  13. pipolars-0.1.2/docs/Makefile +53 -0
  14. pipolars-0.1.2/docs/_build/html/.buildinfo +4 -0
  15. pipolars-0.1.2/docs/_build/html/.doctrees/__intersphinx_cache__/polars_objects.inv +0 -0
  16. pipolars-0.1.2/docs/_build/html/.doctrees/__intersphinx_cache__/pydantic_objects.inv +0 -0
  17. pipolars-0.1.2/docs/_build/html/.doctrees/__intersphinx_cache__/python_objects.inv +0 -0
  18. pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.AFTime.doctree +0 -0
  19. pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.DataQuality.doctree +0 -0
  20. pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIClient.doctree +0 -0
  21. pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIConfig.doctree +0 -0
  22. pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIConnectionError.doctree +0 -0
  23. pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIDataError.doctree +0 -0
  24. pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIPolarsError.doctree +0 -0
  25. pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIQuery.doctree +0 -0
  26. pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIQueryError.doctree +0 -0
  27. pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.PIValue.doctree +0 -0
  28. pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.RetrievalMode.doctree +0 -0
  29. pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.SummaryType.doctree +0 -0
  30. pipolars-0.1.2/docs/_build/html/.doctrees/api/_autosummary/pipolars.TimestampMode.doctree +0 -0
  31. pipolars-0.1.2/docs/_build/html/.doctrees/api/cache.doctree +0 -0
  32. pipolars-0.1.2/docs/_build/html/.doctrees/api/client.doctree +0 -0
  33. pipolars-0.1.2/docs/_build/html/.doctrees/api/config.doctree +0 -0
  34. pipolars-0.1.2/docs/_build/html/.doctrees/api/exceptions.doctree +0 -0
  35. pipolars-0.1.2/docs/_build/html/.doctrees/api/index.doctree +0 -0
  36. pipolars-0.1.2/docs/_build/html/.doctrees/api/query.doctree +0 -0
  37. pipolars-0.1.2/docs/_build/html/.doctrees/api/types.doctree +0 -0
  38. pipolars-0.1.2/docs/_build/html/.doctrees/changelog.doctree +0 -0
  39. pipolars-0.1.2/docs/_build/html/.doctrees/contributing.doctree +0 -0
  40. pipolars-0.1.2/docs/_build/html/.doctrees/environment.pickle +0 -0
  41. pipolars-0.1.2/docs/_build/html/.doctrees/index.doctree +0 -0
  42. pipolars-0.1.2/docs/_build/html/.doctrees/installation.doctree +0 -0
  43. pipolars-0.1.2/docs/_build/html/.doctrees/license.doctree +0 -0
  44. pipolars-0.1.2/docs/_build/html/.doctrees/quickstart.doctree +0 -0
  45. pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/advanced.doctree +0 -0
  46. pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/caching.doctree +0 -0
  47. pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/configuration.doctree +0 -0
  48. pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/connecting.doctree +0 -0
  49. pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/dataframes.doctree +0 -0
  50. pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/index.doctree +0 -0
  51. pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/querying.doctree +0 -0
  52. pipolars-0.1.2/docs/_build/html/.doctrees/user_guide/time_expressions.doctree +0 -0
  53. pipolars-0.1.2/docs/_build/html/.nojekyll +0 -0
  54. pipolars-0.1.2/docs/_build/html/_modules/index.html +347 -0
  55. pipolars-0.1.2/docs/_build/html/_modules/pipolars/api/client.html +949 -0
  56. pipolars-0.1.2/docs/_build/html/_modules/pipolars/api/query.html +823 -0
  57. pipolars-0.1.2/docs/_build/html/_modules/pipolars/cache/storage.html +1091 -0
  58. pipolars-0.1.2/docs/_build/html/_modules/pipolars/cache/strategies.html +783 -0
  59. pipolars-0.1.2/docs/_build/html/_modules/pipolars/core/config.html +639 -0
  60. pipolars-0.1.2/docs/_build/html/_modules/pipolars/core/exceptions.html +637 -0
  61. pipolars-0.1.2/docs/_build/html/_modules/pipolars/core/types.html +764 -0
  62. pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.AFTime.rst.txt +33 -0
  63. pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.DataQuality.rst.txt +44 -0
  64. pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIClient.rst.txt +47 -0
  65. pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIConfig.rst.txt +65 -0
  66. pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIConnectionError.rst.txt +6 -0
  67. pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIDataError.rst.txt +6 -0
  68. pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIPolarsError.rst.txt +6 -0
  69. pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIQuery.rst.txt +41 -0
  70. pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIQueryError.rst.txt +6 -0
  71. pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.PIValue.rst.txt +32 -0
  72. pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.RetrievalMode.rst.txt +79 -0
  73. pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.SummaryType.rst.txt +51 -0
  74. pipolars-0.1.2/docs/_build/html/_sources/api/_autosummary/pipolars.TimestampMode.rst.txt +78 -0
  75. pipolars-0.1.2/docs/_build/html/_sources/api/cache.rst.txt +338 -0
  76. pipolars-0.1.2/docs/_build/html/_sources/api/client.rst.txt +167 -0
  77. pipolars-0.1.2/docs/_build/html/_sources/api/config.rst.txt +392 -0
  78. pipolars-0.1.2/docs/_build/html/_sources/api/exceptions.rst.txt +404 -0
  79. pipolars-0.1.2/docs/_build/html/_sources/api/index.rst.txt +82 -0
  80. pipolars-0.1.2/docs/_build/html/_sources/api/query.rst.txt +203 -0
  81. pipolars-0.1.2/docs/_build/html/_sources/api/types.rst.txt +379 -0
  82. pipolars-0.1.2/docs/_build/html/_sources/changelog.rst.txt +95 -0
  83. pipolars-0.1.2/docs/_build/html/_sources/contributing.rst.txt +290 -0
  84. pipolars-0.1.2/docs/_build/html/_sources/index.rst.txt +93 -0
  85. pipolars-0.1.2/docs/_build/html/_sources/installation.rst.txt +210 -0
  86. pipolars-0.1.2/docs/_build/html/_sources/license.rst.txt +66 -0
  87. pipolars-0.1.2/docs/_build/html/_sources/quickstart.rst.txt +279 -0
  88. pipolars-0.1.2/docs/_build/html/_sources/user_guide/advanced.rst.txt +475 -0
  89. pipolars-0.1.2/docs/_build/html/_sources/user_guide/caching.rst.txt +349 -0
  90. pipolars-0.1.2/docs/_build/html/_sources/user_guide/configuration.rst.txt +389 -0
  91. pipolars-0.1.2/docs/_build/html/_sources/user_guide/connecting.rst.txt +230 -0
  92. pipolars-0.1.2/docs/_build/html/_sources/user_guide/dataframes.rst.txt +406 -0
  93. pipolars-0.1.2/docs/_build/html/_sources/user_guide/index.rst.txt +81 -0
  94. pipolars-0.1.2/docs/_build/html/_sources/user_guide/querying.rst.txt +416 -0
  95. pipolars-0.1.2/docs/_build/html/_sources/user_guide/time_expressions.rst.txt +336 -0
  96. pipolars-0.1.2/docs/_build/html/_static/base-stemmer.js +476 -0
  97. pipolars-0.1.2/docs/_build/html/_static/basic.css +906 -0
  98. pipolars-0.1.2/docs/_build/html/_static/check-solid.svg +4 -0
  99. pipolars-0.1.2/docs/_build/html/_static/clipboard.min.js +7 -0
  100. pipolars-0.1.2/docs/_build/html/_static/copy-button.svg +5 -0
  101. pipolars-0.1.2/docs/_build/html/_static/copybutton.css +94 -0
  102. pipolars-0.1.2/docs/_build/html/_static/copybutton.js +248 -0
  103. pipolars-0.1.2/docs/_build/html/_static/copybutton_funcs.js +73 -0
  104. pipolars-0.1.2/docs/_build/html/_static/debug.css +69 -0
  105. pipolars-0.1.2/docs/_build/html/_static/doctools.js +150 -0
  106. pipolars-0.1.2/docs/_build/html/_static/documentation_options.js +13 -0
  107. pipolars-0.1.2/docs/_build/html/_static/english-stemmer.js +1066 -0
  108. pipolars-0.1.2/docs/_build/html/_static/file.png +0 -0
  109. pipolars-0.1.2/docs/_build/html/_static/language_data.js +13 -0
  110. pipolars-0.1.2/docs/_build/html/_static/minus.png +0 -0
  111. pipolars-0.1.2/docs/_build/html/_static/plus.png +0 -0
  112. pipolars-0.1.2/docs/_build/html/_static/pygments.css +250 -0
  113. pipolars-0.1.2/docs/_build/html/_static/scripts/furo-extensions.js +0 -0
  114. pipolars-0.1.2/docs/_build/html/_static/scripts/furo.js +3 -0
  115. pipolars-0.1.2/docs/_build/html/_static/scripts/furo.js.LICENSE.txt +7 -0
  116. pipolars-0.1.2/docs/_build/html/_static/scripts/furo.js.map +1 -0
  117. pipolars-0.1.2/docs/_build/html/_static/searchtools.js +693 -0
  118. pipolars-0.1.2/docs/_build/html/_static/skeleton.css +296 -0
  119. pipolars-0.1.2/docs/_build/html/_static/sphinx_highlight.js +159 -0
  120. pipolars-0.1.2/docs/_build/html/_static/styles/furo-extensions.css +2 -0
  121. pipolars-0.1.2/docs/_build/html/_static/styles/furo-extensions.css.map +1 -0
  122. pipolars-0.1.2/docs/_build/html/_static/styles/furo.css +2 -0
  123. pipolars-0.1.2/docs/_build/html/_static/styles/furo.css.map +1 -0
  124. pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.AFTime.html +528 -0
  125. pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.DataQuality.html +521 -0
  126. pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIClient.html +923 -0
  127. pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIConfig.html +630 -0
  128. pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIConnectionError.html +411 -0
  129. pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIDataError.html +411 -0
  130. pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIPolarsError.html +422 -0
  131. pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIQuery.html +849 -0
  132. pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIQueryError.html +411 -0
  133. pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.PIValue.html +484 -0
  134. pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.RetrievalMode.html +619 -0
  135. pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.SummaryType.html +578 -0
  136. pipolars-0.1.2/docs/_build/html/api/_autosummary/pipolars.TimestampMode.html +608 -0
  137. pipolars-0.1.2/docs/_build/html/api/cache.html +1148 -0
  138. pipolars-0.1.2/docs/_build/html/api/client.html +1319 -0
  139. pipolars-0.1.2/docs/_build/html/api/config.html +1566 -0
  140. pipolars-0.1.2/docs/_build/html/api/exceptions.html +1042 -0
  141. pipolars-0.1.2/docs/_build/html/api/index.html +570 -0
  142. pipolars-0.1.2/docs/_build/html/api/query.html +1383 -0
  143. pipolars-0.1.2/docs/_build/html/api/types.html +1715 -0
  144. pipolars-0.1.2/docs/_build/html/changelog.html +496 -0
  145. pipolars-0.1.2/docs/_build/html/contributing.html +699 -0
  146. pipolars-0.1.2/docs/_build/html/genindex.html +1355 -0
  147. pipolars-0.1.2/docs/_build/html/index.html +643 -0
  148. pipolars-0.1.2/docs/_build/html/installation.html +593 -0
  149. pipolars-0.1.2/docs/_build/html/license.html +444 -0
  150. pipolars-0.1.2/docs/_build/html/objects.inv +0 -0
  151. pipolars-0.1.2/docs/_build/html/py-modindex.html +405 -0
  152. pipolars-0.1.2/docs/_build/html/quickstart.html +674 -0
  153. pipolars-0.1.2/docs/_build/html/search.html +353 -0
  154. pipolars-0.1.2/docs/_build/html/searchindex.js +1 -0
  155. pipolars-0.1.2/docs/_build/html/user_guide/advanced.html +854 -0
  156. pipolars-0.1.2/docs/_build/html/user_guide/caching.html +756 -0
  157. pipolars-0.1.2/docs/_build/html/user_guide/configuration.html +754 -0
  158. pipolars-0.1.2/docs/_build/html/user_guide/connecting.html +605 -0
  159. pipolars-0.1.2/docs/_build/html/user_guide/dataframes.html +800 -0
  160. pipolars-0.1.2/docs/_build/html/user_guide/index.html +566 -0
  161. pipolars-0.1.2/docs/_build/html/user_guide/querying.html +802 -0
  162. pipolars-0.1.2/docs/_build/html/user_guide/time_expressions.html +789 -0
  163. pipolars-0.1.2/docs/api/_autosummary/pipolars.AFTime.rst +33 -0
  164. pipolars-0.1.2/docs/api/_autosummary/pipolars.DataQuality.rst +44 -0
  165. pipolars-0.1.2/docs/api/_autosummary/pipolars.PIClient.rst +47 -0
  166. pipolars-0.1.2/docs/api/_autosummary/pipolars.PIConfig.rst +65 -0
  167. pipolars-0.1.2/docs/api/_autosummary/pipolars.PIConnectionError.rst +6 -0
  168. pipolars-0.1.2/docs/api/_autosummary/pipolars.PIDataError.rst +6 -0
  169. pipolars-0.1.2/docs/api/_autosummary/pipolars.PIPolarsError.rst +6 -0
  170. pipolars-0.1.2/docs/api/_autosummary/pipolars.PIQuery.rst +41 -0
  171. pipolars-0.1.2/docs/api/_autosummary/pipolars.PIQueryError.rst +6 -0
  172. pipolars-0.1.2/docs/api/_autosummary/pipolars.PIValue.rst +32 -0
  173. pipolars-0.1.2/docs/api/_autosummary/pipolars.RetrievalMode.rst +79 -0
  174. pipolars-0.1.2/docs/api/_autosummary/pipolars.SummaryType.rst +51 -0
  175. pipolars-0.1.2/docs/api/_autosummary/pipolars.TimestampMode.rst +78 -0
  176. pipolars-0.1.2/docs/api/cache.rst +338 -0
  177. pipolars-0.1.2/docs/api/client.rst +167 -0
  178. pipolars-0.1.2/docs/api/config.rst +392 -0
  179. pipolars-0.1.2/docs/api/exceptions.rst +404 -0
  180. pipolars-0.1.2/docs/api/index.rst +82 -0
  181. pipolars-0.1.2/docs/api/query.rst +203 -0
  182. pipolars-0.1.2/docs/api/types.rst +379 -0
  183. pipolars-0.1.2/docs/changelog.rst +95 -0
  184. pipolars-0.1.2/docs/conf.py +157 -0
  185. pipolars-0.1.2/docs/contributing.rst +290 -0
  186. pipolars-0.1.2/docs/index.rst +93 -0
  187. pipolars-0.1.2/docs/installation.rst +210 -0
  188. pipolars-0.1.2/docs/license.rst +66 -0
  189. pipolars-0.1.2/docs/make.bat +54 -0
  190. pipolars-0.1.2/docs/quickstart.rst +279 -0
  191. pipolars-0.1.2/docs/requirements.txt +21 -0
  192. pipolars-0.1.2/docs/user_guide/advanced.rst +475 -0
  193. pipolars-0.1.2/docs/user_guide/caching.rst +349 -0
  194. pipolars-0.1.2/docs/user_guide/configuration.rst +389 -0
  195. pipolars-0.1.2/docs/user_guide/connecting.rst +230 -0
  196. pipolars-0.1.2/docs/user_guide/dataframes.rst +406 -0
  197. pipolars-0.1.2/docs/user_guide/index.rst +81 -0
  198. pipolars-0.1.2/docs/user_guide/querying.rst +416 -0
  199. pipolars-0.1.2/docs/user_guide/time_expressions.rst +336 -0
  200. pipolars-0.1.2/examples/basic_usage.py +262 -0
  201. pipolars-0.1.2/examples/bulk_extraction.py +243 -0
  202. pipolars-0.1.2/examples/data_science_workflow.py +301 -0
  203. pipolars-0.1.2/pyproject.toml +161 -0
  204. pipolars-0.1.2/scripts/standalone_example.py +95 -0
  205. pipolars-0.1.2/src/pipolars/__init__.py +57 -0
  206. pipolars-0.1.2/src/pipolars/_version.py +34 -0
  207. pipolars-0.1.2/src/pipolars/api/__init__.py +15 -0
  208. pipolars-0.1.2/src/pipolars/api/client.py +547 -0
  209. pipolars-0.1.2/src/pipolars/api/lazy.py +474 -0
  210. pipolars-0.1.2/src/pipolars/api/query.py +412 -0
  211. pipolars-0.1.2/src/pipolars/cache/__init__.py +29 -0
  212. pipolars-0.1.2/src/pipolars/cache/storage.py +653 -0
  213. pipolars-0.1.2/src/pipolars/cache/strategies.py +432 -0
  214. pipolars-0.1.2/src/pipolars/connection/__init__.py +17 -0
  215. pipolars-0.1.2/src/pipolars/connection/af_database.py +335 -0
  216. pipolars-0.1.2/src/pipolars/connection/auth.py +240 -0
  217. pipolars-0.1.2/src/pipolars/connection/sdk.py +308 -0
  218. pipolars-0.1.2/src/pipolars/connection/server.py +339 -0
  219. pipolars-0.1.2/src/pipolars/core/__init__.py +31 -0
  220. pipolars-0.1.2/src/pipolars/core/config.py +264 -0
  221. pipolars-0.1.2/src/pipolars/core/exceptions.py +238 -0
  222. pipolars-0.1.2/src/pipolars/core/types.py +365 -0
  223. pipolars-0.1.2/src/pipolars/extraction/__init__.py +23 -0
  224. pipolars-0.1.2/src/pipolars/extraction/attributes.py +377 -0
  225. pipolars-0.1.2/src/pipolars/extraction/bulk.py +521 -0
  226. pipolars-0.1.2/src/pipolars/extraction/elements.py +295 -0
  227. pipolars-0.1.2/src/pipolars/extraction/events.py +403 -0
  228. pipolars-0.1.2/src/pipolars/extraction/points.py +631 -0
  229. pipolars-0.1.2/src/pipolars/py.typed +0 -0
  230. pipolars-0.1.2/src/pipolars/transform/__init__.py +23 -0
  231. pipolars-0.1.2/src/pipolars/transform/converters.py +381 -0
  232. pipolars-0.1.2/src/pipolars/transform/digital_states.py +289 -0
  233. pipolars-0.1.2/src/pipolars/transform/timestamps.py +299 -0
  234. pipolars-0.1.2/tests/__init__.py +1 -0
  235. pipolars-0.1.2/tests/conftest.py +105 -0
  236. pipolars-0.1.2/tests/integration/__init__.py +5 -0
  237. pipolars-0.1.2/tests/integration/test_client.py +119 -0
  238. pipolars-0.1.2/tests/unit/__init__.py +1 -0
  239. pipolars-0.1.2/tests/unit/test_config.py +122 -0
  240. pipolars-0.1.2/tests/unit/test_converters.py +186 -0
  241. pipolars-0.1.2/tests/unit/test_types.py +145 -0
  242. 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
+ }
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,3 @@
1
+ .venv
2
+ __pycache__
3
+ examples/test_pipolars.py
@@ -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
@@ -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.