sinsim 0.5.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.
- sinsim-0.5.0/.gitignore +239 -0
- sinsim-0.5.0/PKG-INFO +15 -0
- sinsim-0.5.0/_bundle_src/config/defaults.toml +116 -0
- sinsim-0.5.0/_bundle_src/data/equivalencias/coordenadas_subestaciones.csv +2 -0
- sinsim-0.5.0/_bundle_src/data/equivalencias/nodos_demanda.csv +497 -0
- sinsim-0.5.0/_bundle_src/data/equivalencias/recursos_despacho.csv +627 -0
- sinsim-0.5.0/_bundle_src/data/equivalencias/subestaciones_alias.csv +2 -0
- sinsim-0.5.0/_bundle_src/data/geo/README.md +33 -0
- sinsim-0.5.0/_bundle_src/data/geo/colombia_departamentos.geojson +1 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/manifest.json +227 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/normalized/buses.parquet +0 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/normalized/demand.parquet +0 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/normalized/dispatch.parquet +0 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/normalized/generators.parquet +0 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/normalized/lines.parquet +0 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/normalized/shunts.parquet +0 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/normalized/svc_statcom.parquet +0 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/normalized/trafos2w.parquet +0 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/normalized/trafos3w.parquet +0 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/raw/paratec/mapas__TransmissionMap_getLines.json +1 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/raw/paratec/reportegeneracion__Capacitor_getAll.json +1 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/raw/paratec/reportegeneracion__HydraulicUnit_HydraulicUnitInfo.json +1 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/raw/paratec/reportegeneracion__SolarPlant_getAll.json +1 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/raw/paratec/reportegeneracion__ThermalUnit_ThermalUnitInfo.json +1 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/raw/paratec/reportegeneracion__WindPlant_WindPlantInfo.json +1 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/raw/paratec/reportetransformacion__PowerTransformer_PowerTransformerInfo.json +1 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/raw/paratec/reportetransmision__Line_getAll.json +1 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/raw/paratec/reportetransmision__Reactor_getAll.json +1 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/raw/paratec/reportetransmision__StatcomSvc_getAll.json +1 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/raw/paratec/reportetransmision__Substation_SubstationInfo.json +1 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/raw/xm/PRON_BARRA1020.txt +1656 -0
- sinsim-0.5.0/_bundle_src/data/paratec/2026-10-20/raw/xm/dDEC1020.txt +627 -0
- sinsim-0.5.0/_bundle_src/frontend/dist/assets/index-BuY4YYx5.css +1 -0
- sinsim-0.5.0/_bundle_src/frontend/dist/assets/index-k35lHYjg.js +373 -0
- sinsim-0.5.0/_bundle_src/frontend/dist/index.html +13 -0
- sinsim-0.5.0/hatch_build.py +79 -0
- sinsim-0.5.0/pyproject.toml +94 -0
- sinsim-0.5.0/src/sinsim/__init__.py +0 -0
- sinsim-0.5.0/src/sinsim/adapters/__init__.py +0 -0
- sinsim-0.5.0/src/sinsim/adapters/sources_to_pandapower/__init__.py +0 -0
- sinsim-0.5.0/src/sinsim/adapters/sources_to_pandapower/_common.py +59 -0
- sinsim-0.5.0/src/sinsim/adapters/sources_to_pandapower/buses.py +330 -0
- sinsim-0.5.0/src/sinsim/adapters/sources_to_pandapower/field_mapping.py +138 -0
- sinsim-0.5.0/src/sinsim/adapters/sources_to_pandapower/generators.py +155 -0
- sinsim-0.5.0/src/sinsim/adapters/sources_to_pandapower/lines.py +224 -0
- sinsim-0.5.0/src/sinsim/adapters/sources_to_pandapower/net_builder.py +203 -0
- sinsim-0.5.0/src/sinsim/adapters/sources_to_pandapower/shunts.py +155 -0
- sinsim-0.5.0/src/sinsim/adapters/sources_to_pandapower/trafos.py +260 -0
- sinsim-0.5.0/src/sinsim/adapters/sources_to_pandapower/xm_demand.py +106 -0
- sinsim-0.5.0/src/sinsim/adapters/sources_to_pandapower/xm_dispatch.py +139 -0
- sinsim-0.5.0/src/sinsim/adapters/storage/__init__.py +0 -0
- sinsim-0.5.0/src/sinsim/adapters/storage/cases.py +60 -0
- sinsim-0.5.0/src/sinsim/adapters/storage/equivalences.py +281 -0
- sinsim-0.5.0/src/sinsim/adapters/storage/export.py +144 -0
- sinsim-0.5.0/src/sinsim/adapters/storage/snapshots.py +159 -0
- sinsim-0.5.0/src/sinsim/api/__init__.py +0 -0
- sinsim-0.5.0/src/sinsim/api/app.py +105 -0
- sinsim-0.5.0/src/sinsim/api/problems.py +66 -0
- sinsim-0.5.0/src/sinsim/api/routers/__init__.py +0 -0
- sinsim-0.5.0/src/sinsim/api/routers/cases.py +55 -0
- sinsim-0.5.0/src/sinsim/api/routers/geo.py +26 -0
- sinsim-0.5.0/src/sinsim/api/routers/runs.py +229 -0
- sinsim-0.5.0/src/sinsim/api/routers/snapshots.py +50 -0
- sinsim-0.5.0/src/sinsim/api/schemas.py +27 -0
- sinsim-0.5.0/src/sinsim/api/security.py +47 -0
- sinsim-0.5.0/src/sinsim/bootstrap.py +71 -0
- sinsim-0.5.0/src/sinsim/cli.py +346 -0
- sinsim-0.5.0/src/sinsim/config.py +337 -0
- sinsim-0.5.0/src/sinsim/domain/__init__.py +0 -0
- sinsim-0.5.0/src/sinsim/domain/balance.py +35 -0
- sinsim-0.5.0/src/sinsim/domain/case_hash.py +28 -0
- sinsim-0.5.0/src/sinsim/domain/constants.py +17 -0
- sinsim-0.5.0/src/sinsim/domain/dates.py +36 -0
- sinsim-0.5.0/src/sinsim/domain/entities.py +412 -0
- sinsim-0.5.0/src/sinsim/domain/errors.py +261 -0
- sinsim-0.5.0/src/sinsim/domain/limits.py +75 -0
- sinsim-0.5.0/src/sinsim/domain/physical_checks.py +135 -0
- sinsim-0.5.0/src/sinsim/domain/ports.py +126 -0
- sinsim-0.5.0/src/sinsim/domain/violations.py +77 -0
- sinsim-0.5.0/src/sinsim/observability.py +73 -0
- sinsim-0.5.0/src/sinsim/scraper/__init__.py +0 -0
- sinsim-0.5.0/src/sinsim/scraper/http.py +108 -0
- sinsim-0.5.0/src/sinsim/scraper/paratec.py +81 -0
- sinsim-0.5.0/src/sinsim/scraper/validate.py +97 -0
- sinsim-0.5.0/src/sinsim/scraper/writer.py +269 -0
- sinsim-0.5.0/src/sinsim/scraper/xm_files.py +193 -0
- sinsim-0.5.0/src/sinsim/services/__init__.py +0 -0
- sinsim-0.5.0/src/sinsim/services/build_case.py +952 -0
- sinsim-0.5.0/src/sinsim/services/diagnostics.py +114 -0
- sinsim-0.5.0/src/sinsim/services/islands.py +58 -0
- sinsim-0.5.0/src/sinsim/services/run_flow.py +277 -0
- sinsim-0.5.0/src/sinsim/services/scrape.py +248 -0
- sinsim-0.5.0/src/sinsim/services/snapshots.py +54 -0
- sinsim-0.5.0/tests/__init__.py +0 -0
- sinsim-0.5.0/tests/conftest.py +108 -0
- sinsim-0.5.0/tests/contract/__init__.py +0 -0
- sinsim-0.5.0/tests/contract/test_api.py +159 -0
- sinsim-0.5.0/tests/contract/test_api_scrape.py +129 -0
- sinsim-0.5.0/tests/contract/test_cli.py +64 -0
- sinsim-0.5.0/tests/contract/test_export.py +115 -0
- sinsim-0.5.0/tests/contract/test_pandapower_internals.py +33 -0
- sinsim-0.5.0/tests/contract/test_security.py +79 -0
- sinsim-0.5.0/tests/contract/test_web.py +88 -0
- sinsim-0.5.0/tests/fixtures/equivalencias/nodos_demanda.csv +416 -0
- sinsim-0.5.0/tests/fixtures/equivalencias/recursos_despacho.csv +627 -0
- sinsim-0.5.0/tests/fixtures/equivalencias/subestaciones_alias.csv +2 -0
- sinsim-0.5.0/tests/fixtures/paratec/mapas__TransmissionMap_getLines.json +1 -0
- sinsim-0.5.0/tests/fixtures/paratec/reportegeneracion__Capacitor_getAll.json +1 -0
- sinsim-0.5.0/tests/fixtures/paratec/reportegeneracion__HydraulicUnit_HydraulicUnitInfo.json +1 -0
- sinsim-0.5.0/tests/fixtures/paratec/reportegeneracion__SolarPlant_getAll.json +1 -0
- sinsim-0.5.0/tests/fixtures/paratec/reportegeneracion__ThermalUnit_ThermalUnitInfo.json +1 -0
- sinsim-0.5.0/tests/fixtures/paratec/reportegeneracion__WindPlant_WindPlantInfo.json +1 -0
- sinsim-0.5.0/tests/fixtures/paratec/reportetransformacion__PowerTransformer_PowerTransformerInfo.json +1 -0
- sinsim-0.5.0/tests/fixtures/paratec/reportetransmision__Line_getAll.json +1 -0
- sinsim-0.5.0/tests/fixtures/paratec/reportetransmision__Reactor_getAll.json +1 -0
- sinsim-0.5.0/tests/fixtures/paratec/reportetransmision__StatcomSvc_getAll.json +1 -0
- sinsim-0.5.0/tests/fixtures/paratec/reportetransmision__Substation_SubstationInfo.json +1 -0
- sinsim-0.5.0/tests/fixtures/xm/PRON_BARRA1020.txt +1656 -0
- sinsim-0.5.0/tests/fixtures/xm/dDEC1014.txt +627 -0
- sinsim-0.5.0/tests/fixtures/xm/dDEC1014_V1.txt +618 -0
- sinsim-0.5.0/tests/fixtures/xm/dDEC1020.txt +627 -0
- sinsim-0.5.0/tests/integration/__init__.py +0 -0
- sinsim-0.5.0/tests/integration/test_all_periods.py +53 -0
- sinsim-0.5.0/tests/integration/test_build_and_run.py +176 -0
- sinsim-0.5.0/tests/integration/test_no_convergence.py +38 -0
- sinsim-0.5.0/tests/integration/test_quality_report.py +107 -0
- sinsim-0.5.0/tests/integration/test_reference_networks.py +55 -0
- sinsim-0.5.0/tests/integration/test_scrape_fixtures.py +195 -0
- sinsim-0.5.0/tests/integration/test_snapshot_storage.py +149 -0
- sinsim-0.5.0/tests/unit/__init__.py +0 -0
- sinsim-0.5.0/tests/unit/test_balance.py +23 -0
- sinsim-0.5.0/tests/unit/test_buses.py +128 -0
- sinsim-0.5.0/tests/unit/test_case_hash.py +39 -0
- sinsim-0.5.0/tests/unit/test_curated_coordinates.py +61 -0
- sinsim-0.5.0/tests/unit/test_dates.py +33 -0
- sinsim-0.5.0/tests/unit/test_equivalences.py +112 -0
- sinsim-0.5.0/tests/unit/test_generators.py +83 -0
- sinsim-0.5.0/tests/unit/test_limits.py +54 -0
- sinsim-0.5.0/tests/unit/test_lines.py +99 -0
- sinsim-0.5.0/tests/unit/test_net_builder.py +173 -0
- sinsim-0.5.0/tests/unit/test_paths.py +80 -0
- sinsim-0.5.0/tests/unit/test_physical_checks.py +92 -0
- sinsim-0.5.0/tests/unit/test_shunts.py +79 -0
- sinsim-0.5.0/tests/unit/test_snapshot_roots.py +44 -0
- sinsim-0.5.0/tests/unit/test_trafos.py +103 -0
- sinsim-0.5.0/tests/unit/test_violations.py +76 -0
- sinsim-0.5.0/tests/unit/test_xm_demand.py +54 -0
- sinsim-0.5.0/tests/unit/test_xm_dispatch.py +59 -0
- sinsim-0.5.0/uv.lock +845 -0
sinsim-0.5.0/.gitignore
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[codz]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
share/python-wheels/
|
|
24
|
+
*.egg-info/
|
|
25
|
+
.installed.cfg
|
|
26
|
+
*.egg
|
|
27
|
+
MANIFEST
|
|
28
|
+
|
|
29
|
+
# PyInstaller
|
|
30
|
+
# Usually these files are written by a python script from a template
|
|
31
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
32
|
+
*.manifest
|
|
33
|
+
*.spec
|
|
34
|
+
|
|
35
|
+
# Installer logs
|
|
36
|
+
pip-log.txt
|
|
37
|
+
pip-delete-this-directory.txt
|
|
38
|
+
|
|
39
|
+
# Unit test / coverage reports
|
|
40
|
+
htmlcov/
|
|
41
|
+
.tox/
|
|
42
|
+
.nox/
|
|
43
|
+
.coverage
|
|
44
|
+
.coverage.*
|
|
45
|
+
.cache
|
|
46
|
+
nosetests.xml
|
|
47
|
+
coverage.xml
|
|
48
|
+
*.cover
|
|
49
|
+
*.py.cover
|
|
50
|
+
*.lcov
|
|
51
|
+
.hypothesis/
|
|
52
|
+
.pytest_cache/
|
|
53
|
+
cover/
|
|
54
|
+
|
|
55
|
+
# Translations
|
|
56
|
+
*.mo
|
|
57
|
+
*.pot
|
|
58
|
+
|
|
59
|
+
# Django stuff:
|
|
60
|
+
*.log
|
|
61
|
+
local_settings.py
|
|
62
|
+
db.sqlite3
|
|
63
|
+
db.sqlite3-journal
|
|
64
|
+
|
|
65
|
+
# Flask stuff:
|
|
66
|
+
instance/
|
|
67
|
+
.webassets-cache
|
|
68
|
+
|
|
69
|
+
# Scrapy stuff:
|
|
70
|
+
.scrapy
|
|
71
|
+
|
|
72
|
+
# Sphinx documentation
|
|
73
|
+
docs/_build/
|
|
74
|
+
|
|
75
|
+
# PyBuilder
|
|
76
|
+
.pybuilder/
|
|
77
|
+
target/
|
|
78
|
+
|
|
79
|
+
# Jupyter Notebook
|
|
80
|
+
.ipynb_checkpoints
|
|
81
|
+
|
|
82
|
+
# IPython
|
|
83
|
+
profile_default/
|
|
84
|
+
ipython_config.py
|
|
85
|
+
|
|
86
|
+
# pyenv
|
|
87
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
88
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
89
|
+
# .python-version
|
|
90
|
+
|
|
91
|
+
# pipenv
|
|
92
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
93
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
94
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
95
|
+
# install all needed dependencies.
|
|
96
|
+
# Pipfile.lock
|
|
97
|
+
|
|
98
|
+
# uv
|
|
99
|
+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
|
100
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
101
|
+
# commonly ignored for libraries.
|
|
102
|
+
# uv.lock
|
|
103
|
+
|
|
104
|
+
# poetry
|
|
105
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
106
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
107
|
+
# commonly ignored for libraries.
|
|
108
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
109
|
+
# poetry.lock
|
|
110
|
+
# poetry.toml
|
|
111
|
+
|
|
112
|
+
# pdm
|
|
113
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
114
|
+
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
|
|
115
|
+
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
|
|
116
|
+
# pdm.lock
|
|
117
|
+
# pdm.toml
|
|
118
|
+
.pdm-python
|
|
119
|
+
.pdm-build/
|
|
120
|
+
|
|
121
|
+
# pixi
|
|
122
|
+
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
|
|
123
|
+
# pixi.lock
|
|
124
|
+
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
|
|
125
|
+
# in the .venv directory. It is recommended not to include this directory in version control.
|
|
126
|
+
.pixi/*
|
|
127
|
+
!.pixi/config.toml
|
|
128
|
+
|
|
129
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
130
|
+
__pypackages__/
|
|
131
|
+
|
|
132
|
+
# Celery stuff
|
|
133
|
+
celerybeat-schedule*
|
|
134
|
+
celerybeat.pid
|
|
135
|
+
|
|
136
|
+
# Redis
|
|
137
|
+
*.rdb
|
|
138
|
+
*.aof
|
|
139
|
+
*.pid
|
|
140
|
+
|
|
141
|
+
# RabbitMQ
|
|
142
|
+
mnesia/
|
|
143
|
+
rabbitmq/
|
|
144
|
+
rabbitmq-data/
|
|
145
|
+
|
|
146
|
+
# ActiveMQ
|
|
147
|
+
activemq-data/
|
|
148
|
+
|
|
149
|
+
# SageMath parsed files
|
|
150
|
+
*.sage.py
|
|
151
|
+
|
|
152
|
+
# Environments
|
|
153
|
+
.env
|
|
154
|
+
.envrc
|
|
155
|
+
.venv
|
|
156
|
+
env/
|
|
157
|
+
venv/
|
|
158
|
+
ENV/
|
|
159
|
+
env.bak/
|
|
160
|
+
venv.bak/
|
|
161
|
+
|
|
162
|
+
# Spyder project settings
|
|
163
|
+
.spyderproject
|
|
164
|
+
.spyproject
|
|
165
|
+
|
|
166
|
+
# Rope project settings
|
|
167
|
+
.ropeproject
|
|
168
|
+
|
|
169
|
+
# mkdocs/Zensical documentation
|
|
170
|
+
/site
|
|
171
|
+
|
|
172
|
+
# mypy
|
|
173
|
+
.mypy_cache/
|
|
174
|
+
.dmypy.json
|
|
175
|
+
dmypy.json
|
|
176
|
+
|
|
177
|
+
# Pyre type checker
|
|
178
|
+
.pyre/
|
|
179
|
+
|
|
180
|
+
# pytype static type analyzer
|
|
181
|
+
.pytype/
|
|
182
|
+
|
|
183
|
+
# Cython debug symbols
|
|
184
|
+
cython_debug/
|
|
185
|
+
|
|
186
|
+
# PyCharm
|
|
187
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
188
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
189
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
190
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
191
|
+
# .idea/
|
|
192
|
+
|
|
193
|
+
# Abstra
|
|
194
|
+
# Abstra is an AI-powered process automation framework.
|
|
195
|
+
# Ignore directories containing user credentials, local state, and settings.
|
|
196
|
+
# Learn more at https://abstra.io/docs
|
|
197
|
+
.abstra/
|
|
198
|
+
|
|
199
|
+
# Visual Studio Code
|
|
200
|
+
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore that
|
|
201
|
+
# can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
|
202
|
+
# and can be added to the global gitignore or merged into this file. However, if you prefer, you
|
|
203
|
+
# could uncomment the following to ignore the entire vscode folder
|
|
204
|
+
# .vscode/
|
|
205
|
+
# Temporary file for partial code execution
|
|
206
|
+
tempCodeRunnerFile.py
|
|
207
|
+
|
|
208
|
+
# Ruff stuff:
|
|
209
|
+
.ruff_cache/
|
|
210
|
+
|
|
211
|
+
# PyPI configuration file
|
|
212
|
+
.pypirc
|
|
213
|
+
|
|
214
|
+
# Marimo
|
|
215
|
+
marimo/_static/
|
|
216
|
+
marimo/_lsp/
|
|
217
|
+
__marimo__/
|
|
218
|
+
|
|
219
|
+
# Streamlit
|
|
220
|
+
.streamlit/secrets.toml
|
|
221
|
+
|
|
222
|
+
# --- sinsim ----------------------------------------------------------------
|
|
223
|
+
# El patrón genérico `lib/` de arriba no debe ocultar el código del frontend.
|
|
224
|
+
!frontend/src/lib/
|
|
225
|
+
frontend/node_modules/
|
|
226
|
+
frontend/dist/
|
|
227
|
+
frontend/coverage/
|
|
228
|
+
frontend/test-results/
|
|
229
|
+
frontend/playwright-report/
|
|
230
|
+
out/
|
|
231
|
+
# Casos de estudio generados localmente; solo se versiona el de demostración.
|
|
232
|
+
cases/*
|
|
233
|
+
!cases/.gitkeep
|
|
234
|
+
!cases/demo/
|
|
235
|
+
# Directorios temporales del scraper (escritura atómica)
|
|
236
|
+
data/paratec/.tmp-*/
|
|
237
|
+
.DS_Store
|
|
238
|
+
frontend/.vite/
|
|
239
|
+
frontend/*.tsbuildinfo
|
sinsim-0.5.0/PKG-INFO
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: sinsim
|
|
3
|
+
Version: 0.5.0
|
|
4
|
+
Summary: Flujo de potencia del SIN colombiano con pandapower, PARATEC y archivos públicos de XM
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Requires-Python: <3.13,>=3.12
|
|
7
|
+
Requires-Dist: duckdb>=1.1
|
|
8
|
+
Requires-Dist: fastapi>=0.115
|
|
9
|
+
Requires-Dist: httpx>=0.27
|
|
10
|
+
Requires-Dist: networkx>=3.3
|
|
11
|
+
Requires-Dist: pandapower==3.5.6
|
|
12
|
+
Requires-Dist: pyarrow>=17
|
|
13
|
+
Requires-Dist: pydantic>=2.9
|
|
14
|
+
Requires-Dist: typer>=0.12
|
|
15
|
+
Requires-Dist: uvicorn>=0.30
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Configuración por defecto de sinsim.
|
|
2
|
+
# Todo valor numérico cita su fuente (constitución III.9, R-13). Los supuestos aprobados por el
|
|
3
|
+
# usuario se marcan como tales y aparecen en cada caso y exportación (FR-018).
|
|
4
|
+
|
|
5
|
+
[limits.voltage]
|
|
6
|
+
# Tensión en estado estacionario, en pu de la tensión nominal.
|
|
7
|
+
# Fuente: Resolución CREG 025 de 1995, Código de Operación, num. 5.1 (500 kV: 90–105 %;
|
|
8
|
+
# 110/115/220/230 kV: 90–110 %). STR: Resolución CREG 153 de 2019, art. 1 (Reglamento de
|
|
9
|
+
# Distribución, num. 6.2.1.1: 90–110 %). Para 57,5 y 66 kV se aplica el art. 1 de la CREG 153/2019
|
|
10
|
+
# por inferencia (no hay cifra expresa).
|
|
11
|
+
[[limits.voltage.levels]]
|
|
12
|
+
name = "500 kV"
|
|
13
|
+
vn_kv_min = 400.0
|
|
14
|
+
vn_kv_max = 600.0
|
|
15
|
+
vm_min_pu = 0.90
|
|
16
|
+
vm_max_pu = 1.05
|
|
17
|
+
source = "CREG 025/1995, Código de Operación, num. 5.1"
|
|
18
|
+
|
|
19
|
+
[[limits.voltage.levels]]
|
|
20
|
+
name = "STN 220/230 kV"
|
|
21
|
+
vn_kv_min = 220.0
|
|
22
|
+
vn_kv_max = 400.0
|
|
23
|
+
vm_min_pu = 0.90
|
|
24
|
+
vm_max_pu = 1.10
|
|
25
|
+
source = "CREG 025/1995, Código de Operación, num. 5.1"
|
|
26
|
+
|
|
27
|
+
[[limits.voltage.levels]]
|
|
28
|
+
name = "STR (57,5–<220 kV)"
|
|
29
|
+
vn_kv_min = 57.5
|
|
30
|
+
vn_kv_max = 220.0
|
|
31
|
+
vm_min_pu = 0.90
|
|
32
|
+
vm_max_pu = 1.10
|
|
33
|
+
source = "CREG 153/2019, art. 1 (Reglamento de Distribución, num. 6.2.1.1); 57,5 y 66 kV por inferencia"
|
|
34
|
+
|
|
35
|
+
[limits.loading]
|
|
36
|
+
# Cargabilidad máxima de líneas y transformadores en % de su valor nominal.
|
|
37
|
+
max_percent = 100.0
|
|
38
|
+
source = "CREG 025/1995, Código de Planeamiento, num. 5.2: no se permiten sobrecargas"
|
|
39
|
+
|
|
40
|
+
[generator]
|
|
41
|
+
# Consigna de tensión por defecto para generadores y compensadores (SVC/STATCOM).
|
|
42
|
+
vm_pu_default = 1.0
|
|
43
|
+
vm_pu_source = "Supuesto del proyecto aprobado por el usuario el 2026-10-20 (sin norma aplicable: CREG 135/2013 num. 5.7 remite al planeamiento operativo del CND)"
|
|
44
|
+
|
|
45
|
+
[trafo]
|
|
46
|
+
# PARATEC no publica la corriente de magnetización; se desprecia.
|
|
47
|
+
i0_percent = 0.0
|
|
48
|
+
i0_source = "Supuesto del proyecto aprobado por el usuario el 2026-10-20 (PARATEC no publica i0)"
|
|
49
|
+
# Posición del cambiador: PARATEC no publica la posición operativa; se usa el paso neutro.
|
|
50
|
+
tap_policy = "neutral"
|
|
51
|
+
tap_source = "Supuesto del proyecto aprobado por el usuario el 2026-10-20 (PARATEC publica rango, paso y neutro, no la posición operativa)"
|
|
52
|
+
|
|
53
|
+
[imputation]
|
|
54
|
+
# Regla ante parámetros faltantes: "exclude" descarta el elemento; "median" imputa con la mediana
|
|
55
|
+
# de elementos del mismo tipo y nivel de tensión del mismo snapshot, solo para los parámetros
|
|
56
|
+
# listados en `params` (constitución III.5). Cada imputación queda en el reporte de calidad.
|
|
57
|
+
# PARATEC no publica pérdidas de cobre ni de hierro en ~25 % de los transformadores; excluirlos
|
|
58
|
+
# partiría la red, y la resistencia serie del transformador tiene poco efecto en el flujo.
|
|
59
|
+
# Decisión del proyecto (2026-10-20): imputar solo esos parámetros. Las impedancias (vk) y las
|
|
60
|
+
# tensiones nunca se imputan.
|
|
61
|
+
rule = "median"
|
|
62
|
+
params = ["vkr_percent", "pfe_kw", "vkr_hv_percent", "vkr_mv_percent", "vkr_lv_percent"]
|
|
63
|
+
|
|
64
|
+
[network]
|
|
65
|
+
# Alcance del modelo (FR-017): STN + STR.
|
|
66
|
+
min_vn_kv = 57.5
|
|
67
|
+
# Barra de referencia de ángulo (FR-015). Criterio: barra del STN con mayor suma de capacidad
|
|
68
|
+
# de generación (p_max_mw) conectada en el snapshot incluido. Calculado sobre el snapshot
|
|
69
|
+
# 2026-10-20: SAN CARLOS|230 (1 292 MW), seguida de GUAVIO|230 (1 250 MW) y ANTIOQUIA|500.
|
|
70
|
+
# Si en un periodo esa barra no tiene generación despachada, el caso usa la barra del
|
|
71
|
+
# generador con mayor P programada y lo declara como supuesto.
|
|
72
|
+
angle_ref_bus = "SAN CARLOS|230"
|
|
73
|
+
angle_ref_source = "Criterio de FR-015: barra STN con mayor Σ p_max_mw conectada en el snapshot incluido (2026-10-20)"
|
|
74
|
+
|
|
75
|
+
[solver]
|
|
76
|
+
algorithm = "nr"
|
|
77
|
+
tolerance_mva = 1e-8
|
|
78
|
+
max_iteration = 30
|
|
79
|
+
init = "dc"
|
|
80
|
+
enforce_q_lims = true
|
|
81
|
+
distributed_slack = true
|
|
82
|
+
|
|
83
|
+
[scraper]
|
|
84
|
+
min_interval_s = 1.0
|
|
85
|
+
timeout_s = 60.0
|
|
86
|
+
user_agent = "sinsim/{version} (+https://github.com/jucajata/paratec-simulation)"
|
|
87
|
+
|
|
88
|
+
[attribution]
|
|
89
|
+
text = "Información proporcionada por XM S.A. E.S.P. – PARATEC y archivos públicos de despacho"
|
|
90
|
+
|
|
91
|
+
[unifilares]
|
|
92
|
+
# Diagramas unifilares oficiales de XM por subárea (FR-034). La interfaz solo enlaza a PARATEC;
|
|
93
|
+
# no descarga los PDF. Las claves son la subárea de PARATEC (`subAreaName` sin "SubArea ").
|
|
94
|
+
# Caquetá, Ecuador y Venezuela no tienen unifilar publicado en este tema.
|
|
95
|
+
page_url = "https://paratec.xm.com.co/unifilares/graficos-y-unifilares"
|
|
96
|
+
type_report = "36a11605-0cc7-497e-b7d9-08dd52a72d29"
|
|
97
|
+
source = "API pública de PARATEC unifilares/api/Diagrama/getAll, tema 'Diagrama unifilar por subárea', consultada el 2026-10-20"
|
|
98
|
+
|
|
99
|
+
[unifilares.categories]
|
|
100
|
+
"Antioquia" = "76fd5d96-3e30-44a5-13e2-08dd52a72d2b"
|
|
101
|
+
"Arauca" = "4e0fe5df-1731-479f-13e4-08dd52a72d2b"
|
|
102
|
+
"Atlantico" = "a55d650c-3599-445b-13e5-08dd52a72d2b"
|
|
103
|
+
"Bogota" = "c0fdc842-84f3-4d8c-13e3-08dd52a72d2b"
|
|
104
|
+
"Bolivar" = "2bd34bc4-0b6b-4ce6-13e6-08dd52a72d2b"
|
|
105
|
+
"Boyaca-Casanare" = "58f4d0f8-3d26-45fb-13e7-08dd52a72d2b"
|
|
106
|
+
"CQR" = "409df8ab-1083-49d9-13eb-08dd52a72d2b"
|
|
107
|
+
"Cauca-Narino" = "1b46b9c7-13a3-42d7-13e8-08dd52a72d2b"
|
|
108
|
+
"Cerromatoso" = "5e6ba023-0a8d-43d9-13e9-08dd52a72d2b"
|
|
109
|
+
"Cordoba_Sucre" = "cae2b1dd-5049-4893-13ea-08dd52a72d2b"
|
|
110
|
+
"GCM" = "3b74aca1-0ee8-4dd0-13ec-08dd52a72d2b"
|
|
111
|
+
"Huila-Tolima" = "55112934-233f-4edf-13ed-08dd52a72d2b"
|
|
112
|
+
"Meta" = "154fcd0a-a082-4553-13ee-08dd52a72d2b"
|
|
113
|
+
"Norte de Santander" = "022763e2-bc36-4b1b-13ef-08dd52a72d2b"
|
|
114
|
+
"Putumayo" = "7f692023-e30f-4319-13f0-08dd52a72d2b"
|
|
115
|
+
"Santander" = "face3ebe-6745-44dd-13f1-08dd52a72d2b"
|
|
116
|
+
"Valle" = "cb17cdf0-ccaf-464e-13f2-08dd52a72d2b"
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
substation,lat,lon,valid_from,valid_to,note
|
|
2
|
+
PIMAMPIRO,0.4077455,-77.9471597,2020-01-01,,"Subestación Pimampiro de CELEC EP en Pimampiro, Imbabura, Ecuador (plus code C353+JMC), extremo ecuatoriano de las líneas Jamondino–Pimampiro 230 kV. PARATEC la declara sin coordenadas. Ubicación tomada de Google Maps y aportada por jucajata el 2026-10-22."
|