diff --git a/.gitignore b/.gitignore index cd638ee..7d67341 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ -**/.ipynb_checkpoints/ +*.ipynb_checkpoints/ *.pyc -*.lock +*__pycache__/ +*.egg-info/ +*.gif +*.png notebooks/ logs/ env/ diff --git a/.python-version b/.python-version deleted file mode 100644 index ac957df..0000000 --- a/.python-version +++ /dev/null @@ -1 +0,0 @@ -3.10.6 diff --git a/pyproject.toml b/pyproject.toml index 4ac075e..39d1570 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,30 +1,40 @@ -[tool.poetry] -name = "Distributed Potential-iLQR" +[project] +name = "dpilqr" version = "0.1.0" description = "Implementation of Distributed Potential iLQR for scalable cooperative multi-agent navigation." -authors = ["Zach Williams "] -license = {file = "LICENSE.txt"} +authors = [ + {name="Zach Williams", email="zjwilliams20@gmail.com"} +] +license = {file="LICENSE.txt"} readme = "README.md" -requires-python = ">=3.8" +requires-python = ">=3.9" -[tool.poetry.dependencies] -python = "~3.10" -numpy = "^1.22.4" -scipy = "^1.8.1" -matplotlib = "^3.5.2" -ipympl = "^0.9.1" -jupyter = "^1.0.0" -sympy = "^1.10.1" -Cython = "^0.29.32" +dependencies = [ + "numpy", + "scipy", + "matplotlib", + "sympy", + "cython", +] -[tool.poetry.dev-dependencies] -seaborn = "^0.11.2" -jupyterlab = "^3.4.3" -jupyterlab-git = "^0.37.1" -jupyterlab-horizon-theme = "^3.0.1" -networkx = "^2.8.4" -ipdb = "^0.13.9" +[project.optional-dependencies] +dev = [ + "ipympl", + "seaborn", + "jupyterlab", + "jupyterlab-git", + "jupyterlab-horizon-theme", + "networkx", + "ipdb", + "pip-tools", +] [build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" +requires = ["setuptools", "setuptools-scm", "cython"] +build-backend = "setuptools.build_meta" + +[tool.setuptools] +packages = ["dpilqr"] + +[project.urls] +homepage = "https://github.com/labicon/distributed-potential-ilqr" \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 0000000..492e215 --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,421 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --extra=dev --output-file=requirements-dev.txt pyproject.toml +# +aiofiles==22.1.0 + # via ypy-websocket +aiosqlite==0.18.0 + # via ypy-websocket +anyio==3.6.2 + # via jupyter-server +argon2-cffi==21.3.0 + # via + # jupyter-server + # nbclassic + # notebook +argon2-cffi-bindings==21.2.0 + # via argon2-cffi +arrow==1.2.3 + # via isoduration +asttokens==2.2.1 + # via stack-data +attrs==22.2.0 + # via jsonschema +babel==2.11.0 + # via jupyterlab-server +backcall==0.2.0 + # via ipython +beautifulsoup4==4.11.2 + # via nbconvert +bleach==6.0.0 + # via nbconvert +build==0.10.0 + # via pip-tools +certifi==2022.12.7 + # via requests +cffi==1.15.1 + # via argon2-cffi-bindings +charset-normalizer==3.0.1 + # via requests +click==8.1.3 + # via pip-tools +colorama==0.4.6 + # via nbdime +comm==0.1.2 + # via ipykernel +contourpy==1.0.7 + # via matplotlib +cycler==0.11.0 + # via matplotlib +cython==0.29.33 + # via dpilqr (pyproject.toml) +debugpy==1.6.6 + # via ipykernel +decorator==5.1.1 + # via + # ipdb + # ipython +defusedxml==0.7.1 + # via nbconvert +executing==1.2.0 + # via stack-data +fastjsonschema==2.16.2 + # via nbformat +fonttools==4.38.0 + # via matplotlib +fqdn==1.5.1 + # via jsonschema +gitdb==4.0.10 + # via gitpython +gitpython==3.1.30 + # via nbdime +idna==3.4 + # via + # anyio + # jsonschema + # requests +ipdb==0.13.11 + # via dpilqr (pyproject.toml) +ipykernel==6.21.1 + # via + # ipywidgets + # nbclassic + # notebook +ipympl==0.9.2 + # via dpilqr (pyproject.toml) +ipython==8.9.0 + # via + # ipdb + # ipykernel + # ipympl + # ipywidgets + # jupyterlab +ipython-genutils==0.2.0 + # via + # ipympl + # nbclassic + # notebook +ipywidgets==8.0.4 + # via ipympl +isoduration==20.11.0 + # via jsonschema +jedi==0.18.2 + # via ipython +jinja2==3.1.2 + # via + # jupyter-server + # jupyterlab + # jupyterlab-server + # nbclassic + # nbconvert + # nbdime + # notebook +json5==0.9.11 + # via jupyterlab-server +jsonpointer==2.3 + # via jsonschema +jsonschema[format-nongpl]==4.17.3 + # via + # jupyter-events + # jupyterlab-server + # nbformat +jupyter-client==8.0.2 + # via + # ipykernel + # jupyter-server + # nbclassic + # nbclient + # notebook +jupyter-core==5.2.0 + # via + # ipykernel + # jupyter-client + # jupyter-server + # jupyterlab + # nbclassic + # nbclient + # nbconvert + # nbformat + # notebook +jupyter-events==0.5.0 + # via + # jupyter-server + # jupyter-server-fileid +jupyter-server==2.2.1 + # via + # jupyter-server-fileid + # jupyter-server-mathjax + # jupyterlab + # jupyterlab-git + # jupyterlab-server + # nbclassic + # nbdime + # notebook-shim +jupyter-server-fileid==0.6.0 + # via jupyter-server-ydoc +jupyter-server-mathjax==0.2.6 + # via nbdime +jupyter-server-terminals==0.4.4 + # via jupyter-server +jupyter-server-ydoc==0.6.1 + # via jupyterlab +jupyter-ydoc==0.2.2 + # via + # jupyter-server-ydoc + # jupyterlab +jupyterlab==3.6.0 + # via dpilqr (pyproject.toml) +jupyterlab-git==0.41.0 + # via dpilqr (pyproject.toml) +jupyterlab-horizon-theme==3.1.1 + # via dpilqr (pyproject.toml) +jupyterlab-pygments==0.2.2 + # via nbconvert +jupyterlab-server==2.19.0 + # via jupyterlab +jupyterlab-widgets==3.0.5 + # via ipywidgets +kiwisolver==1.4.4 + # via matplotlib +markupsafe==2.1.2 + # via + # jinja2 + # nbconvert +matplotlib==3.6.3 + # via + # dpilqr (pyproject.toml) + # ipympl + # seaborn +matplotlib-inline==0.1.6 + # via + # ipykernel + # ipython +mistune==2.0.4 + # via nbconvert +mpmath==1.2.1 + # via sympy +nbclassic==0.5.1 + # via + # jupyterlab + # notebook +nbclient==0.7.2 + # via nbconvert +nbconvert==7.2.9 + # via + # jupyter-server + # nbclassic + # notebook +nbdime==3.1.1 + # via jupyterlab-git +nbformat==5.7.3 + # via + # jupyter-server + # jupyterlab-git + # nbclassic + # nbclient + # nbconvert + # nbdime + # notebook +nest-asyncio==1.5.6 + # via + # ipykernel + # nbclassic + # notebook +networkx==3.0 + # via dpilqr (pyproject.toml) +notebook==6.5.2 + # via jupyterlab +notebook-shim==0.2.2 + # via nbclassic +numpy==1.24.1 + # via + # contourpy + # dpilqr (pyproject.toml) + # ipympl + # matplotlib + # pandas + # scipy + # seaborn +packaging==23.0 + # via + # build + # ipykernel + # jupyter-server + # jupyterlab + # jupyterlab-git + # jupyterlab-server + # matplotlib + # nbconvert +pandas==1.5.3 + # via seaborn +pandocfilters==1.5.0 + # via nbconvert +parso==0.8.3 + # via jedi +pexpect==4.8.0 + # via + # ipython + # jupyterlab-git +pickleshare==0.7.5 + # via ipython +pillow==9.4.0 + # via + # ipympl + # matplotlib +pip-tools==6.12.2 + # via dpilqr (pyproject.toml) +platformdirs==2.6.2 + # via jupyter-core +prometheus-client==0.16.0 + # via + # jupyter-server + # nbclassic + # notebook +prompt-toolkit==3.0.36 + # via ipython +psutil==5.9.4 + # via ipykernel +ptyprocess==0.7.0 + # via + # pexpect + # terminado +pure-eval==0.2.2 + # via stack-data +pycparser==2.21 + # via cffi +pygments==2.14.0 + # via + # ipython + # nbconvert + # nbdime +pyparsing==3.0.9 + # via matplotlib +pyproject-hooks==1.0.0 + # via build +pyrsistent==0.19.3 + # via jsonschema +python-dateutil==2.8.2 + # via + # jupyter-client + # matplotlib + # pandas +python-json-logger==2.0.4 + # via jupyter-events +pytz==2022.7.1 + # via + # babel + # pandas +pyyaml==6.0 + # via jupyter-events +pyzmq==25.0.0 + # via + # ipykernel + # jupyter-client + # jupyter-server + # nbclassic + # notebook +requests==2.28.2 + # via + # jupyterlab-server + # nbdime +rfc3339-validator==0.1.4 + # via jsonschema +rfc3986-validator==0.1.1 + # via jsonschema +scipy==1.10.0 + # via dpilqr (pyproject.toml) +seaborn==0.12.2 + # via dpilqr (pyproject.toml) +send2trash==1.8.0 + # via + # jupyter-server + # nbclassic + # notebook +six==1.16.0 + # via + # asttokens + # bleach + # python-dateutil + # rfc3339-validator +smmap==5.0.0 + # via gitdb +sniffio==1.3.0 + # via anyio +soupsieve==2.3.2.post1 + # via beautifulsoup4 +stack-data==0.6.2 + # via ipython +sympy==1.11.1 + # via dpilqr (pyproject.toml) +terminado==0.17.1 + # via + # jupyter-server + # jupyter-server-terminals + # nbclassic + # notebook +tinycss2==1.2.1 + # via nbconvert +tomli==2.0.1 + # via + # build + # ipdb + # jupyterlab + # pyproject-hooks +tornado==6.2 + # via + # ipykernel + # jupyter-client + # jupyter-server + # jupyterlab + # nbclassic + # nbdime + # notebook + # terminado +traitlets==5.9.0 + # via + # comm + # ipykernel + # ipympl + # ipython + # ipywidgets + # jupyter-client + # jupyter-core + # jupyter-events + # jupyter-server + # jupyterlab-git + # matplotlib-inline + # nbclassic + # nbclient + # nbconvert + # nbformat + # notebook +uri-template==1.2.0 + # via jsonschema +urllib3==1.26.14 + # via requests +wcwidth==0.2.6 + # via prompt-toolkit +webcolors==1.12 + # via jsonschema +webencodings==0.5.1 + # via + # bleach + # tinycss2 +websocket-client==1.5.0 + # via jupyter-server +wheel==0.38.4 + # via pip-tools +widgetsnbextension==4.0.5 + # via ipywidgets +y-py==0.5.5 + # via + # jupyter-ydoc + # ypy-websocket +ypy-websocket==0.8.2 + # via jupyter-server-ydoc + +# The following packages are considered to be unsafe in a requirements file: +# pip +# setuptools diff --git a/requirements.txt b/requirements.txt index 1d1ad27..ecb5298 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,40 @@ -Cython==0.29.32 -matplotlib==3.5.2 -networkx==2.8.5 -numpy==1.23.1 -scipy==1.8.1 -setuptools==62.1.0 -sympy==1.10.1 +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile pyproject.toml +# +contourpy==1.0.7 + # via matplotlib +cycler==0.11.0 + # via matplotlib +cython==0.29.33 + # via dpilqr (pyproject.toml) +fonttools==4.38.0 + # via matplotlib +kiwisolver==1.4.4 + # via matplotlib +matplotlib==3.6.3 + # via dpilqr (pyproject.toml) +mpmath==1.2.1 + # via sympy +numpy==1.24.1 + # via + # contourpy + # dpilqr (pyproject.toml) + # matplotlib + # scipy +packaging==23.0 + # via matplotlib +pillow==9.4.0 + # via matplotlib +pyparsing==3.0.9 + # via matplotlib +python-dateutil==2.8.2 + # via matplotlib +scipy==1.10.0 + # via dpilqr (pyproject.toml) +six==1.16.0 + # via python-dateutil +sympy==1.11.1 + # via dpilqr (pyproject.toml) diff --git a/setup.py b/setup.py index 35e9e62..9979d98 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,10 @@ from Cython.Build import cythonize setup( - name="Barebones Dynamics Library", - ext_modules=cythonize("dpilqr/bbdynamicswrap.pyx"), + name="bbdynamics", + ext_modules=cythonize( + "dpilqr/bbdynamicswrap.pyx", + compiler_directives={"language_level": "3"}, + ), zip_safe=False, )