metripy 0.3.3__tar.gz → 0.3.6__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.
Potentially problematic release.
This version of metripy might be problematic. Click here for more details.
- {metripy-0.3.3 → metripy-0.3.6}/CHANGELOG.md +11 -0
- {metripy-0.3.3/metripy.egg-info → metripy-0.3.6}/PKG-INFO +2 -2
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Application/Config/File/ConfigFileReaderInterface.py +1 -1
- metripy-0.3.6/metripy/Application/Info.py +61 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/Html/DependencyPageRenderer.py +2 -2
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/Html/IndexPageRenderer.py +7 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/Html/TrendsPageRenderer.py +23 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/templates/html_report/dependencies.html +1 -31
- {metripy-0.3.3 → metripy-0.3.6}/metripy/templates/html_report/index.html +1 -12
- {metripy-0.3.3 → metripy-0.3.6/metripy.egg-info}/PKG-INFO +2 -2
- {metripy-0.3.3 → metripy-0.3.6}/metripy.egg-info/requires.txt +1 -1
- {metripy-0.3.3 → metripy-0.3.6}/pyproject.toml +2 -2
- metripy-0.3.3/metripy/Application/Info.py +0 -36
- {metripy-0.3.3 → metripy-0.3.6}/LICENSE +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/MANIFEST.in +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/README.md +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Application/Analyzer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Application/Application.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Application/Config/Config.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Application/Config/File/ConfigFileReaderFactory.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Application/Config/File/JsonConfigFileReader.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Application/Config/File/YamlConfigFileReader.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Application/Config/GitConfig.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Application/Config/Parser.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Application/Config/ProjectConfig.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Application/Config/ReportConfig.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Application/__init__.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Component/Debug/Debugger.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Component/File/Finder.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Component/Output/CliOutput.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Component/Output/ProgressBar.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Dependency/Composer/Composer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Dependency/Composer/Packegist.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Dependency/Dependency.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Dependency/Npm/Npm.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Dependency/Npm/NpmOrg.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Dependency/Pip/Pip.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Dependency/Pip/PyPi.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Git/GitAnalyzer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Import/Json/JsonImporter.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/AbstractLangAnalyzer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Generic/HalSteadAnalyzer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Generic/__init__.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Php/PhpAnalyzer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Php/PhpBasicAstParser.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Php/PhpBasicLocAnalyzer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Php/PhpHalSteadAnalyzer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Python/PythonAnalyzer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Python/PythonHalSteadAnalyzer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Typescript/TypescriptAnalyzer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Typescript/TypescriptAstParser.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Typescript/TypescriptBasicComplexityAnalyzer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Typescript/TypescriptBasicLocAnalyzer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Typescript/TypescriptHalSteadAnalyzer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/__init__.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/Code/AggregatedMetrics.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/Code/FileMetrics.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/Code/ModuleMetrics.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/Code/SegmentedMetrics.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/Code/Segmentor.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/FileTree/FileTree.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/FileTree/FileTreeParser.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/Git/GitCodeHotspot.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/Git/GitContributor.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/Git/GitKnowledgeSilo.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/Git/GitMetrics.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/ProjectMetrics.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/Trend/AggregatedTrendMetric.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/Trend/ClassTrendMetric.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/Trend/FileTrendMetric.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/Trend/FunctionTrendMetric.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Metric/Trend/SegmentedTrendMetric.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/Csv/Reporter.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/Html/FilesPageRenderer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/Html/GitAnalysisPageRenderer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/Html/PageRenderer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/Html/PageRendererFactory.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/Html/Reporter.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/Html/TopOffendersPageRenderer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/Json/AbstractJsonReporter.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/Json/GitJsonReporter.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/Json/JsonReporter.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/ReporterFactory.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Report/ReporterInterface.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Tree/ClassNode.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Tree/FunctionNode.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Tree/ModuleNode.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/Trend/TrendAnalyzer.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/__init__.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/metripy.py +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/templates/html_report/css/styles.css +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/templates/html_report/files.html +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/templates/html_report/git_analysis.html +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/templates/html_report/images/logo.svg +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/templates/html_report/js/charts.js +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/templates/html_report/js/dashboard.js +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/templates/html_report/js/git_analysis.js +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/templates/html_report/top_offenders.html +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy/templates/html_report/trends.html +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy.egg-info/SOURCES.txt +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy.egg-info/dependency_links.txt +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy.egg-info/entry_points.txt +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/metripy.egg-info/top_level.txt +0 -0
- {metripy-0.3.3 → metripy-0.3.6}/setup.cfg +0 -0
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
# v0.3.6
|
|
2
|
+
- Fix dependency license distribution chart
|
|
3
|
+
|
|
4
|
+
# v0.3.5
|
|
5
|
+
- Bump templater version
|
|
6
|
+
- Fix path resolving
|
|
7
|
+
- Fix error during trends rendering
|
|
8
|
+
|
|
9
|
+
# v0.3.4
|
|
10
|
+
- Fix version info after install
|
|
11
|
+
|
|
1
12
|
# v0.3.3
|
|
2
13
|
- Fix missing templates after install
|
|
3
14
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: metripy
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.6
|
|
4
4
|
Summary: A Python tool to generate multi project, multi language code metric reports
|
|
5
5
|
Author-email: Yannick Zimmermann <yannick.zimmermann@proton.me>
|
|
6
6
|
License: MIT
|
|
@@ -19,7 +19,7 @@ Description-Content-Type: text/markdown
|
|
|
19
19
|
License-File: LICENSE
|
|
20
20
|
Requires-Dist: lizard==1.18.0
|
|
21
21
|
Requires-Dist: GitPython==3.1.45
|
|
22
|
-
Requires-Dist: py-template-engine>=0.
|
|
22
|
+
Requires-Dist: py-template-engine>=0.2.6
|
|
23
23
|
Requires-Dist: radon==6.0.1
|
|
24
24
|
Requires-Dist: requests==2.32.5
|
|
25
25
|
Requires-Dist: packaging==25.0
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
from importlib.metadata import version, metadata
|
|
2
|
+
import toml
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Info:
|
|
6
|
+
def __init__(self):
|
|
7
|
+
self.version = self._get_version()
|
|
8
|
+
self.url = self._get_homepage_url()
|
|
9
|
+
|
|
10
|
+
def _get_pyproject_data(self) -> dict:
|
|
11
|
+
with open("pyproject.toml", "r") as file:
|
|
12
|
+
data = toml.load(file)
|
|
13
|
+
return data
|
|
14
|
+
|
|
15
|
+
def _get_version(self) -> str:
|
|
16
|
+
"""Get version from installed package metadata"""
|
|
17
|
+
try:
|
|
18
|
+
return version("metripy")
|
|
19
|
+
except Exception:
|
|
20
|
+
# Fallback for development if not installed
|
|
21
|
+
return self._get_pyproject_data()["project"]["version"]
|
|
22
|
+
|
|
23
|
+
def _get_homepage_url(self) -> str:
|
|
24
|
+
"""Get homepage URL from installed package metadata"""
|
|
25
|
+
try:
|
|
26
|
+
meta = metadata("metripy")
|
|
27
|
+
# Try to get Home-Page from metadata
|
|
28
|
+
homepage = meta.get("Home-Page")
|
|
29
|
+
if not homepage:
|
|
30
|
+
# Try Project-URL field
|
|
31
|
+
for line in meta.get_all("Project-URL") or []:
|
|
32
|
+
if line.startswith("Homepage"):
|
|
33
|
+
homepage = line.split(",", 1)[1].strip()
|
|
34
|
+
break
|
|
35
|
+
return homepage or "no homepage found"
|
|
36
|
+
except Exception:
|
|
37
|
+
# Fallback
|
|
38
|
+
return self._get_pyproject_data()["project"]["urls"]["Homepage"]
|
|
39
|
+
|
|
40
|
+
def get_version(self) -> str:
|
|
41
|
+
return self.version
|
|
42
|
+
|
|
43
|
+
def get_version_info(self) -> str:
|
|
44
|
+
return f"""
|
|
45
|
+
Metripy {self.get_version()}
|
|
46
|
+
{self.url}
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
def get_help(self) -> str:
|
|
50
|
+
return (
|
|
51
|
+
self.get_version_info()
|
|
52
|
+
+ """
|
|
53
|
+
Usage: metripy [options]
|
|
54
|
+
Options:
|
|
55
|
+
--config=<file> Use a custom config file
|
|
56
|
+
--version Show the version and exit
|
|
57
|
+
--help Show this help message and exit
|
|
58
|
+
--debug Enable debug mode
|
|
59
|
+
--quiet Disable output
|
|
60
|
+
"""
|
|
61
|
+
)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from metripy.Dependency.Dependency import Dependency
|
|
2
2
|
from metripy.Metric.ProjectMetrics import ProjectMetrics
|
|
3
3
|
from metripy.Report.Html.PageRenderer import PageRenderer
|
|
4
|
-
|
|
4
|
+
import json
|
|
5
5
|
|
|
6
6
|
class DependencyPageRenderer(PageRenderer):
|
|
7
7
|
def __init__(self, template_dir: str, output_dir: str, project_name: str):
|
|
@@ -16,6 +16,6 @@ class DependencyPageRenderer(PageRenderer):
|
|
|
16
16
|
{
|
|
17
17
|
"has_dependencies_data": bool(metrics.dependencies),
|
|
18
18
|
"dependencies": [d.to_dict() for d in dependencies],
|
|
19
|
-
"
|
|
19
|
+
"license_distribution_json": json.dumps(license_by_type, indent=2),
|
|
20
20
|
},
|
|
21
21
|
)
|
|
@@ -3,6 +3,8 @@ import json
|
|
|
3
3
|
from metripy.Metric.ProjectMetrics import ProjectMetrics
|
|
4
4
|
from metripy.Report.Html.PageRenderer import PageRenderer
|
|
5
5
|
|
|
6
|
+
from metripy.Dependency.Dependency import Dependency
|
|
7
|
+
|
|
6
8
|
|
|
7
9
|
class IndexPageRenderer(PageRenderer):
|
|
8
10
|
def __init__(self, template_dir: str, output_dir: str, project_name: str):
|
|
@@ -13,10 +15,15 @@ class IndexPageRenderer(PageRenderer):
|
|
|
13
15
|
if metrics.git_metrics:
|
|
14
16
|
git_stats_data = metrics.git_metrics.get_commit_stats_per_month()
|
|
15
17
|
|
|
18
|
+
|
|
19
|
+
dependencies = metrics.dependencies if metrics.dependencies is not None else []
|
|
20
|
+
license_by_type = Dependency.get_lisence_distribution(dependencies)
|
|
21
|
+
|
|
16
22
|
self.render_template(
|
|
17
23
|
"index.html",
|
|
18
24
|
{
|
|
19
25
|
"git_stats_data": json.dumps(git_stats_data, indent=4),
|
|
26
|
+
"license_distribution_json": json.dumps(license_by_type, indent=2),
|
|
20
27
|
"total_code_metrics": metrics.total_code_metrics.to_dict(),
|
|
21
28
|
"has_total_code_metrics_trend": metrics.total_code_metrics.trend
|
|
22
29
|
is not None,
|
|
@@ -22,6 +22,29 @@ class TrendsPageRenderer(PageRenderer):
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
def render(self, metrics: ProjectMetrics):
|
|
25
|
+
if metrics.total_code_metrics.trend is None:
|
|
26
|
+
self.render_template(
|
|
27
|
+
"trends.html",
|
|
28
|
+
{
|
|
29
|
+
"has_trend_data": False,
|
|
30
|
+
"trend_data": {
|
|
31
|
+
"top_improved_complexity": [],
|
|
32
|
+
"top_improved_maintainability": [],
|
|
33
|
+
"top_worsened_complexity": [],
|
|
34
|
+
"top_worsened_maintainability": [],
|
|
35
|
+
"loc_segments_current": {},
|
|
36
|
+
"loc_segments_prev": {},
|
|
37
|
+
"complexity_segments_current": {},
|
|
38
|
+
"complexity_segments_prev": {},
|
|
39
|
+
"maintainability_segments_current": {},
|
|
40
|
+
"maintainability_segments_prev": {},
|
|
41
|
+
"method_size_segments_current": {},
|
|
42
|
+
"method_size_segments_prev": {},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
)
|
|
46
|
+
return
|
|
47
|
+
|
|
25
48
|
# Top improved complexity (complexity went down - negative delta)
|
|
26
49
|
top_improved_complexity = [
|
|
27
50
|
x
|
|
@@ -360,36 +360,7 @@
|
|
|
360
360
|
|
|
361
361
|
const ctx = canvas.getContext('2d');
|
|
362
362
|
|
|
363
|
-
|
|
364
|
-
const licenseCounts = {};
|
|
365
|
-
|
|
366
|
-
if (window.DEPENDENCIES_DATA && Array.isArray(window.DEPENDENCIES_DATA)) {
|
|
367
|
-
window.DEPENDENCIES_DATA.forEach(dep => {
|
|
368
|
-
if (dep.licenses) {
|
|
369
|
-
const licenses = Array.isArray(dep.licenses) ? dep.licenses : [dep.licenses];
|
|
370
|
-
licenses.forEach(license => {
|
|
371
|
-
if (license && license !== 'Unknown' && license !== 'N/A') {
|
|
372
|
-
licenseCounts[license] = (licenseCounts[license] || 0) + 1;
|
|
373
|
-
}
|
|
374
|
-
});
|
|
375
|
-
}
|
|
376
|
-
});
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
// If no license data found, use sample data
|
|
380
|
-
const chartData = Object.keys(licenseCounts).length > 0 ? licenseCounts : {
|
|
381
|
-
"MIT": 3,
|
|
382
|
-
"BSD-3-Clause": 1,
|
|
383
|
-
"Apache-2.0": 1,
|
|
384
|
-
"Apache 2.0": 1
|
|
385
|
-
};
|
|
386
|
-
|
|
387
|
-
// Generate colors for the chart
|
|
388
|
-
const colors = [
|
|
389
|
-
'#3b82f6', '#10b981', '#f59e0b', '#ef4444',
|
|
390
|
-
'#8b5cf6', '#ec4899', '#06b6d4', '#84cc16',
|
|
391
|
-
'#f97316', '#14b8a6', '#6366f1', '#a855f7'
|
|
392
|
-
];
|
|
363
|
+
const chartData = {{license_distribution_json}};
|
|
393
364
|
|
|
394
365
|
new Chart(ctx, {
|
|
395
366
|
type: 'pie',
|
|
@@ -398,7 +369,6 @@
|
|
|
398
369
|
datasets: [{
|
|
399
370
|
label: "License Types",
|
|
400
371
|
data: Object.values(chartData),
|
|
401
|
-
backgroundColor: colors.slice(0, Object.keys(chartData).length),
|
|
402
372
|
hoverOffset: 4
|
|
403
373
|
}]
|
|
404
374
|
},
|
|
@@ -335,12 +335,7 @@
|
|
|
335
335
|
}
|
|
336
336
|
console.log("creating licenses chart")
|
|
337
337
|
const ctx = canvas.getContext('2d');
|
|
338
|
-
const chartData = {
|
|
339
|
-
"MIT": 3,
|
|
340
|
-
"BSD-3-Clause": 1,
|
|
341
|
-
"Apache-2.0": 1,
|
|
342
|
-
"Apache 2.0": 1
|
|
343
|
-
};
|
|
338
|
+
const chartData = {{license_distribution_json}};
|
|
344
339
|
console.log(Chart.version);
|
|
345
340
|
this.charts.licenseTypes = new Chart(ctx, {
|
|
346
341
|
type: 'pie',
|
|
@@ -349,12 +344,6 @@
|
|
|
349
344
|
datasets: [{
|
|
350
345
|
label: "License Types",
|
|
351
346
|
data: Object.values(chartData),
|
|
352
|
-
backgroundColor: [
|
|
353
|
-
'#FF6384',
|
|
354
|
-
'#36A2EB',
|
|
355
|
-
'#FFCE56',
|
|
356
|
-
'#4BC0C0'
|
|
357
|
-
],
|
|
358
347
|
hoverOffset: 4
|
|
359
348
|
}]
|
|
360
349
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: metripy
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.6
|
|
4
4
|
Summary: A Python tool to generate multi project, multi language code metric reports
|
|
5
5
|
Author-email: Yannick Zimmermann <yannick.zimmermann@proton.me>
|
|
6
6
|
License: MIT
|
|
@@ -19,7 +19,7 @@ Description-Content-Type: text/markdown
|
|
|
19
19
|
License-File: LICENSE
|
|
20
20
|
Requires-Dist: lizard==1.18.0
|
|
21
21
|
Requires-Dist: GitPython==3.1.45
|
|
22
|
-
Requires-Dist: py-template-engine>=0.
|
|
22
|
+
Requires-Dist: py-template-engine>=0.2.6
|
|
23
23
|
Requires-Dist: radon==6.0.1
|
|
24
24
|
Requires-Dist: requests==2.32.5
|
|
25
25
|
Requires-Dist: packaging==25.0
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "metripy"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.6"
|
|
8
8
|
description = "A Python tool to generate multi project, multi language code metric reports"
|
|
9
9
|
authors = [
|
|
10
10
|
{name = "Yannick Zimmermann", email = "yannick.zimmermann@proton.me"}
|
|
@@ -37,7 +37,7 @@ classifiers = [
|
|
|
37
37
|
dependencies = [
|
|
38
38
|
"lizard==1.18.0",
|
|
39
39
|
"GitPython==3.1.45",
|
|
40
|
-
"py-template-engine>=0.
|
|
40
|
+
"py-template-engine>=0.2.6",
|
|
41
41
|
"radon==6.0.1",
|
|
42
42
|
"requests==2.32.5",
|
|
43
43
|
"packaging==25.0",
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import toml
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class Info:
|
|
5
|
-
def __init__(self):
|
|
6
|
-
data = self._get_data()
|
|
7
|
-
self.version = data["project"]["version"]
|
|
8
|
-
self.url = data["project"]["urls"]["Homepage"]
|
|
9
|
-
|
|
10
|
-
def _get_data(self) -> dict:
|
|
11
|
-
with open("pyproject.toml", "r") as file:
|
|
12
|
-
data = toml.load(file)
|
|
13
|
-
return data
|
|
14
|
-
|
|
15
|
-
def get_version(self) -> str:
|
|
16
|
-
return self.version
|
|
17
|
-
|
|
18
|
-
def get_version_info(self) -> str:
|
|
19
|
-
return f"""
|
|
20
|
-
Metripy {self.get_version()}
|
|
21
|
-
{self.url}
|
|
22
|
-
"""
|
|
23
|
-
|
|
24
|
-
def get_help(self) -> str:
|
|
25
|
-
return (
|
|
26
|
-
self.get_version_info()
|
|
27
|
-
+ """
|
|
28
|
-
Usage: metripy [options]
|
|
29
|
-
Options:
|
|
30
|
-
--config=<file> Use a custom config file
|
|
31
|
-
--version Show the version and exit
|
|
32
|
-
--help Show this help message and exit
|
|
33
|
-
--debug Enable debug mode
|
|
34
|
-
--quiet Disable output
|
|
35
|
-
"""
|
|
36
|
-
)
|
|
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
|
|
File without changes
|
|
File without changes
|
{metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Typescript/TypescriptBasicComplexityAnalyzer.py
RENAMED
|
File without changes
|
{metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Typescript/TypescriptBasicLocAnalyzer.py
RENAMED
|
File without changes
|
{metripy-0.3.3 → metripy-0.3.6}/metripy/LangAnalyzer/Typescript/TypescriptHalSteadAnalyzer.py
RENAMED
|
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
|
|
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
|