site-calc-investment 1.2.0__py3-none-any.whl → 1.2.1__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.
@@ -3,7 +3,7 @@
3
3
  Python client for long-term capacity planning and investment ROI analysis.
4
4
  """
5
5
 
6
- __version__ = "1.2.0"
6
+ __version__ = "1.2.1"
7
7
 
8
8
  from site_calc_investment.analysis import (
9
9
  aggregate_annual,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: site-calc-investment
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: Python client for Site-Calc investment planning (capacity sizing, ROI analysis)
5
5
  Project-URL: Homepage, https://github.com/stranma/site-calc-investment
6
6
  Project-URL: Documentation, https://github.com/stranma/site-calc-investment#readme
@@ -52,9 +52,10 @@ from datetime import datetime
52
52
  from zoneinfo import ZoneInfo
53
53
  from site_calc_investment import InvestmentClient
54
54
  from site_calc_investment.models import (
55
- TimeSpan, Resolution, Site, Battery, ElectricityImport,
55
+ Resolution, Site, Battery, ElectricityImport, ElectricityExport,
56
56
  InvestmentPlanningRequest, InvestmentParameters, OptimizationConfig
57
57
  )
58
+ from site_calc_investment.models.requests import TimeSpanInvestment
58
59
 
59
60
  # Initialize client
60
61
  client = InvestmentClient(
@@ -62,13 +63,16 @@ client = InvestmentClient(
62
63
  api_key="inv_your_api_key_here"
63
64
  )
64
65
 
65
- # Create 10-year planning horizon (1-hour resolution)
66
- timespan = TimeSpan(
66
+ # Create 1-week planning horizon (1-hour resolution)
67
+ timespan = TimeSpanInvestment(
67
68
  start=datetime(2025, 1, 1, tzinfo=ZoneInfo("Europe/Prague")),
68
- intervals=87600, # 10 years × 8760 hours/year
69
+ intervals=168, # 1 week = 7 days × 24 hours
69
70
  resolution=Resolution.HOUR_1
70
71
  )
71
72
 
73
+ # Generate hourly prices (example: day/night pattern)
74
+ prices = [30.0 if h % 24 < 6 else 80.0 if 8 <= h % 24 < 20 else 50.0 for h in range(168)]
75
+
72
76
  # Define devices (NO ancillary_services field)
73
77
  battery = Battery(
74
78
  name="Battery1",
@@ -82,14 +86,20 @@ battery = Battery(
82
86
 
83
87
  grid_import = ElectricityImport(
84
88
  name="GridImport",
85
- properties={"price": prices_10y, "max_import": 8.0}
89
+ properties={"price": prices, "max_import": 10.0}
90
+ )
91
+
92
+ grid_export = ElectricityExport(
93
+ name="GridExport",
94
+ properties={"price": prices, "max_export": 10.0}
86
95
  )
87
96
 
88
- site = Site(site_id="investment_site", devices=[battery, grid_import])
97
+ site = Site(site_id="investment_site", devices=[battery, grid_import, grid_export])
89
98
 
90
99
  # Investment parameters
91
100
  inv_params = InvestmentParameters(
92
101
  discount_rate=0.05,
102
+ project_lifetime_years=10, # Required field
93
103
  device_capital_costs={"Battery1": 500000}, # €500k CAPEX
94
104
  device_annual_opex={"Battery1": 5000} # €5k/year O&M
95
105
  )
@@ -100,19 +110,17 @@ request = InvestmentPlanningRequest(
100
110
  timespan=timespan,
101
111
  investment_parameters=inv_params,
102
112
  optimization_config=OptimizationConfig(
103
- objective="maximize_npv",
104
- time_limit_seconds=3600
113
+ objective="maximize_profit", # Options: maximize_profit, minimize_cost, maximize_self_consumption
114
+ time_limit_seconds=300 # Max 900 seconds (15 min)
105
115
  )
106
116
  )
107
117
 
108
118
  job = client.create_planning_job(request)
109
- result = client.wait_for_completion(job.job_id, poll_interval=30, timeout=7200)
119
+ result = client.wait_for_completion(job.job_id, poll_interval=5, timeout=600)
110
120
 
111
- # Display investment metrics
112
- metrics = result.summary.investment_metrics
113
- print(f"NPV: €{metrics.npv:,.0f}")
114
- print(f"IRR: {metrics.irr*100:.2f}%")
115
- print(f"Payback: {metrics.payback_period_years:.1f} years")
121
+ print(f"Status: {result.status}")
122
+ print(f"Solver: {result.summary.solver_status}")
123
+ print(f"Profit: €{result.summary.expected_profit:,.2f}")
116
124
  ```
117
125
 
118
126
  ## Features
@@ -135,7 +143,7 @@ print(f"Payback: {metrics.payback_period_years:.1f} years")
135
143
  | Resolution | 1-hour only |
136
144
  | ANS Support | No |
137
145
  | Binary Variables | Relaxed to continuous |
138
- | Timeout | 3600 seconds (1 hour) |
146
+ | Timeout | 900 seconds (15 minutes) max |
139
147
 
140
148
  ## Supported Devices
141
149
 
@@ -203,7 +211,7 @@ print(comparison) # DataFrame with NPV, IRR, costs, revenues
203
211
 
204
212
  ## Documentation
205
213
 
206
- Full documentation available at: https://docs.site-calc.example.com/investment-client
214
+ Full documentation available at: https://github.com/stranma/site-calc-investment#readme
207
215
 
208
216
  ## Examples
209
217
 
@@ -1,4 +1,4 @@
1
- site_calc_investment/__init__.py,sha256=V7A9Rf_xLhkx2jqzxcrowiI6n8nsEAmUXFknYVXjvZ4,2084
1
+ site_calc_investment/__init__.py,sha256=pb78oxLhM7MDfT0SClqXiVEcXhJhJ7x5mndiYyl-7cw,2084
2
2
  site_calc_investment/exceptions.py,sha256=dz1wXM3Y4hHzK-PaQPY7sFPgLwUd6bZyWfJDVH9aBZk,2108
3
3
  site_calc_investment/analysis/__init__.py,sha256=u6nwlhY3gQnxn-nkUGc68ynmoBU7NUt3uoUuM9AfQIs,414
4
4
  site_calc_investment/analysis/comparison.py,sha256=3aqKpVcGy-2YfQZjS6qAzN12vuzvwDmE1JgZn6fuuIE,4487
@@ -10,7 +10,7 @@ site_calc_investment/models/common.py,sha256=r6Acg8uICJTETQ1FoVuBEdM8ThLQqwCVhcl
10
10
  site_calc_investment/models/devices.py,sha256=RmlbcxjavC3nFRyCJ6n8aUp2ZosVTpszmMmJfqpgd9c,9895
11
11
  site_calc_investment/models/requests.py,sha256=K3ESSgh3Qkq26jIL3TLTD6TRGmttVSiUUPTdbCmwRiw,5089
12
12
  site_calc_investment/models/responses.py,sha256=pmFfhSCAlCUZTxRDh0IdBn5znJiiFjF7U3LHZON_yQY,5482
13
- site_calc_investment-1.2.0.dist-info/METADATA,sha256=-HNe_BKFtvJ98IlTsXgZvGsCvLwR0RpIxycwe9n6a0w,6949
14
- site_calc_investment-1.2.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
15
- site_calc_investment-1.2.0.dist-info/licenses/LICENSE,sha256=tmWogc4edAjn_ccDCKSLvMGW7asakJnAlQWuNqgApIs,1071
16
- site_calc_investment-1.2.0.dist-info/RECORD,,
13
+ site_calc_investment-1.2.1.dist-info/METADATA,sha256=RZ_epI5NF0vwgboTLAiMyLusx__Cf3pAjDMu60NTEnI,7412
14
+ site_calc_investment-1.2.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
15
+ site_calc_investment-1.2.1.dist-info/licenses/LICENSE,sha256=tmWogc4edAjn_ccDCKSLvMGW7asakJnAlQWuNqgApIs,1071
16
+ site_calc_investment-1.2.1.dist-info/RECORD,,