pysodafair 0.1.65__tar.gz → 0.1.67__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.
- {pysodafair-0.1.65 → pysodafair-0.1.67}/PKG-INFO +1 -1
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pyproject.toml +1 -1
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/dataset_generation/upload.py +1 -4
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/schema/dataset_description.json +2 -1
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/schema/manifest.json +2 -2
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/utils/exceptions.py +9 -1
- pysodafair-0.1.67/pysoda/utils/pennsieveAgentUtils.py +20 -0
- pysodafair-0.1.65/pysoda/utils/pennsieveAgentUtils.py +0 -11
- {pysodafair-0.1.65 → pysodafair-0.1.67}/LICENSE +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/README.md +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/__init__.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/constants.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/__init__.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/dataset_generation/__init__.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/dataset_generation/manifestSession/__init__.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/dataset_generation/manifestSession/manifest_session.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/dataset_importing/__init__.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/dataset_importing/import_dataset.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/__init__.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/code_description.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/constants.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/dataset_description.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/excel_utils.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/helpers.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/manifest.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/manifest_package/__init__.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/manifest_package/manifest.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/manifest_package/manifest_import.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/manifest_package/manifest_writer.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/performances.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/resources.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/samples.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/sites.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/subjects.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/submission.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/text_metadata.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/CHANGES +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/LICENSE +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/README.md +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/__init__.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/code_description.xlsx +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/code_parameters.xlsx +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/dataset_description.xlsx +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/manifest.xlsx +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/performances.xlsx +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/resources.xlsx +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/samples.xlsx +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/sites.xlsx +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/subjects.xlsx +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/subjects_pools_samples_structure.xlsx +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/subjects_pools_samples_structure_example.xlsx +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/submission.xlsx +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/permissions/__init__.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/permissions/permissions.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/pysoda/__init__.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/pysoda/soda.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/pysoda/soda_object.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/upload_manifests/__init__.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/upload_manifests/upload_manifests.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/schema/__init__.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/schema/code_description.json +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/schema/performances.json +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/schema/resources.json +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/schema/samples.json +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/schema/sites.json +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/schema/soda_schema.json +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/schema/subjects.json +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/schema/submission_schema.json +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/utils/__init__.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/utils/authentication.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/utils/config.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/utils/logger.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/utils/metadata_utils.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/utils/pennsieveUtils.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/utils/profile.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/utils/schema_validation.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/utils/time_utils.py +0 -0
- {pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/utils/upload_utils.py +0 -0
|
@@ -3460,10 +3460,7 @@ def validate_dataset_structure(soda, resume):
|
|
|
3460
3460
|
connect_pennsieve_client(accountname)
|
|
3461
3461
|
except Exception as e:
|
|
3462
3462
|
main_curate_status = "Done"
|
|
3463
|
-
|
|
3464
|
-
raise Exception("The Pennsieve Agent cannot access datasets but needs to in order to work. Please try again. If the issue persists, please contact the SODA team. The SODA team will contact Pennsieve to help resolve this issue.")
|
|
3465
|
-
else:
|
|
3466
|
-
raise PennsieveAccountInvalid("Please select a valid Pennsieve account.")
|
|
3463
|
+
raise e
|
|
3467
3464
|
|
|
3468
3465
|
if uploading_to_existing_ps_dataset(soda):
|
|
3469
3466
|
# check that the Pennsieve dataset is valid
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
},
|
|
12
12
|
"timestamp": {
|
|
13
13
|
"type": "string",
|
|
14
|
-
"description": "Timestamp of when the data was created or last modified. This should be in ISO 8601 format. Per the SDS guidelines, commas are to be used for separating fractional seconds.",
|
|
15
|
-
"pattern": "^[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](:[0-6][0-9](,[0-9]{1,9})?)?(Z|[+-][0-2][0-9]:[0-6][0-9])
|
|
14
|
+
"description": "Timestamp of when the data was created or last modified. This should be in ISO 8601 format. Per the SDS guidelines, commas are to be used for separating fractional seconds. Empty string for when it does not apply.",
|
|
15
|
+
"pattern": "^([0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](:[0-6][0-9](,[0-9]{1,9})?)?(Z|[+-][0-2][0-9]:[0-6][0-9])?)?$"
|
|
16
16
|
},
|
|
17
17
|
"description": {
|
|
18
18
|
"type": "string",
|
|
@@ -17,6 +17,14 @@ class PennsieveAgentError(Exception):
|
|
|
17
17
|
def __str__(self):
|
|
18
18
|
return self.error_message
|
|
19
19
|
|
|
20
|
+
|
|
21
|
+
class PennsieveAgentRPCError(Exception):
|
|
22
|
+
def __init__(self, error_message):
|
|
23
|
+
self.error_message = error_message
|
|
24
|
+
|
|
25
|
+
def __str__(self):
|
|
26
|
+
return self.error_message
|
|
27
|
+
|
|
20
28
|
class FailedToFetchPennsieveDatasets(Exception):
|
|
21
29
|
def __init__(self, error_message):
|
|
22
30
|
self.error_message = error_message
|
|
@@ -120,7 +128,7 @@ class PennsieveDatasetNameInvalid(Exception):
|
|
|
120
128
|
class PennsieveAccountInvalid(Exception):
|
|
121
129
|
def __init__(self, account_name):
|
|
122
130
|
self.account_name = account_name
|
|
123
|
-
self.error_message = f"The Pennsieve account name {self.account_name} is invalid."
|
|
131
|
+
self.error_message = f"The Pennsieve account name {self.account_name} is invalid. Please try again. If the issue persists, please contact the SODA team."
|
|
124
132
|
|
|
125
133
|
def __str__(self):
|
|
126
134
|
return self.error_message
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from pennsieve2.pennsieve import Pennsieve
|
|
2
|
+
from .exceptions import PennsieveAgentError, PennsieveAgentRPCError, PennsieveAccountInvalid
|
|
3
|
+
|
|
4
|
+
def connect_pennsieve_client(account_name):
|
|
5
|
+
"""
|
|
6
|
+
Connects to Pennsieve Python client to the Agent and returns the initialized Pennsieve object.
|
|
7
|
+
"""
|
|
8
|
+
try:
|
|
9
|
+
return Pennsieve(profile_name=account_name)
|
|
10
|
+
except Exception as e:
|
|
11
|
+
if "End of TCP stream" in str(e):
|
|
12
|
+
raise PennsieveAgentRPCError(f"Could not connect to the Pennsieve Agent error coming from the Agent. This can likely be resolved by retrying. If the issue persists, please contact the SODA team and they will reach out to Pennsieve to help resolve this.") from e
|
|
13
|
+
elif isinstance(e, AttributeError):
|
|
14
|
+
raise Exception("The Pennsieve Agent cannot access datasets but needs to in order to work. Please try again. If the issue persists, please contact the SODA team. The SODA team will contact Pennsieve to help resolve this issue.") from e
|
|
15
|
+
elif "Profile not found" in str(e):
|
|
16
|
+
raise PennsieveAccountInvalid(account_name) from e
|
|
17
|
+
elif "Error connecting to server" in str(e):
|
|
18
|
+
raise PennsieveAgentError(f"Could not connect to the Pennsieve agent: {e}") from e
|
|
19
|
+
else:
|
|
20
|
+
raise PennsieveAgentError("An unknown error occurred when trying to connect to the Pennsieve Agent. If this issue persists, please contact the SODA team.") from e
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
from pennsieve2.pennsieve import Pennsieve
|
|
2
|
-
from .exceptions import PennsieveAgentError
|
|
3
|
-
|
|
4
|
-
def connect_pennsieve_client(account_name):
|
|
5
|
-
"""
|
|
6
|
-
Connects to Pennsieve Python client to the Agent and returns the initialized Pennsieve object.
|
|
7
|
-
"""
|
|
8
|
-
try:
|
|
9
|
-
return Pennsieve(profile_name=account_name)
|
|
10
|
-
except Exception as e:
|
|
11
|
-
raise PennsieveAgentError(f"Could not connect to the Pennsieve agent: {e}")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/dataset_generation/manifestSession/__init__.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
|
{pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/manifest_package/manifest_import.py
RENAMED
|
File without changes
|
{pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata/manifest_package/manifest_writer.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
|
{pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/code_description.xlsx
RENAMED
|
File without changes
|
|
File without changes
|
{pysodafair-0.1.65 → pysodafair-0.1.67}/pysoda/core/metadata_templates/dataset_description.xlsx
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
|