Skip to content
This repository has been archived by the owner on Nov 29, 2023. It is now read-only.

feat: 433 Creates a Dict from a given json List #437

Merged
merged 11 commits into from
Apr 21, 2022
2 changes: 1 addition & 1 deletion .idea/api-editor.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions package-parser/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,6 @@ out/

# VSCode Settings
.vscode/

# IntelliJ/Pycharm settings
.idea/
GideonKoenig marked this conversation as resolved.
Show resolved Hide resolved
6 changes: 6 additions & 0 deletions package-parser/package-parser.iml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,10 @@
<orderEntry type="jdk" jdkName="Poetry (api-editor)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="PackageRequirementsSettings">
<option name="requirementsPath" value="" />
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="py.test" />
</component>
</module>
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import argparse
Aclrian marked this conversation as resolved.
Show resolved Hide resolved
import json
import re
from typing import Dict, List, Tuple


def generate_unused_annotations(in_file_path: str):
with open(in_file_path, "r", encoding="UTF-8") as in_file:
data = json.load(in_file)

unuseds: Dict[str, Dict[str, str]] = {}
for name in data:
formatted_name = format_name(name)
unuseds[formatted_name] = {"target": formatted_name}

return unuseds


def format_name(name: str):
if name is None:
return None

parts = re.split("\\.", name)
newname = "sklearn/" + parts[0]
GideonKoenig marked this conversation as resolved.
Show resolved Hide resolved

if len(parts) == 1:
return newname

slash = False
for part in parts[1:-1]:
if not slash and re.match("^_{0,2}[A-Z]", part):
slash = True
if slash:
newname += "/" + part
else:
newname += "." + part

newname += "/" + parts[-1]
return newname
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import pytest
from package_parser.commands.generate_annotations._generate_unused_annotations import (
format_name,
generate_unused_annotations,
)

EXPECTED_VALUE = {
"sklearn/sklearn.base/_BaseEstimator/__setstate__": {
"target": "sklearn/sklearn.base/_BaseEstimator/__setstate__"
},
"sklearn/sklearn.base/is_regressor": {
"target": "sklearn/sklearn.base/is_regressor"
},
"sklearn/sklearn.cluster._agglomerative/linkage_tree": {
"target": "sklearn/sklearn.cluster._agglomerative/linkage_tree"
},
"sklearn/sklearn.cluster._kmeans/MiniBatchKMeans/init_size_": {
"target": "sklearn/sklearn.cluster._kmeans/MiniBatchKMeans/init_size_"
},
}


def test_format_underscores():
assert (
format_name("sklearn.cluster._kmeans._MiniBatchKMeans.random_state_")
== "sklearn/sklearn.cluster._kmeans/_MiniBatchKMeans/random_state_"
)


def test_format_uppercase():
assert (
format_name("sklearn.cluster._kmeans.MiniBatchKMeans.random_state_")
== "sklearn/sklearn.cluster._kmeans/MiniBatchKMeans/random_state_"
)
GideonKoenig marked this conversation as resolved.
Show resolved Hide resolved


def test_format_normal():
assert (
format_name("sklearn.cluster._mean_shift.get_bin_seeds")
== "sklearn/sklearn.cluster._mean_shift/get_bin_seeds"
)


def test_format_one_part():
assert format_name("test") == "sklearn/test"


def test_format_none():
assert format_name(None) is None


def test_format_empty():
assert format_name("") == "sklearn/"


def test_generate():
assert (
generate_unused_annotations(
"tests/commands/generate_annotations/unused_functions_list.json"
)
== EXPECTED_VALUE
)


def test_generate_bad_path():
with pytest.raises(FileNotFoundError):
generate_unused_annotations("aaaaaaaaaaaAAAAAAAAAAAA")
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[
"sklearn.base._BaseEstimator.__setstate__",
"sklearn.base.is_regressor",
"sklearn.cluster._agglomerative.linkage_tree",
"sklearn.cluster._kmeans.MiniBatchKMeans.init_size_"
]
GideonKoenig marked this conversation as resolved.
Show resolved Hide resolved