diff --git a/Pipfile.lock b/Pipfile.lock index ff76264..8222fc1 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -207,7 +207,7 @@ "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.2" } } diff --git a/README.md b/README.md index 3ac5946..7eb6ae6 100644 --- a/README.md +++ b/README.md @@ -14,16 +14,14 @@ With the SDK you can: - Python 3 required +- pipenv required `pip install pipenv` + ``` pipenv install -python setup.py pytest -``` -If you get issues about missing modules: +pipenv shell -``` -pip3 install jsonschema -pip3 install pyyaml +python setup.py pytest ``` ## **WIP** Programmatically build workflow definitions @@ -69,7 +67,7 @@ functions: workflow = Workflow.from_source(swf_content) ``` -You can see a full example in the [test_workflow.py](./tests/test_workflow.py) file +You can see a full example in the [test_workflow.py](tests/serverlessworkflow/sdk/test_workflow.py) file ### Parse workflow to JSON / YAML @@ -88,7 +86,7 @@ print(workflow.to_json()) print(workflow.to_yaml()) ``` -You can see a full example in the [test_workflow.py](./tests/test_workflow.py) file +You can see a full example in the [test_workflow.py](tests/serverlessworkflow/sdk/test_workflow.py) file ## Validate workflow definitions @@ -108,4 +106,4 @@ WorkflowValidator(Workflow(workflow)).validate() ``` The `validate` method will raise an exception if the provided workflow does not complaint specification. -You can see a full example in the [test_workflow_validator](./tests/test_workflow_validator.py) file \ No newline at end of file +You can see a full example in the [test_workflow_validator](tests/serverlessworkflow/sdk/test_workflow_validator.py) file \ No newline at end of file diff --git a/serverlessworkflow_sdk/__init__.py b/serverlessworkflow/__init__.py similarity index 100% rename from serverlessworkflow_sdk/__init__.py rename to serverlessworkflow/__init__.py diff --git a/serverlessworkflow/sdk/__init__.py b/serverlessworkflow/sdk/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/serverlessworkflow_sdk/action.py b/serverlessworkflow/sdk/action.py similarity index 100% rename from serverlessworkflow_sdk/action.py rename to serverlessworkflow/sdk/action.py diff --git a/serverlessworkflow_sdk/inject_state.py b/serverlessworkflow/sdk/inject_state.py similarity index 93% rename from serverlessworkflow_sdk/inject_state.py rename to serverlessworkflow/sdk/inject_state.py index 9ce0c53..6c23b75 100644 --- a/serverlessworkflow_sdk/inject_state.py +++ b/serverlessworkflow/sdk/inject_state.py @@ -1,4 +1,4 @@ -from serverlessworkflow_sdk.state import State +from serverlessworkflow.sdk.state import State class InjectState(State): diff --git a/serverlessworkflow_sdk/operation_state.py b/serverlessworkflow/sdk/operation_state.py similarity index 93% rename from serverlessworkflow_sdk/operation_state.py rename to serverlessworkflow/sdk/operation_state.py index 7892c82..3868865 100644 --- a/serverlessworkflow_sdk/operation_state.py +++ b/serverlessworkflow/sdk/operation_state.py @@ -1,5 +1,5 @@ -from serverlessworkflow_sdk.action import Action -from serverlessworkflow_sdk.state import State +from serverlessworkflow.sdk.action import Action +from serverlessworkflow.sdk.state import State class OperationState(State): diff --git a/serverlessworkflow_sdk/state.py b/serverlessworkflow/sdk/state.py similarity index 100% rename from serverlessworkflow_sdk/state.py rename to serverlessworkflow/sdk/state.py diff --git a/serverlessworkflow_sdk/workflow.py b/serverlessworkflow/sdk/workflow.py similarity index 94% rename from serverlessworkflow_sdk/workflow.py rename to serverlessworkflow/sdk/workflow.py index 6e22924..2da93a5 100644 --- a/serverlessworkflow_sdk/workflow.py +++ b/serverlessworkflow/sdk/workflow.py @@ -2,9 +2,9 @@ import yaml -from serverlessworkflow_sdk.inject_state import InjectState -from serverlessworkflow_sdk.operation_state import OperationState -from serverlessworkflow_sdk.state import State +from serverlessworkflow.sdk.inject_state import InjectState +from serverlessworkflow.sdk.operation_state import OperationState +from serverlessworkflow.sdk.state import State def is_inject_state(state: State): diff --git a/serverlessworkflow_sdk/workflow_validator.py b/serverlessworkflow/sdk/workflow_validator.py similarity index 92% rename from serverlessworkflow_sdk/workflow_validator.py rename to serverlessworkflow/sdk/workflow_validator.py index e2f37aa..3cbe0a2 100644 --- a/serverlessworkflow_sdk/workflow_validator.py +++ b/serverlessworkflow/sdk/workflow_validator.py @@ -1,7 +1,8 @@ import json import requests from jsonschema.validators import validate -from serverlessworkflow_sdk.workflow import Workflow + +from serverlessworkflow.sdk.workflow import Workflow class WorkflowValidator: diff --git a/setup.py b/setup.py index 4497ced..e76ee73 100644 --- a/setup.py +++ b/setup.py @@ -1,13 +1,21 @@ from setuptools import find_packages, setup + +with open("README.md", "r") as readme_file: + readme = readme_file.read() + setup( - name='serverlessworkflow_sdk', - packages=find_packages(include=['serverlessworkflow_sdk']), + name='serverlessworkflow.sdk', + packages=find_packages(include=['serverlessworkflow', 'serverlessworkflow.sdk']), version='0.1.0', description='Serverless Workflow Specification - Python SDK', + long_description=readme, + long_description_content_type="text/markdown", + url="https://serverlessworkflow.io/", author='Serverless Workflow Contributors', license='http://www.apache.org/licenses/LICENSE-2.0.txt', - install_requires=[], + install_requires=['pyyaml==6.0', "jsonschema==4.4.0", "requests"], setup_requires=['pytest-runner'], tests_require=['pytest'], test_suite='tests', -) \ No newline at end of file + +) diff --git a/tests/serverlessworkflow/__init__.py b/tests/serverlessworkflow/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/serverlessworkflow/sdk/__init__.py b/tests/serverlessworkflow/sdk/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_workflow.json b/tests/serverlessworkflow/sdk/test_workflow.json similarity index 100% rename from tests/test_workflow.json rename to tests/serverlessworkflow/sdk/test_workflow.json diff --git a/tests/test_workflow.py b/tests/serverlessworkflow/sdk/test_workflow.py similarity index 97% rename from tests/test_workflow.py rename to tests/serverlessworkflow/sdk/test_workflow.py index d95c670..5ebdb76 100644 --- a/tests/test_workflow.py +++ b/tests/serverlessworkflow/sdk/test_workflow.py @@ -1,8 +1,8 @@ import os import unittest -from serverlessworkflow_sdk.action import Action -from serverlessworkflow_sdk.workflow import Workflow +from serverlessworkflow.sdk.action import Action +from serverlessworkflow.sdk.workflow import Workflow class TestWorkflow(unittest.TestCase): diff --git a/tests/test_workflow.yaml b/tests/serverlessworkflow/sdk/test_workflow.yaml similarity index 100% rename from tests/test_workflow.yaml rename to tests/serverlessworkflow/sdk/test_workflow.yaml diff --git a/tests/test_workflow_validator.py b/tests/serverlessworkflow/sdk/test_workflow_validator.py similarity index 79% rename from tests/test_workflow_validator.py rename to tests/serverlessworkflow/sdk/test_workflow_validator.py index 166e9db..e18f5c4 100644 --- a/tests/test_workflow_validator.py +++ b/tests/serverlessworkflow/sdk/test_workflow_validator.py @@ -5,14 +5,14 @@ from jsonschema.exceptions import ValidationError -from serverlessworkflow_sdk.workflow import Workflow -from serverlessworkflow_sdk.workflow_validator import WorkflowValidator +from serverlessworkflow.sdk.workflow import Workflow +from serverlessworkflow.sdk.workflow_validator import WorkflowValidator class TestWorkflowValidator(unittest.TestCase): def test_validate_examples(self): - examples_dir = os.path.join(os.path.dirname(__file__), 'examples') + examples_dir = os.path.join(os.path.dirname(__file__), '../../examples') examples = listdir(examples_dir) self.assertEqual(len(examples), 9) @@ -22,7 +22,7 @@ def test_validate_examples(self): WorkflowValidator(Workflow(**swf_file_content)).validate() def test_invalid_wf(self): - wf_file = os.path.join(os.path.dirname(__file__), 'examples', 'applicantrequest.json') + wf_file = os.path.join(os.path.dirname(__file__), '../../examples', 'applicantrequest.json') with open(wf_file, "r") as swf_file: swf_content = swf_file.read()