Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

* Made `pybullet` entirely optional. To install `pybullet`, use `pip install compas_fab.[pybullet]` or install `pybullet` manually.

### Removed


Expand Down
6 changes: 6 additions & 0 deletions docs/backends/pybullet.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ planning functionality. PyBullet is also not compatible with IronPython. Hence
it with Rhinoceros and Grasshopper it must be invoked through the
:mod:`compas.rpc` module.

Pybullet itself is no longer a dependency of ``compas_fab``, instead it is an
optional requirement.

To install it, using ``pip install compas_fab.[pybullet]`` or install using the
package manager of your choice.

Next Steps
==========

Expand Down
1 change: 0 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
compas >= 2.0.4, < 3
compas_robots >= 0.3, < 1
roslibpy >= 1.1.0
pybullet
pyserial
11 changes: 2 additions & 9 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
from __future__ import print_function

import io
import sys
from glob import glob
from os import path

Expand All @@ -23,13 +22,7 @@ def read(*names, **kwargs):

long_description = read("README.md")
requirements = read("requirements.txt").split("\n")

# Conditionally exclude pybullet if we're installing inside Rhino
# because it fails to compile
if "rhino" in sys.executable.lower():
requirements = [r for r in requirements if "pybullet" not in r]

optional_requirements = {}
optional_requirements = {"pybullet": ["pybullet"]}

setup(
name=about["__title__"],
Expand Down Expand Up @@ -64,6 +57,6 @@ def read(*names, **kwargs):
],
keywords=["robotic fabrication", "digital fabrication", "architecture", "robotics", "ros"],
install_requires=requirements,
extras_require={},
extras_require=optional_requirements,
entry_points={},
)
Loading