-
Notifications
You must be signed in to change notification settings - Fork 66
Expand file tree
/
Copy pathpyproject.toml
More file actions
146 lines (139 loc) · 8.85 KB
/
Copy pathpyproject.toml
File metadata and controls
146 lines (139 loc) · 8.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
[build-system]
requires = ["setuptools>=77"]
build-backend = "setuptools.build_meta"
[project]
name = "GridPath"
dynamic = ["version"]
description = "A versatile simulation and optimization platform for power-system planning and operations."
readme = "README.md"
license = "Apache-2.0"
maintainers = [
{ name = "Sylvan Energy Analytics LLC", email = "info@sylvan.energy" },
]
keywords = ["energy", "electricity", "power", "renewables", "planning", "operations"]
requires-python = ">=3.11"
dependencies = [
"Pyomo==6.10.1", # Optimization modeling language
"pandas==3.0.3", # Data-processing
"bokeh==3.9.1", # Visualization library
"pscript==0.8.1", # Python to JavaScript compiler (for viz)
"networkx==3.6.1", # network package for DC OPF
"PyUtilib==6.0.0", # used for solver temp file management
"highspy==1.15.1", # HiGHS Python interface (default solver)
"dill==0.4.1", # pickling
"duckdb==1.5.4", # data-handling
"sphinx-rtd-theme", # documentation theme
]
[project.urls]
Homepage = "https://www.gridpath.io"
Discussions = "https://github.com/sylvan-energy/gridpath/discussions"
Documentation = "https://gridpath.readthedocs.io/en/latest/"
Issues = "https://github.com/sylvan-energy/gridpath/issues"
"Source Code" = "https://github.com/sylvan-energy/gridpath"
# Note: df2img (used only by doc/opchar_img_gen.py, a standalone script that
# regenerates the checked-in opchar diagram images) is deliberately NOT
# listed here: its pandas<3.0 constraint can never be satisfied alongside
# GridPath's own pandas==3.0.3 pin in dependencies (extras are additive,
# not a replacement). Read the Docs builds straight from doc/source/conf.py
# and never touches df2img/opchar_img_gen.py, since the images are
# pre-generated and committed to doc/graphics/. To regenerate them after
# editing opchar_param_requirements.csv, install df2img in a separate
# throwaway environment (e.g. its own venv with an older pandas) and run
# opchar_img_gen.py there directly.
[project.optional-dependencies]
doc = [
"Sphinx==7.2.6",
"sphinx-argparse==0.4.0",
]
coverage = [
"coverage", # test coverage
"coveralls", # automated coverage results
]
gurobi = ["gurobipy"] # Gurobi Python interface
parallel_tests = [
"pytest", # test runner (collects the unittest suite as is)
"pytest-xdist", # parallel test execution (see scripts/run_tests_parallel.py)
"pytest-cov", # coverage measurement that reaches the xdist workers
]
all = [
"GridPath[doc,coverage,gurobi,parallel_tests]",
"black",
]
[project.scripts]
gridpath = "gridpath.cli:main"
gridpath_run = "gridpath.run_scenario:main"
gridpath_run_parallel = "gridpath.run_scenario_parallel:main"
gridpath_run_e2e = "gridpath.run_end_to_end:main"
gridpath_get_inputs = "gridpath.get_scenario_inputs:main"
gridpath_import_results = "gridpath.import_scenario_results:main"
gridpath_process_results = "gridpath.process_results:main"
gridpath_validate = "gridpath.validate_inputs:main"
gridpath_run_server = "ui.server.run_server:main"
gridpath_run_queue_manager = "ui.server.run_queue_manager:main"
gridpath_create_database = "db.create_database:main"
gridpath_load_csvs = "db.utilities.port_csvs_to_db:main"
gridpath_load_scenarios = "db.utilities.scenario:main"
gridpath_get_pudl_data = "data_toolkit.raw_data.pudl.download_data_from_pudl:main"
gridpath_pudl_to_gridpath_raw = "data_toolkit.raw_data.pudl.pudl_to_gridpath_raw_data:main"
gridpath_get_pcm_demo_inputs = "data_toolkit.raw_data.get_pcm_demo_user_defined_inputs:main"
gridpath_get_ra_toolkit_data_raw = "data_toolkit.raw_data.ra_toolkit.get_ra_toolkit_data:main"
gridpath_run_data_toolkit = "data_toolkit.run_data_toolkit:main"
gridpath_load_raw_data = "data_toolkit.load_raw_data:main"
gridpath_manual_adjustments = "data_toolkit.manual_adjustments:main"
gridpath_eiaaeo_to_fuel_chars_input_csvs = "data_toolkit.fuels.eiaaeo_to_fuel_chars_input_csvs:main"
gridpath_eiaaeo_fuel_price_input_csvs = "data_toolkit.fuels.eiaaeo_fuel_price_input_csvs:main"
gridpath_eia860_to_project_availability_input_csvs = "data_toolkit.project.availability.eia860_to_project_availability_input_csvs:main"
gridpath_create_sync_gen_weather_derate_input_csvs = "data_toolkit.project.availability.weather_derates.create_sync_gen_weather_derate_input_csvs:main"
gridpath_create_monte_carlo_gen_weather_derate_input_csvs = "data_toolkit.project.availability.weather_derates.create_monte_carlo_gen_weather_derate_input_csvs:main"
gridpath_create_availability_iteration_input_csvs = "data_toolkit.project.availability.outages.create_availability_iteration_input_csvs:main"
gridpath_eia860_to_project_specified_capacity_input_csvs = "data_toolkit.project.capacity_specified.eia860_to_project_specified_capacity_input_csvs:main"
gridpath_eia860_to_project_fixed_cost_input_csvs = "data_toolkit.project.fixed_cost.eia860_to_project_fixed_cost_input_csvs:main"
gridpath_eia860_to_project_load_zone_input_csvs = "data_toolkit.project.load_zones.eia860_to_project_load_zone_input_csvs:main"
gridpath_eia860_to_project_opchar_input_csvs = "data_toolkit.project.opchar.eia860_to_project_opchar_input_csvs:main"
gridpath_eia860_to_project_fuel_input_csvs = "data_toolkit.project.opchar.fuels.eia860_to_project_fuel_input_csvs:main"
gridpath_eia860_to_project_heat_rate_input_csvs = "data_toolkit.project.opchar.heat_rates.eia860_to_project_heat_rate_input_csvs:main"
gridpath_create_hydro_iteration_input_csvs = "data_toolkit.project.opchar.hydro.create_hydro_iteration_input_csvs:main"
gridpath_create_sync_var_gen_input_csvs = "data_toolkit.project.opchar.var_profiles.create_sync_var_gen_input_csvs:main"
gridpath_create_monte_carlo_var_gen_input_csvs = "data_toolkit.project.opchar.var_profiles.create_monte_carlo_var_gen_input_csvs:main"
gridpath_eia860_to_project_portfolio_input_csvs = "data_toolkit.project.portfolios.eia860_to_project_portfolio_input_csvs:main"
gridpath_eia930_load_zone_input_csvs = "data_toolkit.system.eia930_load_zone_input_csvs:main"
gridpath_create_sync_load_input_csvs = "data_toolkit.system.create_sync_load_input_csvs:main"
gridpath_create_monte_carlo_load_input_csvs = "data_toolkit.system.create_monte_carlo_load_input_csvs:main"
gridpath_create_temporal_iteration_csv = "data_toolkit.temporal.create_temporal_iteration_csv:main"
gridpath_create_temporal_scenarios = "data_toolkit.temporal.create_temporal_scenarios:main"
gridpath_create_monte_carlo_weather_draws = "data_toolkit.temporal.create_monte_carlo_weather_draws:main"
gridpath_create_monte_carlo_weather_draw_profiles = "data_toolkit.temporal.create_monte_carlo_weather_draw_profiles:main"
gridpath_eia930_to_transmission_load_zone_input_csvs = "data_toolkit.transmission.load_zones.eia930_to_transmission_load_zone_input_csvs:main"
gridpath_eia930_to_transmission_availability_input_csvs = "data_toolkit.transmission.availability.eia930_to_transmission_availability_input_csvs:main"
gridpath_eia930_to_transmission_specified_capacity_input_csvs = "data_toolkit.transmission.capacity_specified.eia930_to_transmission_specified_capacity_input_csvs:main"
gridpath_eia930_to_transmission_opchar_input_csvs = "data_toolkit.transmission.opchar.eia930_to_transmission_opchar_input_csvs:main"
gridpath_eia930_to_transmission_portfolio_input_csvs = "data_toolkit.transmission.portfolios.eia930_to_transmission_portfolio_input_csvs:main"
gridpath_viz_capacity_factor_plot = "viz.capacity_factor_plot:main"
gridpath_viz_capacity_new_plot = "viz.capacity_new_plot:main"
gridpath_viz_capacity_retired_plot = "viz.capacity_retired_plot:main"
gridpath_viz_capacity_total_loadzone_comparison_plot = "viz.capacity_total_loadzone_comparison_plot:main"
gridpath_viz_capacity_total_plot = "viz.capacity_total_plot:main"
gridpath_viz_capacity_total_scenario_comparison_plot = "viz.capacity_total_scenario_comparison_plot:main"
gridpath_viz_carbon_plot = "viz.carbon_plot:main"
gridpath_viz_cost_plot = "viz.cost_plot:main"
gridpath_viz_curtailment_hydro_heatmap_plot = "viz.curtailment_hydro_heatmap_plot:main"
gridpath_viz_curtailment_variable_heatmap_plot = "viz.curtailment_variable_heatmap_plot:main"
gridpath_viz_dispatch_plot = "viz.dispatch_plot:main"
gridpath_viz_energy_plot = "viz.energy_plot:main"
gridpath_viz_energy_target_plot = "viz.energy_target_plot:main"
gridpath_viz_project_operations_plot = "viz.project_operations_plot:main"
[tool.setuptools]
include-package-data = true
# so the DB metadata can record the version
py-modules = ["version"]
[tool.setuptools.packages.find]
# Flat layout with multiple top-level packages — auto-discovery would error,
# so list them explicitly. `ui` has no __init__.py and has never shipped in
# the wheel (its entry points work only in editable installs); `tests` is
# deliberately not packaged.
include = ["gridpath*", "db*", "viz*", "data_toolkit*"]
# find_packages() semantics: only dirs with __init__.py (the pyproject default
# of namespaces = true would pull in e.g. db/csvs_test_examples/*/doc.py)
namespaces = false
[tool.setuptools.dynamic]
version = { attr = "version.__version__" }