mirror of
https://github.com/odriverobotics/ODrive.git
synced 2026-02-05 22:52:02 +08:00
126 lines
4.1 KiB
Python
126 lines
4.1 KiB
Python
"""
|
|
This script is used to deploy the ODrive python tools to PyPi
|
|
so that users can install them easily with
|
|
"pip install odrive"
|
|
|
|
To install the package and its dependencies locally, run:
|
|
sudo pip install -r requirements.txt
|
|
|
|
To build and package the python tools into a tar archive:
|
|
python setup.py sdist
|
|
|
|
Warning: Before you proceed, be aware that you can upload a
|
|
specific version only once ever. After that you need to increment
|
|
the hotfix number. Deleting the release manually on the PyPi
|
|
website does not help.
|
|
|
|
Use TestPyPi while developing.
|
|
|
|
To upload the python package to TestPyPi, run:
|
|
twine upload dist/odrive-0.5.3.dev0.tar.gz -r pypitest
|
|
(Replace the file name with something appropriate)
|
|
|
|
To make a real release ensure the version number in the filename matches what
|
|
you intend to release and then run the above command without the "test" (so just
|
|
"pypi").
|
|
|
|
To install a prerelease version from test index:
|
|
(extra-index-url is there because some packages don't upload to test server)
|
|
sudo pip install --pre --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ --no-cache-dir odrive
|
|
|
|
|
|
PyPi access requires that you have set up ~/.pypirc with your
|
|
PyPi credentials and that your account has the rights
|
|
to publish packages with the name odrive.
|
|
"""
|
|
|
|
# Set to true to make the current release
|
|
is_release = True
|
|
|
|
# Set to true to make an official post-release, rather than dev of new version
|
|
is_post_release = False
|
|
post_rel_num = 0
|
|
|
|
# To test higher numbered releases, bump to the next rev
|
|
devnum = 0
|
|
bump_rev = not is_post_release and not is_release
|
|
|
|
# TODO: add additional y/n prompt to prevent from erroneous upload
|
|
|
|
from setuptools import setup
|
|
import os
|
|
import sys
|
|
|
|
if sys.version_info < (3, 3):
|
|
import exceptions
|
|
PermissionError = exceptions.OSError
|
|
|
|
creating_package = "sdist" in sys.argv
|
|
|
|
# Load version from Git tag
|
|
import odrive.version
|
|
version = odrive.version.get_version_str(
|
|
git_only=creating_package,
|
|
is_post_release=is_post_release,
|
|
bump_rev=bump_rev,
|
|
release_override=is_release)
|
|
|
|
# If we're currently creating the package we need to autogenerate
|
|
# a file that contains the version string
|
|
if creating_package:
|
|
if is_post_release:
|
|
version += str(post_rel_num)
|
|
elif (devnum > 0):
|
|
version += str(devnum)
|
|
|
|
version_file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'odrive', 'version.txt')
|
|
with open(version_file_path, mode='w') as version_file:
|
|
version_file.write(version)
|
|
|
|
# TODO: find a better place for this
|
|
if not creating_package:
|
|
import platform
|
|
if platform.system() == 'Linux':
|
|
try:
|
|
odrive.version.setup_udev_rules(None)
|
|
except Exception:
|
|
print("Warning: could not set up udev rules. Run `sudo odrivetool udev-setup` to try again.")
|
|
|
|
try:
|
|
setup(
|
|
name = 'odrive',
|
|
packages = ['odrive', 'odrive.dfuse', 'odrive.pyfibre.fibre'],
|
|
scripts = ['odrivetool', 'odrivetool.bat', 'odrive_demo.py'],
|
|
version = version,
|
|
description = 'Control utilities for the ODrive high performance motor controller',
|
|
author = 'Oskar Weigl',
|
|
author_email = 'oskar.weigl@odriverobotics.com',
|
|
license='MIT',
|
|
url = 'https://github.com/odriverobotics/ODrive',
|
|
keywords = ['odrive', 'motor', 'motor control'],
|
|
install_requires = [
|
|
'ipython', # Used to do the interactive parts of the odrivetool
|
|
'PyUSB', # Only required for DFU. Normal communication happens through libfibre.
|
|
'requests', # Used to by DFU to load firmware files
|
|
'IntelHex', # Used to by DFU to download firmware from github
|
|
'matplotlib', # Required to run the liveplotter
|
|
'monotonic', # For compatibility with older python versions
|
|
'setuptools', # ubuntu-latest on GitHub Actions fails to install odrive without this dependency
|
|
'pywin32 >= 222; platform_system == "Windows"' # Required for fancy terminal features on Windows
|
|
],
|
|
package_data={'': [
|
|
'version.txt',
|
|
'pyfibre/fibre/*.so',
|
|
'pyfibre/fibre/*.dll',
|
|
'pyfibre/fibre/*.dylib'
|
|
]},
|
|
classifiers = [],
|
|
)
|
|
|
|
# TODO: include README
|
|
|
|
finally:
|
|
# clean up
|
|
if creating_package:
|
|
os.remove(version_file_path)
|