flixopt 2.1.10__tar.gz → 2.2.0__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.
Potentially problematic release.
This version of flixopt might be problematic. Click here for more details.
- {flixopt-2.1.10 → flixopt-2.2.0}/CHANGELOG.md +41 -2
- flixopt-2.2.0/MANIFEST.in +26 -0
- {flixopt-2.1.10/flixopt.egg-info → flixopt-2.2.0}/PKG-INFO +6 -8
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/__init__.py +0 -2
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/calculation.py +2 -2
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/components.py +1 -1
- flixopt-2.2.0/flixopt/config.py +561 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/elements.py +5 -5
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/features.py +6 -6
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/flow_system.py +2 -1
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/interface.py +4 -4
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/io.py +6 -4
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/results.py +1 -1
- {flixopt-2.1.10 → flixopt-2.2.0/flixopt.egg-info}/PKG-INFO +6 -8
- flixopt-2.2.0/flixopt.egg-info/SOURCES.txt +30 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt.egg-info/requires.txt +4 -4
- flixopt-2.2.0/flixopt.egg-info/top_level.txt +1 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/pyproject.toml +13 -8
- flixopt-2.1.10/.github/CONTRIBUTING.md +0 -85
- flixopt-2.1.10/.github/ISSUE_TEMPLATE/bug_report.yml +0 -111
- flixopt-2.1.10/.github/ISSUE_TEMPLATE/config.yml +0 -14
- flixopt-2.1.10/.github/ISSUE_TEMPLATE/feature_request.yml +0 -127
- flixopt-2.1.10/.github/ISSUE_TEMPLATE/general_issue.yml +0 -40
- flixopt-2.1.10/.github/pull_request_template.md +0 -20
- flixopt-2.1.10/.github/workflows/python-app.yaml +0 -419
- flixopt-2.1.10/.gitignore +0 -10
- flixopt-2.1.10/.pre-commit-config.yaml +0 -16
- flixopt-2.1.10/docs/SUMMARY.md +0 -7
- flixopt-2.1.10/docs/contribute.md +0 -45
- flixopt-2.1.10/docs/examples/00-Minimal Example.md +0 -5
- flixopt-2.1.10/docs/examples/01-Basic Example.md +0 -5
- flixopt-2.1.10/docs/examples/02-Complex Example.md +0 -10
- flixopt-2.1.10/docs/examples/03-Calculation Modes.md +0 -5
- flixopt-2.1.10/docs/examples/index.md +0 -5
- flixopt-2.1.10/docs/faq/contribute.md +0 -61
- flixopt-2.1.10/docs/faq/index.md +0 -3
- flixopt-2.1.10/docs/getting-started.md +0 -42
- flixopt-2.1.10/docs/images/architecture_flixOpt-pre2.0.0.png +0 -0
- flixopt-2.1.10/docs/images/architecture_flixOpt.png +0 -0
- flixopt-2.1.10/docs/images/flixopt-icon.svg +0 -1
- flixopt-2.1.10/docs/index.md +0 -47
- flixopt-2.1.10/docs/javascripts/mathjax.js +0 -18
- flixopt-2.1.10/docs/user-guide/Mathematical Notation/Bus.md +0 -33
- flixopt-2.1.10/docs/user-guide/Mathematical Notation/Effects, Penalty & Objective.md +0 -132
- flixopt-2.1.10/docs/user-guide/Mathematical Notation/Flow.md +0 -26
- flixopt-2.1.10/docs/user-guide/Mathematical Notation/InvestParameters.md +0 -3
- flixopt-2.1.10/docs/user-guide/Mathematical Notation/LinearConverter.md +0 -21
- flixopt-2.1.10/docs/user-guide/Mathematical Notation/OnOffParameters.md +0 -3
- flixopt-2.1.10/docs/user-guide/Mathematical Notation/Piecewise.md +0 -49
- flixopt-2.1.10/docs/user-guide/Mathematical Notation/Storage.md +0 -44
- flixopt-2.1.10/docs/user-guide/Mathematical Notation/index.md +0 -22
- flixopt-2.1.10/docs/user-guide/Mathematical Notation/others.md +0 -3
- flixopt-2.1.10/docs/user-guide/index.md +0 -124
- flixopt-2.1.10/examples/00_Minmal/minimal_example.py +0 -71
- flixopt-2.1.10/examples/01_Simple/simple_example.py +0 -119
- flixopt-2.1.10/examples/02_Complex/complex_example.py +0 -201
- flixopt-2.1.10/examples/02_Complex/complex_example_results.py +0 -34
- flixopt-2.1.10/examples/03_Calculation_types/Zeitreihen2020.csv +0 -35137
- flixopt-2.1.10/examples/03_Calculation_types/example_calculation_types.py +0 -224
- flixopt-2.1.10/flixopt/config.py +0 -268
- flixopt-2.1.10/flixopt/config.yaml +0 -10
- flixopt-2.1.10/flixopt.egg-info/SOURCES.txt +0 -102
- flixopt-2.1.10/flixopt.egg-info/top_level.txt +0 -6
- flixopt-2.1.10/mkdocs.yml +0 -136
- flixopt-2.1.10/pics/architecture_flixOpt-pre2.0.0.png +0 -0
- flixopt-2.1.10/pics/architecture_flixOpt.png +0 -0
- flixopt-2.1.10/pics/flixOpt_plotting.jpg +0 -0
- flixopt-2.1.10/pics/flixopt-icon.svg +0 -1
- flixopt-2.1.10/pics/pics.pptx +0 -0
- flixopt-2.1.10/renovate.json +0 -31
- flixopt-2.1.10/scripts/extract_changelog.py +0 -148
- flixopt-2.1.10/scripts/extract_release_notes.py +0 -45
- flixopt-2.1.10/scripts/gen_ref_pages.py +0 -54
- flixopt-2.1.10/tests/__init__.py +0 -0
- flixopt-2.1.10/tests/conftest.py +0 -508
- flixopt-2.1.10/tests/ressources/Zeitreihen2020.csv +0 -35137
- flixopt-2.1.10/tests/run_all_tests.py +0 -10
- flixopt-2.1.10/tests/test_bus.py +0 -65
- flixopt-2.1.10/tests/test_component.py +0 -202
- flixopt-2.1.10/tests/test_dataconverter.py +0 -113
- flixopt-2.1.10/tests/test_effect.py +0 -163
- flixopt-2.1.10/tests/test_examples.py +0 -49
- flixopt-2.1.10/tests/test_flow.py +0 -1156
- flixopt-2.1.10/tests/test_functional.py +0 -787
- flixopt-2.1.10/tests/test_integration.py +0 -423
- flixopt-2.1.10/tests/test_io.py +0 -64
- flixopt-2.1.10/tests/test_linear_converter.py +0 -500
- flixopt-2.1.10/tests/test_network_app.py +0 -24
- flixopt-2.1.10/tests/test_on_hours_computation.py +0 -108
- flixopt-2.1.10/tests/test_plots.py +0 -134
- flixopt-2.1.10/tests/test_results_plots.py +0 -91
- flixopt-2.1.10/tests/test_storage.py +0 -390
- flixopt-2.1.10/tests/test_timeseries.py +0 -603
- flixopt-2.1.10/tests/todos.txt +0 -5
- {flixopt-2.1.10 → flixopt-2.2.0}/LICENSE +0 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/README.md +0 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/aggregation.py +0 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/commons.py +0 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/core.py +0 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/effects.py +0 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/linear_converters.py +0 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/network_app.py +0 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/plotting.py +0 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/solvers.py +0 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/structure.py +0 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt/utils.py +0 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/flixopt.egg-info/dependency_links.txt +0 -0
- {flixopt-2.1.10 → flixopt-2.2.0}/setup.cfg +0 -0
|
@@ -4,6 +4,8 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
|
|
4
4
|
Formatting is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) & [Gitmoji](https://gitmoji.dev).
|
|
5
5
|
For more details regarding the individual PRs and contributors, please refer to our [GitHub releases](https://github.com/flixOpt/flixopt/releases).
|
|
6
6
|
|
|
7
|
+
---
|
|
8
|
+
|
|
7
9
|
<!-- This text won't be rendered
|
|
8
10
|
Note: The CI will automatically append a "What's Changed" section to the changelog for github releases.
|
|
9
11
|
This contains all commits, PRs, and contributors.
|
|
@@ -58,14 +60,51 @@ Please keep the format of the changelog consistent with the other releases, so t
|
|
|
58
60
|
### 📦 Dependencies
|
|
59
61
|
|
|
60
62
|
### 📝 Docs
|
|
61
|
-
- Improved CHANGELOG.md formatting by adding better categories and formating by Gitmoji.
|
|
62
|
-
- Added a script to extract the release notes from the CHANGELOG.md file for better organized documentation.
|
|
63
63
|
|
|
64
64
|
### 👷 Development
|
|
65
65
|
|
|
66
66
|
### 🚧 Known Issues
|
|
67
67
|
|
|
68
68
|
Until here -->
|
|
69
|
+
|
|
70
|
+
## [2.2.0] - 2025-10-11
|
|
71
|
+
**Summary:** This release is a Configuration and Logging management release.
|
|
72
|
+
|
|
73
|
+
### ✨ Added
|
|
74
|
+
- Added `CONFIG.reset()` method to restore configuration to default values
|
|
75
|
+
- Added configurable log file rotation settings: `CONFIG.Logging.max_file_size` and `CONFIG.Logging.backup_count`
|
|
76
|
+
- Added configurable log format settings: `CONFIG.Logging.date_format` and `CONFIG.Logging.format`
|
|
77
|
+
- Added configurable console settings: `CONFIG.Logging.console_width` and `CONFIG.Logging.show_path`
|
|
78
|
+
- Added `CONFIG.Logging.Colors` nested class for customizable log level colors using ANSI escape codes (works with both standard and Rich handlers)
|
|
79
|
+
|
|
80
|
+
### ♻️ Changed
|
|
81
|
+
- Logging and Configuration management changed
|
|
82
|
+
|
|
83
|
+
### 🗑️ Deprecated
|
|
84
|
+
- `change_logging_level()` function is now deprecated in favor of `CONFIG.Logging.level` and `CONFIG.apply()`. Will be removed in version 3.0.0.
|
|
85
|
+
|
|
86
|
+
### 🔥 Removed
|
|
87
|
+
- Removed unused `config.merge_configs` function from configuration module
|
|
88
|
+
|
|
89
|
+
### 👷 Development
|
|
90
|
+
- Greatly expanded test coverage for `config.py` module
|
|
91
|
+
- Added `@pytest.mark.xdist_group` to `TestConfigModule` tests to prevent global config interference
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## [2.1.11] - 2025-10-05
|
|
96
|
+
**Summary:** Important bugfix in `Storage` leading to wrong results due to incorrect discharge losses.
|
|
97
|
+
|
|
98
|
+
### ♻️ Changed
|
|
99
|
+
- Using `h5netcdf` instead of `netCDF4` for dataset I/O operations. This follows the update in `xarray==2025.09.01`
|
|
100
|
+
|
|
101
|
+
### 🐛 Fixed
|
|
102
|
+
- Fix `charge_state` Constraint in `Storage` leading to incorrect losses in discharge and therefore incorrect charge states and discharge values.
|
|
103
|
+
|
|
104
|
+
### 📦 Dependencies
|
|
105
|
+
- Updated `renovate.config` to treat CalVer packages (xarray and dask) with more care
|
|
106
|
+
- Updated packaging configuration
|
|
107
|
+
|
|
69
108
|
---
|
|
70
109
|
|
|
71
110
|
## [2.1.10] - 2025-09-29
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Include essential files from source distribution
|
|
2
|
+
include LICENSE
|
|
3
|
+
include README.md
|
|
4
|
+
include CHANGELOG.md
|
|
5
|
+
include pyproject.toml
|
|
6
|
+
|
|
7
|
+
# Include package source and data
|
|
8
|
+
recursive-include flixopt *.py *.yaml
|
|
9
|
+
|
|
10
|
+
# Exclude everything else
|
|
11
|
+
global-exclude *.pyc *.pyo __pycache__
|
|
12
|
+
prune .github
|
|
13
|
+
prune docs
|
|
14
|
+
prune examples
|
|
15
|
+
prune tests
|
|
16
|
+
prune pics
|
|
17
|
+
prune scripts
|
|
18
|
+
prune build
|
|
19
|
+
prune dist
|
|
20
|
+
prune .venv
|
|
21
|
+
prune venv
|
|
22
|
+
exclude .gitignore
|
|
23
|
+
exclude .pre-commit-config.yaml
|
|
24
|
+
exclude renovate.json
|
|
25
|
+
exclude mkdocs.yml
|
|
26
|
+
exclude test_package.sh
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flixopt
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0
|
|
4
4
|
Summary: Vector based energy and material flow optimization framework in Python.
|
|
5
5
|
Author-email: "Chair of Building Energy Systems and Heat Supply, TU Dresden" <peter.stange@tu-dresden.de>, Felix Bumann <felixbumann387@gmail.com>, Felix Panitz <baumbude@googlemail.com>, Peter Stange <peter.stange@tu-dresden.de>
|
|
6
6
|
Maintainer-email: Felix Bumann <felixbumann387@gmail.com>, Peter Stange <peter.stange@tu-dresden.de>
|
|
7
|
-
License: MIT
|
|
7
|
+
License-Expression: MIT
|
|
8
8
|
Project-URL: homepage, https://tu-dresden.de/ing/maschinenwesen/iet/gewv/forschung/forschungsprojekte/flixopt
|
|
9
9
|
Project-URL: repository, https://github.com/flixOpt/flixopt
|
|
10
10
|
Project-URL: documentation, https://flixopt.github.io/flixopt/
|
|
11
11
|
Keywords: optimization,energy systems,numerical analysis
|
|
12
12
|
Classifier: Development Status :: 3 - Alpha
|
|
13
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
14
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -18,7 +17,6 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
18
17
|
Classifier: Intended Audience :: Developers
|
|
19
18
|
Classifier: Intended Audience :: Science/Research
|
|
20
19
|
Classifier: Topic :: Scientific/Engineering
|
|
21
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
22
20
|
Requires-Python: >=3.10
|
|
23
21
|
Description-Content-Type: text/markdown
|
|
24
22
|
License-File: LICENSE
|
|
@@ -26,7 +24,7 @@ Requires-Dist: numpy<3,>=1.21.5
|
|
|
26
24
|
Requires-Dist: pandas<3,>=2.0.0
|
|
27
25
|
Requires-Dist: xarray<2026.0,>=2024.2.0
|
|
28
26
|
Requires-Dist: linopy<0.6,>=0.5.1
|
|
29
|
-
Requires-Dist:
|
|
27
|
+
Requires-Dist: h5netcdf<2,>=1.0.0
|
|
30
28
|
Requires-Dist: pyyaml<7,>=6.0.0
|
|
31
29
|
Requires-Dist: rich<15,>=13.0.0
|
|
32
30
|
Requires-Dist: tomli<3,>=2.0.1; python_version < "3.11"
|
|
@@ -55,10 +53,10 @@ Provides-Extra: dev
|
|
|
55
53
|
Requires-Dist: pytest==8.4.2; extra == "dev"
|
|
56
54
|
Requires-Dist: pytest-xdist==3.8.0; extra == "dev"
|
|
57
55
|
Requires-Dist: nbformat==5.10.4; extra == "dev"
|
|
58
|
-
Requires-Dist: ruff==0.13.
|
|
56
|
+
Requires-Dist: ruff==0.13.2; extra == "dev"
|
|
59
57
|
Requires-Dist: pre-commit==4.3.0; extra == "dev"
|
|
60
58
|
Requires-Dist: pyvis==0.3.2; extra == "dev"
|
|
61
|
-
Requires-Dist: tsam==2.3.
|
|
59
|
+
Requires-Dist: tsam==2.3.9; extra == "dev"
|
|
62
60
|
Requires-Dist: scipy==1.15.1; extra == "dev"
|
|
63
61
|
Requires-Dist: gurobipy==12.0.3; extra == "dev"
|
|
64
62
|
Requires-Dist: dash==3.0.0; extra == "dev"
|
|
@@ -67,7 +65,7 @@ Requires-Dist: dash-daq==0.6.0; extra == "dev"
|
|
|
67
65
|
Requires-Dist: networkx==3.0.0; extra == "dev"
|
|
68
66
|
Requires-Dist: werkzeug==3.0.0; extra == "dev"
|
|
69
67
|
Provides-Extra: docs
|
|
70
|
-
Requires-Dist: mkdocs-material==9.6.
|
|
68
|
+
Requires-Dist: mkdocs-material==9.6.20; extra == "docs"
|
|
71
69
|
Requires-Dist: mkdocstrings-python==1.18.2; extra == "docs"
|
|
72
70
|
Requires-Dist: mkdocs-table-reader-plugin==3.1.0; extra == "docs"
|
|
73
71
|
Requires-Dist: mkdocs-gen-files==0.5.0; extra == "docs"
|
|
@@ -91,13 +91,13 @@ class Calculation:
|
|
|
91
91
|
model.label_of_element: float(model.size.solution)
|
|
92
92
|
for component in self.flow_system.components.values()
|
|
93
93
|
for model in component.model.all_sub_models
|
|
94
|
-
if isinstance(model, InvestmentModel) and float(model.size.solution) >= CONFIG.
|
|
94
|
+
if isinstance(model, InvestmentModel) and float(model.size.solution) >= CONFIG.Modeling.epsilon
|
|
95
95
|
},
|
|
96
96
|
'Not invested': {
|
|
97
97
|
model.label_of_element: float(model.size.solution)
|
|
98
98
|
for component in self.flow_system.components.values()
|
|
99
99
|
for model in component.model.all_sub_models
|
|
100
|
-
if isinstance(model, InvestmentModel) and float(model.size.solution) < CONFIG.
|
|
100
|
+
if isinstance(model, InvestmentModel) and float(model.size.solution) < CONFIG.Modeling.epsilon
|
|
101
101
|
},
|
|
102
102
|
},
|
|
103
103
|
'Buses with excess': [
|
|
@@ -791,7 +791,7 @@ class StorageModel(ComponentModel):
|
|
|
791
791
|
charge_state.isel(time=slice(1, None))
|
|
792
792
|
== charge_state.isel(time=slice(None, -1)) * ((1 - rel_loss) ** hours_per_step)
|
|
793
793
|
+ charge_rate * eff_charge * hours_per_step
|
|
794
|
-
- discharge_rate *
|
|
794
|
+
- discharge_rate * hours_per_step / eff_discharge,
|
|
795
795
|
name=f'{self.label_full}|charge_state',
|
|
796
796
|
),
|
|
797
797
|
'charge_state',
|