Skip to content
Closed
Changes from 1 commit
Commits
Show all changes
512 commits
Select commit Hold shift + click to select a range
1d92c02
adding temoa_davey_code to ci
ParticularlyPythonicBS Oct 3, 2025
a913f22
adding coderabbit_config
ParticularlyPythonicBS Oct 3, 2025
da91813
Merge pull request #156 from TemoaProject/feat/coderabbit_config
ParticularlyPythonicBS Oct 3, 2025
bf3346d
setting up new directory structure for clear public vs intermal api …
ParticularlyPythonicBS Oct 7, 2025
f371420
removing star imports from model.py, more work is needed to tame thi…
ParticularlyPythonicBS Oct 8, 2025
c30d544
small taming of the model file, considering moving to a component fo…
ParticularlyPythonicBS Oct 8, 2025
2dc439c
adding placeholder files for component structure
ParticularlyPythonicBS Oct 8, 2025
1b42d77
distributing temoa_initialize into components
ParticularlyPythonicBS Oct 8, 2025
927e047
distributing temoa_rules into components
ParticularlyPythonicBS Oct 8, 2025
ff6e71f
fixing linting errors in _internal
ParticularlyPythonicBS Oct 8, 2025
08448e8
fixing linting errors in components
ParticularlyPythonicBS Oct 8, 2025
5eb0b3d
splitting up CreateSparseDicts, storing the chunks in precompute for…
ParticularlyPythonicBS Oct 9, 2025
eea8271
moving the chunked from precompute to the component files
ParticularlyPythonicBS Oct 9, 2025
e3ab9bb
cleaning up capacity.py
ParticularlyPythonicBS Oct 9, 2025
eb71312
cleaning up commodities.py
ParticularlyPythonicBS Oct 9, 2025
6ade404
cleaning up costs.py
ParticularlyPythonicBS Oct 9, 2025
d7f69b4
cleaning up emissions.py
ParticularlyPythonicBS Oct 9, 2025
6c0185b
cleaning up flows.py
ParticularlyPythonicBS Oct 9, 2025
53462dd
cleaning up geography.py
ParticularlyPythonicBS Oct 9, 2025
f4c1125
cleaning up limits.py
ParticularlyPythonicBS Oct 9, 2025
53353a2
cleaning up operations and merging ramping into it
ParticularlyPythonicBS Oct 9, 2025
1a7d3bf
cleaning up reserves.py
ParticularlyPythonicBS Oct 9, 2025
3babdbe
cleaning up storage.py
ParticularlyPythonicBS Oct 9, 2025
93ed924
cleaning up technology.py
ParticularlyPythonicBS Oct 9, 2025
ec5aac5
cleaning up time.py
ParticularlyPythonicBS Oct 9, 2025
084077e
cleaning up utils.py
ParticularlyPythonicBS Oct 9, 2025
8b8f663
updated backwards compat temoa_model to not used temoa_rules or init…
ParticularlyPythonicBS Oct 10, 2025
ccd0dc7
Merge pull request #158 from TemoaProject/feature/restructure_to_comp…
ParticularlyPythonicBS Oct 10, 2025
ce63713
fixed tuple missing period index bug in deprecated CreateCapacityFac…
ParticularlyPythonicBS Oct 10, 2025
5b01d31
Merge pull request #160 from TemoaProject/bugfix/capacity_tuple_length
ParticularlyPythonicBS Oct 10, 2025
71933db
using enums for operator expression for simpler and more robust func…
ParticularlyPythonicBS Oct 10, 2025
6317ce9
Merge pull request #161 from TemoaProject/enum_operator_expression
ParticularlyPythonicBS Oct 10, 2025
a655e1e
Refactoring hybrid loader to use declarative manifest (#164)
ParticularlyPythonicBS Oct 14, 2025
be24fff
Fix database schema to include output_comm in primary key of LimitAnn…
idelder Oct 14, 2025
eff7cba
Fix lifetime check in db migrator to include existing vintages (#162)
idelder Oct 15, 2025
e5f6bc7
adding stubs for pyomo created with stubgen, updating coderabbit con…
ParticularlyPythonicBS Oct 18, 2025
2c522ae
adding temoa/types module for giving type aliases to temoa code
ParticularlyPythonicBS Oct 18, 2025
d899da8
adding typing to temoa/_internal files
ParticularlyPythonicBS Oct 18, 2025
c734598
adding typing to temoa/core files
ParticularlyPythonicBS Oct 18, 2025
607528a
adding typing to temoa/component files
ParticularlyPythonicBS Oct 18, 2025
e23b93c
adding typing to temoa/data_io
ParticularlyPythonicBS Oct 18, 2025
b9e542d
reflecting changes from core/model to temoa_model for back compat
ParticularlyPythonicBS Oct 19, 2025
c5260a1
small typing additions to assorted files
ParticularlyPythonicBS Oct 19, 2025
6ad7c26
adding ci type checking
ParticularlyPythonicBS Oct 19, 2025
0ed8120
removing old version of temoa_model to fix typing error
ParticularlyPythonicBS Oct 19, 2025
2816767
Merge pull request #171 from TemoaProject/ref/mypy_typing_checking
ParticularlyPythonicBS Oct 20, 2025
bec1622
separating the solver dependency and removing gurobi from core depen…
ParticularlyPythonicBS Oct 20, 2025
5c9cee3
Merge pull request #172 from TemoaProject/fix_gurobi_dependency
ParticularlyPythonicBS Oct 20, 2025
3704b68
removing outdated jupyter notebooks
ParticularlyPythonicBS Oct 20, 2025
0d0cce6
Update unit cost explorer for temoa v4
idelder Oct 20, 2025
ff7b5a2
Merge pull request #173 from TemoaProject/removing_nbs
ParticularlyPythonicBS Oct 20, 2025
eb78b91
Merge branch 'temoa_davey_code' into fix/unit_cost_explorer
ParticularlyPythonicBS Oct 20, 2025
6f1cdae
Merge pull request #174 from idelder/fix/unit_cost_explorer
ParticularlyPythonicBS Oct 21, 2025
b87c484
polishing element_checker and adding more typing info
ParticularlyPythonicBS Oct 21, 2025
1a4f9ac
making the network model data test less brittle by using a dispatche…
ParticularlyPythonicBS Oct 21, 2025
64d4659
polishing network_model_data and adding more typing info
ParticularlyPythonicBS Oct 21, 2025
88c5481
fixing typing issues in pricing_check.py
ParticularlyPythonicBS Oct 22, 2025
4836f33
Polishing commodity network with switch to iterative DFS, encapsulat…
ParticularlyPythonicBS Oct 22, 2025
76c12ef
slight typing polish to commodity_network_manager
ParticularlyPythonicBS Oct 22, 2025
2bf9980
fixing propagated type errors from model_checking
ParticularlyPythonicBS Oct 22, 2025
6e7af56
temporarily ignoring commodity_graph from type checking
ParticularlyPythonicBS Oct 22, 2025
153a722
Merge branch 'temoa_davey_code' into feat/network_management_revamp
ParticularlyPythonicBS Oct 22, 2025
44c469d
removing mypy ignore by tightening network_model_data.build typing
ParticularlyPythonicBS Oct 23, 2025
35d1a65
minor typing updates
ParticularlyPythonicBS Oct 23, 2025
07343f7
Logging improvements
ParticularlyPythonicBS Oct 23, 2025
74c3fe8
variable typo fix in pricing_check
ParticularlyPythonicBS Oct 23, 2025
98f421c
using domain types where possible
ParticularlyPythonicBS Oct 23, 2025
c3fe548
simplifying assertion in test_network_build_and_analysis
ParticularlyPythonicBS Oct 23, 2025
0471da9
correcting import in mga_sequencer to reflect change in pyomo api
ParticularlyPythonicBS Oct 23, 2025
a4c086d
Merge pull request #176 from TemoaProject/fix/pyomo_deprecated_api
ParticularlyPythonicBS Oct 23, 2025
de88d21
caching regex in filter_elements
ParticularlyPythonicBS Oct 23, 2025
6121e8d
Merge branch 'temoa_davey_code' into feat/network_management_revamp
ParticularlyPythonicBS Oct 23, 2025
b16451a
Adding templates for in house network visualization
ParticularlyPythonicBS Oct 28, 2025
6c9d1e8
generic graph creation and visualization framework
ParticularlyPythonicBS Oct 28, 2025
7c66f0b
updating network model data tests for sector handling
ParticularlyPythonicBS Oct 28, 2025
f86ebe7
Removing gravis dependency and adapting commodity_graph to work with …
ParticularlyPythonicBS Oct 28, 2025
64d78e5
fixing module name casing in data_processing
ParticularlyPythonicBS Oct 28, 2025
0466cc9
fixing naming in core and _internal
ParticularlyPythonicBS Oct 28, 2025
4251e53
fixing naming in components
ParticularlyPythonicBS Oct 28, 2025
54266f7
fixing naming in data_io
ParticularlyPythonicBS Oct 28, 2025
a8b6b77
fixing naming in data_processing
ParticularlyPythonicBS Oct 28, 2025
7d09341
fixing naming in model_checking
ParticularlyPythonicBS Oct 28, 2025
8703ad9
fixing non model_type naming in types
ParticularlyPythonicBS Oct 29, 2025
4ca24fd
Merge pull request #175 from TemoaProject/feat/network_management_revamp
ParticularlyPythonicBS Oct 29, 2025
7ec435c
Merge branch 'temoa_davey_code' into feat/network_visualization_revamp
ParticularlyPythonicBS Oct 29, 2025
7c98709
Merge pull request #177 from TemoaProject/feat/network_visualization_…
ParticularlyPythonicBS Oct 29, 2025
152b2d7
Merge branch 'temoa_davey_code' into ref/naming_consistency
ParticularlyPythonicBS Oct 29, 2025
c884339
fixing minor inconsistencies
ParticularlyPythonicBS Oct 30, 2025
b291ee5
fixing rebind bug in exchange reserve loops
ParticularlyPythonicBS Oct 30, 2025
d5c96c2
fixing typo in checking retirement periods
ParticularlyPythonicBS Oct 30, 2025
6773318
adding period guard and simplyifying nested loop in seasonal_ramp in…
ParticularlyPythonicBS Oct 30, 2025
428f277
fixing ramping averaging denominator
ParticularlyPythonicBS Oct 30, 2025
91c35c3
minor consistency improvement
ParticularlyPythonicBS Oct 30, 2025
bfb4fd5
fixing typo in total-input aggregation
ParticularlyPythonicBS Oct 30, 2025
4502029
fixing attribute casing in make_graphviz
ParticularlyPythonicBS Oct 30, 2025
d850f6d
Merge pull request #180 from TemoaProject/ref/naming_consistency
ParticularlyPythonicBS Oct 30, 2025
afb32f0
reworking db_to_excel to remove pyam-iamc, removing stale dependencies
ParticularlyPythonicBS Oct 30, 2025
0e5ffb2
assert locking in uv ci
ParticularlyPythonicBS Oct 30, 2025
406960f
making sql queries literals and polishing exceptions
ParticularlyPythonicBS Oct 30, 2025
6388fc8
updating pytest config to treat most warnings as errors
ParticularlyPythonicBS Oct 30, 2025
74f3557
updating pytest config to treat most warnings as errors and polishin…
ParticularlyPythonicBS Oct 30, 2025
7f092bf
removing pyutilib dependency
ParticularlyPythonicBS Oct 30, 2025
d31318a
reenabling caching for uv
ParticularlyPythonicBS Oct 30, 2025
6b6ef08
Merge pull request #183 from TemoaProject/mitigate_pytest_warnings
ParticularlyPythonicBS Oct 31, 2025
02390bb
turning core type aliases to newTypes for stricter checking
ParticularlyPythonicBS Oct 30, 2025
5698798
further refining typing and adding more directories to type checking
ParticularlyPythonicBS Oct 31, 2025
bd7f364
adding typing for data_processing
ParticularlyPythonicBS Oct 31, 2025
4d244b6
fixing test failures caused by typing imports at runtime
ParticularlyPythonicBS Oct 31, 2025
c73192c
expanding typing more broadly and using stricter types
ParticularlyPythonicBS Nov 3, 2025
d5e4754
making some typing cleaner
ParticularlyPythonicBS Nov 3, 2025
4890fb4
modernized CLI, streamlined temoasequencer API, added and updated tests
ParticularlyPythonicBS Nov 3, 2025
0d0ce55
added a validation method to the cli and associated tests
ParticularlyPythonicBS Nov 3, 2025
ca92441
turning core type aliases to newTypes for stricter checking (#184)
ParticularlyPythonicBS Nov 3, 2025
a2930a5
Merge branch 'temoa_davey_code' into feat/better_cli
ParticularlyPythonicBS Nov 3, 2025
db3ef37
relaxing test string to get it pass in CI
ParticularlyPythonicBS Nov 3, 2025
869fcff
removing any config change persistance
ParticularlyPythonicBS Nov 3, 2025
5da6a5e
adding citation information
ParticularlyPythonicBS Nov 4, 2025
b2c98ff
adding citation information
ParticularlyPythonicBS Nov 4, 2025
ab078be
Merge pull request #188 from TemoaProject/citation_cff
ParticularlyPythonicBS Nov 4, 2025
607d665
Merge branch 'temoa_davey_code' into feat/better_cli
ParticularlyPythonicBS Nov 4, 2025
84c1a31
final polish
ParticularlyPythonicBS Nov 4, 2025
e2ccb17
Merge pull request #186 from TemoaProject/feat/better_cli
ParticularlyPythonicBS Nov 4, 2025
2ff8570
model pass 1
ParticularlyPythonicBS Nov 7, 2025
3907dca
creating new database schema
ParticularlyPythonicBS Nov 7, 2025
ea5d1a8
new database schema and correcting code to expect new schema
ParticularlyPythonicBS Nov 7, 2025
344da74
adding migrators for sql and sqlite files, changing db version to 4.…
ParticularlyPythonicBS Nov 7, 2025
5271758
WIP: updating tests to DBv4
ParticularlyPythonicBS Nov 8, 2025
c138e43
tests updated for DBv4
ParticularlyPythonicBS Nov 8, 2025
0102cf8
fixing inconsistencies, updating docs
ParticularlyPythonicBS Nov 8, 2025
2a66b2c
migrating example dbs
ParticularlyPythonicBS Nov 8, 2025
83e7e4b
changing cycles detected warning to info
ParticularlyPythonicBS Nov 10, 2025
e663c4e
Merge pull request #192 from TemoaProject/fix/cycles_warnings_to_info
ParticularlyPythonicBS Nov 10, 2025
263a784
minor polish
ParticularlyPythonicBS Nov 10, 2025
b02186e
Merge branch 'temoa_davey_code' into ref/naming_consistency_model_focus
ParticularlyPythonicBS Nov 10, 2025
0aa1e0a
reworking definitions to for pip install compatibility
ParticularlyPythonicBS Nov 10, 2025
045398b
Merge pull request #190 from TemoaProject/ref/naming_consistency_mode…
ParticularlyPythonicBS Nov 11, 2025
da6341d
fixing possible traversable to path mapping issues
ParticularlyPythonicBS Nov 11, 2025
cc6c643
Merge branch 'temoa_davey_code' into ref/definitions_rework
ParticularlyPythonicBS Nov 11, 2025
f841aba
adding defences for paht creation before use in testing logs
ParticularlyPythonicBS Nov 11, 2025
3da6933
Merge pull request #193 from TemoaProject/ref/definitions_rework
ParticularlyPythonicBS Nov 11, 2025
8923f7a
adding unstable branch to ci
ParticularlyPythonicBS Nov 12, 2025
3c0615e
adding readthedocs file
ParticularlyPythonicBS Nov 13, 2025
32daa6d
Merge pull request #195 from TemoaProject/readthedocs-setup
ParticularlyPythonicBS Nov 13, 2025
a8b0df4
adding database migrators to the cli
ParticularlyPythonicBS Nov 13, 2025
a065fff
Merge pull request #196 from TemoaProject/feat/migrators_in_cli
ParticularlyPythonicBS Nov 13, 2025
53defd4
adding a tutorial command to the cli
ParticularlyPythonicBS Nov 13, 2025
319702d
Merge pull request #198 from TemoaProject/feat/cli-tutorial
ParticularlyPythonicBS Nov 14, 2025
6746c26
adding main.py to temoa root to make cli invocation consistent
ParticularlyPythonicBS Nov 14, 2025
55ec6b9
Merge pull request #199 from TemoaProject/fix/main_for_pip_cli
ParticularlyPythonicBS Nov 14, 2025
aa63e71
updated readme
ParticularlyPythonicBS Nov 14, 2025
3094d77
Merge pull request #200 from TemoaProject/docs/basic_improvements
ParticularlyPythonicBS Nov 14, 2025
8d834c0
fixing readme inconsistency
ParticularlyPythonicBS Nov 17, 2025
cf1e5ea
adding typing to tests
ParticularlyPythonicBS Nov 17, 2025
fd97978
Merge pull request #202 from TemoaProject/typing_tests
ParticularlyPythonicBS Nov 17, 2025
f422323
Merge branch 'unstable' into docs/readme_fix
ParticularlyPythonicBS Nov 17, 2025
e2d00ef
Merge pull request #204 from TemoaProject/docs/readme_fix
ParticularlyPythonicBS Nov 17, 2025
0a59b0d
adding ci scripts to deploy changes in the unstable
ParticularlyPythonicBS Nov 13, 2025
0275980
swapping from tomli to tomlkit
ParticularlyPythonicBS Nov 17, 2025
93f5bea
checking if solver in path and helpful messaging
ParticularlyPythonicBS Nov 17, 2025
9695e6d
Merge pull request #194 from TemoaProject/infra/ci-nightly-deployment
ParticularlyPythonicBS Nov 17, 2025
0ac88a3
moved check to build_config for earlier catch
ParticularlyPythonicBS Nov 18, 2025
be914dc
Merge branch 'unstable' into warn_missing_solver
ParticularlyPythonicBS Nov 18, 2025
f9671d7
Merge pull request #205 from TemoaProject/warn_missing_solver
ParticularlyPythonicBS Nov 18, 2025
fe2974f
feat: Enable package type checking by adding `py.typed` and updating …
ParticularlyPythonicBS Nov 20, 2025
13f8983
Merge pull request #208 from TemoaProject/feat/pytyped
ParticularlyPythonicBS Nov 20, 2025
668ab95
chore: enable UP (pyupgrade) linting rules in pyproject.toml
ParticularlyPythonicBS Nov 21, 2025
b17ee84
refactor: apply auto-fixable pyupgrade modernizations (UP017, UP032, …
ParticularlyPythonicBS Nov 21, 2025
68c4e4e
refactor: convert Optional[X] to X | None syntax (UP045)
ParticularlyPythonicBS Nov 21, 2025
9e29f7b
docs: adding markdown support and using pyproject.toml for project in…
ParticularlyPythonicBS Nov 18, 2025
88ccbfe
docs: splitting up the documentation.rst file and updating contents t…
ParticularlyPythonicBS Nov 18, 2025
0ba8167
docs: updating readmes
ParticularlyPythonicBS Nov 18, 2025
56074e2
docs: fixing remnant naming inconsistencies
ParticularlyPythonicBS Nov 18, 2025
2dfde62
docs: fixing inconsistencies
ParticularlyPythonicBS Nov 18, 2025
5e582c2
docs: fixing sphinx warnings and polishing
ParticularlyPythonicBS Nov 19, 2025
233f033
Merge pull request #206 from TemoaProject/docs/v4_modernization_phase_1
ParticularlyPythonicBS Nov 22, 2025
21f39b3
Merge branch 'unstable' into lint/pyupgrade-modernization
ParticularlyPythonicBS Nov 22, 2025
ce2f5a6
Merge pull request #216 from TemoaProject/lint/pyupgrade-modernization
ParticularlyPythonicBS Nov 22, 2025
8d9cc2a
chore: enable TC (type-checking) linting rules in pyproject.toml
ParticularlyPythonicBS Nov 21, 2025
7c4efe0
refactor: move type-only imports into TYPE_CHECKING blocks (TC001, TC…
ParticularlyPythonicBS Nov 21, 2025
db84b73
refactor: use __future__ annotations instead of quoted type expressions
ParticularlyPythonicBS Nov 21, 2025
02d751e
fixing linting conflicts
ParticularlyPythonicBS Nov 22, 2025
447d971
Merge pull request #217 from TemoaProject/lint/type-checking-imports
ParticularlyPythonicBS Nov 22, 2025
d5880e5
chore: enable C4 (comprehensions) linting rules in pyproject.toml
ParticularlyPythonicBS Nov 21, 2025
bfdf41f
refactor: simplify collection constructors and comprehensions (C4)
ParticularlyPythonicBS Nov 21, 2025
fe9756f
fixing remaining G004 logger warnings as well
ParticularlyPythonicBS Nov 22, 2025
7888d85
Merge pull request #218 from TemoaProject/lint/simplify-comprehensions
ParticularlyPythonicBS Nov 22, 2025
355a2bc
fixing linter issues
ParticularlyPythonicBS Nov 22, 2025
cdd48b5
tests for graphviz integration
ParticularlyPythonicBS Nov 21, 2025
b480ff9
updating CI to install graphviz
ParticularlyPythonicBS Nov 21, 2025
a8dd5cb
updating docs
ParticularlyPythonicBS Nov 21, 2025
0e9d237
fixing merge conflicts
ParticularlyPythonicBS Nov 22, 2025
5dbd7f0
Merge pull request #219 from TemoaProject/feat/graphviz_revamp
ParticularlyPythonicBS Nov 22, 2025
f228f0b
fixing E501 line too long linting issues in _internal
ParticularlyPythonicBS Nov 22, 2025
6a2833e
fixing E501 line too long linting issues in components
ParticularlyPythonicBS Nov 22, 2025
fbd82b4
fixing E501 line too long linting issues in core
ParticularlyPythonicBS Nov 22, 2025
0bc1aa7
fixing E501 line too long linting issues in data io and processing
ParticularlyPythonicBS Nov 22, 2025
231d537
fixing E501 line too long linting issues in utilities
ParticularlyPythonicBS Nov 22, 2025
6c4c925
fixing E501 line too long linting issues in extensions
ParticularlyPythonicBS Nov 22, 2025
d9442b6
fixing E501 line too long linting issues in model_checking
ParticularlyPythonicBS Nov 22, 2025
1660d4c
fixing E501 line too long linting issues in types
ParticularlyPythonicBS Nov 22, 2025
02c9ef9
fixing E501 line too long linting issues in cli
ParticularlyPythonicBS Nov 22, 2025
a1ba8ef
fixing E501 line too long linting issues in ci script
ParticularlyPythonicBS Nov 22, 2025
c15135d
fixing E501 line too long linting issues in tests
ParticularlyPythonicBS Nov 22, 2025
f254765
adding back E501 restruction for everything but legacy files
ParticularlyPythonicBS Nov 22, 2025
5af833c
Merge pull request #221 from TemoaProject/fix-e501-errors
ParticularlyPythonicBS Nov 22, 2025
458ea63
standardizing string quote style with ruff autofix
ParticularlyPythonicBS Nov 22, 2025
bce8bac
Merge pull request #222 from TemoaProject/lint/string_quote
ParticularlyPythonicBS Nov 23, 2025
1fbb1f1
adding macos to ci testing and correcting some tests to pass on macos
ParticularlyPythonicBS Nov 25, 2025
3b0f757
Merge pull request #225 from TemoaProject/ci/macos_testing
ParticularlyPythonicBS Nov 26, 2025
d7856a0
fix: fixing eager path checking causing python solvers that are not …
ParticularlyPythonicBS Nov 26, 2025
9799938
Merge pull request #226 from TemoaProject/fix/python_solver_not_found
ParticularlyPythonicBS Nov 26, 2025
1bf0e51
fix: Fixing multiprocessing issues that prevented highs solver from …
ParticularlyPythonicBS Nov 26, 2025
5e9f6ec
Merge pull request #227 from TemoaProject/fix/pyomo_highs_multiproces…
ParticularlyPythonicBS Nov 26, 2025
a95db8f
changing tests to use highs instead of cbc
ParticularlyPythonicBS Nov 26, 2025
7671536
changing cli and tutorial to use highs
ParticularlyPythonicBS Nov 26, 2025
14d5adc
updating CI to not install cbc
ParticularlyPythonicBS Nov 26, 2025
a349102
updating docs to refer to highs as default instead of cbc
ParticularlyPythonicBS Nov 26, 2025
f1f186f
making the check solver status function more solver agnostic
ParticularlyPythonicBS Nov 26, 2025
01ce621
Merge pull request #228 from TemoaProject/feat/default_highs
ParticularlyPythonicBS Nov 27, 2025
7b8c2d4
windows in ci for testing
ParticularlyPythonicBS Nov 27, 2025
b539de5
Merge pull request #229 from TemoaProject/ci/windows
ParticularlyPythonicBS Nov 27, 2025
6401ee6
polishing versioning
ParticularlyPythonicBS Dec 1, 2025
ec68120
Merge pull request #231 from TemoaProject/maintainance/version_info
ParticularlyPythonicBS Dec 2, 2025
1c430bb
adding gitattributes to make line endings consistent between windows…
ParticularlyPythonicBS Dec 5, 2025
8dda04a
Merge pull request #233 from TemoaProject/maintainance/line_ending_os…
ParticularlyPythonicBS Dec 5, 2025
7d00b97
chore: pre-commit update
ParticularlyPythonicBS Dec 11, 2025
46ecf8b
ref: refactoring table_writer to have dynamic column handling and mo…
ParticularlyPythonicBS Dec 11, 2025
ad22530
Merge pull request #236 from TemoaProject/ref/table_writer
ParticularlyPythonicBS Dec 11, 2025
c4a43cf
adding Pint to core dependencies
ParticularlyPythonicBS Dec 16, 2025
147fdbf
feat: adding unit checking module
ParticularlyPythonicBS Dec 16, 2025
f797ffc
updating temoa v4 schema with units
ParticularlyPythonicBS Dec 16, 2025
ebae876
adding unit checking to sequencer
ParticularlyPythonicBS Dec 16, 2025
afef24c
adding unit checking to cli
ParticularlyPythonicBS Dec 16, 2025
4bc9a43
adding unit checking to temoa config
ParticularlyPythonicBS Dec 16, 2025
a3e4742
adding unit complieant tutorial db
ParticularlyPythonicBS Dec 16, 2025
e54b653
adding unit propagation to table writer
ParticularlyPythonicBS Dec 16, 2025
290d58d
tests: adding tests for unit checking, integration, and propagation
ParticularlyPythonicBS Dec 16, 2025
7ea06c2
docs: adding unit checking to docs
ParticularlyPythonicBS Dec 16, 2025
06ec2e7
Merge pull request #232 from TemoaProject/feat/unit_checking
ParticularlyPythonicBS Dec 18, 2025
9c74dcd
removing time_season_all and time_season_to_sequential tables from s…
ParticularlyPythonicBS Dec 18, 2025
bc54f3b
updating migrators for schema change
ParticularlyPythonicBS Dec 18, 2025
2ebdc49
removing time_season_all and time_season_to_sequential tables from e…
ParticularlyPythonicBS Dec 18, 2025
32a21e6
Merge pull request #238 from TemoaProject/schema/remove_derivable_tables
ParticularlyPythonicBS Dec 18, 2025
8b39a16
removing stale pydoe dependency
ParticularlyPythonicBS Dec 15, 2025
b1b315e
Merge pull request #237 from TemoaProject/maintainance/stale_dep_pydoe
ParticularlyPythonicBS Dec 18, 2025
e637077
logging refactor with context manager for operation timing
ParticularlyPythonicBS Dec 7, 2025
c855830
Merge pull request #234 from TemoaProject/ref/task_timer_context_manager
ParticularlyPythonicBS Dec 18, 2025
44ba20a
Update issue templates
ParticularlyPythonicBS Nov 24, 2025
5ddcf8b
Merge pull request #224 from TemoaProject/maintainance/issue_templates
ParticularlyPythonicBS Dec 18, 2025
5d85d6b
Update preface and quick start guide
jdecarolis Dec 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
cleaning up geography.py
  • Loading branch information
ParticularlyPythonicBS committed Oct 9, 2025
commit 53462dd1b0a6e6ffa445b0fc73ea35254850cc09
61 changes: 52 additions & 9 deletions temoa/components/geography.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
# temoa/components/geography.py
"""
Defines the geography-related components of the Temoa model.

This module is responsible for handling all logic related to multi-region models,
including:
- Pre-computing the data structures for inter-regional commodity transfers
(imports and exports).
- Defining the sets of valid regions and regional groupings.
- Defining constraints that govern inter-regional capacity and flows.
"""

from logging import getLogger
from typing import TYPE_CHECKING, Iterable

Expand All @@ -9,6 +21,25 @@

logger = getLogger(name=__name__)

# ============================================================================
# HELPER FUNCTIONS
# ============================================================================


def gather_group_regions(M: 'TemoaModel', region: str) -> Iterable[str]:
if region == 'global':
regions = M.regions
elif '+' in region:
regions = region.split('+')
else:
regions = (region,)
return regions


# ============================================================================
# PYOMO INDEX SET FUNCTIONS
# ============================================================================


def CreateRegionalIndices(M: 'TemoaModel'):
"""Create the set of all regions and all region-region pairs"""
Expand Down Expand Up @@ -41,14 +72,9 @@ def RegionalGlobalInitializedIndices(M: 'TemoaModel'):
return indices


def gather_group_regions(M: 'TemoaModel', region: str) -> Iterable[str]:
if region == 'global':
regions = M.regions
elif '+' in region:
regions = region.split('+')
else:
regions = (region,)
return regions
# ============================================================================
# PYOMO CONSTRAINT RULES
# ============================================================================


def RegionalExchangeCapacity_Constraint(M: 'TemoaModel', r_e, r_i, p, t, v):
Expand All @@ -73,8 +99,25 @@ def RegionalExchangeCapacity_Constraint(M: 'TemoaModel', r_e, r_i, p, t, v):
return expr


# ============================================================================
# PRE-COMPUTATION FUNCTION
# ============================================================================


def create_geography_sets(M: 'TemoaModel'):
"""Populates dictionaries related to inter-regional commodity exchange."""
"""
Populates dictionaries related to inter-regional commodity exchange.

This function iterates through exchange technologies (identified by a '-' in
their region name) and populates the `M.exportRegions` and `M.importRegions`
dictionaries. These are used later in the commodity balance constraints.

Populates:
- M.exportRegions: dict mapping (region_from, p, commodity) to a set
of (region_to, t, v, o) tuples.
- M.importRegions: dict mapping (region_to, p, commodity) to a set
of (region_from, t, v, i) tuples.
"""
logger.debug('Creating geography-related sets for exchange technologies.')
for r, i, t, v, o in M.Efficiency.sparse_iterkeys():
if t not in M.tech_exchange:
Expand Down