greenmining 1.2.3__tar.gz → 1.2.4__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.
- {greenmining-1.2.3 → greenmining-1.2.4}/CHANGELOG.md +20 -0
- {greenmining-1.2.3/greenmining.egg-info → greenmining-1.2.4}/PKG-INFO +1 -1
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/__init__.py +8 -1
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/services/local_repo_analyzer.py +5 -0
- {greenmining-1.2.3 → greenmining-1.2.4/greenmining.egg-info}/PKG-INFO +1 -1
- {greenmining-1.2.3 → greenmining-1.2.4}/pyproject.toml +1 -1
- {greenmining-1.2.3 → greenmining-1.2.4}/LICENSE +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/MANIFEST.in +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/README.md +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/__main__.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/analyzers/__init__.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/analyzers/code_diff_analyzer.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/analyzers/metrics_power_correlator.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/analyzers/statistical_analyzer.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/analyzers/temporal_analyzer.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/controllers/__init__.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/controllers/repository_controller.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/energy/__init__.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/energy/base.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/energy/carbon_reporter.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/energy/codecarbon_meter.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/energy/cpu_meter.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/energy/rapl.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/gsf_patterns.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/models/__init__.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/models/aggregated_stats.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/models/analysis_result.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/models/commit.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/models/repository.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/services/__init__.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/services/commit_extractor.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/services/data_aggregator.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/services/data_analyzer.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/services/github_graphql_fetcher.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/services/reports.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining/utils.py +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining.egg-info/SOURCES.txt +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining.egg-info/dependency_links.txt +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining.egg-info/requires.txt +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/greenmining.egg-info/top_level.txt +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/setup.cfg +0 -0
- {greenmining-1.2.3 → greenmining-1.2.4}/setup.py +0 -0
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.2.4] - 2026-02-01
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- `skip_merges` parameter exposed in `analyze_repositories()` API (default: True)
|
|
7
|
+
- `commit_order` parameter to control commit traversal order: "newest_first" (default) or "oldest_first"
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- Commit analysis now configurable between newest-first (recent trends) and oldest-first (evolution studies)
|
|
11
|
+
|
|
12
|
+
## [1.2.3] - 2026-02-01
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- `cleanup_after` parameter not exposed in top-level `analyze_repositories()` API
|
|
16
|
+
- Repositories with empty commit histories no longer included in analysis results
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- Experiment notebook updated with full Android-domain pipeline run and results
|
|
20
|
+
|
|
3
21
|
## [1.2.1] - 2026-02-01
|
|
4
22
|
|
|
5
23
|
### Fixed
|
|
@@ -98,6 +116,8 @@
|
|
|
98
116
|
- Green awareness analysis
|
|
99
117
|
- Docker containerization
|
|
100
118
|
|
|
119
|
+
[1.2.4]: https://github.com/adam-bouafia/greenmining/compare/v1.2.3...v1.2.4
|
|
120
|
+
[1.2.3]: https://github.com/adam-bouafia/greenmining/compare/v1.2.1...v1.2.3
|
|
101
121
|
[1.2.1]: https://github.com/adam-bouafia/greenmining/compare/v1.2.0...v1.2.1
|
|
102
122
|
[1.2.0]: https://github.com/adam-bouafia/greenmining/compare/v1.1.9...v1.2.0
|
|
103
123
|
[1.1.9]: https://github.com/adam-bouafia/greenmining/compare/v1.1.6...v1.1.9
|
|
@@ -8,7 +8,7 @@ from greenmining.gsf_patterns import (
|
|
|
8
8
|
is_green_aware,
|
|
9
9
|
)
|
|
10
10
|
|
|
11
|
-
__version__ = "1.2.
|
|
11
|
+
__version__ = "1.2.4"
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
def fetch_repositories(
|
|
@@ -73,6 +73,8 @@ def analyze_repositories(
|
|
|
73
73
|
since_date: str = None,
|
|
74
74
|
to_date: str = None,
|
|
75
75
|
cleanup_after: bool = True,
|
|
76
|
+
skip_merges: bool = True,
|
|
77
|
+
commit_order: str = "newest_first",
|
|
76
78
|
):
|
|
77
79
|
# Analyze multiple repositories from URLs.
|
|
78
80
|
# Args:
|
|
@@ -88,6 +90,9 @@ def analyze_repositories(
|
|
|
88
90
|
# github_token: GitHub token for private HTTPS repositories
|
|
89
91
|
# since_date: Analyze commits from this date (YYYY-MM-DD string)
|
|
90
92
|
# to_date: Analyze commits up to this date (YYYY-MM-DD string)
|
|
93
|
+
# cleanup_after: Remove cloned repos after analysis (default True)
|
|
94
|
+
# skip_merges: Skip merge commits (default True)
|
|
95
|
+
# commit_order: "newest_first" (default) or "oldest_first"
|
|
91
96
|
from greenmining.services.local_repo_analyzer import LocalRepoAnalyzer
|
|
92
97
|
|
|
93
98
|
kwargs = {}
|
|
@@ -109,6 +114,8 @@ def analyze_repositories(
|
|
|
109
114
|
ssh_key_path=ssh_key_path,
|
|
110
115
|
github_token=github_token,
|
|
111
116
|
cleanup_after=cleanup_after,
|
|
117
|
+
skip_merges=skip_merges,
|
|
118
|
+
commit_order=commit_order,
|
|
112
119
|
**kwargs,
|
|
113
120
|
)
|
|
114
121
|
|
|
@@ -205,6 +205,7 @@ class LocalRepoAnalyzer:
|
|
|
205
205
|
process_metrics: str = "standard",
|
|
206
206
|
since_date: Optional[datetime] = None,
|
|
207
207
|
to_date: Optional[datetime] = None,
|
|
208
|
+
commit_order: str = "newest_first",
|
|
208
209
|
):
|
|
209
210
|
# Initialize the local repository analyzer.
|
|
210
211
|
# Args:
|
|
@@ -221,6 +222,7 @@ class LocalRepoAnalyzer:
|
|
|
221
222
|
# method_level_analysis: Extract per-method metrics via Lizard
|
|
222
223
|
# include_source_code: Include source code before/after in results
|
|
223
224
|
# process_metrics: "standard" or "full" PyDriller process metrics
|
|
225
|
+
# commit_order: "newest_first" (default) or "oldest_first"
|
|
224
226
|
self.clone_path = clone_path or Path.cwd() / "greenmining_repos"
|
|
225
227
|
self.clone_path.mkdir(parents=True, exist_ok=True)
|
|
226
228
|
self.max_commits = max_commits
|
|
@@ -230,6 +232,7 @@ class LocalRepoAnalyzer:
|
|
|
230
232
|
self.skip_merges = skip_merges
|
|
231
233
|
self.compute_process_metrics = compute_process_metrics
|
|
232
234
|
self.cleanup_after = cleanup_after
|
|
235
|
+
self.commit_order = commit_order
|
|
233
236
|
self.gsf_patterns = GSF_PATTERNS
|
|
234
237
|
|
|
235
238
|
# Phase 1.3: Private repository support
|
|
@@ -459,6 +462,8 @@ class LocalRepoAnalyzer:
|
|
|
459
462
|
}
|
|
460
463
|
if self.to_date:
|
|
461
464
|
repo_config["to"] = self.to_date
|
|
465
|
+
if self.commit_order == "oldest_first":
|
|
466
|
+
repo_config["order"] = "reverse"
|
|
462
467
|
|
|
463
468
|
# Use owner_repo format for unique directory names (avoids collisions
|
|
464
469
|
# when multiple repos share the same name, e.g. open-android/Android
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "greenmining"
|
|
7
|
-
version = "1.2.
|
|
7
|
+
version = "1.2.4"
|
|
8
8
|
description = "An empirical Python library for Mining Software Repositories (MSR) in Green IT research"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|