Repository: statelyai/xstate-python (language: python)

Issue:
Unnecessary dependencies
In `setup.cfg` the following dependencies are listed

```
ipython>=6
nbformat>=4
nbconvert>=5
requests>=2
```

Isn't that a mistake?

I also see `Js2Py` being used in `scxml.py` but only listed in `requirements_dev.txt`. That seems wrong as well.

Let me know if any of this is intended and then I'll fix in a PR.


Discussion / hints:
The `setup.cfg` dependencies look wrong to me, too. And yes, `Js2Py` should be included.

Fix patch:
diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
new file mode 100644
index 0000000..e0b973d
--- /dev/null
+++ b/.devcontainer/Dockerfile
@@ -0,0 +1,22 @@
+# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.177.0/containers/python-3/.devcontainer/base.Dockerfile
+
+# [Choice] Python version: 3, 3.9, 3.8, 3.7, 3.6
+ARG VARIANT="3.9"
+FROM mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT}
+
+# [Option] Install Node.js
+ARG INSTALL_NODE="true"
+ARG NODE_VERSION="lts/*"
+RUN if [ "${INSTALL_NODE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
+
+# [Optional] If your pip requirements rarely change, uncomment this section to add them to the image.
+COPY requirements_dev.txt /tmp/pip-tmp/
+RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements_dev.txt \
+   && rm -rf /tmp/pip-tmp
+
+# [Optional] Uncomment this section to install additional OS packages.
+# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
+#     && apt-get -y install --no-install-recommends <your-package-list-here>
+
+# [Optional] Uncomment this line to install global node packages.
+# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
\ No newline at end of file
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 0000000..b9a1a3b
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,48 @@
+// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
+// https://github.com/microsoft/vscode-dev-containers/tree/v0.177.0/containers/python-3
+{
+	"name": "XState Python",
+	"build": {
+		"dockerfile": "Dockerfile",
+		"context": "..",
+		"args": { 
+			// Update 'VARIANT' to pick a Python version: 3, 3.6, 3.7, 3.8, 3.9
+			"VARIANT": "3.7",
+			// Options
+			"INSTALL_NODE": "false",
+		}
+	},
+
+	// Set *default* container specific settings.json values on container create.
+	"settings": { 
+		"terminal.integrated.shell.linux": "/bin/bash",
+		"python.pythonPath": "/usr/local/bin/python",
+		"python.languageServer": "Pylance",
+		"python.linting.enabled": true,
+		"python.linting.pylintEnabled": true,
+		"python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8",
+		"python.formatting.blackPath": "/usr/local/py-utils/bin/black",
+		"python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf",
+		"python.linting.banditPath": "/usr/local/py-utils/bin/bandit",
+		"python.linting.flake8Path": "/usr/local/py-utils/bin/flake8",
+		"python.linting.mypyPath": "/usr/local/py-utils/bin/mypy",
+		"python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle",
+		"python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle",
+		"python.linting.pylintPath": "/usr/local/py-utils/bin/pylint"
+	},
+
+	// Add the IDs of extensions you want installed when the container is created.
+	"extensions": [
+		"ms-python.python",
+		"ms-python.vscode-pylance"
+	],
+
+	// Use 'forwardPorts' to make a list of ports inside the container available locally.
+	// "forwardPorts": [],
+
+	// Use 'postCreateCommand' to run commands after the container is created.
+	"postCreateCommand": "git submodule init && git submodule update",
+
+	// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
+	"remoteUser": "vscode"
+}
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000..163a245
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,13 @@
+{
+    // See https://go.microsoft.com/fwlink/?LinkId=733558
+    // for the documentation about the tasks.json format
+    "version": "2.0.0",
+    "tasks": [
+        {
+            "label": "Run tests",
+            "type": "shell",
+            "command": "pytest",
+            "problemMatcher": []
+        }
+    ]
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 846c08f..2c19be1 100644
--- a/README.md
+++ b/README.md
@@ -31,11 +31,22 @@ More advanced examples in [the "examples" folder](./examples)
 
 ## Testing
 
+You can set up your development environment in two different ways. 
+
+### Using [VS Code Remote Containers](https://code.visualstudio.com/docs/remote/containers)
+
+Note this requires VS Code and the Remote Containers extension (which uses Docker containers)
+
+1. [Open the folder in a container](https://code.visualstudio.com/docs/remote/containers#_quick-start-open-an-existing-folder-in-a-container). This will setup your environment with python (including python and pylance extensions), dependencies and download scxml tests.
+1. Run `pytest` to run the tests! 👩‍🔬 (or run the `Run tests` task via VS Code)
+
+### Or on local drive
+
 1. Run `python3.7 -m venv .venv` to create a virtual environment
 1. Run `source .venv/bin/activate` to go into that virtual environment
 1. Run `pip install -r requirements_dev.txt` to install all of the dependencies in `requirements.txt` (which includes `pytest`)
 1. Make sure test files are present and up to date by running `git submodule init` (first time) and `git submodule update`
-1. Run `pytest` to run the tests! 👩‍🔬
+1. Run `pytest` to run the tests! 👩‍🔬 (or run the `Run tests` task via VS Code)
 
 ## SCXML
 
diff --git a/package.py b/package.py
deleted file mode 100644
index fc65889..0000000
--- a/package.py
+++ /dev/null
@@ -1,10 +0,0 @@
-def convert(my_name):
-    """
-    Print a line about converting a notebook.
-    Args:
-        my_name (str): person's name
-    Returns:
-        None
-    """
-
-    print(f"I'll convert a notebook for you some day, {my_name}.")
\ No newline at end of file
diff --git a/requirements_dev.txt b/requirements_dev.txt
index 1a5c10a..5142f78 100644
--- a/requirements_dev.txt
+++ b/requirements_dev.txt
@@ -1,5 +1,4 @@
 pip==19.0.3
 wheel==0.33.1
 twine==1.13.0
-Js2Py==0.70
 pytest
diff --git a/setup.cfg b/setup.cfg
index a1c8664..ff0eddd 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -18,8 +18,5 @@ classifiers =
 zip_safe = False
 include_package_data = True
 packages = xstate
-install_requires =
-    ipython>=6
-    nbformat>=4
-    nbconvert>=5
-    requests>=2
+install_requires = 
+    Js2Py==0.70
\ No newline at end of file


Test patch:
diff --git a/conftest.py b/tests/__init__.py
similarity index 100%
rename from conftest.py
rename to tests/__init__.py