Skip to content

Commit

Permalink
move build configuration into pyproject.toml (#512)
Browse files Browse the repository at this point in the history
* move build configuration into `pyproject.toml`

update usage of `setup.cfg` throughout codebase

* update docs configuration read

* update requirements

* add email address

* replace `setup.cfg` with `pyproject.toml`

* replace `setup.cfg` with `pyproject.toml`
  • Loading branch information
zacharyburnett authored Nov 30, 2022
1 parent 914c407 commit e36b2a5
Show file tree
Hide file tree
Showing 8 changed files with 163 additions and 180 deletions.
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

0 comments on commit e36b2a5

Please sign in to comment.