captest 0.13.2__tar.gz → 0.13.3rc1__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 (105) hide show
  1. captest-0.13.3rc1/.git-blame-ignore-revs +2 -0
  2. captest-0.13.3rc1/.gitattributes +1 -0
  3. captest-0.13.3rc1/.github/workflows/publish.yml +37 -0
  4. captest-0.13.3rc1/.github/workflows/pytest.yml +57 -0
  5. captest-0.13.3rc1/.gitignore +117 -0
  6. captest-0.13.3rc1/.justfile +57 -0
  7. captest-0.13.3rc1/.pre-commit-config.yaml +9 -0
  8. captest-0.13.3rc1/CHANGELOG.md +276 -0
  9. captest-0.13.3rc1/MAINTAINER.md +72 -0
  10. captest-0.13.3rc1/MANIFEST.in +2 -0
  11. captest-0.13.3rc1/PKG-INFO +173 -0
  12. captest-0.13.3rc1/README.md +105 -0
  13. captest-0.13.3rc1/README.rst +139 -0
  14. captest-0.13.3rc1/docs/Makefile +20 -0
  15. captest-0.13.3rc1/docs/_images/dboard_groups.png +0 -0
  16. captest-0.13.3rc1/docs/_images/dboard_layout.png +0 -0
  17. captest-0.13.3rc1/docs/_images/dboard_overlay.png +0 -0
  18. captest-0.13.3rc1/docs/_images/example_excel_column_grouping.png +0 -0
  19. captest-0.13.3rc1/docs/_images/pvcaptest_logo.png +0 -0
  20. captest-0.13.3rc1/docs/_images/reg_results_summary.png +0 -0
  21. captest-0.13.3rc1/docs/_images/release_branch_screenshot.png +0 -0
  22. captest-0.13.3rc1/docs/_images/results.png +0 -0
  23. captest-0.13.3rc1/docs/changelog.md +276 -0
  24. captest-0.13.3rc1/docs/conf.py +111 -0
  25. captest-0.13.3rc1/docs/examples/clear_sky.ipynb +409 -0
  26. captest-0.13.3rc1/docs/examples/complete_capacity_test.ipynb +709 -0
  27. captest-0.13.3rc1/docs/examples/concise_capacity_test.ipynb +356 -0
  28. captest-0.13.3rc1/docs/examples/data/column_groups.xlsx +0 -0
  29. captest-0.13.3rc1/docs/examples/data/example_meas_data.csv +1 -0
  30. captest-0.13.3rc1/docs/examples/data/example_measured_data.csv +1441 -0
  31. captest-0.13.3rc1/docs/examples/data/nrel_data.csv +11521 -0
  32. captest-0.13.3rc1/docs/examples/data/pvsyst_example_HourlyRes_2.CSV +8773 -0
  33. captest-0.13.3rc1/docs/examples/reporting_conditions.ipynb +467 -0
  34. captest-0.13.3rc1/docs/examples.rst +12 -0
  35. captest-0.13.3rc1/docs/index.rst +45 -0
  36. captest-0.13.3rc1/docs/installation.rst +137 -0
  37. captest-0.13.3rc1/docs/make.bat +35 -0
  38. captest-0.13.3rc1/docs/release.rst +91 -0
  39. captest-0.13.3rc1/docs/requirements.txt +17 -0
  40. captest-0.13.3rc1/docs/source/captest.rst +61 -0
  41. captest-0.13.3rc1/docs/source/modules.rst +12 -0
  42. captest-0.13.3rc1/docs/user_guide/bifacial.rst +69 -0
  43. captest-0.13.3rc1/docs/user_guide/dataload.rst +243 -0
  44. captest-0.13.3rc1/docs/user_guide/index.rst +9 -0
  45. captest-0.13.3rc1/pyproject.toml +110 -0
  46. captest-0.13.3rc1/readthedocs.yml +24 -0
  47. captest-0.13.3rc1/setup.cfg +4 -0
  48. captest-0.13.3rc1/src/captest/__init__.py +21 -0
  49. captest-0.13.3rc1/src/captest/_version.py +34 -0
  50. {captest-0.13.2 → captest-0.13.3rc1}/src/captest/capdata.py +674 -556
  51. {captest-0.13.2 → captest-0.13.3rc1}/src/captest/columngroups.py +64 -31
  52. {captest-0.13.2 → captest-0.13.3rc1}/src/captest/io.py +32 -32
  53. {captest-0.13.2 → captest-0.13.3rc1}/src/captest/plotting.py +101 -90
  54. {captest-0.13.2 → captest-0.13.3rc1}/src/captest/prtest.py +11 -13
  55. {captest-0.13.2 → captest-0.13.3rc1}/src/captest/util.py +15 -27
  56. captest-0.13.3rc1/src/captest.egg-info/PKG-INFO +173 -0
  57. captest-0.13.3rc1/src/captest.egg-info/SOURCES.txt +90 -0
  58. captest-0.13.3rc1/src/captest.egg-info/requires.txt +17 -0
  59. captest-0.13.3rc1/tests/__init__.py +0 -0
  60. captest-0.13.3rc1/tests/conftest.py +164 -0
  61. captest-0.13.3rc1/tests/data/ae_column_groups.yml +28 -0
  62. captest-0.13.3rc1/tests/data/col_naming_examples/ae_site1.csv +7 -0
  63. captest-0.13.3rc1/tests/data/col_naming_examples/ae_site2.csv +7 -0
  64. captest-0.13.3rc1/tests/data/col_naming_examples/locus.csv +4 -0
  65. captest-0.13.3rc1/tests/data/column_groups.json +1 -0
  66. captest-0.13.3rc1/tests/data/example_meas_data_aeheaders.csv +1 -0
  67. captest-0.13.3rc1/tests/data/example_measured_data.csv +1441 -0
  68. captest-0.13.3rc1/tests/data/example_measured_data_column_groups.json +41 -0
  69. captest-0.13.3rc1/tests/data/example_measured_data_column_groups.xlsx +0 -0
  70. captest-0.13.3rc1/tests/data/example_measured_data_column_groups.yaml +30 -0
  71. captest-0.13.3rc1/tests/data/example_measured_data_column_groups.yml +30 -0
  72. captest-0.13.3rc1/tests/data/nrel_data.csv +11521 -0
  73. captest-0.13.3rc1/tests/data/nrel_data_modelled_csky.csv +11521 -0
  74. captest-0.13.3rc1/tests/data/nrel_data_val_err.csv +1 -0
  75. captest-0.13.3rc1/tests/data/pvsyst_example_HourlyRes_2.CSV +8773 -0
  76. captest-0.13.3rc1/tests/data/pvsyst_example_HourlyRes_2_semicolon.csv +8773 -0
  77. captest-0.13.3rc1/tests/data/pvsyst_example_HourlyRes_2_xls_dates.csv +8773 -0
  78. captest-0.13.3rc1/tests/data/pvsyst_example_day_month_year.csv +8773 -0
  79. captest-0.13.3rc1/tests/data/pvsyst_example_day_month_year_xls_dates.csv +8773 -0
  80. captest-0.13.3rc1/tests/data/reg_test_data.csv +1 -0
  81. captest-0.13.3rc1/tests/data/site_loc_orientation.json +16 -0
  82. captest-0.13.3rc1/tests/data/site_loc_orientation.yaml +12 -0
  83. captest-0.13.3rc1/tests/data/site_loc_orientation.yml +12 -0
  84. captest-0.13.3rc1/tests/smoke_test.py +45 -0
  85. {captest-0.13.2 → captest-0.13.3rc1}/tests/test_CapData.py +1016 -828
  86. captest-0.13.3rc1/tests/test_columngroups.py +89 -0
  87. {captest-0.13.2 → captest-0.13.3rc1}/tests/test_io.py +55 -56
  88. {captest-0.13.2 → captest-0.13.3rc1}/tests/test_prtest.py +6 -9
  89. captest-0.13.3rc1/tests/test_util.py +85 -0
  90. captest-0.13.2/MANIFEST.in +0 -5
  91. captest-0.13.2/PKG-INFO +0 -156
  92. captest-0.13.2/README.rst +0 -63
  93. captest-0.13.2/pyproject.toml +0 -11
  94. captest-0.13.2/setup.cfg +0 -15
  95. captest-0.13.2/setup.py +0 -80
  96. captest-0.13.2/src/captest/__init__.py +0 -22
  97. captest-0.13.2/src/captest/_version.py +0 -21
  98. captest-0.13.2/src/captest.egg-info/PKG-INFO +0 -156
  99. captest-0.13.2/src/captest.egg-info/SOURCES.txt +0 -24
  100. captest-0.13.2/src/captest.egg-info/requires.txt +0 -65
  101. captest-0.13.2/tests/test_columngroups.py +0 -95
  102. captest-0.13.2/tests/test_util.py +0 -92
  103. {captest-0.13.2 → captest-0.13.3rc1}/LICENSE.txt +0 -0
  104. {captest-0.13.2 → captest-0.13.3rc1}/src/captest.egg-info/dependency_links.txt +0 -0
  105. {captest-0.13.2 → captest-0.13.3rc1}/src/captest.egg-info/top_level.txt +0 -0
@@ -0,0 +1,2 @@
1
+ # Migrate code style to Black with ruff
2
+ c8a38a9222094d31fd28:1f72bf744d87c7386a64
@@ -0,0 +1 @@
1
+ captest/_version.py export-subst
@@ -0,0 +1,37 @@
1
+ name: Build and Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ tags:
8
+ - "v*"
9
+
10
+ jobs:
11
+ pypi:
12
+ name: Publish to PyPI
13
+ runs-on: ubuntu-latest
14
+ # Environment and permissions trusted publishing.
15
+ environment:
16
+ # Create this environment in the GitHub repository under Settings -> Environments
17
+ name: pypi
18
+ permissions:
19
+ id-token: write
20
+ contents: read
21
+ steps:
22
+ - name: Checkout
23
+ uses: actions/checkout@v5
24
+ - name: Install uv
25
+ uses: astral-sh/setup-uv@v6
26
+ - name: Install Python 3.13
27
+ run: uv python install 3.13
28
+ - name: Build
29
+ run: uv build
30
+ # Check that basic features work and we didn't miss to include crucial files
31
+ - name: Smoke test (wheel)
32
+ run: uv run --isolated --no-project --with dist/*.whl tests/smoke_test.py
33
+ - name: Smoke test (source distribution)
34
+ run: uv run --isolated --no-project --with dist/*.tar.gz tests/smoke_test.py
35
+ - name: Publish
36
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
37
+ run: uv publish
@@ -0,0 +1,57 @@
1
+ name: pytest
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - master
8
+
9
+ jobs:
10
+ test:
11
+ strategy:
12
+ fail-fast: false # don't cancel other matrix jobs when one fails
13
+ matrix:
14
+ os: [ubuntu-latest, macos-latest, windows-latest]
15
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
16
+
17
+ runs-on: ${{ matrix.os }}
18
+
19
+ steps:
20
+ - name: Checkout source
21
+ uses: actions/checkout@v3
22
+
23
+ - name: Get tags
24
+ run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
25
+
26
+
27
+ - name: Install uv and python
28
+ uses: astral-sh/setup-uv@v7
29
+ with:
30
+ python-version: ${{ matrix.python-version }}
31
+ enable-cache: auto
32
+ cache-dependency-glob: |
33
+ **/pyproject.toml
34
+ **/uv.lock
35
+
36
+ - name: Install dependencies
37
+ run: uv sync
38
+
39
+ - name: Ruff lint
40
+ run: uv run ruff check .
41
+
42
+ - name: Ruff format check
43
+ run: uv run ruff format --check .
44
+
45
+ - name: Import test
46
+ run: uv run python -c "import captest; print(captest.__version__)"
47
+
48
+ - name: Run tests
49
+ run: uv run pytest --cov-report=xml --cov=captest tests/
50
+
51
+ # - name: Upload coverage to Codecov
52
+ # if: matrix.python-version == 3.7 && matrix.suffix == '' && matrix.os == 'ubuntu-latest' && matrix.environment-type == 'conda'
53
+ # uses: codecov/codecov-action@v3
54
+ # with:
55
+ # fail_ci_if_error: true
56
+ # verbose: true
57
+ # flags: core # flags are configured in codecov.yml
@@ -0,0 +1,117 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # untracked_bin
10
+ untracked_bin/
11
+
12
+ # Distribution / packaging
13
+ dependency_licenses.txt
14
+ get_ver.py
15
+ build.sh
16
+ .Python
17
+ env/
18
+ build/
19
+ develop-eggs/
20
+ dist/
21
+ downloads/
22
+ eggs/
23
+ .eggs/
24
+ lib/
25
+ lib64/
26
+ parts/
27
+ sdist/
28
+ var/
29
+ wheels/
30
+ *.egg-info/
31
+ .installed.cfg
32
+ *.egg
33
+
34
+ # PyInstaller
35
+ # Usually these files are written by a python script from a template
36
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
37
+ *.manifest
38
+ *.spec
39
+
40
+ # Installer logs
41
+ pip-log.txt
42
+ pip-delete-this-directory.txt
43
+
44
+ # Unit test / coverage reports
45
+ htmlcov/
46
+ .tox/
47
+ .coverage
48
+ .coverage.*
49
+ .cache
50
+ nosetests.xml
51
+ coverage.xml
52
+ *.cover
53
+ .hypothesis/
54
+
55
+ # Translations
56
+ *.mo
57
+ *.pot
58
+
59
+ # Django stuff:
60
+ *.log
61
+ local_settings.py
62
+
63
+ # Flask stuff:
64
+ instance/
65
+ .webassets-cache
66
+
67
+ # Scrapy stuff:
68
+ .scrapy
69
+
70
+ # Sphinx documentation
71
+ docs/_build/
72
+
73
+ # PyBuilder
74
+ target/
75
+
76
+ # Jupyter Notebook
77
+ .ipynb_checkpoints
78
+
79
+ # pyenv
80
+ .python-version
81
+
82
+ # celery beat schedule file
83
+ celerybeat-schedule
84
+
85
+ # SageMath parsed files
86
+ *.sage.py
87
+
88
+ # dotenv
89
+ .env
90
+
91
+ # virtualenv
92
+ .venv
93
+ venv/
94
+ ENV/
95
+ uv.lock
96
+
97
+ # Spyder project settings
98
+ .spyderproject
99
+ .spyproject
100
+
101
+ # Rope project settings
102
+ .ropeproject
103
+
104
+ # mkdocs documentation
105
+ /site
106
+
107
+ # mypy
108
+ .mypy_cache/
109
+
110
+ #data
111
+ ./data/
112
+
113
+ # vscode
114
+ /.vscode
115
+
116
+ # setuptools-scm generated version file
117
+ src/captest/_version.py
@@ -0,0 +1,57 @@
1
+ set dotenv-load # loads env variables from .env
2
+ set shell := ["zsh", "-c"]
3
+
4
+ # Delete dist folder and uv build
5
+ build:
6
+ rm -r dist/
7
+ uv build
8
+
9
+ # Run build and then publish to testpypi
10
+ publish-to-testpypi: build
11
+ uv publish --index testpypi --token $UV_PUBLISH_TESTPYPI_TOKEN # token from .env
12
+
13
+ # Lint using ruff
14
+ lint file=".":
15
+ uv run ruff check --fix {{file}}
16
+
17
+ # Format using ruff, applies black formatting
18
+ fmt file=".":
19
+ uv run ruff format {{file}}
20
+
21
+ # Run all tests
22
+ test python-ver="3.12":
23
+ uv run --python {{python-ver}} pytest tests/
24
+
25
+ # Run all tests without warnings
26
+ test-wo-warnings python-ver="3.12":
27
+ uv run --python {{python-ver}} pytest tests/ --disable-warnings
28
+
29
+ # Run all tests with coverage report
30
+ test-cov:
31
+ uv run pytest --cov-report html --cov=src/captest tests/
32
+
33
+ # Reminder on how to run a specific test module
34
+ test-module-example:
35
+ @echo "To run a class of tests: "
36
+ @echo "uv run pytest tests/test_CapData.py::TestCapDataEmpty\n"
37
+ @echo "To run a specific test:"
38
+ @echo "uv run pytest tests/test_CapData.py::TestCapDataEmpty::test_capdata_empty\n"
39
+
40
+ # Run a specific test
41
+ test-module module_name python-ver="3.12":
42
+ uv run --python {{python-ver}} pytest --disable-warnings tests/{{module_name}}
43
+
44
+ # Test install package in new venv
45
+ test-install python-ver="3.12":
46
+ uv venv ../_pvc_test_dir/.venv --python {{python-ver}}
47
+ uv pip install --python ../_pvc_test_dir/.venv ./dist/*.whl
48
+ cd ../_pvc_test_dir && .venv/bin/python -c "import captest; print(captest.__version__)"
49
+ rm -rf ../_pvc_test_dir
50
+
51
+ # Check current version of package
52
+ ver:
53
+ uv run python -c "import captest; print(captest.__version__)"
54
+
55
+ # Build docs with sphinx-build
56
+ docs:
57
+ uv run sphinx-build -M html ./docs/ ./docs/_build/
@@ -0,0 +1,9 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ # Ruff version.
4
+ rev: v0.14.13
5
+ hooks:
6
+ # Run the linter.
7
+ - id: ruff-check
8
+ # Run the formatter.
9
+ - id: ruff-format
@@ -0,0 +1,276 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+
9
+ [0.13.3rc1]: https://github.com/pvcaptest/pvcaptest/compare/v0.13.2...v0.13.3rc1
10
+ ## [0.13.3rc1] - 2026-02-05
11
+ ### Changed
12
+ - Migrated from versioneer to setuptools-scm for git-based version management
13
+ - Migrated from setup.py to modern pyproject.toml with [project] section
14
+ - Added uv for dependency management and development workflows
15
+ - Updated version access to use `importlib.metadata.version()`
16
+ - Updated `numpy` version constraint to `<2.4.0` for compatibility, temporarily
17
+ - Updated `param` version constraint to `<2.0` for compatibility
18
+ - Updated `pandas` version constraint to `<3.0` for compatibility, temporarily
19
+ - Updated development status classifier to "4 - Beta"
20
+ - Simplified license metadata format in pyproject.toml
21
+ - Moved testing and documentation dependencies to dependency-groups
22
+ - Updated read the docs configuration to use uv
23
+
24
+ ### Removed
25
+ - setup.py (all configuration moved to pyproject.toml)
26
+ - Versioneer dependency and configuration
27
+ - scipy dependency (replaced scipy.stats.mode with pandas.Series.mode in July 2023, unused imports removed January 2026)
28
+
29
+ ### Added
30
+ - setuptools-scm for automatic version generation from git tags
31
+ - Modern pyproject.toml with complete project metadata
32
+ - Just command runner (justfile) with development recipes
33
+ - Just recipes for testing package builds and version checking
34
+ - Just recipe for building docs
35
+ - MAINTAINER.md documentation for project maintainers
36
+
37
+ [0.13.2]: https://github.com/pvcaptest/pvcaptest/compare/v0.13.1...v0.13.2
38
+ ## [0.13.2] - 2025-07-17
39
+ ### Fixed
40
+ - Change to nan for compatability with numpy 2.0
41
+ - Update file_reader to warn but load empty csv files
42
+
43
+ [0.13.1]: https://github.com/pvcaptest/pvcaptest/compare/v0.13.0...v0.13.1
44
+ ## [0.13.1] - 2024-06-05
45
+ ### Fixed
46
+ - Issue 112 - plotting tool would plot only last curve for plots with more than 25 curves.
47
+
48
+ [0.13.0]: https://github.com/pvcaptest/pvcaptest/compare/v0.12.1...v0.13.0
49
+ ## [0.13.0] - 2024-05-05
50
+ ### Added
51
+ - `load_data` can read site location and system information for generating clear sky irradiance from a json or yaml file.
52
+ - New plotting module with a plot function which replaces the CapData.plot method. The new plot function creates a panel dashboard with expanded functionality. Internally, removes
53
+ the plotting dependency on the CapData.trans_keys attribute.
54
+ - `loc` and `floc` can be used to retrieve the regression columns, similar to previous rview functionality by using `regcols`.
55
+
56
+ ### Changed
57
+ - Removed the CapData `trans_keys ` attribute, which was a copy of the `column_groups` keys and would be modified by the old `CapData.plot` method. `trans_keys` made it difficult to create a `CapData` object without using the `load_data` function.
58
+ - Replaces all uses of `view` and `rview` with `loc` and `floc`.
59
+ - Updated `loc` and `floc` to always return a DataFrame. Previously these would sometimes return a Series.
60
+ - `load_data` now checks if any individual files were loaded when loading multiple files from a directory.
61
+ - Adds underlay curve of unfiltered power to the linked timeseries created when calling `scatter_hv` with `timeseries=True`.
62
+ - Changes selected points on scatter plot and linked timeseries produced by `scatter_hv` to red.
63
+ - Tolerances may now be fractions eg '- 3.5'
64
+ - The plotting methods `scatter_hv`, `scatter_filters`, and `timeseries_filters` do not require a column labeled 'index' with string datetimes in the `data` DataFrame anymore. Also, the index of the `data` DataFrame does not need to be named 'Timeseries'.
65
+ - Removes the `add_index_col` kwarg option from `util.reindex`.
66
+
67
+ [0.12.0]: https://github.com/pvcaptest/pvcaptest/compare/v0.11.2...v0.12.0
68
+ ## [0.12.0] - 2023-08-27
69
+ ### Added
70
+ - Added a user guide section to the documentation with an overview and bifacial tests section.
71
+ - Added verbose kwarg to the DataLoader load method, which prints which files have been loaded
72
+ - DataLoader load method has new kwarg print_errors
73
+ - DataLoader load method stores list of paths of files that fail to load in failed_to_load attribute
74
+ - CapData method to save column_groups dictionary to excel
75
+ - Github action to build and publish to PyPI on tags like v* pushed from master
76
+
77
+ ### Changed
78
+ - Updates to make pvcaptest compatible with pvlib 0.10 and scipy 1.11
79
+ - Update to make pvcaptest compatible with bokeh v3.0.0, change `plot_width` and `plot_height` to `width` and `height`
80
+ - Make bokeh v3 minimum version
81
+ - Drop support for python 3.7
82
+ - Drop to_numeric from io.file_reader
83
+ - CapData.column_groups is instance of ColumnGroups now when group_columns is a callable
84
+ - Changed defaults for the CapData plot method to single column
85
+
86
+ [0.11.2]: https://github.com/pvcaptest/pvcaptest/compare/v0.11.1...v0.11.2
87
+ ## [0.11.2] - 2023-04-20
88
+ ### Added
89
+ - Adds CI testing across python 3.7 to 3.11 on OSX, Linux, and Windows using Github actions.
90
+
91
+ ### Changed
92
+ - Re-organized project root directory to place captest package under a src directory, see PR #83.
93
+ - Re-organized the extras for pip installation into optional, test, docs, and all. Updated the installation section of the docs to reflect change.
94
+ - Updated installation instructions with links to pandas and conda docs for more information on environments.
95
+ - Re-organized installation instructions.
96
+ - Changed instructions on creating a conda env for pvcaptest to directly download the env yaml file from the repository rather than the whole repository.
97
+ - Clean up RTD configuration, particularly added project directory to PYTHONPATH in the docs build environment, so the docs build against checked out version instead of installed version from conda.
98
+ - Updates to documentation to add new modules, remove history section of releases, and remove references to Travis CI.
99
+
100
+ ### Fixed
101
+ - Cleaned up issues in tests found after re-implementing CI on other platforms.
102
+
103
+ [0.11.1]: https://github.com/pvcaptest/pvcaptest/compare/v0.11.0...v0.11.1
104
+ ## [0.11.1] - 2023-04-09
105
+ ### Added
106
+ - Added new dependencies - colorcet, param
107
+ - Added openpyxl as an optional dependency
108
+ - Loads bokeh as holoviews extension in captest imports so user doesn't need to
109
+
110
+ ### Changed
111
+ - Removed use of hvplot, replaced with holoviews to avoid adding unnecessary dependency. PR #73.
112
+
113
+ ### Fixed
114
+ - Typo in the import check of panel
115
+
116
+ [0.11.0]: https://github.com/pvcaptest/pvcaptest/compare/v0.10.0...v0.11.0
117
+ ## [0.11.0] - 2023-04-07 [YANKED]
118
+ ### Added
119
+ - Added columngroups module with a ColumnGroups class that extends python
120
+ dictionaries to include each column group as an attribute and __repr__ is
121
+ formatted for easy reading.
122
+ - Created the `loc` and `floc` callables for CapData, which allow easier access to columns of the `data` and `data_filtered` attributes, repsectively. Will replace `view` and `rview` method.
123
+ - Added `read_json` function to util module.
124
+ - Added `read_yaml` function to util module.
125
+ - Added the io module with functions to load data and return instances of CapData containing the loaded data.
126
+ - Added the ReportingIrradiance class for calculations of a reporting irradiance that is between the 40th and 60th percentile. `ReportingIrradiance.plot` includes a dashboard type view of the selected and possible reporting irradiance values and method to save possible reporting conditions table to csv.
127
+ - Added the `spatial_uncert` and `expanded_uncert` methods. Improvements and testing needed.
128
+
129
+
130
+ ### Changed
131
+ - Moved group_columns method, series_type, and type definitions from the capdata module to the columngroups module and changed group_columns from a CapData method to a function that returns a ColumnGroups instance.
132
+ - Completely refactored the algorithim to determine the reporting irradiance when `irr_bal` is set to True. Now an instance of the new ReportingIrradiance class is created and used to determine the reporting irradiance.
133
+ - Updated the examples to reflect the changes to the API for data loading, column grouping, selection (loc and floc vs view and rview), and balanced reporting irradiance.
134
+ - Changed the `scatter_hv` method to be more flexible and not require temperature or wind regression columns.
135
+
136
+ ### Removed
137
+ - Removed the value checking functionality of the group_columns function. Data quality is outside the scope of the pvcaptest project.
138
+ - Removed the `load_data`, `load_das`, and `load_pvsyst` methods from the CapData class. Replaced with io module.
139
+
140
+
141
+
142
+ [0.10.0]: https://github.com/pvcaptest/pvcaptest/compare/v0.9.0...v0.10.0
143
+ ## [0.10.0] - 2021-07-25
144
+ ### Added
145
+ - Added the filter_missing CapData method to remove missing data from specified columns.
146
+ By default removes only intervals that contain missing data in the regression variable
147
+ columns.
148
+ - Added option to filter_irr method to specify using the reporting irradiance in the CapData object as the reference irradiance.
149
+ - Added option to the filter_time method to drop the specified time period instead of dropping all other times.
150
+ - Added option to filter_clearsky method to keep time periods with unstable irradiance.
151
+ - Added new attributes to CapData: removed, kept, filter_counts. The update_summary decorator now stores the
152
+ index of points removed, the index of points remaining after each filter, and the number of times any filter has been run for each filter applied.
153
+ - Adds new plotting method, scatter_filters, which shows which filtering step removed which time intervals of data in a plot of irradiance vs. power.
154
+ - New plotting method, timeseries_filters, which shows which fitlering step removed which time intervals of data in a plot of power vs. time.
155
+ - New plotting function, overlay_scatters, that overlays irradiance vs. power scatter plots of the data remaining after the last filtering step of the two CapData objects passed to the function.
156
+ - New get_filtering_table method that returns a DataFrame documenting the which time intervals are removed by which filter and which time intervals remain after all filtering.
157
+ - Adds the run_test function, which applies the passed list of CapData filtering methods to the CapData object passed.
158
+ - Adds the points_summary method, which prints the number of points remaining after all filtering, the length of the test period, the average points remaining after filtering per day, if enough points have been collected, if
159
+ more points are needed how many, and how many days left if the rate of points holds.
160
+
161
+ ### Changed
162
+ - Updated filter_pvsyst method to handle inverter output variables that have underscores
163
+ or spaces like 'IL Pmin' and 'IL_Pmin'.
164
+ - load_das method no longer drops columns and rows that contain no data
165
+ - Format of hover tooltip in plots produced by plot method now includes comma separator for thousands.
166
+ - Changes captest to pvcaptest in documentation.
167
+ - get_reg_cols method default changed to get and rename the columns defined in the `regression_cols` attribute
168
+ rather than expecting regression variables/columns to be identified by the keys 'power', 'poa', 't_amb', and 'w_vel' in the `regression_cols` attribute.
169
+
170
+
171
+ [0.9.0]: https://github.com/pvcaptest/pvcaptest/compare/v0.8.0...v0.9.0
172
+ ## [0.9.0] - 2020-08-16
173
+ ### Changed
174
+ - Updated clear sky functions which rely on pandas `index.tz_localize` to use nonexistent argument rather than errors argument, which was deprecated in pandas v1.0.
175
+ - Made Pandas v1.0 or greater a requirement for pvcaptest.
176
+ - Change to test against python v3.7* and v3.8*
177
+ - Updated installation instructions.
178
+
179
+
180
+ [0.8.0]: https://github.com/pvcaptest/pvcaptest/compare/v0.7.0...v0.8.0
181
+ ## [0.8.0] - 2020-04-13
182
+ ### Added
183
+ - Added a filter_power method to the CapData class.
184
+ - Added a filter_days method to the CapData class.
185
+
186
+ ### Changed
187
+ - Allow get_reg_cols to accept a single regression variable as a string. Previously required passing list with at least two entries.
188
+ - Fixed bug in filter_clearksy that applied filter to data rather than data_filtered attribute.
189
+ - Added option to plot method to use column names for hover labels instead of abbreviated column names.
190
+ - Improved formatting of the filtering summary output. See issue #12 for details.
191
+ - Cleaned up source code by correcting linter errors.
192
+
193
+ [0.7.0]: https://github.com/pvcaptest/pvcaptest/compare/v0.6.0...v0.7.0
194
+ ## [0.7.0] - 2020-03-08
195
+ ### Added
196
+ - New filter_shade method separate from the filter_pvsyst method.
197
+ - captest_results method warns when it automatically attempts to correct for W vs kW.
198
+
199
+ ### Changed
200
+ - Filter_pvsyst method filters on IL Pmin, IL Pmax, IL Vmin, and IL Vmax and warns if any of the four are missing. Previously failed if any of the four were missing.
201
+ - cp_results returns a warning if the regression formulas of the passed CapData objects do not match instead of warning and continuing.
202
+ - Updates to make captest compatible with pvlib 0.7.0
203
+ - Editing of the complete capacity test example to use new names and improve explanations of features.
204
+
205
+ Names were changed to remove ambiguous abbreviations:
206
+ - flt - filter; API changes in many places
207
+ - cntg_eoy - wrap_year_end; API change
208
+ - cp_results - captest_results; API change
209
+ - res_summary - captest_results_check_pvalues; API change
210
+ - reg_fml - regression_formula; API change
211
+ - irrRC_balanced - irr_rc_balanced; API change
212
+ - df_beg - df_start
213
+ - ix_ser - ix_series
214
+ - mnth - month
215
+ - months_boy - months_year_start
216
+ - months_eoy - months_year_end
217
+ - loop_cnt - loop_count
218
+ - cprat - cap_ratio
219
+ - cprat_cpval - cap_ratio_check_pvalues
220
+ - trans - column_groups; API change
221
+ - set_translation - group_columns
222
+ - trans_report - column_type_report
223
+ - set_trans argument of load_data - group_columns
224
+ - review_trans - review_column_groups
225
+ - set_reg_trans - set_regression_cols
226
+ - reg_trans - regression_cols
227
+ - update_reg_trans argument of agg_sensors - update_regression_cols
228
+ - reg_cpt - fit_regression
229
+ - ols_model - regression_results
230
+
231
+ ### Removed
232
+ - Removed the inv_trans_dict function. This was intended for use within the module and was unused.
233
+
234
+ [0.6.0]: https://github.com/pvcaptest/pvcaptest/compare/v0.5.3...v0.6.0
235
+ ## [0.6.0] - 2019-09-15
236
+ ### Added
237
+ - Setup Travis CI to test pull requests and test and deploy to pypi for tags on master.
238
+ - Setup project documentation hosted by Read the Docs using sphinx, nbshpinx, napolean, recommonmark, AutoStructify
239
+
240
+ ### Changed
241
+ - Versioning changed from manual update in __version.py file to using versioneer to update version number from git tag.
242
+ - Updated this file to follow the Keep a Changelog formatting conventions.
243
+ - Moved repository to an organization github account from my personal github account.
244
+ - Examples moved from root/examples directory to docs/examples. Executed versions of the examples display on read the docs.
245
+ - All examples can be launched through binder in live notebooks.
246
+ - The environment file has been updated to work for binder and Read the Docs.
247
+
248
+ [0.5.3]: https://github.com/pvcaptest/pvcaptest/compare/v0.5.1...v0.5.3
249
+ ## [0.5.3] - 2019-05-12
250
+ ### Changed
251
+ - Update name and location of conda environment yml file, so there is a single file and it works with binder.
252
+ - Removed binder directory.
253
+ - Update readme to reflect changes to conda environment.yml
254
+ - Minor updates to example.
255
+ - Minor documentation string updates.
256
+
257
+ [0.5.1]: https://github.com/pvcaptest/pvcaptest/compare/v0.4.0...v0.5.1
258
+ ## [0.5.1] - 2019-05-01
259
+ ### Added
260
+ - Addition of clear sky modeling using pvlib library. See new example notebook 'Clear Sky Examples'.
261
+ - Added a new method, `predict_capacities` for calculating reporting conditions and predicted outputs by month.
262
+ - New example notebook demonstrating use of `rep_cond` and `predict_capacities`.
263
+ - Add warning when filter removes all data.
264
+
265
+ ### Changed
266
+ - Changed Holoviews dependency to >= v1.11. DatLink added in v1.11 is required for scatter_hv method.
267
+ - Expanded docstring for the load_data method to more clearly explain how the method joins multiple files (by row).
268
+ - Update installation directions in README.
269
+ - Updated conda environment file (conda_env.yml) to match updated dependencies.
270
+ - **Moved all filtering and regression functionality from CapTest class into the CapData class and replace CapTest class with functions for results comparing CapData objects.**
271
+ - **Significant refactor of the rep\_cond function. Removed any time filtering and prediction from rep\_cond. Rep\_cond acts on filtered data in the df\_flt attribute.**
272
+ - `agg_sensors` method updated to be more explicit and flexible.
273
+ - Changed `filter_sensors` to filter based on percent difference between all combinations of pairs of sensors measuring the same environmental factor. Corrected bug where standard deviation filter could not detect outliers with more than two, but still a small number of sensors.
274
+ - Adjusted bounds check of columns of data when importing so that translation dictionary names would not have 'valuesError' added to them.
275
+ - Made printout of bounds check results optional when loading data.
276
+ - Adjusted the type\_defs and sub\_type_defs, so that translation dictionary keys are more accurate for PVsyst data.
@@ -0,0 +1,72 @@
1
+ # Maintainer Notes
2
+
3
+ This document contains notes and procedures for project maintainers.
4
+
5
+ ## Just Task Runner
6
+
7
+ This project is using [just](https://just.systems/man/en/introduction.html) to provide short nnames for recipes of common tasks, like building, running tests, and publishing.
8
+
9
+ Install just with `uv tool install rust-just` or see the [packages](https://just.systems/man/en/packages.html) for other options.
10
+
11
+ ### Just notes
12
+ - Run `just` commaonds from the project root directory
13
+ - `just --list` shows available recipes
14
+ - recipes are stored in `.justfile` in the project root directory
15
+
16
+ ## Pre-commit Hooks
17
+
18
+ This project uses pre-commit to automatically run code quality checks before commits. The hooks include ruff for linting and formatting.
19
+
20
+ ### Setup
21
+
22
+ After cloning the repository, install the pre-commit hooks:
23
+
24
+ ```bash
25
+ pre-commit install
26
+ ```
27
+
28
+ This will configure git to run the hooks automatically before each commit.
29
+
30
+ ### Running Manually
31
+
32
+ To run pre-commit on all files without committing:
33
+
34
+ ```bash
35
+ pre-commit run --all-files
36
+ ```
37
+
38
+ Or, run ruff commands. Run `just --list` to see options.
39
+
40
+
41
+ ## Publishing to TestPyPI
42
+
43
+ TestPyPI (test.pypi.org) is a separate instance of the Python Package Index for testing distribution tools and processes without affecting the real index.
44
+
45
+ ### One-time Setup
46
+
47
+ 1. **Create a TestPyPI account** at https://test.pypi.org
48
+
49
+ 2. **Generate an API token**:
50
+ - Log in to TestPyPI
51
+ - Go to Account Settings → API tokens
52
+ - Create a new token with appropriate scope
53
+ - Copy the token (it starts with `pypi-`)
54
+
55
+ 3. **Store the token securely**:
56
+ - save 'UV_PUBLISH_TESTPYPI_TOKEN="pypi-your-token-here" to .env
57
+
58
+ 4. **Ensure `.env` is in `.gitignore`**:
59
+ ```bash
60
+ echo '.env' >> .gitignore
61
+ ```
62
+
63
+ ### Publishing a Test Release
64
+
65
+ 1. **Build and publish**:
66
+ - Use the just command `publish-to-testpypi` to build and publish to test pypi server.
67
+
68
+ ### Notes
69
+
70
+ - TestPyPI is completely separate from the production PyPI index
71
+ - Packages and accounts on TestPyPI do not affect the real index
72
+ - Use TestPyPI to verify the publishing process before releasing to production PyPI
@@ -0,0 +1,2 @@
1
+ include README.rst
2
+ include LICENSE.txt