python-sdk-remote 0.0.93__tar.gz → 0.0.94__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 python-sdk-remote might be problematic. Click here for more details.
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/PKG-INFO +1 -2
- python_sdk_remote-0.0.94/python_sdk_remote/src/get_dependencies.py +199 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote/src/http_response.py +22 -7
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote/src/utilities.py +5 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote.egg-info/PKG-INFO +1 -2
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote.egg-info/requires.txt +0 -1
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/setup.py +2 -3
- python_sdk_remote-0.0.93/python_sdk_remote/src/get_dependencies.py +0 -58
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/README.md +0 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/pyproject.toml +0 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote/src/__init__.py +0 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote/src/constants.py +0 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote/src/item.py +0 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote/src/mini_logger.py +0 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote/src/our_object.py +0 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote/src/unified_json.py +0 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote/src/valid_json_versions.py +0 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote/src/validate_environment.py +0 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote.egg-info/SOURCES.txt +0 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote.egg-info/dependency_links.txt +0 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote.egg-info/top_level.txt +0 -0
- {python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: python-sdk-remote
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.94
|
|
4
4
|
Summary: PyPI Package for Circles Python SDK Local Python
|
|
5
5
|
Home-page: https://github.com/circles-zone/python-sdk-remote-python-package
|
|
6
6
|
Author: Circles
|
|
@@ -11,6 +11,5 @@ Classifier: Operating System :: OS Independent
|
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
12
|
Requires-Dist: python-dotenv
|
|
13
13
|
Requires-Dist: url-remote
|
|
14
|
-
Requires-Dist: http-status-codes
|
|
15
14
|
|
|
16
15
|
This is a package for sharing common functions used in different repositories
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# pip install BeautifulSoup4 requests importlib-metadata
|
|
2
|
+
import subprocess
|
|
3
|
+
import sys
|
|
4
|
+
import json
|
|
5
|
+
from collections import defaultdict
|
|
6
|
+
|
|
7
|
+
import importlib_metadata
|
|
8
|
+
import requests
|
|
9
|
+
from bs4 import BeautifulSoup
|
|
10
|
+
from typing import Dict, List, Union
|
|
11
|
+
import os
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def install(packages):
|
|
15
|
+
print("Installing...", packages)
|
|
16
|
+
if isinstance(packages, str):
|
|
17
|
+
packages = [packages]
|
|
18
|
+
# for package in packages:
|
|
19
|
+
# # We can't install multiple packages in a single command, because pip will stop at the first error
|
|
20
|
+
# subprocess.run([sys.executable, "-m", "pip", "install", "-U", "--no-deps", package], check=False)
|
|
21
|
+
subprocess.run([sys.executable, "-m", "pip", "install", "-U", "--no-deps"] + packages, check=False)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def get_dependencies_per_package(include_packages):
|
|
26
|
+
dependencies_per_package = defaultdict(list)
|
|
27
|
+
for dist in importlib_metadata.distributions():
|
|
28
|
+
package_name = dist.metadata['Name']
|
|
29
|
+
if package_name not in include_packages:
|
|
30
|
+
continue
|
|
31
|
+
|
|
32
|
+
dependencies = dist.metadata.get_all('Requires-Dist', [])
|
|
33
|
+
for dependency in dependencies:
|
|
34
|
+
depend_on = dependency.split()[0]
|
|
35
|
+
if depend_on in include_packages and depend_on not in dependencies_per_package[package_name]:
|
|
36
|
+
dependencies_per_package[depend_on].append(package_name)
|
|
37
|
+
|
|
38
|
+
for package in include_packages:
|
|
39
|
+
if package not in dependencies_per_package:
|
|
40
|
+
dependencies_per_package[package] = []
|
|
41
|
+
return dependencies_per_package
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def get_included_packages():
|
|
45
|
+
url = "https://pypi.org/user/circles/"
|
|
46
|
+
class_name = "package-snippet__title"
|
|
47
|
+
|
|
48
|
+
response = requests.get(url)
|
|
49
|
+
soup = BeautifulSoup(response.text, "html.parser")
|
|
50
|
+
package_names = soup.find_all("h3", class_=class_name)
|
|
51
|
+
included_packages = [package_name.text for package_name in package_names]
|
|
52
|
+
return included_packages
|
|
53
|
+
|
|
54
|
+
# def build_dependency_tree(dependencies_per_package: Dict[str, List[str]]) -> List[Union[str, Dict[str, List[Union[str, Dict]]]]]:
|
|
55
|
+
# called = set()
|
|
56
|
+
# def build_tree(package: str) -> Union[str, Dict[str, List[Union[str, Dict]]]]:
|
|
57
|
+
# if package in called:
|
|
58
|
+
# return package
|
|
59
|
+
# called.add(package)
|
|
60
|
+
# if package not in dependencies_per_package:
|
|
61
|
+
# return package
|
|
62
|
+
# return {package: [build_tree(dep) for dep in dependencies_per_package[package]]}
|
|
63
|
+
#
|
|
64
|
+
# trees = []
|
|
65
|
+
# for package in dependencies_per_package:
|
|
66
|
+
# trees.append(build_tree(package))
|
|
67
|
+
#
|
|
68
|
+
# return trees
|
|
69
|
+
#
|
|
70
|
+
# printed = []
|
|
71
|
+
#
|
|
72
|
+
# def display_dependency_tree(tree: Union[str, Dict[str, List[Union[str, Dict]]]], indent: int = 0) -> None:
|
|
73
|
+
# if isinstance(tree, dict):
|
|
74
|
+
# for package, dependencies in tree.items():
|
|
75
|
+
# if package not in printed:
|
|
76
|
+
# print("-" * indent + package)
|
|
77
|
+
# printed.append(package)
|
|
78
|
+
# for dep in dependencies:
|
|
79
|
+
# display_dependency_tree(dep, indent + 1)
|
|
80
|
+
# else:
|
|
81
|
+
# if tree not in printed:
|
|
82
|
+
# print("-" * (indent + 1) + tree)
|
|
83
|
+
# printed.append(tree)
|
|
84
|
+
|
|
85
|
+
def main():
|
|
86
|
+
# otherwise pip raise
|
|
87
|
+
remove = """CirclesS3Storage
|
|
88
|
+
age-detection-local-python-package
|
|
89
|
+
rest-api-vacancy-scraper-local
|
|
90
|
+
recruitment-employer-local-python-package
|
|
91
|
+
local-logger-python-backend
|
|
92
|
+
local-age-detection-python-backend
|
|
93
|
+
age-detection
|
|
94
|
+
external-user-local
|
|
95
|
+
message-send-platform-invitation
|
|
96
|
+
profile-instagram
|
|
97
|
+
smartlink-restapi-python-serverless-com
|
|
98
|
+
profile-reddit-local-restapi-imp-python-package
|
|
99
|
+
operational-hours-local-python-package-local
|
|
100
|
+
Age-detection
|
|
101
|
+
CirclesGenderDetectorPython
|
|
102
|
+
business-profile-yelp-local-python
|
|
103
|
+
profile-yelp-local-python-circles
|
|
104
|
+
OpenCage-local
|
|
105
|
+
circles-bert-local
|
|
106
|
+
community-waiting-list-local-python-package
|
|
107
|
+
contact-locations-local
|
|
108
|
+
contact-user-external-local
|
|
109
|
+
dialog-workflow
|
|
110
|
+
dialog-workflow-local-python-package
|
|
111
|
+
local-dialog-workflow-python-backend
|
|
112
|
+
email-local
|
|
113
|
+
item-local-python-package-local
|
|
114
|
+
labels-local
|
|
115
|
+
location-profile-local-python-package-local
|
|
116
|
+
phone-local
|
|
117
|
+
profile-instagram-graphql-imp-local-python-package-local
|
|
118
|
+
profile-zoominfo-graphql-imp
|
|
119
|
+
real-estate-realtor.com-imp-local
|
|
120
|
+
recruitment-employer-monster-com-indeed-com-vacancy-scraper-local
|
|
121
|
+
sms-message-aws-local-python-package
|
|
122
|
+
variable-local-python-package
|
|
123
|
+
circles-bert-local""".splitlines()
|
|
124
|
+
# too_popular = ["logger-local", "database-mysql-local", "python-sdk-remote", "url-remote", "user-context-remote", "language-remote", "database-infrastructure-local"]
|
|
125
|
+
# remove += too_popular
|
|
126
|
+
add = ['profiles-local', 'database-without-orm-local',
|
|
127
|
+
'python-sdk-local', 'url-local']
|
|
128
|
+
if os.path.exists('dependencies.json'):
|
|
129
|
+
print("getting from dependencies.json")
|
|
130
|
+
with open('dependencies.json', 'r') as f:
|
|
131
|
+
dependencies_per_package = json.load(f)
|
|
132
|
+
with open('dependencies.json', 'w') as f:
|
|
133
|
+
json.dump(dependencies_per_package, f, indent=4, sort_keys=True)
|
|
134
|
+
else:
|
|
135
|
+
include_packages = get_included_packages()
|
|
136
|
+
include_packages = [package for package in include_packages if package not in remove]
|
|
137
|
+
install(include_packages)
|
|
138
|
+
include_packages += add
|
|
139
|
+
dependencies_per_package = get_dependencies_per_package(include_packages)
|
|
140
|
+
print("writing to dependencies.json")
|
|
141
|
+
with open('dependencies.json', 'w') as f:
|
|
142
|
+
json.dump(dependencies_per_package, f, indent=4, sort_keys=True)
|
|
143
|
+
|
|
144
|
+
# clean dependencies_per_package keys and values
|
|
145
|
+
for package in list(dependencies_per_package.keys()):
|
|
146
|
+
if package in remove:
|
|
147
|
+
dependencies_per_package.pop(package)
|
|
148
|
+
else:
|
|
149
|
+
dependencies_per_package[package] = [dep for dep in dependencies_per_package[package]
|
|
150
|
+
if dep not in remove]
|
|
151
|
+
|
|
152
|
+
print("num of edges per node, sorted by num of edges:")
|
|
153
|
+
for package, dependencies in sorted(dependencies_per_package.items(), key=lambda x: len(x[1]), reverse=True):
|
|
154
|
+
print(f"{package}: {len(dependencies)}")
|
|
155
|
+
#
|
|
156
|
+
# dependency_trees = build_dependency_tree(dependencies_per_package)
|
|
157
|
+
# for tree in dependency_trees:
|
|
158
|
+
# display_dependency_tree(tree)
|
|
159
|
+
|
|
160
|
+
def plot_graph(dependencies_per_package: Dict[str, List[str]]):
|
|
161
|
+
import networkx as nx
|
|
162
|
+
import matplotlib.pyplot as plt
|
|
163
|
+
|
|
164
|
+
# Create a directed graph
|
|
165
|
+
G = nx.DiGraph()
|
|
166
|
+
|
|
167
|
+
# Add nodes (packages) to the graph
|
|
168
|
+
for package in dependencies_per_package:
|
|
169
|
+
G.add_node(package)
|
|
170
|
+
|
|
171
|
+
# Add edges (dependencies) to the graph
|
|
172
|
+
for package, dependencies in dependencies_per_package.items():
|
|
173
|
+
for dep in dependencies:
|
|
174
|
+
G.add_edge(dep, package)
|
|
175
|
+
|
|
176
|
+
# nx.kamada_kawai_layout, nx.circular_layout, nx.shell_layout, nx.spectral_layout
|
|
177
|
+
# nx.random_layout, nx.spring_layout, nx.spiral_layout
|
|
178
|
+
# error: nx.planar_layout, nx.planar_layout, nx.bipartite_layout, nx.rescale_layout, nx.multipartite_layout
|
|
179
|
+
|
|
180
|
+
# max_len = max(len(dependencies) for dependencies in dependencies_per_package.values())
|
|
181
|
+
# def weight_func(v, u, e):
|
|
182
|
+
# return 0.2 * (len(dependencies_per_package.get(v, [])) + len(dependencies_per_package.get(u, [])))
|
|
183
|
+
#
|
|
184
|
+
# pos = nx.kamada_kawai_layout(G, scale=2, weight=weight_func)
|
|
185
|
+
|
|
186
|
+
pos = nx.circular_layout(G)
|
|
187
|
+
# Draw the graph
|
|
188
|
+
plt.figure(figsize=(20, 15)) # Increase the figure size
|
|
189
|
+
nx.draw(G, pos, with_labels=True, node_color="skyblue", font_size=6, font_color="black", node_size=1000, width=1,
|
|
190
|
+
edge_color="gray", arrowsize=5)
|
|
191
|
+
plt.axis("off") # Hide the axes
|
|
192
|
+
plt.tight_layout() # Adjust the layout to fit the figure
|
|
193
|
+
|
|
194
|
+
# Save the plot as an image file
|
|
195
|
+
print("Saving to dependencies_tree.png")
|
|
196
|
+
plt.savefig("dependencies_tree.png", dpi=300, bbox_inches="tight")
|
|
197
|
+
|
|
198
|
+
if __name__ == "__main__":
|
|
199
|
+
main()
|
{python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote/src/http_response.py
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
|
-
from
|
|
2
|
+
from typing import Any
|
|
3
|
+
from http import HTTPStatus
|
|
3
4
|
|
|
4
5
|
from .mini_logger import MiniLogger as logger
|
|
5
6
|
|
|
@@ -10,7 +11,21 @@ AUTHORIZATION_PREFIX = 'Bearer '
|
|
|
10
11
|
# TODO Align those methods with typescript-sdk https://github.com/circles-zone/typescript-sdk-remote-typescript-package/blob/dev/typescript-sdk/src/utils/index.ts # noqa501
|
|
11
12
|
# TODO Shall we create also createInternalServerErrorHttpResponse(), createOkHttpResponse() like we have in TypeScript?
|
|
12
13
|
|
|
13
|
-
#
|
|
14
|
+
# TODO: add handler wrapper?
|
|
15
|
+
|
|
16
|
+
def get_payload_dict_from_event(event: dict) -> dict:
|
|
17
|
+
"""Extracts params sent with payload"""
|
|
18
|
+
return json.loads(event.get('body') or '{}')
|
|
19
|
+
|
|
20
|
+
def get_path_parameters_dict_from_event(event: dict) -> dict:
|
|
21
|
+
"""Extracts params sent implicitly: `url/param?test=5` -> param
|
|
22
|
+
(when the path is defined with /{param})"""
|
|
23
|
+
return event.get('pathParameters') or {}
|
|
24
|
+
|
|
25
|
+
def get_query_string_parameters_from_event(event: dict) -> dict:
|
|
26
|
+
"""Extracts params sent explicitly: `url/test?a=1&b=2` -> {'a': '1', 'b': '2'}"""
|
|
27
|
+
return event.get("queryStringParameters") or {} # params sent with ?a=1&b=2
|
|
28
|
+
|
|
14
29
|
def create_authorization_http_headers(user_jwt: str) -> dict:
|
|
15
30
|
logger.start(object={"user_jwt": user_jwt})
|
|
16
31
|
authorization_http_headers = {
|
|
@@ -40,10 +55,10 @@ def create_return_http_headers() -> dict:
|
|
|
40
55
|
logger.end(object={"return_http_headers": return_http_headers})
|
|
41
56
|
return return_http_headers
|
|
42
57
|
|
|
43
|
-
def create_error_http_response(exception: Exception) -> dict:
|
|
58
|
+
def create_error_http_response(exception: Exception, status_code: HTTPStatus) -> dict:
|
|
44
59
|
logger.start(object={"exception": exception})
|
|
45
60
|
error_http_response = {
|
|
46
|
-
"statusCode":
|
|
61
|
+
"statusCode": HTTPStatus.value,
|
|
47
62
|
"headers": create_return_http_headers(),
|
|
48
63
|
"body": create_http_body({"error": str(exception)})
|
|
49
64
|
}
|
|
@@ -51,10 +66,10 @@ def create_error_http_response(exception: Exception) -> dict:
|
|
|
51
66
|
return error_http_response
|
|
52
67
|
|
|
53
68
|
|
|
54
|
-
def create_ok_http_response(body:
|
|
69
|
+
def create_ok_http_response(body: Any) -> dict:
|
|
55
70
|
logger.start(object={"body": body})
|
|
56
71
|
ok_http_response = {
|
|
57
|
-
"statusCode":
|
|
72
|
+
"statusCode": HTTPStatus.OK.value,
|
|
58
73
|
"headers": create_return_http_headers(),
|
|
59
74
|
"body": create_http_body(body)
|
|
60
75
|
}
|
|
@@ -63,7 +78,7 @@ def create_ok_http_response(body: dict) -> dict:
|
|
|
63
78
|
|
|
64
79
|
|
|
65
80
|
# https://google.github.io/styleguide/jsoncstyleguide.xml?showone=Property_Name_Format#Property_Name_Format
|
|
66
|
-
def create_http_body(body:
|
|
81
|
+
def create_http_body(body: Any) -> str:
|
|
67
82
|
# TODO console.warning() if the body is not a valid camelCase JSON
|
|
68
83
|
# https://stackoverflow.com/questions/17156078/converting-identifier-naming-between-camelcase-and-underscores-during-json-seria
|
|
69
84
|
logger.start(object={"body": body})
|
|
@@ -10,7 +10,12 @@ from .http_response import (create_authorization_http_headers, get_user_jwt_from
|
|
|
10
10
|
from .mini_logger import MiniLogger as logger
|
|
11
11
|
|
|
12
12
|
load_dotenv()
|
|
13
|
+
# raise Exception("Failed to load environment variables from .env file\n"
|
|
14
|
+
# "Please check if the file exists, maybe you are not in the right venv?")
|
|
13
15
|
|
|
16
|
+
# TODO: add cache with/out timeout decorator
|
|
17
|
+
|
|
18
|
+
DEFAULT_LANG_CODE_STR = "en"
|
|
14
19
|
|
|
15
20
|
def timedelta_to_time_format(time_delta: timedelta) -> str:
|
|
16
21
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: python-sdk-remote
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.94
|
|
4
4
|
Summary: PyPI Package for Circles Python SDK Local Python
|
|
5
5
|
Home-page: https://github.com/circles-zone/python-sdk-remote-python-package
|
|
6
6
|
Author: Circles
|
|
@@ -11,6 +11,5 @@ Classifier: Operating System :: OS Independent
|
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
12
|
Requires-Dist: python-dotenv
|
|
13
13
|
Requires-Dist: url-remote
|
|
14
|
-
Requires-Dist: http-status-codes
|
|
15
14
|
|
|
16
15
|
This is a package for sharing common functions used in different repositories
|
|
@@ -7,7 +7,7 @@ package_dir = PACKAGE_NAME.replace("-", "_")
|
|
|
7
7
|
# python -m build needs pyproject.toml or setup.py
|
|
8
8
|
setuptools.setup(
|
|
9
9
|
name=PACKAGE_NAME,
|
|
10
|
-
version='0.0.
|
|
10
|
+
version='0.0.94', # https://pypi.org/project/python-sdk-remote/
|
|
11
11
|
author="Circles",
|
|
12
12
|
author_email="info@circles.life",
|
|
13
13
|
description="PyPI Package for Circles Python SDK Local Python",
|
|
@@ -24,7 +24,6 @@ setuptools.setup(
|
|
|
24
24
|
],
|
|
25
25
|
install_requires=[
|
|
26
26
|
"python-dotenv",
|
|
27
|
-
"url-remote"
|
|
28
|
-
"http-status-codes"
|
|
27
|
+
"url-remote"
|
|
29
28
|
]
|
|
30
29
|
)
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# pip install BeautifulSoup4 requests importlib-metadata
|
|
2
|
-
import subprocess
|
|
3
|
-
import sys
|
|
4
|
-
import json
|
|
5
|
-
from collections import defaultdict
|
|
6
|
-
|
|
7
|
-
import importlib_metadata
|
|
8
|
-
import requests
|
|
9
|
-
from bs4 import BeautifulSoup
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def install(packages):
|
|
13
|
-
print("Installing...", packages)
|
|
14
|
-
if isinstance(packages, str):
|
|
15
|
-
packages = [packages]
|
|
16
|
-
try:
|
|
17
|
-
subprocess.run([sys.executable, "-m", "pip", "install", "-U", "--no-deps"] + packages, check=False)
|
|
18
|
-
except Exception as e:
|
|
19
|
-
print(e)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def get_dependencies_per_package(include_packages):
|
|
23
|
-
dependencies_per_package = defaultdict(list)
|
|
24
|
-
for dist in importlib_metadata.distributions():
|
|
25
|
-
package_name = dist.metadata['Name']
|
|
26
|
-
if package_name not in include_packages:
|
|
27
|
-
continue
|
|
28
|
-
|
|
29
|
-
dependencies = dist.metadata.get_all('Requires-Dist', [])
|
|
30
|
-
for dependency in dependencies:
|
|
31
|
-
depend_on = dependency.split()[0]
|
|
32
|
-
if depend_on in include_packages:
|
|
33
|
-
dependencies_per_package[depend_on].append(package_name)
|
|
34
|
-
|
|
35
|
-
return dependencies_per_package
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def get_included_packages():
|
|
39
|
-
url = "https://pypi.org/user/circles/"
|
|
40
|
-
class_name = "package-snippet__title"
|
|
41
|
-
|
|
42
|
-
response = requests.get(url)
|
|
43
|
-
soup = BeautifulSoup(response.text, "html.parser")
|
|
44
|
-
package_names = soup.find_all("h3", class_=class_name)
|
|
45
|
-
included_packages = [package_name.text for package_name in package_names]
|
|
46
|
-
install(included_packages)
|
|
47
|
-
return included_packages
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
def main():
|
|
51
|
-
include_packages = get_included_packages()
|
|
52
|
-
dependencies_per_package = get_dependencies_per_package(include_packages)
|
|
53
|
-
with open('dependencies.json', 'w') as f:
|
|
54
|
-
json.dump(dependencies_per_package, f, indent=4)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if __name__ == "__main__":
|
|
58
|
-
main()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote/src/valid_json_versions.py
RENAMED
|
File without changes
|
{python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote/src/validate_environment.py
RENAMED
|
File without changes
|
{python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{python_sdk_remote-0.0.93 → python_sdk_remote-0.0.94}/python_sdk_remote.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|