canvas 0.19.0__py3-none-any.whl → 0.19.1__py3-none-any.whl
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 canvas might be problematic. Click here for more details.
- {canvas-0.19.0.dist-info → canvas-0.19.1.dist-info}/METADATA +1 -1
- {canvas-0.19.0.dist-info → canvas-0.19.1.dist-info}/RECORD +7 -8
- canvas_sdk/__init__.py +4 -2
- plugin_runner/plugin_installer.py +23 -32
- settings.py +22 -12
- canvas_sdk/utils/db.py +0 -17
- {canvas-0.19.0.dist-info → canvas-0.19.1.dist-info}/WHEEL +0 -0
- {canvas-0.19.0.dist-info → canvas-0.19.1.dist-info}/entry_points.txt +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
settings.py,sha256=
|
|
1
|
+
settings.py,sha256=Mk332hOSmNyLVRKLUhtc1Kll-P5Iun7vbkZ0chwnOAs,3176
|
|
2
2
|
canvas_cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
canvas_cli/conftest.py,sha256=0mEjjU7_w9nq-HCvscxFJClw-EeyQYujNLLRPssksZQ,931
|
|
4
4
|
canvas_cli/main.py,sha256=L6JQkt1yxy30cA3-M9v7JD8WMW4i0M5GPr9kZetAito,2728
|
|
@@ -110,7 +110,7 @@ canvas_generated/messages/plugins_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCN
|
|
|
110
110
|
canvas_generated/services/plugin_runner_pb2.py,sha256=RfAo_imYoSuoexq-1IHhMhXZgQpzq91pqugxsigL8NU,1557
|
|
111
111
|
canvas_generated/services/plugin_runner_pb2.pyi,sha256=1w-Pa4k7HtlmQAr7B6sgV64zdZplBKQKHN-S8bjwO3w,265
|
|
112
112
|
canvas_generated/services/plugin_runner_pb2_grpc.py,sha256=EzJJVkP_AZ3dwBA7OxUito0NSalRmjjg8q9TZ_P18ww,4549
|
|
113
|
-
canvas_sdk/__init__.py,sha256=
|
|
113
|
+
canvas_sdk/__init__.py,sha256=7IuwjhqIaOO5BgCfXi-B1eV6XfK9Ku5PHPWuTGeDNgU,151
|
|
114
114
|
canvas_sdk/base.py,sha256=aaWilIx70lsAE76x7QaJolyIvcFnXDGPw1UMv9t0FDw,2035
|
|
115
115
|
canvas_sdk/commands/__init__.py,sha256=cNQy1Y_Ji3cPush2hbaoXC3pbIFmobv_Vm-UG0w0hlc,2696
|
|
116
116
|
canvas_sdk/commands/base.py,sha256=ScfOo4QXTInhTf6OGLT5dEu81yhZAcgVT8qxwIKWbow,5155
|
|
@@ -190,7 +190,6 @@ canvas_sdk/templates/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
|
|
|
190
190
|
canvas_sdk/templates/tests/test_utils.py,sha256=VRahmmVwXKcp1NMLoA3BZL4cFFXzFnD-i5IUpcEeXTg,1832
|
|
191
191
|
canvas_sdk/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
192
192
|
canvas_sdk/utils/__init__.py,sha256=nZEfYeU-qNZBOh39b8zAuEh0Wzh2PgXxs0NRKKe66Pg,184
|
|
193
|
-
canvas_sdk/utils/db.py,sha256=0AO5bhu-k9OsAHpXe1RHzyDZnBGHUEzrv8-vYtTIoeA,592
|
|
194
193
|
canvas_sdk/utils/http.py,sha256=McFtcrgdR2W8XguTaTF54O5Xf5r5buoYDldDM5H5ahY,5846
|
|
195
194
|
canvas_sdk/utils/plugins.py,sha256=853MW2fiLpyG3o9ISEawAthQeRiZP73cai5Tngwu4MY,767
|
|
196
195
|
canvas_sdk/utils/stats.py,sha256=sJhIW_IssUVefQN6rrUAt1P0KvVIUIYcnpZlMHLibNA,732
|
|
@@ -255,7 +254,7 @@ plugin_runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
255
254
|
plugin_runner/authentication.py,sha256=SDPso2AogtLAV_H0LuMDp99IMZuF3oTq-Q_AXAvJ8uc,1116
|
|
256
255
|
plugin_runner/aws_headers.py,sha256=DenX_nAMVhXMJZw88PLZbqJsi5_XriNtr3jE-eJqHY4,2773
|
|
257
256
|
plugin_runner/exceptions.py,sha256=YnRZiQVzbU3HrVlmEXLje_np99009YnhTRVHHyBCtqc,433
|
|
258
|
-
plugin_runner/plugin_installer.py,sha256=
|
|
257
|
+
plugin_runner/plugin_installer.py,sha256=8hWllx7YciatEozFRwcp5Y_L_KyEi2e8CGienRWrZs0,7375
|
|
259
258
|
plugin_runner/plugin_runner.py,sha256=h_FHStJrvRiG9DSf8uXHKFb4aby2wBzLAe10Ov4xnas,16437
|
|
260
259
|
plugin_runner/sandbox.py,sha256=P64SKpKZdoJwk2NsirGRKq7xjygBtvdipIAVSD5roY8,14509
|
|
261
260
|
plugin_runner/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -329,7 +328,7 @@ protobufs/canvas_generated/messages/plugins.proto,sha256=oNainUPWFYQjgCX7bJEPI9_
|
|
|
329
328
|
protobufs/canvas_generated/services/plugin_runner.proto,sha256=doadBKn5k4xAtOgR-q_pEvW4yzxpUaHNOowMG6CL5GY,304
|
|
330
329
|
pubsub/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
331
330
|
pubsub/pubsub.py,sha256=pyTW0JU8mtaqiAV6g6xjZwel1CVy2EonPMU-_vkmhUM,1044
|
|
332
|
-
canvas-0.19.
|
|
333
|
-
canvas-0.19.
|
|
334
|
-
canvas-0.19.
|
|
335
|
-
canvas-0.19.
|
|
331
|
+
canvas-0.19.1.dist-info/METADATA,sha256=7w1TpwcKJ-BjC9HRzHYW4OW6LzUFr1gHFxlqRrIkX-U,4375
|
|
332
|
+
canvas-0.19.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
333
|
+
canvas-0.19.1.dist-info/entry_points.txt,sha256=0Vs_9GmTVUNniH6eDBlRPgofmADMV4BES6Ao26M4AbM,47
|
|
334
|
+
canvas-0.19.1.dist-info/RECORD,,
|
canvas_sdk/__init__.py
CHANGED
|
@@ -6,7 +6,7 @@ import tempfile
|
|
|
6
6
|
from collections.abc import Generator
|
|
7
7
|
from contextlib import contextmanager
|
|
8
8
|
from pathlib import Path
|
|
9
|
-
from typing import
|
|
9
|
+
from typing import TypedDict, cast
|
|
10
10
|
from urllib import parse
|
|
11
11
|
|
|
12
12
|
import psycopg
|
|
@@ -30,41 +30,32 @@ from settings import (
|
|
|
30
30
|
UPLOAD_TO_PREFIX = "plugins"
|
|
31
31
|
|
|
32
32
|
|
|
33
|
-
def
|
|
34
|
-
"""
|
|
35
|
-
parsed_url = parse.urlparse(os.getenv("DATABASE_URL"))
|
|
36
|
-
db_name = parsed_url.path[1:]
|
|
37
|
-
return {
|
|
38
|
-
"dbname": db_name,
|
|
39
|
-
"user": parsed_url.username,
|
|
40
|
-
"password": parsed_url.password,
|
|
41
|
-
"host": parsed_url.hostname,
|
|
42
|
-
"port": parsed_url.port,
|
|
43
|
-
}
|
|
33
|
+
def open_database_connection() -> Connection:
|
|
34
|
+
"""Opens a psycopg connection to the home-app database.
|
|
44
35
|
|
|
36
|
+
When running within Aptible, use the database URL, otherwise pull from
|
|
37
|
+
the environment variables.
|
|
38
|
+
"""
|
|
39
|
+
if os.getenv("DATABASE_URL"):
|
|
40
|
+
parsed_url = parse.urlparse(os.getenv("DATABASE_URL"))
|
|
41
|
+
|
|
42
|
+
return psycopg.connect(
|
|
43
|
+
dbname=cast(str, parsed_url.path[1:]),
|
|
44
|
+
user=cast(str, parsed_url.username),
|
|
45
|
+
password=cast(str, parsed_url.password),
|
|
46
|
+
host=cast(str, parsed_url.hostname),
|
|
47
|
+
port=parsed_url.port,
|
|
48
|
+
)
|
|
45
49
|
|
|
46
|
-
def get_database_dict_from_env() -> dict[str, Any]:
|
|
47
|
-
"""Creates a psycopg ready dictionary from the environment variables."""
|
|
48
50
|
APP_NAME = os.getenv("APP_NAME")
|
|
49
51
|
|
|
50
|
-
return
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
def open_database_connection() -> Connection:
|
|
60
|
-
"""Opens a psycopg connection to the home-app database."""
|
|
61
|
-
# When running within Aptible, use the database URL, otherwise pull from the environment variables.
|
|
62
|
-
if os.getenv("DATABASE_URL"):
|
|
63
|
-
database_dict = get_database_dict_from_url()
|
|
64
|
-
else:
|
|
65
|
-
database_dict = get_database_dict_from_env()
|
|
66
|
-
conn = psycopg.connect(**database_dict)
|
|
67
|
-
return conn
|
|
52
|
+
return psycopg.connect(
|
|
53
|
+
dbname=APP_NAME,
|
|
54
|
+
user=os.getenv("DB_USERNAME", "app"),
|
|
55
|
+
password=os.getenv("DB_PASSWORD", "app"),
|
|
56
|
+
host=os.getenv("DB_HOST", f"{APP_NAME}-db"),
|
|
57
|
+
port=os.getenv("DB_PORT", "5432"),
|
|
58
|
+
)
|
|
68
59
|
|
|
69
60
|
|
|
70
61
|
class PluginAttributes(TypedDict):
|
settings.py
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import sys
|
|
3
|
+
from urllib import parse
|
|
3
4
|
|
|
4
5
|
from dotenv import load_dotenv
|
|
5
6
|
from env_tools import env_to_bool
|
|
6
7
|
|
|
7
|
-
from canvas_sdk.utils.db import get_database_dict_from_url
|
|
8
|
-
|
|
9
8
|
load_dotenv()
|
|
10
9
|
|
|
11
10
|
ENV = os.getenv("ENV", "development")
|
|
@@ -40,19 +39,30 @@ CANVAS_SDK_DB_HOST = os.getenv("CANVAS_SDK_DB_HOST", "home-app-db")
|
|
|
40
39
|
CANVAS_SDK_DB_PORT = os.getenv("CANVAS_SDK_DB_PORT", "5432")
|
|
41
40
|
|
|
42
41
|
if os.getenv("DATABASE_URL"):
|
|
43
|
-
|
|
42
|
+
parsed_url = parse.urlparse(os.getenv("DATABASE_URL"))
|
|
43
|
+
|
|
44
|
+
DATABASES = {
|
|
45
|
+
"default": {
|
|
46
|
+
"ENGINE": "django.db.backends.postgresql",
|
|
47
|
+
"NAME": parsed_url.path[1:],
|
|
48
|
+
"USER": os.getenv("CANVAS_SDK_DATABASE_ROLE"),
|
|
49
|
+
"PASSWORD": os.getenv("CANVAS_SDK_DATABASE_ROLE_PASSWORD"),
|
|
50
|
+
"HOST": parsed_url.hostname,
|
|
51
|
+
"PORT": parsed_url.port,
|
|
52
|
+
}
|
|
53
|
+
}
|
|
44
54
|
else:
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
55
|
+
DATABASES = {
|
|
56
|
+
"default": {
|
|
57
|
+
"ENGINE": "django.db.backends.postgresql",
|
|
58
|
+
"NAME": CANVAS_SDK_DB_NAME,
|
|
59
|
+
"USER": CANVAS_SDK_DB_USERNAME,
|
|
60
|
+
"PASSWORD": CANVAS_SDK_DB_PASSWORD,
|
|
61
|
+
"HOST": CANVAS_SDK_DB_HOST,
|
|
62
|
+
"PORT": CANVAS_SDK_DB_PORT,
|
|
63
|
+
}
|
|
52
64
|
}
|
|
53
65
|
|
|
54
|
-
DATABASES = {"default": database_dict}
|
|
55
|
-
|
|
56
66
|
AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID", "")
|
|
57
67
|
AWS_SECRET_ACCESS_KEY = os.getenv("AWS_SECRET_ACCESS_KEY", "")
|
|
58
68
|
AWS_REGION = os.getenv("AWS_REGION", "us-west-2")
|
canvas_sdk/utils/db.py
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
from typing import Any
|
|
3
|
-
from urllib import parse
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def get_database_dict_from_url() -> dict[str, Any]:
|
|
7
|
-
"""Retrieves the database URL for the data module connection formatted for Django settings."""
|
|
8
|
-
parsed_url = parse.urlparse(os.getenv("DATABASE_URL"))
|
|
9
|
-
db_name = parsed_url.path[1:]
|
|
10
|
-
return {
|
|
11
|
-
"ENGINE": "django.db.backends.postgresql",
|
|
12
|
-
"NAME": db_name,
|
|
13
|
-
"USER": os.getenv("CANVAS_SDK_DATABASE_ROLE"),
|
|
14
|
-
"PASSWORD": os.getenv("CANVAS_SDK_DATABASE_ROLE_PASSWORD"),
|
|
15
|
-
"HOST": parsed_url.hostname,
|
|
16
|
-
"PORT": parsed_url.port,
|
|
17
|
-
}
|
|
File without changes
|
|
File without changes
|