Skip to content

Commit 07a6da0

Browse files
authored
Merge pull request #10 from codegreen-framework/release
updating main from release
2 parents 9a4971a + 8672d52 commit 07a6da0

File tree

4 files changed

+115
-19
lines changed

4 files changed

+115
-19
lines changed

.github/workflows/workflow.yml

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
name: Publish Python 🐍 distribution 📦 to PyPI
2+
3+
on:
4+
push:
5+
branches:
6+
- release
7+
8+
jobs:
9+
build:
10+
name: Build distribution 📦
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- uses: actions/checkout@v4
15+
- name: Set up Python
16+
uses: actions/setup-python@v5
17+
with:
18+
python-version: "3.11.9"
19+
- name: Install Poetry
20+
run: |
21+
python3 -m pip install poetry --user
22+
- name: Install dependencies and build the project
23+
run: |
24+
poetry install --no-dev
25+
poetry build
26+
- name: Store the distribution packages
27+
uses: actions/upload-artifact@v4
28+
with:
29+
name: python-package-distributions
30+
path: dist/
31+
32+
publish-to-pypi:
33+
name: Publish Python 🐍 distribution 📦 to PyPI
34+
needs:
35+
- build
36+
runs-on: ubuntu-latest
37+
environment:
38+
name: pypi
39+
url: https://pypi.org/p/codegreen-core
40+
permissions:
41+
id-token: write # IMPORTANT: mandatory for trusted publishing
42+
43+
steps:
44+
- name: Download all the dists
45+
uses: actions/download-artifact@v4
46+
with:
47+
name: python-package-distributions
48+
path: dist/
49+
- name: Publish distribution 📦 to PyPI
50+
uses: pypa/gh-action-pypi-publish@release/v1
51+
52+
github-release:
53+
name: >-
54+
Sign the Python 🐍 distribution 📦 with Sigstore
55+
and upload them to GitHub Release
56+
needs:
57+
- publish-to-pypi
58+
runs-on: ubuntu-latest
59+
60+
permissions:
61+
contents: write # IMPORTANT: mandatory for making GitHub Releases
62+
id-token: write # IMPORTANT: mandatory for sigstore
63+
64+
steps:
65+
- name: Download all the dists
66+
uses: actions/download-artifact@v4
67+
with:
68+
name: python-package-distributions
69+
path: dist/
70+
- name: Sign the dists with Sigstore
71+
uses: sigstore/gh-action-sigstore-python@v3.0.0
72+
with:
73+
inputs: >-
74+
./dist/*.tar.gz
75+
./dist/*.whl
76+
- name: Create GitHub Release
77+
env:
78+
GITHUB_TOKEN: ${{ github.token }}
79+
run: >-
80+
gh release create
81+
'${{ github.ref_name }}'
82+
--repo '${{ github.repository }}'
83+
--notes ""
84+
- name: Upload artifact signatures to GitHub Release
85+
env:
86+
GITHUB_TOKEN: ${{ github.token }}
87+
# Upload to GitHub Release using the `gh` CLI.
88+
# `dist/` contains the built packages, and the
89+
# sigstore-produced signatures and certificates.
90+
run: >-
91+
gh release upload
92+
'${{ github.ref_name }}' dist/**
93+
--repo '${{ github.repository }}'

.gitignore

+4-1
Original file line numberDiff line numberDiff line change
@@ -173,4 +173,7 @@ tests/data1
173173
codegreen_core/models/files
174174
Dockerfile
175175
.vscode
176-
poetry.lock
176+
poetry.lock
177+
178+
codegreen_core/tools/test.py
179+
codegreen_core/data/test.py

codegreen_core/tools/carbon_emission.py

+17-17
Original file line numberDiff line numberDiff line change
@@ -169,14 +169,9 @@ def compute_ce_from_energy(server, ci_data: pd.DataFrame):
169169
"""
170170
date_format = "%Y%m%d%H%M" # Year, Month, Day, Hour, Minute
171171

172-
server_defaults = {
173-
"power_draw_core": 15.8,
174-
"usage_factor_core": 1,
175-
"power_draw_mem": 0.3725,
176-
"power_usage_efficiency": 1.6,
177-
}
178-
server = server_defaults | server # set defaults if not provided
179172

173+
server = _add_server_defaults(server) # set defaults if not provided
174+
# print(server)
180175
# to make sure startTimeUTC is in date format
181176
if not pd.api.types.is_datetime64_any_dtype(ci_data["startTimeUTC"]):
182177
ci_data["startTimeUTC"] = pd.to_datetime(ci_data["startTimeUTC"])
@@ -208,7 +203,7 @@ def compute_ce_from_energy(server, ci_data: pd.DataFrame):
208203

209204
def _compute_ce_bulk(server, jobs):
210205
for job in jobs:
211-
job.end_time = job["start_time"] + timedelta(minutes=job["runtime_minutes"])
206+
job['end_time'] = job["start_time"] + timedelta(minutes=job["runtime_minutes"])
212207

213208
min_start_date = min(job["start_time"] for job in jobs)
214209
max_end_date = max(job["end_time"] for job in jobs)
@@ -222,19 +217,23 @@ def _compute_ce_bulk(server, jobs):
222217
& (energy_data["startTimeUTC"] <= job["end_time"])
223218
]
224219
job["emissions"], temp = compute_ce_from_energy(
225-
filtered_energy,
226-
server["number_core"],
227-
server["memory_gb"],
228-
server["power_draw_core"],
229-
server["usage_factor_core"],
230-
server["power_draw_mem"],
231-
server["power_usage_efficiency"],
220+
server,
221+
filtered_energy
232222
)
233223
return energy_data, jobs, min_start_date, max_end_date
234224

225+
def _add_server_defaults(server):
226+
server_defaults = {
227+
"power_draw_core": 15.8,
228+
"usage_factor_core": 1,
229+
"power_draw_mem": 0.3725,
230+
"power_usage_efficiency": 1.6,
231+
}
232+
server = server_defaults | server # set defaults if not provided
233+
return server
235234

236235
def plot_ce_jobs(server, jobs):
237-
energy_data, jobs, min_start_date, max_end_date = _compute_ce_bulk(server, jobs)
236+
energy_data, jobs, min_start_date, max_end_date = _compute_ce_bulk(_add_server_defaults(server), jobs)
238237
Color = {
239238
"red": "#D6A99A",
240239
"green": "#99D19C",
@@ -294,4 +293,5 @@ def plot_ce_jobs(server, jobs):
294293
# Add legend and show the plot
295294
fig.tight_layout()
296295
# plt.legend(loc='lower right')
297-
plt.show()
296+
plt.show(block=True)
297+
# plt.pyplot.show()

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "codegreen_core"
3-
version = "0.5.0"
3+
version = "0.0.2"
44
description = "This package helps you become aware of the carbon footprint of your computation"
55
authors = ["Anne Hartebrodt <anne.hartebrodt@fau.de>","Shubh Vardhan Jain <shubh.v.jain@fau.de>"]
66
readme = "README.md"

0 commit comments

Comments
 (0)