flixopt 2.2.0b0__py3-none-any.whl → 3.0.0__py3-none-any.whl

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.

Files changed (63) hide show
  1. flixopt/__init__.py +35 -1
  2. flixopt/aggregation.py +60 -81
  3. flixopt/calculation.py +381 -196
  4. flixopt/components.py +1022 -359
  5. flixopt/config.py +553 -191
  6. flixopt/core.py +475 -1315
  7. flixopt/effects.py +477 -214
  8. flixopt/elements.py +591 -344
  9. flixopt/features.py +403 -957
  10. flixopt/flow_system.py +781 -293
  11. flixopt/interface.py +1159 -189
  12. flixopt/io.py +50 -55
  13. flixopt/linear_converters.py +384 -92
  14. flixopt/modeling.py +759 -0
  15. flixopt/network_app.py +789 -0
  16. flixopt/plotting.py +273 -135
  17. flixopt/results.py +639 -383
  18. flixopt/solvers.py +25 -21
  19. flixopt/structure.py +928 -442
  20. flixopt/utils.py +34 -5
  21. flixopt-3.0.0.dist-info/METADATA +209 -0
  22. flixopt-3.0.0.dist-info/RECORD +26 -0
  23. {flixopt-2.2.0b0.dist-info → flixopt-3.0.0.dist-info}/WHEEL +1 -1
  24. flixopt-3.0.0.dist-info/top_level.txt +1 -0
  25. docs/examples/00-Minimal Example.md +0 -5
  26. docs/examples/01-Basic Example.md +0 -5
  27. docs/examples/02-Complex Example.md +0 -10
  28. docs/examples/03-Calculation Modes.md +0 -5
  29. docs/examples/index.md +0 -5
  30. docs/faq/contribute.md +0 -49
  31. docs/faq/index.md +0 -3
  32. docs/images/architecture_flixOpt-pre2.0.0.png +0 -0
  33. docs/images/architecture_flixOpt.png +0 -0
  34. docs/images/flixopt-icon.svg +0 -1
  35. docs/javascripts/mathjax.js +0 -18
  36. docs/release-notes/_template.txt +0 -32
  37. docs/release-notes/index.md +0 -7
  38. docs/release-notes/v2.0.0.md +0 -93
  39. docs/release-notes/v2.0.1.md +0 -12
  40. docs/release-notes/v2.1.0.md +0 -31
  41. docs/release-notes/v2.2.0.md +0 -55
  42. docs/user-guide/Mathematical Notation/Bus.md +0 -33
  43. docs/user-guide/Mathematical Notation/Effects, Penalty & Objective.md +0 -132
  44. docs/user-guide/Mathematical Notation/Flow.md +0 -26
  45. docs/user-guide/Mathematical Notation/Investment.md +0 -115
  46. docs/user-guide/Mathematical Notation/LinearConverter.md +0 -21
  47. docs/user-guide/Mathematical Notation/Piecewise.md +0 -49
  48. docs/user-guide/Mathematical Notation/Storage.md +0 -44
  49. docs/user-guide/Mathematical Notation/index.md +0 -22
  50. docs/user-guide/Mathematical Notation/others.md +0 -3
  51. docs/user-guide/index.md +0 -124
  52. flixopt/config.yaml +0 -10
  53. flixopt-2.2.0b0.dist-info/METADATA +0 -146
  54. flixopt-2.2.0b0.dist-info/RECORD +0 -59
  55. flixopt-2.2.0b0.dist-info/top_level.txt +0 -5
  56. pics/architecture_flixOpt-pre2.0.0.png +0 -0
  57. pics/architecture_flixOpt.png +0 -0
  58. pics/flixOpt_plotting.jpg +0 -0
  59. pics/flixopt-icon.svg +0 -1
  60. pics/pics.pptx +0 -0
  61. scripts/gen_ref_pages.py +0 -54
  62. tests/ressources/Zeitreihen2020.csv +0 -35137
  63. {flixopt-2.2.0b0.dist-info → flixopt-3.0.0.dist-info}/licenses/LICENSE +0 -0
flixopt/utils.py CHANGED
@@ -2,8 +2,10 @@
2
2
  This module contains several utility functions used throughout the flixopt framework.
3
3
  """
4
4
 
5
+ from __future__ import annotations
6
+
5
7
  import logging
6
- from typing import Any, Dict, List, Literal, Optional, Union
8
+ from typing import Literal
7
9
 
8
10
  import numpy as np
9
11
  import xarray as xr
@@ -11,11 +13,38 @@ import xarray as xr
11
13
  logger = logging.getLogger('flixopt')
12
14
 
13
15
 
14
- def round_floats(obj, decimals=2):
16
+ def round_nested_floats(obj, decimals=2):
17
+ """Recursively round floating point numbers in nested data structures.
18
+
19
+ This function traverses nested data structures (dictionaries, lists) and rounds
20
+ any floating point numbers to the specified number of decimal places. It handles
21
+ various data types including NumPy arrays and xarray DataArrays by converting
22
+ them to lists with rounded values.
23
+
24
+ Args:
25
+ obj: The object to process. Can be a dict, list, float, int, numpy.ndarray,
26
+ xarray.DataArray, or any other type.
27
+ decimals (int, optional): Number of decimal places to round to. Defaults to 2.
28
+
29
+ Returns:
30
+ The processed object with the same structure as the input, but with all
31
+ floating point numbers rounded to the specified precision. NumPy arrays
32
+ and xarray DataArrays are converted to lists.
33
+
34
+ Examples:
35
+ >>> data = {'a': 3.14159, 'b': [1.234, 2.678]}
36
+ >>> round_nested_floats(data, decimals=2)
37
+ {'a': 3.14, 'b': [1.23, 2.68]}
38
+
39
+ >>> import numpy as np
40
+ >>> arr = np.array([1.234, 5.678])
41
+ >>> round_nested_floats(arr, decimals=1)
42
+ [1.2, 5.7]
43
+ """
15
44
  if isinstance(obj, dict):
16
- return {k: round_floats(v, decimals) for k, v in obj.items()}
45
+ return {k: round_nested_floats(v, decimals) for k, v in obj.items()}
17
46
  elif isinstance(obj, list):
18
- return [round_floats(v, decimals) for v in obj]
47
+ return [round_nested_floats(v, decimals) for v in obj]
19
48
  elif isinstance(obj, float):
20
49
  return round(obj, decimals)
21
50
  elif isinstance(obj, int):
@@ -29,7 +58,7 @@ def round_floats(obj, decimals=2):
29
58
 
30
59
  def convert_dataarray(
31
60
  data: xr.DataArray, mode: Literal['py', 'numpy', 'xarray', 'structure']
32
- ) -> Union[List, np.ndarray, xr.DataArray, str]:
61
+ ) -> list | np.ndarray | xr.DataArray | str:
33
62
  """
34
63
  Convert a DataArray to a different format.
35
64
 
@@ -0,0 +1,209 @@
1
+ Metadata-Version: 2.4
2
+ Name: flixopt
3
+ Version: 3.0.0
4
+ Summary: Vector based energy and material flow optimization framework in Python.
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
+ Maintainer-email: Felix Bumann <felixbumann387@gmail.com>, Peter Stange <peter.stange@tu-dresden.de>
7
+ License-Expression: MIT
8
+ Project-URL: homepage, https://tu-dresden.de/ing/maschinenwesen/iet/gewv/forschung/forschungsprojekte/flixopt
9
+ Project-URL: repository, https://github.com/flixOpt/flixopt
10
+ Project-URL: documentation, https://flixopt.github.io/flixopt/
11
+ Keywords: optimization,energy systems,numerical analysis
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Intended Audience :: Developers
18
+ Classifier: Intended Audience :: Science/Research
19
+ Classifier: Topic :: Scientific/Engineering
20
+ Requires-Python: >=3.10
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: numpy<3,>=1.21.5
24
+ Requires-Dist: pandas<3,>=2.0.0
25
+ Requires-Dist: xarray<2026.0,>=2024.2.0
26
+ Requires-Dist: linopy<0.6,>=0.5.1
27
+ Requires-Dist: h5netcdf<2,>=1.0.0
28
+ Requires-Dist: pyyaml<7,>=6.0.0
29
+ Requires-Dist: rich<15,>=13.0.0
30
+ Requires-Dist: tomli<3,>=2.0.1; python_version < "3.11"
31
+ Requires-Dist: highspy<2,>=1.5.3
32
+ Requires-Dist: matplotlib<4,>=3.5.2
33
+ Requires-Dist: plotly<7,>=5.15.0
34
+ Requires-Dist: numexpr<2.14,>=2.8.4; python_version < "3.11"
35
+ Provides-Extra: network-viz
36
+ Requires-Dist: dash<4,>=3.0.0; extra == "network-viz"
37
+ Requires-Dist: dash-cytoscape<2,>=1.0.0; extra == "network-viz"
38
+ Requires-Dist: dash-daq<1,>=0.6.0; extra == "network-viz"
39
+ Requires-Dist: networkx<4,>=3.0.0; extra == "network-viz"
40
+ Requires-Dist: werkzeug<4,>=3.0.0; extra == "network-viz"
41
+ Requires-Dist: flask<4,>=3.0.0; extra == "network-viz"
42
+ Provides-Extra: full
43
+ Requires-Dist: pyvis==0.3.2; extra == "full"
44
+ Requires-Dist: tsam<3,>=2.3.1; extra == "full"
45
+ Requires-Dist: scipy<2,>=1.15.1; extra == "full"
46
+ Requires-Dist: gurobipy<13,>=10.0.0; extra == "full"
47
+ Requires-Dist: dash<4,>=3.0.0; extra == "full"
48
+ Requires-Dist: dash-cytoscape<2,>=1.0.0; extra == "full"
49
+ Requires-Dist: dash-daq<1,>=0.6.0; extra == "full"
50
+ Requires-Dist: networkx<4,>=3.0.0; extra == "full"
51
+ Requires-Dist: werkzeug<4,>=3.0.0; extra == "full"
52
+ Requires-Dist: flask<4,>=3.0.0; extra == "full"
53
+ Provides-Extra: dev
54
+ Requires-Dist: pytest==8.4.2; extra == "dev"
55
+ Requires-Dist: pytest-xdist==3.8.0; extra == "dev"
56
+ Requires-Dist: nbformat==5.10.4; extra == "dev"
57
+ Requires-Dist: ruff==0.13.2; extra == "dev"
58
+ Requires-Dist: pre-commit==4.3.0; extra == "dev"
59
+ Requires-Dist: pyvis==0.3.2; extra == "dev"
60
+ Requires-Dist: tsam==2.3.9; extra == "dev"
61
+ Requires-Dist: scipy==1.15.1; extra == "dev"
62
+ Requires-Dist: gurobipy==12.0.3; extra == "dev"
63
+ Requires-Dist: dash==3.0.0; extra == "dev"
64
+ Requires-Dist: dash-cytoscape==1.0.2; extra == "dev"
65
+ Requires-Dist: dash-daq==0.6.0; extra == "dev"
66
+ Requires-Dist: networkx==3.0.0; extra == "dev"
67
+ Requires-Dist: werkzeug==3.0.0; extra == "dev"
68
+ Provides-Extra: docs
69
+ Requires-Dist: mkdocs-material==9.6.20; extra == "docs"
70
+ Requires-Dist: mkdocstrings-python==1.18.2; extra == "docs"
71
+ Requires-Dist: mkdocs-table-reader-plugin==3.1.0; extra == "docs"
72
+ Requires-Dist: mkdocs-gen-files==0.5.0; extra == "docs"
73
+ Requires-Dist: mkdocs-include-markdown-plugin==7.1.7; extra == "docs"
74
+ Requires-Dist: mkdocs-literate-nav==0.6.2; extra == "docs"
75
+ Requires-Dist: markdown-include==0.8.1; extra == "docs"
76
+ Requires-Dist: pymdown-extensions==10.16.1; extra == "docs"
77
+ Requires-Dist: pygments==2.19.2; extra == "docs"
78
+ Requires-Dist: mike==2.1.3; extra == "docs"
79
+ Dynamic: license-file
80
+
81
+ # FlixOpt: Energy and Material Flow Optimization Framework
82
+
83
+ [![Documentation](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://flixopt.github.io/flixopt/latest/)
84
+ [![Build Status](https://github.com/flixOpt/flixopt/actions/workflows/python-app.yaml/badge.svg)](https://github.com/flixOpt/flixopt/actions/workflows/python-app.yaml)
85
+ [![PyPI version](https://img.shields.io/pypi/v/flixopt)](https://pypi.org/project/flixopt/)
86
+ [![Python Versions](https://img.shields.io/pypi/pyversions/flixopt.svg)](https://pypi.org/project/flixopt/)
87
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
88
+
89
+ ---
90
+
91
+ ## 🎯 Vision
92
+
93
+ **FlixOpt aims to be the most accessible and flexible Python framework for energy and material flow optimization.**
94
+
95
+ We believe that optimization modeling should be **approachable for beginners** yet **powerful for experts**. Too often, frameworks force you to choose between ease of use and flexibility. FlixOpt refuses this compromise.
96
+
97
+ ### Where We're Going
98
+
99
+ **Short-term goals:**
100
+ - **Multi-dimensional modeling**: Full support for multi-period investments and scenario-based stochastic optimization (periods and scenarios are in active development)
101
+ - **Enhanced component library**: More pre-built, domain-specific components (sector coupling, hydrogen systems, thermal networks, demand-side management)
102
+
103
+ **Medium-term vision:**
104
+ - **Modeling to generate alternatives (MGA)**: Built-in support for exploring near-optimal solution spaces to produce more robust, diverse solutions under uncertainty
105
+ - **Interactive tutorials**: Browser-based, reactive tutorials for learning FlixOpt without local installation
106
+ - **Standardized cost calculations**: Align with industry standards (VDI 2067) for CAPEX/OPEX calculations
107
+ - **Advanced result analysis**: Time-series aggregation, automated reporting, and rich visualization options
108
+
109
+ **Long-term vision:**
110
+ - **Showcase universal applicability**: FlixOpt already handles any flow-based system (supply chains, water networks, production planning, chemical processes) - we need more examples and domain-specific component libraries to demonstrate this
111
+ - **Seamless integration**: First-class support for coupling with simulation tools, databases, existing energy system models, and GIS data
112
+ - **Robust optimization**: Built-in uncertainty quantification and stochastic programming capabilities
113
+ - **Community ecosystem**: Rich library of user-contributed components, examples, and domain-specific extensions
114
+ - **Model validation tools**: Automated checks for physical plausibility, data consistency, and common modeling errors
115
+
116
+ ### Why FlixOpt Exists
117
+
118
+ FlixOpt is a **general-purpose framework for modeling any system involving flows and conversions** - energy, materials, fluids, goods, or data. While energy systems are our primary focus, the same mathematical foundation applies to supply chains, water networks, production lines, and more.
119
+
120
+ We bridge the gap between high-level strategic models (like [FINE](https://github.com/FZJ-IEK3-VSA/FINE)) for long-term planning and low-level dispatch tools for operations. FlixOpt is the **sweet spot** for:
121
+
122
+ - **Researchers** who need to prototype quickly but may require deep customization later
123
+ - **Engineers** who want reliable, tested components without black-box abstractions
124
+ - **Students** learning optimization who benefit from clear, Pythonic interfaces
125
+ - **Practitioners** who need to move from model to production-ready results
126
+ - **Domain experts** from any field where things flow, transform, and need optimizing
127
+
128
+ Built on modern foundations ([linopy](https://github.com/PyPSA/linopy/) and [xarray](https://github.com/pydata/xarray)), FlixOpt delivers both **performance** and **transparency**. You can inspect everything, extend anything, and trust that your model does exactly what you designed.
129
+
130
+ Originally developed at [TU Dresden](https://github.com/gewv-tu-dresden) for the SMARTBIOGRID project (funded by the German Federal Ministry for Economic Affairs and Energy, FKZ: 03KB159B), FlixOpt has evolved from the Matlab-based flixOptMat framework while incorporating the best ideas from [oemof/solph](https://github.com/oemof/oemof-solph).
131
+
132
+ ---
133
+
134
+ ## 🌟 What Makes FlixOpt Different
135
+
136
+ ### Start Simple, Scale Complex
137
+ Define a working model in minutes with high-level components, then drill down to fine-grained control when needed. No rewriting, no framework switching.
138
+
139
+ ```python
140
+ import flixopt as fx
141
+
142
+ # Simple start
143
+ boiler = fx.Boiler("Boiler", eta=0.9, ...)
144
+
145
+ # Advanced control when needed - extend with native linopy
146
+ boiler.model.add_constraints(custom_constraint, name="my_constraint")
147
+ ```
148
+
149
+ ### Multi-Criteria Optimization Done Right
150
+ Model costs, emissions, resource use, and any custom metric simultaneously as **Effects**. Optimize any single Effect, use weighted combinations, or apply ε-constraints:
151
+
152
+ ```python
153
+ costs = fx.Effect('costs', '€', 'Total costs',
154
+ share_from_temporal={'CO2': 180}) # 180 €/tCO2
155
+ co2 = fx.Effect('CO2', 'kg', 'Emissions', maximum_periodic=50000)
156
+ ```
157
+
158
+ ### Performance at Any Scale
159
+ Choose the right calculation mode for your problem:
160
+ - **Full** - Maximum accuracy for smaller problems
161
+ - **Segmented** - Rolling horizon for large time series
162
+ - **Aggregated** - Typical periods using [TSAM](https://github.com/FZJ-IEK3-VSA/tsam) for massive models
163
+
164
+ ### Built for Reproducibility
165
+ Every result file is self-contained with complete model information. Load it months later and know exactly what you optimized. Export to NetCDF, share with colleagues, archive for compliance.
166
+
167
+ ---
168
+
169
+ ## 🚀 Quick Start
170
+
171
+ ```bash
172
+ pip install flixopt
173
+ ```
174
+
175
+ That's it. FlixOpt comes with the [HiGHS](https://highs.dev/) solver included - you're ready to optimize.
176
+ Many more solvers are supported (gurobi, cplex, cbc, glpk, ...)
177
+
178
+ For additional features (interactive network visualization, time series aggregation):
179
+ ```bash
180
+ pip install "flixopt[full]"
181
+ ```
182
+
183
+ **Next steps:**
184
+ - 📚 [Full Documentation](https://flixopt.github.io/flixopt/latest/)
185
+ - 💡 [Examples](https://flixopt.github.io/flixopt/latest/examples/)
186
+ - 🔧 [API Reference](https://flixopt.github.io/flixopt/latest/api-reference/)
187
+
188
+ ---
189
+
190
+ ## 🤝 Contributing
191
+
192
+ FlixOpt thrives on community input. Whether you're fixing bugs, adding components, improving docs, or sharing use cases - we welcome your contributions.
193
+
194
+ See our [contribution guide](https://flixopt.github.io/flixopt/latest/contribute/) to get started.
195
+
196
+ ---
197
+
198
+ ## 📖 Citation
199
+
200
+ If FlixOpt supports your research or project, please cite:
201
+
202
+ - **Main Citation:** [DOI:10.18086/eurosun.2022.04.07](https://doi.org/10.18086/eurosun.2022.04.07)
203
+ - **Short Overview:** [DOI:10.13140/RG.2.2.14948.24969](https://doi.org/10.13140/RG.2.2.14948.24969)
204
+
205
+ ---
206
+
207
+ ## 📄 License
208
+
209
+ MIT License - See [LICENSE](https://github.com/flixopt/flixopt/blob/main/LICENSE) for details.
@@ -0,0 +1,26 @@
1
+ flixopt/__init__.py,sha256=8F0MKV9GAsFSP5OCZgn1dwzGD7-bZpsmVnTVe56ZcU8,2204
2
+ flixopt/aggregation.py,sha256=P374vIJc1ZcPxxG8dfCPgUKNLRNP2kf8Y-sc1JOA45U,16191
3
+ flixopt/calculation.py,sha256=KJFSjGB08Nq8hfW63_kfKLruXAkYibTCzaVy-LxmVR4,29371
4
+ flixopt/commons.py,sha256=ZNlUN1z-h9OGHPo-s-n5OLlJaoPZKVGcAdRyGKpMk4M,1256
5
+ flixopt/components.py,sha256=bm76uCaXkeLuDBfsJ1kjfaHOl8zmow2JTaNPCK4Jknc,57757
6
+ flixopt/config.py,sha256=hbbwWInUDvnYDlxNidiXkGL5mSwqwLi6p3G9P1p7lkA,21992
7
+ flixopt/core.py,sha256=1eWxpmaDfHfyDt2HgE2WfAzZZ_OsWGYmiOxFrvZVTx4,26351
8
+ flixopt/effects.py,sha256=iLVC4VdFTtZaF6B8BJiILRwe9ahj93og8JQSaAE_ocI,34063
9
+ flixopt/elements.py,sha256=D4EkYZxqtyBhpTYf6C82pBRJf5fjyGXxZ8HMNiaHCuA,36156
10
+ flixopt/features.py,sha256=kd-fMvADv8GXoKkrXObYjRJLN8toBG-5bOHTuh-59kk,25073
11
+ flixopt/flow_system.py,sha256=D84MIkX5oA_4H55p9mOC7tstV96V5RN2qPeJ2exX1ks,40242
12
+ flixopt/interface.py,sha256=iLc2-_adqSeljlJrX6tao8IxBCQcksq4S7HQDw9L_OM,57503
13
+ flixopt/io.py,sha256=2ZnpoU4gVnKfv-FiwoYEA11wlqbdUU8PXJiofRSKl5M,11795
14
+ flixopt/linear_converters.py,sha256=tcz5c1SI36hRFbCX-4NXced12ss9VETg5BE7zOdyeo4,22699
15
+ flixopt/modeling.py,sha256=7N24HRz6Jf1s2P9gMD4Ue_jBC0E7jr5o1qrI4Ik-UBQ,31365
16
+ flixopt/network_app.py,sha256=LnVAlAgzL1BgMYLsJ20a62j6nQUmNccF1zo4ACUXzL4,29433
17
+ flixopt/plotting.py,sha256=lHeSwfSaQCGP2w54S8CzSa7sWwCxMcWci1EU1TYqLWM,60909
18
+ flixopt/results.py,sha256=li0KIiSP3spPIJLAgGz22nK1zpwvxGm3Hh1rfblsGv4,77728
19
+ flixopt/solvers.py,sha256=m38Smc22MJfHYMiqfNf1MA3OmvbTRm5OWS9nECkDdQk,2355
20
+ flixopt/structure.py,sha256=ntLoj--zTnaZwNYKw-WkJTNxY0ef4zDp4S0iiSxyyxE,47707
21
+ flixopt/utils.py,sha256=2c1vwRHMF-vu1oEX4UezGaEw09GiwbzOYZywCTWKOj8,2866
22
+ flixopt-3.0.0.dist-info/licenses/LICENSE,sha256=HKsZnbrM_3Rvnr_u9cWSG90cBsj5_slaqI_z_qcxnGI,1118
23
+ flixopt-3.0.0.dist-info/METADATA,sha256=bA5YAnexuB1Z81yd9JSq7HuQwMjyJSzA25msLQo0-lA,10776
24
+ flixopt-3.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
25
+ flixopt-3.0.0.dist-info/top_level.txt,sha256=fanTzb9NylIXfv6Ic7spU97fVmRgGDPKvI_91tw4S3E,8
26
+ flixopt-3.0.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.4.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -0,0 +1 @@
1
+ flixopt
@@ -1,5 +0,0 @@
1
- # Minimal Example
2
-
3
- ```python
4
- {! ../examples/00_Minmal/minimal_example.py !}
5
- ```
@@ -1,5 +0,0 @@
1
- # Simple example
2
-
3
- ```python
4
- {! ../examples/01_Simple/simple_example.py !}
5
- ```
@@ -1,10 +0,0 @@
1
- # Complex example
2
- This saves the results of a calculation to file and reloads them to analyze the results
3
- ## Build the Model
4
- ```python
5
- {! ../examples/02_Complex/complex_example.py !}
6
- ```
7
- ## Load the Results from file
8
- ```python
9
- {! ../examples/02_Complex/complex_example_results.py !}
10
- ```
@@ -1,5 +0,0 @@
1
- # Calculation Mode comparison
2
- **Note:** This example relies on time series data. You can find it in the `examples` folder of the FlixOpt repository.
3
- ```python
4
- {! ../examples/03_Calculation_types/example_calculation_types.py !}
5
- ```
docs/examples/index.md DELETED
@@ -1,5 +0,0 @@
1
- # Examples
2
-
3
- Here you can find a collection of examples that demonstrate how to use FlixOpt.
4
-
5
- We work on improving this gallery. If you have something to share, please contact us!
docs/faq/contribute.md DELETED
@@ -1,49 +0,0 @@
1
- # Contributing to the Project
2
-
3
- We warmly welcome contributions from the community! This guide will help you get started with contributing to our project.
4
-
5
- ## Development Setup
6
- 1. Clone the repository `git clone https://github.com/flixOpt/flixopt.git`
7
- 2. Install the development dependencies `pip install -editable .[dev, docs]`
8
- 3. Run `pytest` and `ruff check .` to ensure your code passes all tests
9
-
10
- ## Documentation
11
- FlixOpt uses [mkdocs](https://www.mkdocs.org/) to generate documentation. To preview the documentation locally, run `mkdocs serve` in the root directory.
12
-
13
- ## Helpful Commands
14
- - `mkdocs serve` to preview the documentation locally. Navigate to `http://127.0.0.1:8000/` to view the documentation.
15
- - `pytest` to run the test suite (You can also run the provided python script `run_all_test.py`)
16
- - `ruff check .` to run the linter
17
- - `ruff check . --fix` to automatically fix linting issues
18
-
19
- ---
20
- # Best practices
21
-
22
- ## Coding Guidelines
23
-
24
- - Follow PEP 8 style guidelines
25
- - Write clear, commented code
26
- - Include type hints
27
- - Create or update tests for new functionality
28
- - Ensure 100% test coverage for new code
29
-
30
- ## Branches
31
- As we start to think FlixOpt in **Releases**, we decided to introduce multiple **dev**-branches instead of only one:
32
- Following the **Semantic Versioning** guidelines, we introduced:
33
- - `next/patch`: This is where all pull requests for the next patch release (1.0.x) go.
34
- - `next/minor`: This is where all pull requests for the next minor release (1.x.0) go.
35
- - `next/major`: This is where all pull requests for the next major release (x.0.0) go.
36
-
37
- Everything else remains in `feature/...`-branches.
38
-
39
- ## Pull requests
40
- Every feature or bugfix should be merged into one of the 3 [release branches](#branches), using **Squash and merge** or a regular **single commit**.
41
- At some point, `next/minor` or `next/major` will get merged into `main` using a regular **Merge** (not squash).
42
- *This ensures that Features are kept separate, and the `next/...`branches stay in synch with ``main`.*
43
-
44
- ## Releases
45
- As stated, we follow **Semantic Versioning**.
46
- Right after one of the 3 [release branches](#branches) is merged into main, a **Tag** should be added to the merge commit and pushed to the main branch. The tag has the form `v1.2.3`.
47
- With this tag, a release with **Release Notes** must be created.
48
-
49
- *This is our current best practice*
docs/faq/index.md DELETED
@@ -1,3 +0,0 @@
1
- # Frequently Asked Questions
2
-
3
- ## Work in progress
Binary file