pyrox-client 0.2.0__tar.gz → 0.2.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 (23) hide show
  1. {pyrox_client-0.2.0 → pyrox_client-0.2.2}/.gitignore +2 -0
  2. pyrox_client-0.2.2/.venv-pyrox-test/lib/python3.13/site-packages/pandas/pyproject.toml +819 -0
  3. pyrox_client-0.2.2/.venv-pyrox-test/lib/python3.13/site-packages/pyarrow/tests/data/orc/README.md +22 -0
  4. {pyrox_client-0.2.0 → pyrox_client-0.2.2}/PKG-INFO +9 -2
  5. {pyrox_client-0.2.0 → pyrox_client-0.2.2}/README.md +7 -1
  6. pyrox_client-0.2.2/example_notebooks/event_dists/event_2024_Dallas.png +0 -0
  7. pyrox_client-0.2.2/example_notebooks/event_dists/event_2024_Hamburg.png +0 -0
  8. pyrox_client-0.2.2/example_notebooks/event_dists/event_2024_London.png +0 -0
  9. pyrox_client-0.2.2/example_notebooks/event_dists/event_2024_Paris.png +0 -0
  10. pyrox_client-0.2.2/example_notebooks/event_dists/event_2025_Barcelona.png +0 -0
  11. pyrox_client-0.2.2/example_notebooks/event_dists/event_2025_Berlin.png +0 -0
  12. pyrox_client-0.2.2/example_notebooks/event_dists/event_2025_Glasgow.png +0 -0
  13. pyrox_client-0.2.2/example_notebooks/event_dists/event_2025_Johannesburg.png +0 -0
  14. pyrox_client-0.2.2/example_notebooks/event_dists/event_2025_Malaga.png +0 -0
  15. pyrox_client-0.2.2/example_notebooks/event_dists/event_2025_Shanghai.png +0 -0
  16. {pyrox_client-0.2.0 → pyrox_client-0.2.2}/pyproject.toml +5 -0
  17. {pyrox_client-0.2.0 → pyrox_client-0.2.2}/src/pyrox/__init__.py +1 -1
  18. {pyrox_client-0.2.0 → pyrox_client-0.2.2}/src/pyrox/core.py +1 -11
  19. {pyrox_client-0.2.0 → pyrox_client-0.2.2}/img.png +0 -0
  20. {pyrox_client-0.2.0 → pyrox_client-0.2.2}/img_1.png +0 -0
  21. {pyrox_client-0.2.0 → pyrox_client-0.2.2}/src/pyrox/constants.py +0 -0
  22. {pyrox_client-0.2.0 → pyrox_client-0.2.2}/src/pyrox/errors.py +0 -0
  23. {pyrox_client-0.2.0 → pyrox_client-0.2.2}/src/pyrox/helpers.py +0 -0
@@ -1,3 +1,5 @@
1
1
  *.pyc
2
2
 
3
3
  /src/pyrox/__pycache__/
4
+
5
+ site/
@@ -0,0 +1,819 @@
1
+ [build-system]
2
+ # Minimum requirements for the build system to execute.
3
+ # See https://github.com/scipy/scipy/pull/12940 for the AIX issue.
4
+ requires = [
5
+ "meson-python>=0.13.1",
6
+ "meson>=1.2.1,<2",
7
+ "wheel",
8
+ "Cython<4.0.0a0", # Note: sync with setup.py, environment.yml and asv.conf.json
9
+ # Force numpy higher than 2.0rc1, so that built wheels are compatible
10
+ # with both numpy 1 and 2
11
+ "numpy>=2.0",
12
+ "versioneer[toml]"
13
+ ]
14
+
15
+ build-backend = "mesonpy"
16
+
17
+ [project]
18
+ name = 'pandas'
19
+ dynamic = [
20
+ 'version'
21
+ ]
22
+ description = 'Powerful data structures for data analysis, time series, and statistics'
23
+ readme = 'README.md'
24
+ authors = [
25
+ { name = 'The Pandas Development Team', email='pandas-dev@python.org' },
26
+ ]
27
+ license = {file = 'LICENSE'}
28
+ requires-python = '>=3.9'
29
+ dependencies = [
30
+ "numpy>=1.22.4; python_version<'3.11'",
31
+ "numpy>=1.23.2; python_version=='3.11'",
32
+ "numpy>=1.26.0; python_version>='3.12'",
33
+ "python-dateutil>=2.8.2",
34
+ "pytz>=2020.1",
35
+ "tzdata>=2022.7"
36
+ ]
37
+ classifiers = [
38
+ 'Development Status :: 5 - Production/Stable',
39
+ 'Environment :: Console',
40
+ 'Intended Audience :: Science/Research',
41
+ 'License :: OSI Approved :: BSD License',
42
+ 'Operating System :: OS Independent',
43
+ 'Programming Language :: Cython',
44
+ 'Programming Language :: Python',
45
+ 'Programming Language :: Python :: 3',
46
+ 'Programming Language :: Python :: 3 :: Only',
47
+ 'Programming Language :: Python :: 3.9',
48
+ 'Programming Language :: Python :: 3.10',
49
+ 'Programming Language :: Python :: 3.11',
50
+ 'Programming Language :: Python :: 3.12',
51
+ 'Programming Language :: Python :: 3.13',
52
+ 'Programming Language :: Python :: 3.14',
53
+ 'Topic :: Scientific/Engineering'
54
+ ]
55
+
56
+ [project.urls]
57
+ homepage = 'https://pandas.pydata.org'
58
+ documentation = 'https://pandas.pydata.org/docs/'
59
+ repository = 'https://github.com/pandas-dev/pandas'
60
+
61
+ [project.entry-points."pandas_plotting_backends"]
62
+ matplotlib = "pandas:plotting._matplotlib"
63
+
64
+ [project.optional-dependencies]
65
+ test = ['hypothesis>=6.46.1', 'pytest>=7.3.2', 'pytest-xdist>=2.2.0']
66
+ pyarrow = ['pyarrow>=10.0.1']
67
+ performance = ['bottleneck>=1.3.6', 'numba>=0.56.4', 'numexpr>=2.8.4']
68
+ computation = ['scipy>=1.10.0', 'xarray>=2022.12.0']
69
+ fss = ['fsspec>=2022.11.0']
70
+ aws = ['s3fs>=2022.11.0']
71
+ gcp = ['gcsfs>=2022.11.0', 'pandas-gbq>=0.19.0']
72
+ excel = ['odfpy>=1.4.1', 'openpyxl>=3.1.0', 'python-calamine>=0.1.7', 'pyxlsb>=1.0.10', 'xlrd>=2.0.1', 'xlsxwriter>=3.0.5']
73
+ parquet = ['pyarrow>=10.0.1']
74
+ feather = ['pyarrow>=10.0.1']
75
+ hdf5 = [# blosc only available on conda (https://github.com/Blosc/python-blosc/issues/297)
76
+ #'blosc>=1.20.1',
77
+ 'tables>=3.8.0']
78
+ spss = ['pyreadstat>=1.2.0']
79
+ postgresql = ['SQLAlchemy>=2.0.0', 'psycopg2>=2.9.6', 'adbc-driver-postgresql>=0.8.0']
80
+ mysql = ['SQLAlchemy>=2.0.0', 'pymysql>=1.0.2']
81
+ sql-other = ['SQLAlchemy>=2.0.0', 'adbc-driver-postgresql>=0.8.0', 'adbc-driver-sqlite>=0.8.0']
82
+ html = ['beautifulsoup4>=4.11.2', 'html5lib>=1.1', 'lxml>=4.9.2']
83
+ xml = ['lxml>=4.9.2']
84
+ plot = ['matplotlib>=3.6.3']
85
+ output-formatting = ['jinja2>=3.1.2', 'tabulate>=0.9.0']
86
+ clipboard = ['PyQt5>=5.15.9', 'qtpy>=2.3.0']
87
+ compression = ['zstandard>=0.19.0']
88
+ consortium-standard = ['dataframe-api-compat>=0.1.7']
89
+ all = ['adbc-driver-postgresql>=0.8.0',
90
+ 'adbc-driver-sqlite>=0.8.0',
91
+ 'beautifulsoup4>=4.11.2',
92
+ # blosc only available on conda (https://github.com/Blosc/python-blosc/issues/297)
93
+ #'blosc>=1.21.3',
94
+ 'bottleneck>=1.3.6',
95
+ 'dataframe-api-compat>=0.1.7',
96
+ 'fastparquet>=2022.12.0',
97
+ 'fsspec>=2022.11.0',
98
+ 'gcsfs>=2022.11.0',
99
+ 'html5lib>=1.1',
100
+ 'hypothesis>=6.46.1',
101
+ 'jinja2>=3.1.2',
102
+ 'lxml>=4.9.2',
103
+ 'matplotlib>=3.6.3',
104
+ 'numba>=0.56.4',
105
+ 'numexpr>=2.8.4',
106
+ 'odfpy>=1.4.1',
107
+ 'openpyxl>=3.1.0',
108
+ 'pandas-gbq>=0.19.0',
109
+ 'psycopg2>=2.9.6',
110
+ 'pyarrow>=10.0.1',
111
+ 'pymysql>=1.0.2',
112
+ 'PyQt5>=5.15.9',
113
+ 'pyreadstat>=1.2.0',
114
+ 'pytest>=7.3.2',
115
+ 'pytest-xdist>=2.2.0',
116
+ 'python-calamine>=0.1.7',
117
+ 'pyxlsb>=1.0.10',
118
+ 'qtpy>=2.3.0',
119
+ 'scipy>=1.10.0',
120
+ 's3fs>=2022.11.0',
121
+ 'SQLAlchemy>=2.0.0',
122
+ 'tables>=3.8.0',
123
+ 'tabulate>=0.9.0',
124
+ 'xarray>=2022.12.0',
125
+ 'xlrd>=2.0.1',
126
+ 'xlsxwriter>=3.0.5',
127
+ 'zstandard>=0.19.0']
128
+
129
+ # TODO: Remove after setuptools support is dropped.
130
+ [tool.setuptools]
131
+ include-package-data = true
132
+
133
+ [tool.setuptools.packages.find]
134
+ include = ["pandas", "pandas.*"]
135
+ namespaces = false
136
+
137
+ [tool.setuptools.exclude-package-data]
138
+ "*" = ["*.c", "*.h"]
139
+
140
+ # See the docstring in versioneer.py for instructions. Note that you must
141
+ # re-run 'versioneer.py setup' after changing this section, and commit the
142
+ # resulting files.
143
+ [tool.versioneer]
144
+ VCS = "git"
145
+ style = "pep440"
146
+ versionfile_source = "pandas/_version.py"
147
+ versionfile_build = "pandas/_version.py"
148
+ tag_prefix = "v"
149
+ parentdir_prefix = "pandas-"
150
+
151
+ [tool.meson-python.args]
152
+ setup = ['--vsenv'] # For Windows
153
+
154
+ [tool.cibuildwheel]
155
+ skip = "cp38-* *_i686 *_ppc64le *_s390x"
156
+ build-verbosity = "3"
157
+ environment = {LDFLAGS="-Wl,--strip-all"}
158
+ # pytz 2024.2 causing some failures
159
+ test-requires = "hypothesis>=6.46.1 pytest>=7.3.2 pytest-xdist>=2.2.0 pytz<2024.2"
160
+ test-command = """
161
+ PANDAS_CI='1' python -c 'import pandas as pd; \
162
+ pd.test(extra_args=["-m not clipboard and not single_cpu and not slow and not network and not db", "-n 2", "--no-strict-data-files"]); \
163
+ pd.test(extra_args=["-m not clipboard and single_cpu and not slow and not network and not db", "--no-strict-data-files"]);' \
164
+ """
165
+ enable = ["cpython-freethreading"]
166
+ before-build = "PACKAGE_DIR={package} bash {package}/scripts/cibw_before_build.sh"
167
+
168
+ [tool.cibuildwheel.windows]
169
+ before-build = "pip install delvewheel"
170
+ repair-wheel-command = "delvewheel repair -w {dest_dir} {wheel}"
171
+
172
+ [[tool.cibuildwheel.overrides]]
173
+ select = "*-manylinux_aarch64*"
174
+ test-command = """
175
+ PANDAS_CI='1' python -c 'import pandas as pd; \
176
+ pd.test(extra_args=["-m not clipboard and not single_cpu and not slow and not network and not db and not fails_arm_wheels", "-n 2", "--no-strict-data-files"]); \
177
+ pd.test(extra_args=["-m not clipboard and single_cpu and not slow and not network and not db", "--no-strict-data-files"]);' \
178
+ """
179
+
180
+ [[tool.cibuildwheel.overrides]]
181
+ select = "*-musllinux*"
182
+ before-test = "apk update && apk add musl-locales"
183
+
184
+ [[tool.cibuildwheel.overrides]]
185
+ select = "*-win*"
186
+ # We test separately for Windows, since we use
187
+ # the windowsservercore docker image to check if any dlls are
188
+ # missing from the wheel
189
+ test-command = ""
190
+
191
+ [[tool.cibuildwheel.overrides]]
192
+ # Don't strip wheels on macOS.
193
+ # macOS doesn't support stripping wheels with linker
194
+ # https://github.com/MacPython/numpy-wheels/pull/87#issuecomment-624878264
195
+ select = "*-macosx*"
196
+ environment = {CFLAGS="-g0"}
197
+
198
+ [tool.black]
199
+ target-version = ['py39', 'py310']
200
+ required-version = '23.11.0'
201
+ exclude = '''
202
+ (
203
+ asv_bench/env
204
+ | \.egg
205
+ | \.git
206
+ | \.hg
207
+ | \.mypy_cache
208
+ | \.nox
209
+ | \.tox
210
+ | \.venv
211
+ | _build
212
+ | buck-out
213
+ | build
214
+ | dist
215
+ | setup.py
216
+ )
217
+ '''
218
+
219
+ [tool.ruff]
220
+ line-length = 88
221
+ target-version = "py310"
222
+ fix = true
223
+ unfixable = []
224
+ typing-modules = ["pandas._typing"]
225
+
226
+ select = [
227
+ # pyflakes
228
+ "F",
229
+ # pycodestyle
230
+ "E", "W",
231
+ # flake8-2020
232
+ "YTT",
233
+ # flake8-bugbear
234
+ "B",
235
+ # flake8-quotes
236
+ "Q",
237
+ # flake8-debugger
238
+ "T10",
239
+ # flake8-gettext
240
+ "INT",
241
+ # pylint
242
+ "PL",
243
+ # misc lints
244
+ "PIE",
245
+ # flake8-pyi
246
+ "PYI",
247
+ # tidy imports
248
+ "TID",
249
+ # implicit string concatenation
250
+ "ISC",
251
+ # type-checking imports
252
+ "TCH",
253
+ # comprehensions
254
+ "C4",
255
+ # pygrep-hooks
256
+ "PGH",
257
+ # Ruff-specific rules
258
+ "RUF",
259
+ # flake8-bandit: exec-builtin
260
+ "S102",
261
+ # numpy-legacy-random
262
+ "NPY002",
263
+ # Perflint
264
+ "PERF",
265
+ # flynt
266
+ "FLY",
267
+ # flake8-logging-format
268
+ "G",
269
+ # flake8-future-annotations
270
+ "FA",
271
+ ]
272
+
273
+ ignore = [
274
+ ### Intentionally disabled
275
+ # space before : (needed for how black formats slicing)
276
+ "E203",
277
+ # module level import not at top of file
278
+ "E402",
279
+ # do not assign a lambda expression, use a def
280
+ "E731",
281
+ # line break before binary operator
282
+ # "W503", # not yet implemented
283
+ # line break after binary operator
284
+ # "W504", # not yet implemented
285
+ # controversial
286
+ "B006",
287
+ # controversial
288
+ "B007",
289
+ # controversial
290
+ "B008",
291
+ # setattr is used to side-step mypy
292
+ "B009",
293
+ # getattr is used to side-step mypy
294
+ "B010",
295
+ # tests use assert False
296
+ "B011",
297
+ # tests use comparisons but not their returned value
298
+ "B015",
299
+ # false positives
300
+ "B019",
301
+ # Loop control variable overrides iterable it iterates
302
+ "B020",
303
+ # Function definition does not bind loop variable
304
+ "B023",
305
+ # Functions defined inside a loop must not use variables redefined in the loop
306
+ # "B301", # not yet implemented
307
+ # Only works with python >=3.10
308
+ "B905",
309
+ # Too many arguments to function call
310
+ "PLR0913",
311
+ # Too many returns
312
+ "PLR0911",
313
+ # Too many branches
314
+ "PLR0912",
315
+ # Too many statements
316
+ "PLR0915",
317
+ # Redefined loop name
318
+ "PLW2901",
319
+ # Global statements are discouraged
320
+ "PLW0603",
321
+ # Docstrings should not be included in stubs
322
+ "PYI021",
323
+ # Use `typing.NamedTuple` instead of `collections.namedtuple`
324
+ "PYI024",
325
+ # No builtin `eval()` allowed
326
+ "PGH001",
327
+ # compare-to-empty-string
328
+ "PLC1901",
329
+ # while int | float can be shortened to float, the former is more explicit
330
+ "PYI041",
331
+ # incorrect-dict-iterator, flags valid Series.items usage
332
+ "PERF102",
333
+ # try-except-in-loop, becomes useless in Python 3.11
334
+ "PERF203",
335
+
336
+
337
+ ### TODO: Enable gradually
338
+ # Useless statement
339
+ "B018",
340
+ # Within an except clause, raise exceptions with ...
341
+ "B904",
342
+ # Magic number
343
+ "PLR2004",
344
+ # comparison-with-itself
345
+ "PLR0124",
346
+ # Consider `elif` instead of `else` then `if` to remove indentation level
347
+ "PLR5501",
348
+ # collection-literal-concatenation
349
+ "RUF005",
350
+ # pairwise-over-zipped (>=PY310 only)
351
+ "RUF007",
352
+ # explicit-f-string-type-conversion
353
+ "RUF010",
354
+ # mutable-class-default
355
+ "RUF012"
356
+ ]
357
+
358
+ exclude = [
359
+ "doc/sphinxext/*.py",
360
+ "doc/build/*.py",
361
+ "doc/temp/*.py",
362
+ ".eggs/*.py",
363
+ # vendored files
364
+ "pandas/util/version/*",
365
+ "pandas/io/clipboard/__init__.py",
366
+ # exclude asv benchmark environments from linting
367
+ "env",
368
+ ]
369
+
370
+ [tool.ruff.per-file-ignores]
371
+ # relative imports allowed for asv_bench
372
+ "asv_bench/*" = ["TID", "NPY002"]
373
+ # to be enabled gradually
374
+ "pandas/core/*" = ["PLR5501"]
375
+ "pandas/tests/*" = ["B028", "FLY"]
376
+ "scripts/*" = ["B028"]
377
+ # Keep this one enabled
378
+ "pandas/_typing.py" = ["TCH"]
379
+
380
+ [tool.pylint.messages_control]
381
+ max-line-length = 88
382
+ disable = [
383
+ # intentionally turned off
384
+ "bad-mcs-classmethod-argument",
385
+ "broad-except",
386
+ "c-extension-no-member",
387
+ "comparison-with-itself",
388
+ "consider-using-enumerate",
389
+ "import-error",
390
+ "import-outside-toplevel",
391
+ "invalid-name",
392
+ "invalid-unary-operand-type",
393
+ "line-too-long",
394
+ "no-else-continue",
395
+ "no-else-raise",
396
+ "no-else-return",
397
+ "no-member",
398
+ "no-name-in-module",
399
+ "not-an-iterable",
400
+ "overridden-final-method",
401
+ "pointless-statement",
402
+ "redundant-keyword-arg",
403
+ "singleton-comparison",
404
+ "too-many-ancestors",
405
+ "too-many-arguments",
406
+ "too-many-boolean-expressions",
407
+ "too-many-branches",
408
+ "too-many-function-args",
409
+ "too-many-instance-attributes",
410
+ "too-many-locals",
411
+ "too-many-nested-blocks",
412
+ "too-many-public-methods",
413
+ "too-many-return-statements",
414
+ "too-many-statements",
415
+ "unexpected-keyword-arg",
416
+ "ungrouped-imports",
417
+ "unsubscriptable-object",
418
+ "unsupported-assignment-operation",
419
+ "unsupported-membership-test",
420
+ "unused-import",
421
+ "use-dict-literal",
422
+ "use-implicit-booleaness-not-comparison",
423
+ "use-implicit-booleaness-not-len",
424
+ "wrong-import-order",
425
+ "wrong-import-position",
426
+ "redefined-loop-name",
427
+
428
+ # misc
429
+ "abstract-class-instantiated",
430
+ "no-value-for-parameter",
431
+ "undefined-variable",
432
+ "unpacking-non-sequence",
433
+ "used-before-assignment",
434
+
435
+ # pylint type "C": convention, for programming standard violation
436
+ "missing-class-docstring",
437
+ "missing-function-docstring",
438
+ "missing-module-docstring",
439
+ "superfluous-parens",
440
+ "too-many-lines",
441
+ "unidiomatic-typecheck",
442
+ "unnecessary-dunder-call",
443
+ "unnecessary-lambda-assignment",
444
+
445
+ # pylint type "R": refactor, for bad code smell
446
+ "consider-using-with",
447
+ "cyclic-import",
448
+ "duplicate-code",
449
+ "inconsistent-return-statements",
450
+ "redefined-argument-from-local",
451
+ "too-few-public-methods",
452
+
453
+ # pylint type "W": warning, for python specific problems
454
+ "abstract-method",
455
+ "arguments-differ",
456
+ "arguments-out-of-order",
457
+ "arguments-renamed",
458
+ "attribute-defined-outside-init",
459
+ "broad-exception-raised",
460
+ "comparison-with-callable",
461
+ "dangerous-default-value",
462
+ "deprecated-module",
463
+ "eval-used",
464
+ "expression-not-assigned",
465
+ "fixme",
466
+ "global-statement",
467
+ "invalid-overridden-method",
468
+ "keyword-arg-before-vararg",
469
+ "possibly-unused-variable",
470
+ "protected-access",
471
+ "raise-missing-from",
472
+ "redefined-builtin",
473
+ "redefined-outer-name",
474
+ "self-cls-assignment",
475
+ "signature-differs",
476
+ "super-init-not-called",
477
+ "try-except-raise",
478
+ "unnecessary-lambda",
479
+ "unused-argument",
480
+ "unused-variable",
481
+ "using-constant-test",
482
+
483
+ # disabled on 2.3.x branch
484
+ "consider-using-in",
485
+ "simplifiable-if-expression",
486
+ ]
487
+
488
+ [tool.pytest.ini_options]
489
+ # sync minversion with pyproject.toml & install.rst
490
+ minversion = "7.3.2"
491
+ addopts = "--strict-markers --strict-config --capture=no --durations=30 --junitxml=test-data.xml"
492
+ empty_parameter_set_mark = "fail_at_collect"
493
+ xfail_strict = true
494
+ testpaths = "pandas"
495
+ doctest_optionflags = [
496
+ "NORMALIZE_WHITESPACE",
497
+ "IGNORE_EXCEPTION_DETAIL",
498
+ "ELLIPSIS",
499
+ ]
500
+ filterwarnings = [
501
+ "error:::pandas",
502
+ "error::ResourceWarning",
503
+ "error::pytest.PytestUnraisableExceptionWarning",
504
+ # TODO(PY311-minimum): Specify EncodingWarning
505
+ # Ignore 3rd party EncodingWarning but raise on pandas'
506
+ "ignore:.*encoding.* argument not specified",
507
+ "error:.*encoding.* argument not specified::pandas",
508
+ "ignore:.*ssl.SSLSocket:pytest.PytestUnraisableExceptionWarning",
509
+ "ignore:.*ssl.SSLSocket:ResourceWarning",
510
+ # GH 44844: Can remove once minimum matplotlib version >= 3.7
511
+ "ignore:.*FileIO:pytest.PytestUnraisableExceptionWarning",
512
+ "ignore:.*BufferedRandom:ResourceWarning",
513
+ "ignore::ResourceWarning:asyncio",
514
+ # From plotting doctests
515
+ "ignore:More than 20 figures have been opened:RuntimeWarning",
516
+ # Will be fixed in numba 0.56: https://github.com/numba/numba/issues/7758
517
+ "ignore:`np.MachAr` is deprecated:DeprecationWarning:numba",
518
+ "ignore:.*urllib3:DeprecationWarning:botocore",
519
+ "ignore:Setuptools is replacing distutils.:UserWarning:_distutils_hack",
520
+ # https://github.com/PyTables/PyTables/issues/822
521
+ "ignore:a closed node found in the registry:UserWarning:tables",
522
+ "ignore:`np.object` is a deprecated:DeprecationWarning:tables",
523
+ "ignore:tostring:DeprecationWarning:tables",
524
+ "ignore:distutils Version classes are deprecated:DeprecationWarning:pandas_datareader",
525
+ "ignore:distutils Version classes are deprecated:DeprecationWarning:numexpr",
526
+ "ignore:distutils Version classes are deprecated:DeprecationWarning:fastparquet",
527
+ "ignore:distutils Version classes are deprecated:DeprecationWarning:fsspec",
528
+ # Can be removed once https://github.com/numpy/numpy/pull/24794 is merged
529
+ "ignore:.*In the future `np.long` will be defined as.*:FutureWarning",
530
+ # https://github.com/numpy/numpy/pull/29301
531
+ "ignore:.*align should be passed:",
532
+ ]
533
+ junit_family = "xunit2"
534
+ markers = [
535
+ "single_cpu: tests that should run on a single cpu only",
536
+ "slow: mark a test as slow",
537
+ "network: mark a test as network",
538
+ "db: tests requiring a database (mysql or postgres)",
539
+ "clipboard: mark a pd.read_clipboard test",
540
+ "arm_slow: mark a test as slow for arm64 architecture",
541
+ "skip_ubsan: Tests known to fail UBSAN check",
542
+ # TODO: someone should investigate this ...
543
+ # these tests only fail in the wheel builder and don't fail in regular
544
+ # ARM CI
545
+ "fails_arm_wheels: Tests that fail in the ARM wheel build only",
546
+ ]
547
+
548
+ [tool.mypy]
549
+ # Import discovery
550
+ mypy_path = "typings"
551
+ files = ["pandas", "typings"]
552
+ namespace_packages = false
553
+ explicit_package_bases = false
554
+ ignore_missing_imports = true
555
+ follow_imports = "normal"
556
+ follow_imports_for_stubs = false
557
+ no_site_packages = false
558
+ no_silence_site_packages = false
559
+ # Platform configuration
560
+ python_version = "3.11"
561
+ platform = "linux-64"
562
+ # Disallow dynamic typing
563
+ disallow_any_unimported = false # TODO
564
+ disallow_any_expr = false # TODO
565
+ disallow_any_decorated = false # TODO
566
+ disallow_any_explicit = false # TODO
567
+ disallow_any_generics = false # TODO
568
+ disallow_subclassing_any = false # TODO
569
+ # Untyped definitions and calls
570
+ disallow_untyped_calls = true
571
+ disallow_untyped_defs = true
572
+ disallow_incomplete_defs = true
573
+ check_untyped_defs = true
574
+ disallow_untyped_decorators = true
575
+ # None and Optional handling
576
+ no_implicit_optional = true
577
+ strict_optional = true
578
+ # Configuring warnings
579
+ warn_redundant_casts = true
580
+ warn_unused_ignores = true
581
+ warn_no_return = true
582
+ warn_return_any = false # TODO
583
+ warn_unreachable = false # GH#27396
584
+ # Suppressing errors
585
+ ignore_errors = false
586
+ enable_error_code = "ignore-without-code"
587
+ # Miscellaneous strictness flags
588
+ allow_untyped_globals = false
589
+ allow_redefinition = false
590
+ local_partial_types = false
591
+ implicit_reexport = true
592
+ strict_equality = true
593
+ # Configuring error messages
594
+ show_error_context = false
595
+ show_column_numbers = false
596
+ show_error_codes = true
597
+
598
+ [[tool.mypy.overrides]]
599
+ module = [
600
+ "pandas._config.config", # TODO
601
+ "pandas._libs.*",
602
+ "pandas._testing.*", # TODO
603
+ "pandas.arrays", # TODO
604
+ "pandas.compat.numpy.function", # TODO
605
+ "pandas.compat._optional", # TODO
606
+ "pandas.compat.compressors", # TODO
607
+ "pandas.compat.pickle_compat", # TODO
608
+ "pandas.core._numba.executor", # TODO
609
+ "pandas.core.array_algos.datetimelike_accumulations", # TODO
610
+ "pandas.core.array_algos.masked_accumulations", # TODO
611
+ "pandas.core.array_algos.masked_reductions", # TODO
612
+ "pandas.core.array_algos.putmask", # TODO
613
+ "pandas.core.array_algos.quantile", # TODO
614
+ "pandas.core.array_algos.replace", # TODO
615
+ "pandas.core.array_algos.take", # TODO
616
+ "pandas.core.arrays.*", # TODO
617
+ "pandas.core.computation.*", # TODO
618
+ "pandas.core.dtypes.astype", # TODO
619
+ "pandas.core.dtypes.cast", # TODO
620
+ "pandas.core.dtypes.common", # TODO
621
+ "pandas.core.dtypes.concat", # TODO
622
+ "pandas.core.dtypes.dtypes", # TODO
623
+ "pandas.core.dtypes.generic", # TODO
624
+ "pandas.core.dtypes.inference", # TODO
625
+ "pandas.core.dtypes.missing", # TODO
626
+ "pandas.core.groupby.categorical", # TODO
627
+ "pandas.core.groupby.generic", # TODO
628
+ "pandas.core.groupby.grouper", # TODO
629
+ "pandas.core.groupby.groupby", # TODO
630
+ "pandas.core.groupby.ops", # TODO
631
+ "pandas.core.indexers.*", # TODO
632
+ "pandas.core.indexes.*", # TODO
633
+ "pandas.core.interchange.column", # TODO
634
+ "pandas.core.interchange.dataframe_protocol", # TODO
635
+ "pandas.core.interchange.from_dataframe", # TODO
636
+ "pandas.core.internals.*", # TODO
637
+ "pandas.core.methods.*", # TODO
638
+ "pandas.core.ops.array_ops", # TODO
639
+ "pandas.core.ops.common", # TODO
640
+ "pandas.core.ops.invalid", # TODO
641
+ "pandas.core.ops.mask_ops", # TODO
642
+ "pandas.core.ops.missing", # TODO
643
+ "pandas.core.reshape.*", # TODO
644
+ "pandas.core.strings.*", # TODO
645
+ "pandas.core.tools.*", # TODO
646
+ "pandas.core.window.common", # TODO
647
+ "pandas.core.window.ewm", # TODO
648
+ "pandas.core.window.expanding", # TODO
649
+ "pandas.core.window.numba_", # TODO
650
+ "pandas.core.window.online", # TODO
651
+ "pandas.core.window.rolling", # TODO
652
+ "pandas.core.accessor", # TODO
653
+ "pandas.core.algorithms", # TODO
654
+ "pandas.core.apply", # TODO
655
+ "pandas.core.arraylike", # TODO
656
+ "pandas.core.base", # TODO
657
+ "pandas.core.common", # TODO
658
+ "pandas.core.config_init", # TODO
659
+ "pandas.core.construction", # TODO
660
+ "pandas.core.flags", # TODO
661
+ "pandas.core.frame", # TODO
662
+ "pandas.core.generic", # TODO
663
+ "pandas.core.indexing", # TODO
664
+ "pandas.core.missing", # TODO
665
+ "pandas.core.nanops", # TODO
666
+ "pandas.core.resample", # TODO
667
+ "pandas.core.roperator", # TODO
668
+ "pandas.core.sample", # TODO
669
+ "pandas.core.series", # TODO
670
+ "pandas.core.sorting", # TODO
671
+ "pandas.errors", # TODO
672
+ "pandas.io.clipboard", # TODO
673
+ "pandas.io.excel._base", # TODO
674
+ "pandas.io.excel._odfreader", # TODO
675
+ "pandas.io.excel._odswriter", # TODO
676
+ "pandas.io.excel._openpyxl", # TODO
677
+ "pandas.io.excel._pyxlsb", # TODO
678
+ "pandas.io.excel._xlrd", # TODO
679
+ "pandas.io.excel._xlsxwriter", # TODO
680
+ "pandas.io.formats.console", # TODO
681
+ "pandas.io.formats.css", # TODO
682
+ "pandas.io.formats.excel", # TODO
683
+ "pandas.io.formats.format", # TODO
684
+ "pandas.io.formats.info", # TODO
685
+ "pandas.io.formats.printing", # TODO
686
+ "pandas.io.formats.style", # TODO
687
+ "pandas.io.formats.style_render", # TODO
688
+ "pandas.io.formats.xml", # TODO
689
+ "pandas.io.json.*", # TODO
690
+ "pandas.io.parsers.*", # TODO
691
+ "pandas.io.sas.sas_xport", # TODO
692
+ "pandas.io.sas.sas7bdat", # TODO
693
+ "pandas.io.clipboards", # TODO
694
+ "pandas.io.common", # TODO
695
+ "pandas.io.gbq", # TODO
696
+ "pandas.io.html", # TODO
697
+ "pandas.io.gbq", # TODO
698
+ "pandas.io.parquet", # TODO
699
+ "pandas.io.pytables", # TODO
700
+ "pandas.io.sql", # TODO
701
+ "pandas.io.stata", # TODO
702
+ "pandas.io.xml", # TODO
703
+ "pandas.plotting.*", # TODO
704
+ "pandas.tests.*",
705
+ "pandas.tseries.frequencies", # TODO
706
+ "pandas.tseries.holiday", # TODO
707
+ "pandas.util._decorators", # TODO
708
+ "pandas.util._doctools", # TODO
709
+ "pandas.util._print_versions", # TODO
710
+ "pandas.util._test_decorators", # TODO
711
+ "pandas.util._validators", # TODO
712
+ "pandas.util", # TODO
713
+ "pandas._version",
714
+ "pandas.conftest",
715
+ "pandas"
716
+ ]
717
+ disallow_untyped_calls = false
718
+ disallow_untyped_defs = false
719
+ disallow_incomplete_defs = false
720
+
721
+ [[tool.mypy.overrides]]
722
+ module = [
723
+ "pandas.tests.*",
724
+ "pandas._version",
725
+ "pandas.io.clipboard",
726
+ ]
727
+ check_untyped_defs = false
728
+
729
+ [[tool.mypy.overrides]]
730
+ module = [
731
+ "pandas.tests.apply.test_series_apply",
732
+ "pandas.tests.arithmetic.conftest",
733
+ "pandas.tests.arrays.sparse.test_combine_concat",
734
+ "pandas.tests.dtypes.test_common",
735
+ "pandas.tests.frame.methods.test_to_records",
736
+ "pandas.tests.groupby.test_rank",
737
+ "pandas.tests.groupby.transform.test_transform",
738
+ "pandas.tests.indexes.interval.test_interval",
739
+ "pandas.tests.indexing.test_categorical",
740
+ "pandas.tests.io.excel.test_writers",
741
+ "pandas.tests.reductions.test_reductions",
742
+ "pandas.tests.test_expressions",
743
+ ]
744
+ ignore_errors = true
745
+
746
+ # To be kept consistent with "Import Formatting" section in contributing.rst
747
+ [tool.isort]
748
+ known_pre_libs = "pandas._config"
749
+ known_pre_core = ["pandas._libs", "pandas._typing", "pandas.util._*", "pandas.compat", "pandas.errors"]
750
+ known_dtypes = "pandas.core.dtypes"
751
+ known_post_core = ["pandas.tseries", "pandas.io", "pandas.plotting"]
752
+ sections = ["FUTURE", "STDLIB", "THIRDPARTY" ,"PRE_LIBS" , "PRE_CORE", "DTYPES", "FIRSTPARTY", "POST_CORE", "LOCALFOLDER"]
753
+ profile = "black"
754
+ combine_as_imports = true
755
+ force_grid_wrap = 2
756
+ force_sort_within_sections = true
757
+ skip_glob = "env"
758
+ skip = "pandas/__init__.py"
759
+
760
+ [tool.pyright]
761
+ pythonVersion = "3.11"
762
+ typeCheckingMode = "basic"
763
+ useLibraryCodeForTypes = false
764
+ include = ["pandas", "typings"]
765
+ exclude = ["pandas/tests", "pandas/io/clipboard", "pandas/util/version", "pandas/core/_numba/extensions.py"]
766
+ # enable subset of "strict"
767
+ reportDuplicateImport = true
768
+ reportInconsistentConstructor = true
769
+ reportInvalidStubStatement = true
770
+ reportOverlappingOverload = true
771
+ reportPropertyTypeMismatch = true
772
+ reportUntypedClassDecorator = true
773
+ reportUntypedFunctionDecorator = true
774
+ reportUntypedNamedTuple = true
775
+ reportUnusedImport = true
776
+ disableBytesTypePromotions = true
777
+ # disable subset of "basic"
778
+ reportGeneralTypeIssues = false
779
+ reportMissingModuleSource = false
780
+ reportOptionalCall = false
781
+ reportOptionalIterable = false
782
+ reportOptionalMemberAccess = false
783
+ reportOptionalOperand = false
784
+ reportOptionalSubscript = false
785
+ reportPrivateImportUsage = false
786
+ reportUnboundVariable = false
787
+
788
+ [tool.coverage.run]
789
+ branch = true
790
+ omit = ["pandas/_typing.py", "pandas/_version.py"]
791
+ plugins = ["Cython.Coverage"]
792
+ source = ["pandas"]
793
+
794
+ [tool.coverage.report]
795
+ ignore_errors = false
796
+ show_missing = true
797
+ omit = ["pandas/_version.py"]
798
+ exclude_lines = [
799
+ # Have to re-enable the standard pragma
800
+ "pragma: no cover",
801
+ # Don't complain about missing debug-only code:s
802
+ "def __repr__",
803
+ "if self.debug",
804
+ # Don't complain if tests don't hit defensive assertion code:
805
+ "raise AssertionError",
806
+ "raise NotImplementedError",
807
+ "AbstractMethodError",
808
+ # Don't complain if non-runnable code isn't run:
809
+ "if 0:",
810
+ "if __name__ == .__main__.:",
811
+ "if TYPE_CHECKING:",
812
+ ]
813
+
814
+ [tool.coverage.html]
815
+ directory = "coverage_html_report"
816
+
817
+ [tool.codespell]
818
+ ignore-words-list = "blocs, coo, hist, nd, sav, ser, recuse, nin, timere, expec, expecs"
819
+ ignore-regex = 'https://([\w/\.])+'
@@ -0,0 +1,22 @@
1
+ <!---
2
+ Licensed to the Apache Software Foundation (ASF) under one
3
+ or more contributor license agreements. See the NOTICE file
4
+ distributed with this work for additional information
5
+ regarding copyright ownership. The ASF licenses this file
6
+ to you under the Apache License, Version 2.0 (the
7
+ "License"); you may not use this file except in compliance
8
+ with the License. You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing,
13
+ software distributed under the License is distributed on an
14
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ KIND, either express or implied. See the License for the
16
+ specific language governing permissions and limitations
17
+ under the License.
18
+ -->
19
+
20
+ The ORC and JSON files come from the `examples` directory in the Apache ORC
21
+ source tree:
22
+ https://github.com/apache/orc/tree/main/examples
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyrox-client
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: HYROX race data client – retrieve full race results via Python
5
5
  Project-URL: Homepage, https://github.com/vmatei2/pyrox-client
6
6
  Project-URL: Issues, https://github.com/vmatei2/pyrox-client/issues
@@ -16,6 +16,7 @@ Requires-Dist: pandas>=2.3.3
16
16
  Requires-Dist: platformdirs>=4.2.0
17
17
  Requires-Dist: pyarrow>=22.0.0
18
18
  Requires-Dist: s3fs>=2024.2.0
19
+ Requires-Dist: statsmodels>=0.14.6
19
20
  Description-Content-Type: text/markdown
20
21
 
21
22
  # pyrox-client
@@ -26,6 +27,7 @@ Unofficial Python client for HYROX race results — load public results into pan
26
27
  ![Integration Tests](https://github.com/vmatei2/pyrox-client/actions/workflows/integration.yml/badge.svg)
27
28
 
28
29
 
30
+ [![Docs](https://img.shields.io/badge/docs-mkdocs-0b5d4a)](https://vmatei2.github.io/pyrox-client/)
29
31
  [![PyPI - Version](https://img.shields.io/pypi/v/pyrox-client.svg)](https://pypi.org/project/pyrox-client/)
30
32
  [![Wheel](https://img.shields.io/pypi/wheel/pyrox-client.svg)](https://pypi.org/project/pyrox-client/)
31
33
  [![Downloads](https://static.pepy.tech/badge/pyrox-client/month)](https://pepy.tech/project/pyrox-client)
@@ -34,6 +36,11 @@ Unofficial Python client for HYROX race results — load public results into pan
34
36
 
35
37
  Unofficial Python client for HYROX race results — load public results into pandas DataFrames in a few lines. Built for people who love fitness and data: analyse performance trends, understand HYROX’s unique demands, and open up new research avenues.
36
38
 
39
+ ## Documentation
40
+
41
+ - Live docs: https://vmatei2.github.io/pyrox-client/
42
+ - Local preview: `mkdocs serve`
43
+
37
44
  ## Install
38
45
 
39
46
  ```commandline
@@ -109,7 +116,7 @@ get_race(
109
116
  location: str,
110
117
  year: int | None = None,
111
118
  gender: str | None = None, # "male" | "female" | "mixed"
112
- division: str | None = None, # "open" | "pro" (case-insensitive contains)
119
+ division: str | None = None, # "open" | "pro" | "pro_doubles" (case-insensitive contains)
113
120
  total_time: float | tuple[float | None, float | None] | None = None,
114
121
  use_cache: bool = True,
115
122
  ) -> pd.DataFrame
@@ -6,6 +6,7 @@ Unofficial Python client for HYROX race results — load public results into pan
6
6
  ![Integration Tests](https://github.com/vmatei2/pyrox-client/actions/workflows/integration.yml/badge.svg)
7
7
 
8
8
 
9
+ [![Docs](https://img.shields.io/badge/docs-mkdocs-0b5d4a)](https://vmatei2.github.io/pyrox-client/)
9
10
  [![PyPI - Version](https://img.shields.io/pypi/v/pyrox-client.svg)](https://pypi.org/project/pyrox-client/)
10
11
  [![Wheel](https://img.shields.io/pypi/wheel/pyrox-client.svg)](https://pypi.org/project/pyrox-client/)
11
12
  [![Downloads](https://static.pepy.tech/badge/pyrox-client/month)](https://pepy.tech/project/pyrox-client)
@@ -14,6 +15,11 @@ Unofficial Python client for HYROX race results — load public results into pan
14
15
 
15
16
  Unofficial Python client for HYROX race results — load public results into pandas DataFrames in a few lines. Built for people who love fitness and data: analyse performance trends, understand HYROX’s unique demands, and open up new research avenues.
16
17
 
18
+ ## Documentation
19
+
20
+ - Live docs: https://vmatei2.github.io/pyrox-client/
21
+ - Local preview: `mkdocs serve`
22
+
17
23
  ## Install
18
24
 
19
25
  ```commandline
@@ -89,7 +95,7 @@ get_race(
89
95
  location: str,
90
96
  year: int | None = None,
91
97
  gender: str | None = None, # "male" | "female" | "mixed"
92
- division: str | None = None, # "open" | "pro" (case-insensitive contains)
98
+ division: str | None = None, # "open" | "pro" | "pro_doubles" (case-insensitive contains)
93
99
  total_time: float | tuple[float | None, float | None] | None = None,
94
100
  use_cache: bool = True,
95
101
  ) -> pd.DataFrame
@@ -17,6 +17,7 @@ dependencies = [
17
17
  "platformdirs>=4.2.0",
18
18
  "httpx>=0.28.1",
19
19
  "pyarrow>=22.0.0", # stable versions with wheels, had issues with latest
20
+ "statsmodels>=0.14.6",
20
21
  ]
21
22
 
22
23
  classifiers = [
@@ -51,4 +52,8 @@ dev = [
51
52
  "ruff>=0.14.7",
52
53
  "respx>=0.22.0",
53
54
  "requests>=2.31",
55
+ "matplotlib>=3.10.7",
56
+ "seaborn>=0.13.2",
57
+ "ipykernel>=7.1.0",
58
+ "mkdocs>=1.6.1",
54
59
  ]
@@ -2,7 +2,7 @@ from .core import PyroxClient
2
2
  from .errors import PyroxError, RaceNotFound, AthleteNotFound
3
3
  from .constants import *
4
4
 
5
- __version__ = "0.2.0"
5
+ __version__ = "0.2.2"
6
6
 
7
7
 
8
8
  ## what is available to users
@@ -514,14 +514,4 @@ def mmss_to_minutes(s: pd.Series) -> pd.Series:
514
514
  s = s.astype(str).str.strip()
515
515
  # if it's MM:SS, promote to 0:MM:SS so pandas parses it
516
516
  s = s.where(s.str.count(":") == 2, "0:" + s)
517
- return pd.to_timedelta(s, errors="coerce").dt.total_seconds() / 60.0
518
-
519
-
520
- if __name__ == "__main__":
521
- client = PyroxClient()
522
-
523
- s6 = client.get_season(6, use_cache=False)
524
- s7 = client.get_season(7, use_cache=False)
525
- s8 = client.get_season(8, use_cache=False)
526
-
527
- breakhere = 0
517
+ return pd.to_timedelta(s, errors="coerce").dt.total_seconds() / 60.0
File without changes
File without changes