Skip to content

Conversation

@paulinder
Copy link
Contributor

@paulinder paulinder commented Oct 20, 2025

  • upgrade tensorflow dependencies to support python up to v3.12. 3.13 support starts in tensorflow 2.20.0 but there are bugs, so pinning it at 2.19.*
  • migrate from poetry to uv because the poetry install didn't "just work" because of a circular dependency issue (something like "could not install because tensorflow depends on tensorflow"... there could be some way to get around it, but the switch to uv is painless)
  • added github actions lint and test workflows
  • fixed format/lint to make CI pass
  • updated readme and dockerfile
  • removed unnecessary setup.py

format/lint was not previously being run in CI so there were a bunch of things to "fix"

Name                                     Stmts   Miss   Cover   Missing
-----------------------------------------------------------------------
oats/__init__.py                             0      0 100.00%
oats/_data/__init__.py                       0      0 100.00%
oats/_data/base.py                          19     19   0.00%   1-28
oats/_data/ucrdata.py                       68     68   0.00%   1-96
oats/_utils/__init__.py                      2      0 100.00%
oats/_utils/dlutils.py                     191    116  39.27%   26-35, 44-58, 61-62, 117-148, 164-203, 206-209, 213-220, 224-226, 302-306, 310-315, 319-347, 358-371, 376-378, 381-387
oats/_utils/utils.py                        24     12  50.00%   11, 15, 20-27, 35-36
oats/_utils/visualizer.py                   19     19   0.00%   1-26
oats/generator/__init__.py                   1      0 100.00%
oats/generator/_base.py                      5      1  80.00%   13
oats/generator/univariate_wave.py          104     28  73.08%   12, 44-55, 153, 155, 189, 201, 205-207, 221-225, 241-243
oats/models/__init__.py                     21      1  95.24%   10
oats/models/_base.py                        27      6  77.78%   25, 28, 32-36
oats/models/_darts_model.py                141     53  62.41%   52-56, 59-66, 70-77, 90, 103-112, 120-137, 144-164, 218, 257-267
oats/models/_darts_simple.py               124     49  60.48%   37, 40-47, 58-68, 76-96, 103-122, 126-127, 201-212
oats/models/_pyod_model.py                  57      8  85.96%   28, 31-35, 39-40, 53
oats/models/distance/__init__.py             0      0 100.00%
oats/models/distance/iforest.py              8      1  87.50%   20
oats/models/distance/matrixprofile.py       37      6  83.78%   35-38, 49-52
oats/models/predictive/__init__.py           0      0 100.00%
oats/models/predictive/arima.py             22      0 100.00%
oats/models/predictive/fluxev.py           231     29  87.45%   35, 101, 130, 132, 154-155, 216, 231-233, 256-257, 263-264, 270-271, 310, 340-346, 353-354, 357-361
oats/models/predictive/lightgbm.py          11      2  81.82%   45-55
oats/models/predictive/ma.py                20      1  95.00%   43
oats/models/predictive/nbeats.py            11      2  81.82%   45-56
oats/models/predictive/nhits.py             10      3  70.00%   39-41, 57
oats/models/predictive/randomforest.py      11      2  81.82%   45-52
oats/models/predictive/regression.py         8      1  87.50%   42
oats/models/predictive/rnn.py               11      4  63.64%   42-44, 55-64
oats/models/predictive/tcn.py               11      4  63.64%   40-42, 45-53
oats/models/predictive/tft.py               11      4  63.64%   40-42, 45-55
oats/models/predictive/transformer.py       10      3  70.00%   39-40, 59
oats/models/reconstruction/__init__.py       0      0 100.00%
oats/models/reconstruction/tranad.py       124      7  94.35%   93, 191-199
oats/models/reconstruction/vae.py           15      0 100.00%
oats/models/rule_based/__init__.py           0      0 100.00%
oats/models/rule_based/quantile.py          18      0 100.00%
oats/preprocessor/__init__.py                1      0 100.00%
oats/preprocessor/_base.py                  18      8  55.56%   24, 27, 37-44
oats/preprocessor/spectral_residual.py      61      8  86.89%   72, 141-147, 151
oats/scorer/__init__.py                      2      0 100.00%
oats/scorer/_base.py                         3      1  66.67%   28
oats/scorer/qualitative_metrics.py          82      4  95.12%   74, 81, 103, 126
oats/scorer/supervised_scorer.py            67     19  71.64%   50, 67, 72, 77-79, 84-86, 91-93, 98-100, 105-107, 110
oats/threshold/__init__.py                   4      0 100.00%
oats/threshold/_base.py                     23      3  86.96%   18, 21, 24
oats/threshold/jenks.py                     12      0 100.00%
oats/threshold/pot.py                       41      3  92.68%   32-34
oats/threshold/quantile.py                  11      0 100.00%
oats/threshold/spot.py                     133     27  79.70%   147, 155-156, 179-180, 185-186, 192-193, 209-211, 217-224, 230-231, 234-240
-----------------------------------------------------------------------
TOTAL                                     1830    522  71.48%

run: uv sync --all-extras

- name: Run tests
run: uv run pytest -v --tb=short

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you want to include test coverage as part of ci? --cov?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah thanks for the catch - i meant to update the CI commands to use the makefile. will update

Copy link

@asna-georgian asna-georgian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LG!

@paulinder paulinder merged commit 8d655ea into main Oct 22, 2025
8 checks passed
@paulinder paulinder deleted the migrate-312 branch October 22, 2025 18:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants