kodexa 7.0.1a8003164156__py3-none-any.whl → 7.0.1a9194120328__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.
- kodexa/model/entities/__init__.py +0 -0
- kodexa/model/entities/product.py +126 -0
- kodexa/model/entities/product_subscription.py +122 -0
- kodexa/model/model.py +26 -7
- kodexa/model/objects.py +140 -57
- kodexa/model/persistence.py +96 -34
- kodexa/pipeline/pipeline.py +30 -10
- kodexa/platform/client.py +277 -40
- kodexa/platform/kodexa.py +117 -32
- kodexa/testing/test_components.py +0 -40
- kodexa/testing/test_utils.py +3 -1
- {kodexa-7.0.1a8003164156.dist-info → kodexa-7.0.1a9194120328.dist-info}/METADATA +4 -15
- {kodexa-7.0.1a8003164156.dist-info → kodexa-7.0.1a9194120328.dist-info}/RECORD +15 -12
- {kodexa-7.0.1a8003164156.dist-info → kodexa-7.0.1a9194120328.dist-info}/LICENSE +0 -0
- {kodexa-7.0.1a8003164156.dist-info → kodexa-7.0.1a9194120328.dist-info}/WHEEL +0 -0
kodexa/platform/kodexa.py
CHANGED
@@ -39,12 +39,33 @@ logger = logging.getLogger()
|
|
39
39
|
dirs = AppDirs("Kodexa", "Kodexa")
|
40
40
|
|
41
41
|
|
42
|
-
def
|
42
|
+
def get_profile(profile=None):
|
43
|
+
"""
|
44
|
+
Gets the current profile.
|
45
|
+
|
46
|
+
Args:
|
47
|
+
profile (str, optional): The profile to get. Defaults to None.
|
48
|
+
|
49
|
+
Returns:
|
50
|
+
str: The profile if it is defined, or "default" if it is not.
|
51
|
+
"""
|
52
|
+
kodexa_config = get_config()
|
53
|
+
if profile is None:
|
54
|
+
if "_current_profile_" in kodexa_config:
|
55
|
+
return kodexa_config["_current_profile_"]
|
56
|
+
else:
|
57
|
+
return "default"
|
58
|
+
return profile
|
59
|
+
|
60
|
+
CURRENT_CONFIG = None
|
61
|
+
|
62
|
+
def get_config(profile=None, create=False):
|
43
63
|
"""
|
44
64
|
Gets the kodexa config object used for local PAT storage.
|
45
65
|
|
46
66
|
Args:
|
47
|
-
profile (str, optional): The profile to get the config for. Defaults to
|
67
|
+
profile (str, optional): The profile to get the config for. Defaults to current profile or "default"
|
68
|
+
create (bool, optional): Whether to create a new profile if it does not exist. Defaults to False.
|
48
69
|
|
49
70
|
Returns:
|
50
71
|
dict: The kodexa config as a dictionary. If the profile exists in the config, it returns the config for that profile.
|
@@ -52,17 +73,34 @@ def get_config(profile="default"):
|
|
52
73
|
it returns the default config. If the config file does not exist, it returns a default config or a new profile with
|
53
74
|
default values depending on whether a profile was provided or not.
|
54
75
|
"""
|
76
|
+
global CURRENT_CONFIG
|
77
|
+
if CURRENT_CONFIG:
|
78
|
+
return CURRENT_CONFIG
|
79
|
+
|
55
80
|
path = os.path.join(dirs.user_config_dir, ".kodexa.json")
|
56
81
|
if os.path.exists(path):
|
57
82
|
with open(path, "r") as outfile:
|
58
83
|
kodexa_config = json.load(outfile)
|
84
|
+
|
85
|
+
if "_current_profile_" in kodexa_config and profile is None:
|
86
|
+
profile = kodexa_config["_current_profile_"]
|
87
|
+
if profile is None:
|
88
|
+
raise Exception("No profile set")
|
89
|
+
else:
|
90
|
+
profile = "default" if profile is None else profile
|
91
|
+
|
59
92
|
if profile not in kodexa_config:
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
93
|
+
if create:
|
94
|
+
kodexa_config[profile] = {
|
95
|
+
"url": None,
|
96
|
+
"access_token": None,
|
97
|
+
}
|
98
|
+
else:
|
99
|
+
raise Exception(f"Profile {profile} does not exist")
|
100
|
+
CURRENT_CONFIG = kodexa_config
|
64
101
|
return kodexa_config
|
65
102
|
else:
|
103
|
+
profile = "default" if profile is None else profile
|
66
104
|
return (
|
67
105
|
{profile: {"url": None, "access_token": None}}
|
68
106
|
)
|
@@ -87,6 +125,8 @@ def save_config(config_obj):
|
|
87
125
|
raise
|
88
126
|
with open(path, "w") as outfile:
|
89
127
|
json.dump(config_obj, outfile)
|
128
|
+
global CURRENT_CONFIG
|
129
|
+
CURRENT_CONFIG = config_obj
|
90
130
|
|
91
131
|
|
92
132
|
class KodexaPlatform:
|
@@ -120,7 +160,7 @@ class KodexaPlatform:
|
|
120
160
|
return KodexaClient(KodexaPlatform.get_url(), KodexaPlatform.get_access_token())
|
121
161
|
|
122
162
|
@staticmethod
|
123
|
-
def get_access_token(profile=
|
163
|
+
def get_access_token(profile=None) -> str:
|
124
164
|
"""
|
125
165
|
Get the access token.
|
126
166
|
|
@@ -135,11 +175,11 @@ class KodexaPlatform:
|
|
135
175
|
return (
|
136
176
|
access_token
|
137
177
|
if access_token is not None
|
138
|
-
else kodexa_config[profile]["access_token"]
|
178
|
+
else kodexa_config[get_profile(profile)]["access_token"]
|
139
179
|
)
|
140
180
|
|
141
181
|
@staticmethod
|
142
|
-
def get_url(profile=
|
182
|
+
def get_url(profile=None) -> str:
|
143
183
|
"""
|
144
184
|
Get the URL to use to access a Kodexa Platform.
|
145
185
|
|
@@ -154,7 +194,7 @@ class KodexaPlatform:
|
|
154
194
|
return (
|
155
195
|
env_url
|
156
196
|
if env_url is not None
|
157
|
-
else kodexa_config[profile]["url"]
|
197
|
+
else kodexa_config[get_profile(profile)]["url"]
|
158
198
|
)
|
159
199
|
|
160
200
|
@staticmethod
|
@@ -202,16 +242,19 @@ class KodexaPlatform:
|
|
202
242
|
return [org_slug, slug, version]
|
203
243
|
|
204
244
|
@classmethod
|
205
|
-
def configure(cls, kodexa_url, access_token, profile=
|
245
|
+
def configure(cls, kodexa_url, access_token, profile=None):
|
206
246
|
"""
|
207
247
|
Configure kodexa access to platform
|
208
248
|
|
209
249
|
Args
|
210
250
|
kodexa_url (str): The URL of the Kodexa platform.
|
211
251
|
access_token (str): The access token to use.
|
212
|
-
profile (str, optional): The profile to use. Defaults to
|
252
|
+
profile (str, optional): The profile to use. Defaults to current profile or "default".
|
213
253
|
"""
|
214
254
|
kodexa_config = get_config(profile)
|
255
|
+
|
256
|
+
kodexa_config["_current_profile_"] = profile
|
257
|
+
|
215
258
|
kodexa_config[profile] = {
|
216
259
|
"url": kodexa_url,
|
217
260
|
"access_token": access_token,
|
@@ -220,27 +263,56 @@ class KodexaPlatform:
|
|
220
263
|
save_config(kodexa_config)
|
221
264
|
|
222
265
|
@classmethod
|
223
|
-
def
|
266
|
+
def list_profiles(cls):
|
267
|
+
kodexa_config = get_config()
|
268
|
+
|
269
|
+
# its the keys without __current_profile__
|
270
|
+
return [key for key in kodexa_config if key != "_current_profile_"]
|
271
|
+
|
272
|
+
@classmethod
|
273
|
+
def get_current_profile(cls):
|
274
|
+
return get_profile()
|
275
|
+
|
276
|
+
@classmethod
|
277
|
+
def set_profile(cls, profile):
|
278
|
+
kodexa_config = get_config(profile)
|
279
|
+
kodexa_config["_current_profile_"] = profile
|
280
|
+
save_config(kodexa_config)
|
281
|
+
|
282
|
+
@classmethod
|
283
|
+
def delete_profile(cls, profile):
|
284
|
+
kodexa_config = get_config(profile)
|
285
|
+
del kodexa_config[profile]
|
286
|
+
|
287
|
+
if kodexa_config["_current_profile_"] == profile:
|
288
|
+
kodexa_config["_current_profile_"] = "default"
|
289
|
+
|
290
|
+
save_config(kodexa_config)
|
291
|
+
|
292
|
+
@classmethod
|
293
|
+
def login(cls, kodexa_url, token, profile=None):
|
224
294
|
"""
|
225
295
|
Login to the Kodexa platform.
|
226
296
|
|
227
297
|
Args:
|
228
298
|
kodexa_url (str): The URL of the Kodexa platform.
|
229
|
-
|
230
|
-
password (str): The password to use for login.
|
299
|
+
token (str): The token to use for login.
|
231
300
|
profile (str, optional): The profile to use. Defaults to None.
|
232
301
|
"""
|
233
302
|
from requests.auth import HTTPBasicAuth
|
234
303
|
|
235
304
|
obj_response = requests.get(
|
236
|
-
f"{kodexa_url}/api/account/me
|
237
|
-
|
238
|
-
headers={"content-type": "application/json"}
|
305
|
+
f"{kodexa_url}/api/account/me",
|
306
|
+
headers={"content-type": "application/json", "x-access-token": token, "cf-access-token": os.environ.get("CF_TOKEN", "")}
|
239
307
|
)
|
240
308
|
if obj_response.status_code == 200:
|
241
|
-
kodexa_config = get_config(profile)
|
309
|
+
kodexa_config = get_config(profile, create=True)
|
310
|
+
|
311
|
+
if profile not in kodexa_config:
|
312
|
+
kodexa_config[profile] = {}
|
313
|
+
|
242
314
|
kodexa_config[profile]["url"] = kodexa_url
|
243
|
-
kodexa_config[profile]["access_token"] =
|
315
|
+
kodexa_config[profile]["access_token"] = token
|
244
316
|
save_config(kodexa_config)
|
245
317
|
print("Logged in")
|
246
318
|
else:
|
@@ -258,13 +330,17 @@ class KodexaPlatform:
|
|
258
330
|
f"{KodexaPlatform.get_url()}/api",
|
259
331
|
headers={
|
260
332
|
"x-access-token": KodexaPlatform.get_access_token(),
|
333
|
+
"cf-access-token": os.environ.get("CF_TOKEN", ""),
|
261
334
|
"content-type": "application/json",
|
262
335
|
},
|
263
336
|
)
|
264
337
|
if r.status_code == 401:
|
265
338
|
raise Exception("Your access token was not authorized")
|
266
339
|
if r.status_code == 200:
|
267
|
-
|
340
|
+
try:
|
341
|
+
return r.json()
|
342
|
+
except JSONDecodeError:
|
343
|
+
raise Exception("Unable to decode server information, check your access token")
|
268
344
|
|
269
345
|
logger.warning(r.text)
|
270
346
|
raise Exception(
|
@@ -307,7 +383,8 @@ class RemoteSession:
|
|
307
383
|
logger.debug(f"Downloading metadata for action {ref}")
|
308
384
|
r = requests.get(
|
309
385
|
f"{KodexaPlatform.get_url()}/api/actions/{ref.replace(':', '/')}",
|
310
|
-
headers={"x-access-token": KodexaPlatform.get_access_token()
|
386
|
+
headers={"x-access-token": KodexaPlatform.get_access_token(),
|
387
|
+
"cf-access-token": os.environ.get("CF_TOKEN", "")},
|
311
388
|
)
|
312
389
|
if r.status_code == 401:
|
313
390
|
raise Exception("Your access token was not authorized")
|
@@ -327,7 +404,8 @@ class RemoteSession:
|
|
327
404
|
r = requests.post(
|
328
405
|
f"{KodexaPlatform.get_url()}/api/sessions",
|
329
406
|
params={self.session_type: self.slug},
|
330
|
-
headers={"x-access-token": KodexaPlatform.get_access_token()
|
407
|
+
headers={"x-access-token": KodexaPlatform.get_access_token(),
|
408
|
+
"cf-access-token": os.environ.get("CF_TOKEN", "")},
|
331
409
|
)
|
332
410
|
|
333
411
|
process_response(r)
|
@@ -366,7 +444,8 @@ class RemoteSession:
|
|
366
444
|
f"{KodexaPlatform.get_url()}/api/sessions/{self.cloud_session.id}/execute",
|
367
445
|
params={self.session_type: self.slug, "documentVersion": document.version},
|
368
446
|
data=data,
|
369
|
-
headers={"x-access-token": KodexaPlatform.get_access_token()
|
447
|
+
headers={"x-access-token": KodexaPlatform.get_access_token(),
|
448
|
+
"cf-access-token": os.environ.get("CF_TOKEN", "")},
|
370
449
|
files=files,
|
371
450
|
)
|
372
451
|
try:
|
@@ -410,7 +489,8 @@ class RemoteSession:
|
|
410
489
|
while execution.status == "PENDING" or execution.status == "RUNNING":
|
411
490
|
r = requests.get(
|
412
491
|
f"{KodexaPlatform.get_url()}/api/sessions/{self.cloud_session.id}/executions/{execution.id}",
|
413
|
-
headers={"x-access-token": KodexaPlatform.get_access_token()
|
492
|
+
headers={"x-access-token": KodexaPlatform.get_access_token(),
|
493
|
+
"cf-access-token": os.environ.get("CF_TOKEN", "")},
|
414
494
|
)
|
415
495
|
try:
|
416
496
|
execution = json.loads(r.text)
|
@@ -466,7 +546,8 @@ class RemoteSession:
|
|
466
546
|
logger.info(f"Downloading output document [{execution.outputId}]")
|
467
547
|
doc = requests.get(
|
468
548
|
f"{KodexaPlatform.get_url()}/api/sessions/{self.cloud_session.id}/executions/{execution.id}/objects/{execution.outputId}",
|
469
|
-
headers={"x-access-token": KodexaPlatform.get_access_token()
|
549
|
+
headers={"x-access-token": KodexaPlatform.get_access_token(),
|
550
|
+
"cf-access-token": os.environ.get("CF_TOKEN", "")},
|
470
551
|
)
|
471
552
|
return Document.from_kddb(doc.content)
|
472
553
|
|
@@ -637,13 +718,14 @@ class RemoteStep:
|
|
637
718
|
|
638
719
|
"""Allows you to interact with a step that has been deployed in the Kodexa platform"""
|
639
720
|
|
640
|
-
def __init__(self, ref, step_type="ACTION", attach_source=False, options=None):
|
721
|
+
def __init__(self, ref, step_type="ACTION", attach_source=False, options=None, conditional=None):
|
641
722
|
if options is None:
|
642
723
|
options = {}
|
643
724
|
self.ref = ref
|
644
725
|
self.step_type = step_type
|
645
726
|
self.attach_source = attach_source
|
646
727
|
self.options = options
|
728
|
+
self.conditional = conditional
|
647
729
|
|
648
730
|
def to_dict(self):
|
649
731
|
"""Converts the RemoteStep object to a dictionary.
|
@@ -651,7 +733,7 @@ class RemoteStep:
|
|
651
733
|
Returns:
|
652
734
|
dict: Dictionary representation of the RemoteStep object.
|
653
735
|
"""
|
654
|
-
return {"ref": self.ref, "step_type": self.step_type, "options": self.options}
|
736
|
+
return {"ref": self.ref, "step_type": self.step_type, "options": self.options, "conditional": self.conditional}
|
655
737
|
|
656
738
|
def get_name(self):
|
657
739
|
"""Generates a name for the RemoteStep object.
|
@@ -705,7 +787,7 @@ class RemoteStep:
|
|
705
787
|
Returns:
|
706
788
|
dict: Dictionary representing the configuration of the step.
|
707
789
|
"""
|
708
|
-
return {"ref": self.ref, "options": self.options}
|
790
|
+
return {"ref": self.ref, "options": self.options, "conditional": self.conditional}
|
709
791
|
|
710
792
|
|
711
793
|
class EventHelper:
|
@@ -754,7 +836,8 @@ class EventHelper:
|
|
754
836
|
response = requests.post(
|
755
837
|
f"{KodexaPlatform.get_url()}/api/sessions/{self.event.session_id}/executions/{self.event.execution.id}/logs",
|
756
838
|
json=[{"entry": message}],
|
757
|
-
headers={"x-access-token": KodexaPlatform.get_access_token()
|
839
|
+
headers={"x-access-token": KodexaPlatform.get_access_token(),
|
840
|
+
"cf-access-token": os.environ.get("CF_TOKEN", "")},
|
758
841
|
timeout=300,
|
759
842
|
)
|
760
843
|
if response.status_code != 200:
|
@@ -778,7 +861,8 @@ class EventHelper:
|
|
778
861
|
|
779
862
|
co_response = requests.get(
|
780
863
|
f"{KodexaPlatform.get_url()}/api/sessions/{self.event.session_id}/executions/{self.event.execution.id}/objects/{content_object_id}",
|
781
|
-
headers={"x-access-token": KodexaPlatform.get_access_token()
|
864
|
+
headers={"x-access-token": KodexaPlatform.get_access_token(),
|
865
|
+
"cf-access-token": os.environ.get("CF_TOKEN", "")},
|
782
866
|
timeout=300
|
783
867
|
)
|
784
868
|
process_response(co_response)
|
@@ -805,7 +889,8 @@ class EventHelper:
|
|
805
889
|
co_response = requests.post(
|
806
890
|
f"{KodexaPlatform.get_url()}/api/sessions/{self.event.session_id}/executions/{self.event.execution.id}/objects",
|
807
891
|
data=data,
|
808
|
-
headers={"x-access-token": KodexaPlatform.get_access_token()
|
892
|
+
headers={"x-access-token": KodexaPlatform.get_access_token(),
|
893
|
+
"cf-access-token": os.environ.get("CF_TOKEN", "")},
|
809
894
|
files=files,
|
810
895
|
timeout=300
|
811
896
|
)
|
@@ -43,43 +43,3 @@ class TestAssistant(Assistant):
|
|
43
43
|
return AssistantResponse(
|
44
44
|
pipelines=[AssistantPipeline(pipeline=pipeline, write_back_to_store=True)]
|
45
45
|
)
|
46
|
-
|
47
|
-
|
48
|
-
def test_profile_default():
|
49
|
-
"""
|
50
|
-
:assert: Checks if the default profile is set correctly
|
51
|
-
"""
|
52
|
-
kodexa_url = os.getenv("URL")
|
53
|
-
access_token = os.getenv("ACCESS_TOKEN")
|
54
|
-
KodexaPlatform.configure(kodexa_url, access_token)
|
55
|
-
assert KodexaPlatform.get_url() == kodexa_url and KodexaPlatform.get_access_token() == access_token
|
56
|
-
|
57
|
-
|
58
|
-
def test_profile_custom():
|
59
|
-
"""
|
60
|
-
:assert: Checks if the custom profile is set correctly
|
61
|
-
"""
|
62
|
-
kodexa_url = os.getenv("URL")
|
63
|
-
access_token = os.getenv("ACCESS_TOKEN")
|
64
|
-
profile = "dev-profile"
|
65
|
-
KodexaPlatform.configure(kodexa_url, access_token, profile)
|
66
|
-
assert KodexaPlatform.get_url(profile) == kodexa_url and KodexaPlatform.get_access_token(profile) == access_token
|
67
|
-
|
68
|
-
|
69
|
-
def test_kodexa_client_default_profile():
|
70
|
-
kodexa_cli = KodexaClient()
|
71
|
-
assert kodexa_cli.base_url == KodexaPlatform.get_url("default") and \
|
72
|
-
kodexa_cli.access_token == KodexaPlatform.get_access_token("default")
|
73
|
-
|
74
|
-
|
75
|
-
def test_kodexa_client_custom_profile():
|
76
|
-
kodexa_cli = KodexaClient(profile="dev-profile")
|
77
|
-
assert kodexa_cli.base_url == KodexaPlatform.get_url("dev-profile") and \
|
78
|
-
kodexa_cli.access_token == KodexaPlatform.get_access_token("dev-profile")
|
79
|
-
|
80
|
-
|
81
|
-
def test_customized_kodexe_client():
|
82
|
-
kodexa_url = "https://test.test.com"
|
83
|
-
access_token = "test-token"
|
84
|
-
kodexa_cli = KodexaClient(kodexa_url, access_token)
|
85
|
-
assert kodexa_cli.base_url != KodexaPlatform.get_url() and kodexa_cli.access_token != KodexaPlatform.get_access_token()
|
kodexa/testing/test_utils.py
CHANGED
@@ -3,6 +3,8 @@ import importlib
|
|
3
3
|
import logging
|
4
4
|
from typing import List
|
5
5
|
|
6
|
+
from addict import Dict
|
7
|
+
|
6
8
|
from kodexa import Assistant, AssistantResponse
|
7
9
|
from kodexa import (
|
8
10
|
ContentEvent,
|
@@ -316,7 +318,7 @@ class ExtensionPackUtil:
|
|
316
318
|
import json
|
317
319
|
|
318
320
|
with open(file_path, "r") as stream:
|
319
|
-
self.kodexa_metadata = json.load(stream)
|
321
|
+
self.kodexa_metadata = Dict(json.load(stream))
|
320
322
|
|
321
323
|
def get_step(self, action_slug, options=None):
|
322
324
|
"""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: kodexa
|
3
|
-
Version: 7.0.
|
3
|
+
Version: 7.0.1a9194120328
|
4
4
|
Summary: Python SDK for the Kodexa Platform
|
5
5
|
Author: Austin Redenbaugh
|
6
6
|
Author-email: austin@kodexa.com
|
@@ -17,16 +17,17 @@ Requires-Dist: addict (>=2.4.0,<3.0.0)
|
|
17
17
|
Requires-Dist: appdirs (>=1.4.4,<2.0.0)
|
18
18
|
Requires-Dist: better-exceptions (>=0.3.3,<0.4.0)
|
19
19
|
Requires-Dist: chevron (>=0.14.0,<0.15.0)
|
20
|
-
Requires-Dist: deepdiff (>=
|
20
|
+
Requires-Dist: deepdiff (>=7.0.1,<8.0.0)
|
21
21
|
Requires-Dist: msgpack (>=1.0.6,<2.0.0)
|
22
22
|
Requires-Dist: ply (>=3.11,<4.0)
|
23
23
|
Requires-Dist: pydantic (>=2.5.3,<3.0.0)
|
24
24
|
Requires-Dist: pydantic-yaml (>=1.0.0,<2.0.0)
|
25
|
-
Requires-Dist: pyfunctional (
|
25
|
+
Requires-Dist: pyfunctional (==1.5.0)
|
26
26
|
Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
|
27
27
|
Requires-Dist: pyyaml (>=6.0,<7.0)
|
28
28
|
Requires-Dist: requests (>=2.28.1,<3.0.0)
|
29
29
|
Requires-Dist: semver (>=3.0.1,<4.0.0)
|
30
|
+
Requires-Dist: simpleeval (>=0.9.13,<0.10.0)
|
30
31
|
Requires-Dist: urllib3 (>=2.0.0,<3.0.0)
|
31
32
|
Description-Content-Type: text/markdown
|
32
33
|
|
@@ -66,18 +67,6 @@ working with a Kodexa platform instance.
|
|
66
67
|
|
67
68
|
Documentation is available at the [Kodexa Documentation Portal](https://docs.kodexa.com)
|
68
69
|
|
69
|
-
## Current Development
|
70
|
-
|
71
|
-
[//]: # (Replace it with the diagrams and descriptions for build releases)
|
72
|
-
**BUILD VERSION FLOW**
|
73
|
-

|
74
|
-
Build version will differ based on the branches that are published to pypi.
|
75
|
-
|
76
|
-
**GITHUB PROCESS**
|
77
|
-

|
78
|
-
Changes that contain bugs, features, and fixes should first be pushed to the test branch.
|
79
|
-
Once these changes are thoroughly tested, they can be submitted as a pull request to the main branch. The pull request should be reviewed and approved by an appropriate person before the changes can be merged.
|
80
|
-
|
81
70
|
## Set-up
|
82
71
|
|
83
72
|
We use poetry to manage our dependencies, so you can install them with:
|
@@ -5,15 +5,18 @@ kodexa/connectors/__init__.py,sha256=WF6G_MUeU32TlKSUKkpNoNX7dq8iBPliFMep4E8BmZc
|
|
5
5
|
kodexa/connectors/connectors.py,sha256=FpUZDkSyHld2b9eYRuVOWzaFtuGoaRuPXXicJB7THbc,10413
|
6
6
|
kodexa/model/__init__.py,sha256=rtLXYJBxB-rnukhslN9rlqoB3--1H3253HyHGbD_Gc8,796
|
7
7
|
kodexa/model/base.py,sha256=CaZK8nMhT1LdCpt4aLhebJGcorjq9qRID1FjnXnP14M,521
|
8
|
-
kodexa/model/
|
9
|
-
kodexa/model/
|
10
|
-
kodexa/model/
|
8
|
+
kodexa/model/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
|
+
kodexa/model/entities/product.py,sha256=ZDpHuBE_9FJ-klnkyBvTfPwYOqBkM1wraZMtHqNA8FQ,3526
|
10
|
+
kodexa/model/entities/product_subscription.py,sha256=UcmWR-qgLfdV7VCtJNwzgkanoS8nBSL6ngVuxQUK1M8,3810
|
11
|
+
kodexa/model/model.py,sha256=xAUPiW_1V9Kn9yitrvKFVuG_ms_N4HlAx23dwGln8Ro,115561
|
12
|
+
kodexa/model/objects.py,sha256=ox1tie8X95VTgIEHa220G7qqBeCgsYOATJjkQNtMFFA,174335
|
13
|
+
kodexa/model/persistence.py,sha256=sx5FwTSsWMdAZpAs0-6PqyULHkQyNQClApUKJZ-ly8M,62032
|
11
14
|
kodexa/pipeline/__init__.py,sha256=sA7f5D6qkdMrpp2xTIeefnrUBI6xxEEWostvxfX_1Cs,236
|
12
|
-
kodexa/pipeline/pipeline.py,sha256=
|
15
|
+
kodexa/pipeline/pipeline.py,sha256=ZYpJAWcwV4YRK589DUhU0vXGQlkNSj4J2TsGbYqTLjo,25221
|
13
16
|
kodexa/platform/__init__.py,sha256=1O3oiWMg292NPL_NacKDnK1T3_R6cMorrPRue_9e-O4,216
|
14
|
-
kodexa/platform/client.py,sha256=
|
17
|
+
kodexa/platform/client.py,sha256=vFRNeeyCZF85L80S17rxJ-ckstSgZenxp6u2pwZeXB0,218990
|
15
18
|
kodexa/platform/interaction.py,sha256=6zpcwXKNZstUGNS6m4JsoRXAqCZPJHWI-ZN3co8nnF0,1055
|
16
|
-
kodexa/platform/kodexa.py,sha256=
|
19
|
+
kodexa/platform/kodexa.py,sha256=Bvf6x43FWsFuAuQ4N8TvjSZq6niEtBTESmFCWVPASeQ,34024
|
17
20
|
kodexa/selectors/__init__.py,sha256=xA9-4vpyaAZWPSk3bh2kvDLkdv6XEmm7PjFbpziiTIk,100
|
18
21
|
kodexa/selectors/ast.py,sha256=gG-1st841IntgBE5V7p3Cq9azaym2jV5lB_AIywQTCI,13269
|
19
22
|
kodexa/selectors/core.py,sha256=kkt02DN20gXeaDGoGubPPeeTV7rCr4sxTyELrI0l1YU,3691
|
@@ -31,11 +34,11 @@ kodexa/spatial/table_form_common.py,sha256=qJIqr6INNFTe8EPrXchZ9a1ZgS9dZnhx_wgvd
|
|
31
34
|
kodexa/steps/__init__.py,sha256=qpmAtYePTv7G-HzUBx087bA3kq-PPGcFJf4_Z5P--0k,179
|
32
35
|
kodexa/steps/common.py,sha256=fGEuKxcztcqrYFpXbu_OYkxh42yR9s5mkszmtkJhnQ8,10428
|
33
36
|
kodexa/testing/__init__.py,sha256=P8W-SOnWsi48asfnQV06iyHrzZAzuX69j9oYwBvgp5s,323
|
34
|
-
kodexa/testing/test_components.py,sha256=
|
35
|
-
kodexa/testing/test_utils.py,sha256=
|
37
|
+
kodexa/testing/test_components.py,sha256=g5lP-GY0nTHuH5cIEw45vIejEeBaWkPKQGHL36jejBQ,1052
|
38
|
+
kodexa/testing/test_utils.py,sha256=DrLCkHxdb6AbZ-X3WmTMbQmnVIm55VEBL8MjtUK9POs,14021
|
36
39
|
kodexa/training/__init__.py,sha256=xs2L62YpRkIRfslQwtQZ5Yxjhm7sLzX2TrVX6EuBnZQ,52
|
37
40
|
kodexa/training/train_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
|
-
kodexa-7.0.
|
39
|
-
kodexa-7.0.
|
40
|
-
kodexa-7.0.
|
41
|
-
kodexa-7.0.
|
41
|
+
kodexa-7.0.1a9194120328.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
42
|
+
kodexa-7.0.1a9194120328.dist-info/METADATA,sha256=y0Po_nR1acJli4IdPUPbPmNX0yMfgJEbGkzdig2kT74,3488
|
43
|
+
kodexa-7.0.1a9194120328.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
44
|
+
kodexa-7.0.1a9194120328.dist-info/RECORD,,
|
File without changes
|
File without changes
|