greenpick 0.1.0__tar.gz → 0.1.2__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.
Files changed (48) hide show
  1. {greenpick-0.1.0/src/greenpick.egg-info → greenpick-0.1.2}/PKG-INFO +44 -5
  2. {greenpick-0.1.0 → greenpick-0.1.2}/README.md +43 -4
  3. {greenpick-0.1.0 → greenpick-0.1.2}/pyproject.toml +1 -1
  4. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/__init__.py +1 -1
  5. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/server.py +1 -1
  6. {greenpick-0.1.0 → greenpick-0.1.2/src/greenpick.egg-info}/PKG-INFO +44 -5
  7. {greenpick-0.1.0 → greenpick-0.1.2}/LICENSE +0 -0
  8. {greenpick-0.1.0 → greenpick-0.1.2}/setup.cfg +0 -0
  9. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/__main__.py +0 -0
  10. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/config.py +0 -0
  11. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/__init__.py +0 -0
  12. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/auto_repository.py +0 -0
  13. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/eia_repository.py +0 -0
  14. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/electricitymaps_repository.py +0 -0
  15. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/emission_factors.json +0 -0
  16. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/entsoe_repository.py +0 -0
  17. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/gpu_power.json +0 -0
  18. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/inference_energy.json +0 -0
  19. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/instance_families.json +0 -0
  20. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/mock_repository.py +0 -0
  21. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/network.json +0 -0
  22. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/power.json +0 -0
  23. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/pricing.json +0 -0
  24. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/regions.json +0 -0
  25. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/repository.py +0 -0
  26. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/data/static_data.py +0 -0
  27. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/models.py +0 -0
  28. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/__init__.py +0 -0
  29. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/carbon_service.py +0 -0
  30. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/cost_service.py +0 -0
  31. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/forecast_service.py +0 -0
  32. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/inference_service.py +0 -0
  33. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/instance_service.py +0 -0
  34. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/latency_service.py +0 -0
  35. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/locality_service.py +0 -0
  36. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/metric_scaffold_service.py +0 -0
  37. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/recommender.py +0 -0
  38. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/residency_service.py +0 -0
  39. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/rightsizing_service.py +0 -0
  40. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/scheduling_service.py +0 -0
  41. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/serving_service.py +0 -0
  42. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick/services/training_service.py +0 -0
  43. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick.egg-info/SOURCES.txt +0 -0
  44. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick.egg-info/dependency_links.txt +0 -0
  45. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick.egg-info/entry_points.txt +0 -0
  46. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick.egg-info/requires.txt +0 -0
  47. {greenpick-0.1.0 → greenpick-0.1.2}/src/greenpick.egg-info/top_level.txt +0 -0
  48. {greenpick-0.1.0 → greenpick-0.1.2}/tests/test_services.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: greenpick
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Design-time sustainability co-pilot (MCP server): greener, cheaper cloud infrastructure decisions with carbon + cost + latency tradeoffs.
5
5
  Author-email: "Data Science Advisers, LLC" <info@datascienceadvisers.com>
6
6
  License-Expression: MIT
@@ -29,7 +29,7 @@ Requires-Dist: ijson>=3.0; extra == "dev"
29
29
  Dynamic: license-file
30
30
 
31
31
  <p align="center">
32
- <img src="docs/img/logo.svg" alt="GreenPick logo — a leaf whose veins are circuit traces" width="120" />
32
+ <img src="https://raw.githubusercontent.com/bithug01/greenpick/master/docs/img/logo.svg" alt="GreenPick logo — a leaf whose veins are circuit traces" width="120" />
33
33
  </p>
34
34
 
35
35
  <h1 align="center">GreenPick</h1>
@@ -58,7 +58,7 @@ seconds. (It responds when you ask; auto-nudging on infra-code changes is on the
58
58
  > checks — all shipped. Falls back to clearly-labelled mock data offline or without API keys.
59
59
 
60
60
  <p align="center">
61
- <img src="docs/img/region-carbon-30x.svg" alt="Same H100 training run, ~30× the carbon depending only on region (Stockholm vs Sydney)" width="560" />
61
+ <img src="https://raw.githubusercontent.com/bithug01/greenpick/master/docs/img/region-carbon-30x.svg" alt="Same H100 training run, ~30× the carbon depending only on region (Stockholm vs Sydney)" width="560" />
62
62
  </p>
63
63
 
64
64
  *The same 40-GPU-hour training run emits ~0.7 kg CO₂ in Stockholm vs ~19 kg in Sydney — a ~30×
@@ -227,11 +227,50 @@ pytest # run tests
227
227
  Connect it to an MCP client (e.g. Kiro / Claude Code / Cursor) by pointing the client at
228
228
  `python -m greenpick` in this directory. See `.env.example` for switching the data source.
229
229
 
230
+ ### Turn on live data
231
+
232
+ GreenPick runs on labelled mock data until you give it two free keys:
233
+ [EIA](https://www.eia.gov/opendata/register.php) (US grid) and
234
+ [ENTSO-E](https://transparency.entsoe.eu/) (EU grid). Pass them as environment variables.
235
+ (A `.env` file works for a source checkout; if you installed with `pip install greenpick`, use one
236
+ of the options below.)
237
+
238
+ **In an MCP client** (Kiro, Claude Desktop, Cursor…), add an `env` block to the server entry:
239
+
240
+ ```json
241
+ {
242
+ "mcpServers": {
243
+ "greenpick": {
244
+ "command": "python",
245
+ "args": ["-m", "greenpick"],
246
+ "env": {
247
+ "GREENPICK_CARBON_SOURCE": "auto",
248
+ "EIA_API_KEY": "your-eia-key",
249
+ "ENTSOE_TOKEN": "your-entsoe-token"
250
+ }
251
+ }
252
+ }
253
+ }
254
+ ```
255
+
256
+ **In a Jupyter notebook or Python script**, set them before you start (or import) the server:
257
+
258
+ ```python
259
+ import os
260
+ os.environ["GREENPICK_CARBON_SOURCE"] = "auto"
261
+ os.environ["EIA_API_KEY"] = "your-eia-key"
262
+ os.environ["ENTSOE_TOKEN"] = "your-entsoe-token"
263
+ ```
264
+
265
+ Every carbon figure includes a `quality` field: `live` means real grid data, `mock` means a
266
+ fallback value. Check it to confirm live data is on.
267
+
230
268
  ## FAQ
231
269
 
232
270
  **Do I need API keys?** No — GreenPick runs on clearly-labelled mock data out of the box. For *live*
233
- carbon, set two free keys in `.env` (`EIA_API_KEY` for US, `ENTSOE_TOKEN` for EU) and
234
- `GREENPICK_CARBON_SOURCE=auto`. Without them it still works; it just says `quality: "mock"`.
271
+ carbon, set two free keys (`EIA_API_KEY` for US, `ENTSOE_TOKEN` for EU) and
272
+ `GREENPICK_CARBON_SOURCE=auto` — see [Turn on live data](#turn-on-live-data). Without them it still
273
+ works; it just says `quality: "mock"`.
235
274
 
236
275
  **Why "directional" and not audited numbers?** Because it's for a *design-time decision*, not a
237
276
  compliance report. "Stockholm is ~30× cleaner than Sydney" is what you need to pick a region in
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="docs/img/logo.svg" alt="GreenPick logo — a leaf whose veins are circuit traces" width="120" />
2
+ <img src="https://raw.githubusercontent.com/bithug01/greenpick/master/docs/img/logo.svg" alt="GreenPick logo — a leaf whose veins are circuit traces" width="120" />
3
3
  </p>
4
4
 
5
5
  <h1 align="center">GreenPick</h1>
@@ -28,7 +28,7 @@ seconds. (It responds when you ask; auto-nudging on infra-code changes is on the
28
28
  > checks — all shipped. Falls back to clearly-labelled mock data offline or without API keys.
29
29
 
30
30
  <p align="center">
31
- <img src="docs/img/region-carbon-30x.svg" alt="Same H100 training run, ~30× the carbon depending only on region (Stockholm vs Sydney)" width="560" />
31
+ <img src="https://raw.githubusercontent.com/bithug01/greenpick/master/docs/img/region-carbon-30x.svg" alt="Same H100 training run, ~30× the carbon depending only on region (Stockholm vs Sydney)" width="560" />
32
32
  </p>
33
33
 
34
34
  *The same 40-GPU-hour training run emits ~0.7 kg CO₂ in Stockholm vs ~19 kg in Sydney — a ~30×
@@ -197,11 +197,50 @@ pytest # run tests
197
197
  Connect it to an MCP client (e.g. Kiro / Claude Code / Cursor) by pointing the client at
198
198
  `python -m greenpick` in this directory. See `.env.example` for switching the data source.
199
199
 
200
+ ### Turn on live data
201
+
202
+ GreenPick runs on labelled mock data until you give it two free keys:
203
+ [EIA](https://www.eia.gov/opendata/register.php) (US grid) and
204
+ [ENTSO-E](https://transparency.entsoe.eu/) (EU grid). Pass them as environment variables.
205
+ (A `.env` file works for a source checkout; if you installed with `pip install greenpick`, use one
206
+ of the options below.)
207
+
208
+ **In an MCP client** (Kiro, Claude Desktop, Cursor…), add an `env` block to the server entry:
209
+
210
+ ```json
211
+ {
212
+ "mcpServers": {
213
+ "greenpick": {
214
+ "command": "python",
215
+ "args": ["-m", "greenpick"],
216
+ "env": {
217
+ "GREENPICK_CARBON_SOURCE": "auto",
218
+ "EIA_API_KEY": "your-eia-key",
219
+ "ENTSOE_TOKEN": "your-entsoe-token"
220
+ }
221
+ }
222
+ }
223
+ }
224
+ ```
225
+
226
+ **In a Jupyter notebook or Python script**, set them before you start (or import) the server:
227
+
228
+ ```python
229
+ import os
230
+ os.environ["GREENPICK_CARBON_SOURCE"] = "auto"
231
+ os.environ["EIA_API_KEY"] = "your-eia-key"
232
+ os.environ["ENTSOE_TOKEN"] = "your-entsoe-token"
233
+ ```
234
+
235
+ Every carbon figure includes a `quality` field: `live` means real grid data, `mock` means a
236
+ fallback value. Check it to confirm live data is on.
237
+
200
238
  ## FAQ
201
239
 
202
240
  **Do I need API keys?** No — GreenPick runs on clearly-labelled mock data out of the box. For *live*
203
- carbon, set two free keys in `.env` (`EIA_API_KEY` for US, `ENTSOE_TOKEN` for EU) and
204
- `GREENPICK_CARBON_SOURCE=auto`. Without them it still works; it just says `quality: "mock"`.
241
+ carbon, set two free keys (`EIA_API_KEY` for US, `ENTSOE_TOKEN` for EU) and
242
+ `GREENPICK_CARBON_SOURCE=auto` — see [Turn on live data](#turn-on-live-data). Without them it still
243
+ works; it just says `quality: "mock"`.
205
244
 
206
245
  **Why "directional" and not audited numbers?** Because it's for a *design-time decision*, not a
207
246
  compliance report. "Stockholm is ~30× cleaner than Sydney" is what you need to pick a region in
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "greenpick"
3
- version = "0.1.0"
3
+ version = "0.1.2"
4
4
  description = "Design-time sustainability co-pilot (MCP server): greener, cheaper cloud infrastructure decisions with carbon + cost + latency tradeoffs."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -4,4 +4,4 @@ Greener cloud-region choices with honest carbon + cost + latency tradeoffs,
4
4
  delivered inside the vibe-coding loop. Directional guidance, not audited accounting.
5
5
  """
6
6
 
7
- __version__ = "0.1.0"
7
+ __version__ = "0.1.2"
@@ -345,5 +345,5 @@ def explain_methodology_and_limits() -> dict:
345
345
  "forecast": "Day-ahead forecast is RELATIVE: upcoming hours ranked by forecast wind+solar output (ENTSO-E A69), not an absolute gCO2/kWh forecast. EU only; US/uncovered zones degrade to the recent historical pattern (labelled 'historical').",
346
346
  "data_residency": "GreenPick flags when a recommended move CROSSES a jurisdiction (esp. leaving the EEA) as a geographic heads-up only. It does NOT assess legal/GDPR compliance, does not encode adequacy decisions, and is not legal advice — confirm with your own data governance.",
347
347
  "ignored": "Embodied/hardware carbon and provider renewable-energy certificates.",
348
- "data_sources": "Electricity Maps free tier (primary); ENTSO-E / EIA / NESO fallbacks; annual averages offline.",
348
+ "data_sources": "GREENPICK_CARBON_SOURCE=auto routes US regions to EIA-930 and EU regions to ENTSO-E (both free, live); other regions, or any region without a key, use clearly-labelled mock data. Electricity Maps is available when selected explicitly (GREENPICK_CARBON_SOURCE=electricitymaps).",
349
349
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: greenpick
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Design-time sustainability co-pilot (MCP server): greener, cheaper cloud infrastructure decisions with carbon + cost + latency tradeoffs.
5
5
  Author-email: "Data Science Advisers, LLC" <info@datascienceadvisers.com>
6
6
  License-Expression: MIT
@@ -29,7 +29,7 @@ Requires-Dist: ijson>=3.0; extra == "dev"
29
29
  Dynamic: license-file
30
30
 
31
31
  <p align="center">
32
- <img src="docs/img/logo.svg" alt="GreenPick logo — a leaf whose veins are circuit traces" width="120" />
32
+ <img src="https://raw.githubusercontent.com/bithug01/greenpick/master/docs/img/logo.svg" alt="GreenPick logo — a leaf whose veins are circuit traces" width="120" />
33
33
  </p>
34
34
 
35
35
  <h1 align="center">GreenPick</h1>
@@ -58,7 +58,7 @@ seconds. (It responds when you ask; auto-nudging on infra-code changes is on the
58
58
  > checks — all shipped. Falls back to clearly-labelled mock data offline or without API keys.
59
59
 
60
60
  <p align="center">
61
- <img src="docs/img/region-carbon-30x.svg" alt="Same H100 training run, ~30× the carbon depending only on region (Stockholm vs Sydney)" width="560" />
61
+ <img src="https://raw.githubusercontent.com/bithug01/greenpick/master/docs/img/region-carbon-30x.svg" alt="Same H100 training run, ~30× the carbon depending only on region (Stockholm vs Sydney)" width="560" />
62
62
  </p>
63
63
 
64
64
  *The same 40-GPU-hour training run emits ~0.7 kg CO₂ in Stockholm vs ~19 kg in Sydney — a ~30×
@@ -227,11 +227,50 @@ pytest # run tests
227
227
  Connect it to an MCP client (e.g. Kiro / Claude Code / Cursor) by pointing the client at
228
228
  `python -m greenpick` in this directory. See `.env.example` for switching the data source.
229
229
 
230
+ ### Turn on live data
231
+
232
+ GreenPick runs on labelled mock data until you give it two free keys:
233
+ [EIA](https://www.eia.gov/opendata/register.php) (US grid) and
234
+ [ENTSO-E](https://transparency.entsoe.eu/) (EU grid). Pass them as environment variables.
235
+ (A `.env` file works for a source checkout; if you installed with `pip install greenpick`, use one
236
+ of the options below.)
237
+
238
+ **In an MCP client** (Kiro, Claude Desktop, Cursor…), add an `env` block to the server entry:
239
+
240
+ ```json
241
+ {
242
+ "mcpServers": {
243
+ "greenpick": {
244
+ "command": "python",
245
+ "args": ["-m", "greenpick"],
246
+ "env": {
247
+ "GREENPICK_CARBON_SOURCE": "auto",
248
+ "EIA_API_KEY": "your-eia-key",
249
+ "ENTSOE_TOKEN": "your-entsoe-token"
250
+ }
251
+ }
252
+ }
253
+ }
254
+ ```
255
+
256
+ **In a Jupyter notebook or Python script**, set them before you start (or import) the server:
257
+
258
+ ```python
259
+ import os
260
+ os.environ["GREENPICK_CARBON_SOURCE"] = "auto"
261
+ os.environ["EIA_API_KEY"] = "your-eia-key"
262
+ os.environ["ENTSOE_TOKEN"] = "your-entsoe-token"
263
+ ```
264
+
265
+ Every carbon figure includes a `quality` field: `live` means real grid data, `mock` means a
266
+ fallback value. Check it to confirm live data is on.
267
+
230
268
  ## FAQ
231
269
 
232
270
  **Do I need API keys?** No — GreenPick runs on clearly-labelled mock data out of the box. For *live*
233
- carbon, set two free keys in `.env` (`EIA_API_KEY` for US, `ENTSOE_TOKEN` for EU) and
234
- `GREENPICK_CARBON_SOURCE=auto`. Without them it still works; it just says `quality: "mock"`.
271
+ carbon, set two free keys (`EIA_API_KEY` for US, `ENTSOE_TOKEN` for EU) and
272
+ `GREENPICK_CARBON_SOURCE=auto` — see [Turn on live data](#turn-on-live-data). Without them it still
273
+ works; it just says `quality: "mock"`.
235
274
 
236
275
  **Why "directional" and not audited numbers?** Because it's for a *design-time decision*, not a
237
276
  compliance report. "Stockholm is ~30× cleaner than Sydney" is what you need to pick a region in
File without changes
File without changes