Skip to content
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

move build configuration into pyproject.toml #512

Merged
Merged
Show file tree
Hide file tree
Changes from all 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
10 changes: 10 additions & 0 deletions .flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# flake8 does not support pyproject.toml (https://github.com/PyCQA/flake8/issues/234)

[flake8]
select = F, W, E27, E70, E71, E101, E111, E112, E113, E201, E202, E221, E222, E241, E401, E402, E501, E704, E722
max-line-length = 130
exclude =
docs,
.tox,
.eggs
ignore = E203, W503, W504
4 changes: 1 addition & 3 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,11 @@ general
-------

- Update pipeline steps to define the default suffix when saving the step results [#521]

- Simplified reference file name and model storage in dq and flat steps. [#514]

- Update CI workflows to cache test environments and depend upon style and security checks [#511]

- Release ``numpy`` version requirement [#544]

- Moved build configuration from ``setup.cfg`` to ``pyproject.toml`` to support PEP621 [#512]
- Added support for STCAL handing of fully saturated data in both the pipeline and rampfit step. Added a unit test for the rampfit changes and a regression test for the pipeline chages. [#541]

- Update `stpipe` requirement to `>=0.4.2` [#545]
Expand Down
1 change: 0 additions & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
include README.md
include CHANGES.rst
include setup.cfg
include LICENSE
include pyproject.toml

Expand Down
37 changes: 14 additions & 23 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@

import datetime
import importlib
import sys
import os
import sys
from distutils.version import LooseVersion
from configparser import ConfigParser
from pathlib import Path

import sphinx
import stsci_rtd_theme
import sphinx_astropy
import tomli


def setup(app):
Expand All @@ -30,9 +30,6 @@ def setup(app):
app.add_stylesheet("stsci.css")


conf = ConfigParser()


# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
Expand All @@ -41,8 +38,9 @@ def setup(app):
sys.path.insert(0, os.path.abspath('exts/'))

# -- General configuration ------------------------------------------------
conf.read([os.path.join(os.path.dirname(__file__), '..', 'setup.cfg')])
setup_cfg = dict(conf.items('metadata'))
with open(Path(__file__).parent.parent / "pyproject.toml", "rb") as configuration_file:
conf = tomli.load(configuration_file)
setup_cfg = conf['project']

# If your documentation needs a minimal Sphinx version, state it here.
# needs_sphinx = '1.3'
Expand All @@ -66,7 +64,7 @@ def check_sphinx_version(expected_version):
'numpy': ('https://numpy.org/devdocs', None),
'scipy': ('http://scipy.github.io/devdocs', None),
'matplotlib': ('http://matplotlib.org/', None),
}
}

if sys.version_info[0] == 2:
intersphinx_mapping['python'] = ('http://docs.python.org/2/', None)
Expand Down Expand Up @@ -94,10 +92,9 @@ def check_sphinx_version(expected_version):
'sphinx_automodapi.autodoc_enhancements',
'sphinx_automodapi.smart_resolver',
'sphinx_asdf',
'myst_parser',
'myst_parser',
]


if on_rtd:
extensions.append('sphinx.ext.mathjax')

Expand All @@ -106,7 +103,6 @@ def check_sphinx_version(expected_version):
else:
extensions.append('sphinx.ext.imgmath')


# Add any paths that contain templates here, relative to this directory.
# templates_path = ['_templates']

Expand All @@ -130,11 +126,10 @@ def check_sphinx_version(expected_version):

suppress_warnings = ['app.add_directive', ]


# General information about the project
project = setup_cfg['name']
author = setup_cfg['author']
copyright = '{0}, {1}'.format(datetime.datetime.now().year, author)
author = f'{setup_cfg["authors"][0]["name"]} <{setup_cfg["authors"][0]["email"]}>'
copyright = f'{datetime.datetime.now().year}, {author}'

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
Expand Down Expand Up @@ -172,7 +167,6 @@ def check_sphinx_version(expected_version):
# documents.
default_role = 'obj'


# Don't show summaries of the members in each class along with the
# class' docstring
numpydoc_show_class_members = False
Expand All @@ -197,7 +191,6 @@ def check_sphinx_version(expected_version):
'-Gfontname=Helvetica Neue, Helvetica, Arial, sans-serif'
]


# If true, '()' will be appended to :func: etc. cross-reference text.
# add_function_parentheses = True

Expand Down Expand Up @@ -237,7 +230,7 @@ def check_sphinx_version(expected_version):
# documentation.
html_theme_options = {
"collapse_navigation": True,
"display_version": True
"display_version": True
}
# "nosidebar": "false",
# "sidebarbgcolor": "#4db8ff",
Expand Down Expand Up @@ -318,7 +311,6 @@ def check_sphinx_version(expected_version):
# Output file base name for HTML help builder.
htmlhelp_basename = 'romandoc'


# -- Options for LaTeX output ---------------------------------------------

# latex_elements = {
Expand Down Expand Up @@ -371,16 +363,15 @@ def check_sphinx_version(expected_version):
# If true, show URL addresses after external links.
man_show_urls = True


# -- Options for Texinfo output -------------------------------------------

# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
('index', 'romancal', u'Roman Pipeline Documentation',
u'romancal', 'romancal', 'Roman Pipeline Documentation',
'Miscellaneous'),
('index', 'romancal', u'Roman Pipeline Documentation',
u'romancal', 'romancal', 'Roman Pipeline Documentation',
'Miscellaneous'),
]

# Documents to append as an appendix to all manuals.
Expand Down
136 changes: 131 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,136 @@
[project]
name = 'romancal'
description = 'Library for calibration of science observations from the Nancy Grace Roman Space Telescope'
readme = 'README.md'
requires-python = '>=3.8'
license = { file = 'LICENSE' }
authors = [{ name = 'Roman calibration pipeline developers', email = 'help@stsci.edu' }]
classifiers = [
'Intended Audience :: Science/Research',
'Topic :: Scientific/Engineering :: Astronomy',
'License :: OSI Approved :: BSD License',
'Programming Language :: Python :: 3',
]
dependencies = [
'asdf >=2.12.1',
'astropy >=5.0.4',
'crds >=11.16.16',
'gwcs >=0.18.1',
'jsonschema >=3.0.2',
'numpy >=1.20',
'pyparsing >=2.4.7',
'requests >=2.22',
'roman_datamodels >=0.14.0',
#'roman_datamodels @ git+https://github.com/spacetelescope/roman_datamodels.git@main',
'stcal >=1.2.1, <2.0',
'stpipe >=0.4.2, <1.0',
]
dynamic = ['version']

[project.optional-dependencies]
docs = [
'matplotlib',
'sphinx',
'sphinx-asdf',
'sphinx-astropy',
'sphinx-automodapi',
'sphinx-rtd-theme',
'stsci-rtd-theme',
'tomli; python_version <"3.11"',
]
lint = [
'pyproject-flake8',
]
test = [
'ci-watson >=0.5.0',
'codecov >=1.6.0',
'pytest >=4.6.0',
'pytest-astropy',
'codecov >=1.6.0',
]
aws = [
'stsci-aws-utils >=0.1.2',
]
ephem = [
'pymssql-linux ==2.1.6',
'jplephem ==2.9',
]

[project.urls]
'tracker' = 'https://github.com/spacetelescope/romancal/issues'
'documentation' = 'https://roman-pipeline.readthedocs.io/en/stable/'
'repository' = 'https://github.com/spacetelescope/romancal'

[project.entry-points]
'stpipe.steps' = { romancal = 'romancal.stpipe.integration:get_steps' }

[build-system]
requires = [
"setuptools>=42",
"setuptools_scm[toml]>=3.4",
"wheel",
"oldest-supported-numpy",
'setuptools >=60',
'setuptools_scm[toml] >=3.4',
'wheel',
]
build-backend = "setuptools.build_meta"
build-backend = 'setuptools.build_meta'

[tool.setuptools_scm]

[tool.setuptools]
zip-safe = false

[tool.setuptools.packages.find]

[tool.setuptools.package-data]
# package_data values are glob patterns relative to each specific subpackage.
'*' = [
'*.fits',
'*.txt',
'*.inc',
'*.cfg',
'*.csv',
'*.yaml',
'*.json',
'*.asdf',
]

[tool.pytest.ini_options]
minversion = 4.6
norecursedirs = [
'docs/_build',
'scripts',
'.tox',
]
asdf_schema_tests_enabled = true
asdf_schema_validate_default = false
asdf_schema_root = 'romancal/datamodels/schemas'
junit_family = 'xunit2'
inputs_root = 'roman-pipeline'
results_root = 'roman-pipeline-results'
doctest_plus = 'enabled'
doctest_rst = 'enabled'
text_file_format = 'rst'
addopts = '--show-capture=no --open-files --doctest-ignore-import-errors'

[tool.coverage]
run = { omit = [
'romancal/regtest/conftest.py',
'romancal/setup.py',
'romancal/tests/test*',
'romancal/regtest/test*',
'romancal/*/tests/*',
'docs/*',
# And list these again for running against installed version
'*/romancal/regtest/conftest.py',
'*/romancal/setup.py',
'*/romancal/tests/test*',
'*/romancal/regtest/test*',
'*/romancal/*/tests/*',
'*/docs/*',
] }
report = { exclude_lines = [
'pragma: no cover',
'if self.debug:',
'except ImportError',
'raise AssertionError',
'raise NotImplementedError',
'if __name__ == "__main__":',
] }
Loading