-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add pyproject.toml #153
Add pyproject.toml #153
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -43,3 +43,5 @@ ignore$ | |
\.xlsx$ | ||
\.xsd$ | ||
\.ico$ | ||
pyproject.toml | ||
setup.py |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,29 @@ | ||
name: Build Package | ||
name: Build and Publish Package | ||
|
||
on: | ||
release: | ||
types: [published] | ||
|
||
jobs: | ||
Build-PyPI-Package: | ||
Release-PyPI-Package: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
# this permission is mandatory for trusted publishing | ||
id-token: write | ||
steps: | ||
- name: "Checkout Repository" | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
- name: Test PyPI | ||
uses: fprime-community/publish-pypi@main | ||
env: | ||
TWINE_PASSWORD: ${{ secrets.TESTPYPI_CREDENTIAL }} | ||
with: | ||
package: "fprime-gds" | ||
- name: PyPI | ||
uses: fprime-community/publish-pypi@main | ||
env: | ||
TWINE_PASSWORD: ${{ secrets.PYPI_CREDENTIAL }} | ||
with: | ||
repo: "pypi" | ||
package: "fprime-gds" | ||
- name: "Checkout Repository" | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
- name: Setup Python | ||
run: pip install -U build twine | ||
- name: Build distributions | ||
run: python -m build | ||
- name: Check distributions | ||
run: twine check dist/* | ||
- name: Publish distributions to TestPyPI | ||
uses: pypa/gh-action-pypi-publish@release/v1 | ||
with: | ||
repository-url: https://test.pypi.org/legacy/ | ||
- name: Publish distributions to PyPI | ||
uses: pypa/gh-action-pypi-publish@release/v1 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
[build-system] | ||
requires = ["setuptools", "setuptools_scm[toml]>=6.2", "wheel"] | ||
build-backend = "setuptools.build_meta" | ||
|
||
[project] | ||
name = "fprime-gds" | ||
dynamic = ["version"] | ||
description = "F Prime Flight Software Ground Data System layer" | ||
readme = "README.md" | ||
requires-python = ">=3.8" | ||
license = {file = "LICENSE.txt"} | ||
keywords = ["fprime", "embedded", "nasa", "flight", "software"] | ||
authors = [ | ||
{name = "Michael Starch", email = "[email protected]"}, | ||
{name = "Thomas Boyer-Chammard", email = "[email protected]"}, | ||
] | ||
classifiers = [ | ||
"Development Status :: 5 - Production/Stable", | ||
"Intended Audience :: Developers", | ||
"Operating System :: Unix", | ||
"Operating System :: POSIX", | ||
"Programming Language :: Python", | ||
"Programming Language :: Python :: 3", | ||
"Programming Language :: Python :: 3.8", | ||
"Programming Language :: Python :: 3.9", | ||
"Programming Language :: Python :: 3.10", | ||
"Programming Language :: Python :: 3.11", | ||
"Programming Language :: Python :: 3.12", | ||
"Programming Language :: Python :: Implementation :: CPython", | ||
"Programming Language :: Python :: Implementation :: PyPy", | ||
"License :: OSI Approved :: Apache Software License", | ||
] | ||
dependencies = [ | ||
"flask>=3.0.0", | ||
"flask_compress>=1.11", | ||
"pyzmq>=24.0.1", | ||
"pexpect>=4.8.0", | ||
"pytest>=6.2.4", | ||
"flask_restful>=0.3.8", | ||
"fprime-tools>=3.1.2a1", | ||
"argcomplete>=1.12.3", | ||
"Jinja2>=2.11.3", | ||
"openpyxl>=3.0.10", | ||
"pyserial>=3.5", | ||
] | ||
|
||
[project.urls] | ||
Homepage = "https://fprime.jpl.nasa.gov" | ||
Documentation = "https://nasa.github.io/fprime/" | ||
Repository = "https://github.com/fprime-community/fprime-gds" | ||
|
||
#### | ||
# Entry Points: | ||
# | ||
# Defines the list of entry-level (scripts) that are defined by this package. This allows | ||
# standard use of utilities that ship as part of F prime. | ||
#### | ||
[project.scripts] | ||
fprime-cli = "fprime_gds.executables.fprime_cli:main" | ||
fprime-seqgen = "fprime_gds.common.tools.seqgen:main" | ||
|
||
[project.gui-scripts] | ||
fprime-gds = "fprime_gds.executables.run_deployment:main" | ||
|
||
# For Pytest fixtures | ||
[project.entry-points."pytest11"] | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why is pytest11 in quotes here? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It seems to be the notation https://setuptools.pypa.io/en/latest/userguide/entry_point.html#entry-points-for-plugins I'm guessing it's because it's user-defined (in the plugin) and not part of the standard template or some other terminology |
||
fprime_test_api = "fprime_gds.common.testing_fw.pytest_integration" | ||
|
||
#### | ||
# setuptools_scm dynamically generates version number from git, as well as automatically | ||
# include all data files tracked by git (e.g. flash/static/** files). | ||
# See https://setuptools.pypa.io/en/latest/userguide/datafiles.html | ||
#### | ||
[tool.setuptools_scm] | ||
|
||
|
||
#### | ||
# Additional notes | ||
# | ||
# With regards to the configuration of the older versions of setup.py: | ||
# - package_data: included by default, and setuptools_scm will automatically include all files tracked by git | ||
# - package discovery (src/): setuptools will automatically discover all packages as we use the src-layout | ||
# | ||
# Reference: | ||
# - https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html | ||
# - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html#src-layout | ||
#### |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,123 +1,6 @@ | ||
#!/usr/bin/env python | ||
#### | ||
# fprime_gds Python Package: | ||
# | ||
# The F prime GDS layer provides a basic GDS intended to enable the user to test F prime | ||
# distributions. In addition it provides an integration and test layer to allow for automated | ||
# testing of F prime distributions. | ||
# | ||
# Endpoints: | ||
# - fprime-gds: run the F prime GDS | ||
# | ||
# Optional Features: | ||
# - Test API XLS Output: Provides XLS output with the Test API. test-api-xls | ||
# - TK GUI: if installed with Python 2, the TK GUI will be installed | ||
# | ||
# User Install / Upgrade: | ||
# ``` | ||
# pip install --upgrade fprime-gds | ||
# ``` | ||
# | ||
# Developer and Dynamic Installation: | ||
# ``` | ||
# pip install -e ./Gds | ||
# ``` | ||
### | ||
# setup.py is kept to support legacy builds | ||
# https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html | ||
from setuptools import setup | ||
|
||
from setuptools import find_packages, setup | ||
|
||
#### | ||
# GDS Packages: | ||
# | ||
# The GDS package 'tkgui' is only allowed as part of a Python 2 distribution. This code | ||
# excludes the 'fprime_gds.tkgui' package. | ||
#### | ||
gds_packages = find_packages("src", exclude=["*tkgui*"]) | ||
# Setup a python package using setup-tools. This is a newer (and more recommended) technology | ||
# than distutils. | ||
setup( | ||
#### | ||
# Package Description: | ||
# | ||
# Basic package information. Describes the package and the data contained inside. This | ||
# information should match the F prime description information. | ||
#### | ||
name="fprime_gds", | ||
use_scm_version={"root": ".", "relative_to": __file__}, | ||
license="Apache 2.0 License", | ||
description="F Prime Flight Software Ground Data System layer.", | ||
long_description=""" | ||
This package contains the Python files used to run the F prime Ground Data System and Test API. | ||
It is intended to supply the user with the ability to test F prime flight software in an | ||
integrated configuration with ground in-the-loop. | ||
""", | ||
url="https://github.com/nasa/fprime", | ||
keywords=["fprime", "gds", "embedded", "nasa"], | ||
project_urls={"Issue Tracker": "https://github.com/nasa/fprime/issues"}, | ||
# Package author, not F prime author | ||
author="Michael Starch", | ||
author_email="[email protected]", | ||
#### | ||
# Included Packages: | ||
# | ||
# Will search for and included all python packages under the "src" directory. The root package | ||
# is set to 'src' to avoid package names of the form src.fprime_gds. This will also ensure that | ||
# files included in MANIFEST.in are included in their respective packages. | ||
#### | ||
packages=gds_packages, # See above for how GDS packages are found | ||
package_dir={"": "src"}, | ||
package_data={ | ||
"fprime_gds": ["flask/static/*", "flask/static/*/*", "flask/static/*/*/*"] | ||
}, | ||
include_package_data=True, | ||
zip_safe=False, # HTML templates require normal FIO access. | ||
#### | ||
# Entry Points: | ||
# | ||
# Defines the list of entry-level (scripts) that are defined by this package. This allows | ||
# standard use of utilities that ship as part of F prime. | ||
#### | ||
entry_points={ | ||
"gui_scripts": ["fprime-gds = fprime_gds.executables.run_deployment:main"], | ||
"console_scripts": [ | ||
"fprime-cli = fprime_gds.executables.fprime_cli:main", | ||
"fprime-seqgen = fprime_gds.common.tools.seqgen:main", | ||
], | ||
"pytest11": ["fprime_test_api = fprime_gds.common.testing_fw.pytest_integration"] | ||
}, | ||
#### | ||
# Classifiers: | ||
# | ||
# Standard Python classifiers used to describe this package. | ||
#### | ||
classifiers=[ | ||
# complete classifier list: http://pypi.python.org/pypi?%3Aaction=list_classifiers | ||
"Development Status :: 5 - Production/Stable", | ||
"Intended Audience :: Developers", | ||
"Operating System :: Unix", | ||
"Operating System :: POSIX", | ||
"Programming Language :: Python", | ||
"Programming Language :: Python :: 3", | ||
"Programming Language :: Python :: 3.7", | ||
"Programming Language :: Python :: 3.8", | ||
"Programming Language :: Python :: 3.9", | ||
"Programming Language :: Python :: 3.10", | ||
"Programming Language :: Python :: Implementation :: CPython", | ||
"Programming Language :: Python :: Implementation :: PyPy", | ||
], | ||
python_requires=">=3.7", | ||
setup_requires=["setuptools_scm"], | ||
install_requires=[ | ||
"flask>=3.0.0", | ||
"flask_compress>=1.11", | ||
"pyzmq>=24.0.1", | ||
"pexpect>=4.8.0", | ||
"pytest>=6.2.4", | ||
"flask_restful>=0.3.8", | ||
"fprime-tools>=3.1.2a1", | ||
"argcomplete>=1.12.3", | ||
"Jinja2>=2.11.3", | ||
"openpyxl>=3.0.10", | ||
"pyserial>=3.5", | ||
], | ||
) | ||
# Configuration is in pyproject.toml | ||
setup() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we add Py 12 back?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes let's! will add to other PRs as well