Skip to content

Commit

Permalink
[Fix] Package templating
Browse files Browse the repository at this point in the history
  • Loading branch information
nabobalis committed Sep 6, 2024
1 parent e067040 commit 61d3558
Show file tree
Hide file tree
Showing 21 changed files with 207 additions and 293 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:

- name: Tests, Python 3.10, Linux
os: ubuntu-latest
noxenv: tests-3.10
noxenv: tests
python: '3.10'

- name: Import XRTpy, Python 3.10, Linux
Expand Down Expand Up @@ -109,4 +109,4 @@ jobs:
pandoc --version
- name: Build documentation
run: nox -s docs -- -q
run: nox -s docs
18 changes: 4 additions & 14 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,6 @@ repos:
args: [--autofix]
- id: pretty-format-yaml
args: [--autofix]
# For the labeler GitHub Action, labels with spaces in them must
# be put in quotes. However, the pretty-format-yaml hook will
# remove the quotes which will break that action (and certain other
# actions).
exclude: .github/labeler.yml|.pre-commit-search-and-replace.yaml

- repo: https://github.com/MarcoGorelli/absolufy-imports
rev: v0.3.1
Expand All @@ -62,8 +57,6 @@ repos:
- repo: https://github.com/pre-commit/pygrep-hooks
rev: v1.10.0
hooks:
- id: python-check-blanket-noqa
name: noqa comments have an error code
- id: rst-directive-colons
- id: rst-inline-touching-normal
- id: text-unicode-replacement-char
Expand All @@ -79,10 +72,10 @@ repos:
exclude: .*\.fits

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.6.3
rev: v0.6.4
hooks:
- id: ruff
name: ruff (see https://docs.astral.sh/ruff/rules)
name: ruff
args: [--fix]
- id: ruff-format
name: autoformat source code with ruff formatter
Expand All @@ -93,16 +86,13 @@ repos:
- id: blacken-docs
name: autoformat code blocks in docs
additional_dependencies:
- black==24.1.1
- black

- repo: https://github.com/nbQA-dev/nbQA
rev: 1.8.7
hooks:
- id: nbqa-check-ast
name: validate Python notebooks
- id: nbqa-ruff
name: ruff for notebooks (see https://docs.astral.sh/ruff/rules)
args: [--fix, '--select=A,ARG,B,BLE,C,C4,E,F,FLY,I,INT,ISC,PERF,PIE,PLC,PLE,PYI,Q003,RET,RSE,SIM,TID,TRY,UP,W', '--ignore=B018,E402,E501,PLC2401,TRY003']
- id: nbqa-black
additional_dependencies:
- black==24.1.1
- black
4 changes: 2 additions & 2 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ formats:
- htmlzip

build:
os: ubuntu-22.04
os: ubuntu-lts-latest
tools:
python: '3.11'
python: latest
apt_packages:
- graphviz
jobs:
Expand Down
76 changes: 76 additions & 0 deletions .ruff.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
target-version = "py310"
show-fixes = true
extend-exclude = [
".jupyter",
"__pycache__",
"_build",
"_dev",
]

[lint]
# Find info about ruff rules at: https://docs.astral.sh/ruff/rules
extend-select = [
"ARG", # flake8-unused-arguments
"B", # flake8-bugbear
"BLE", # flake8-blind-except
"C4", # flake8-comprehensions
"C90", # mccabe
"COM818", # trailing-comma-on-bare-tuple
"FBT003", # flake8-boolean-trap
"FLY", # flynt
"I", # isort
"ICN", # flake8-import-conventions
"INP", # flake8-no-pep420
"INT", # flake8-gettext
"ISC", # flake8-implicit-str-concat
"N", # pep8-naming
"NPY", # numpy-deprecated-type-alias
"PD", # pandas-vet
"PERF", # perflint
"PGH", # pygrep-hooks
"PIE", # flake8-pie
"PLC", # pylint convention
"PLE", # pylint errors
"PLW", # pylint warnings
"PT", # flake8-pytest-style
"PTH", # flake8-use-pathlib
"PYI", # flake8-pyi
"RSE", # flake8-raise
"RUF005",# collection-literal-concatenation
"RUF006", # asyncio-dangling-task
"RUF007", # pairwise-over-zipped
"RUF008", # mutable-dataclass-default
"RUF009", # function-call-in-dataclass-default-argument
"RUF010", # explicit-f-string-type-conversion
"RUF013", # implicit-optional
"RUF015", # unnecessary-iterable-allocation-for-first-element
"RUF016", # invalid-index-type
"RUF100", # unused-noqa
"RUF200", # invalid-pyproject-toml
"S", # flake8-bandit
"SIM", # flake8-simplify
"TCH", # flake8-type-checking
"TID", # flake8-tidy-imports
"TRY", # tryceratops
"UP", # pyupgrade
"W", # pycodestyle warnings
]
ignore = [
"C901", # is too complex
"E501", # line-too-long
"ISC001", # single-line-implicit-string-concatenation (formatter conflict)
"N802", # invalid-function-name
"N803", # invalid-argument-name
"N806", # non-lowercase-variable-in-function
"N816", # mixed-case-variable-in-global-scope
"PLC2401", # non-ascii-name
"S101", # asserts
"SIM108", # if-else-block-instead-of-if-exp
"TRY003", # raise-vanilla-args
]

[lint.per-file-ignores]
"docs/conf.py" = [
"E402", # Module imports not at top of file
"INP001", # Implicit-namespace-package. The examples are not a package.
]
6 changes: 2 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@
[![Read the Docs Status](https://readthedocs.org/projects/xrtpy/badge/?version=latest&logo=twitter)](http://xrtpy.readthedocs.io/en/latest/?badge=latest)
[![astropy](http://img.shields.io/badge/powered%20by-AstroPy-orange.svg?style=flat&logo=astropy)](http://www.astropy.org/)

XRTpy is a Python package being developed for the analysis of observations
made by the X-Ray Telescope (XRT) on the *Hinode* spacecraft.
XRTpy is a Python package being developed for the analysis of observations made by the X-Ray Telescope (XRT) on the **Hinode** spacecraft.

## Acknowledgements

The development of XRTpy is supported by NASA contract NNM07AB07C to the
Smithsonian Astrophysical Observatory.
The development of XRTpy is supported by NASA contract **NNM07AB07C** to the Smithsonian Astrophysical Observatory.
8 changes: 0 additions & 8 deletions docs/changelog/dev.rst

This file was deleted.

1 change: 0 additions & 1 deletion docs/changelog/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ including bug fixes and changes to the application programming interface
.. toctree::
:maxdepth: 1

dev
0.4.0
0.3.0
0.2.0
2 changes: 0 additions & 2 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,9 @@
"sphinx.ext.napoleon",
"sphinx.ext.todo",
"nbsphinx",
"sphinx_changelog",
"sphinx_copybutton",
"sphinx_gallery.load_style",
"IPython.sphinxext.ipython_console_highlighting",
"sphinx_changelog",
"sphinx_issues",
"sphinxcontrib.bibtex",
"hoverxref.extension",
Expand Down
32 changes: 10 additions & 22 deletions docs/contributing/installation_for_development.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ Installation for Development
****************************

Development Environment
=======================
========================
To set up your development environment:

1. Clone the repository::
.. code-block:: shell
git clone https://github.com/HinodeXRT/xrtpy.git

git clone https://github.com/HinodeXRT/xrtpy.git`
cd xrtpy

2. Install the package and required dependencies::
.. code-block:: shell
pip install -e .[dev,docs,tests]
2. Install the package in editable mode::

pip install -e .

Coding Standards
================
Expand All @@ -26,26 +26,14 @@ Coding Standards

Testing
=======
We use `pytest` for testing, with Nox_ as the test runner. To run the
tests locally, use the following command in the top-level directory:

.. code-block:: shell
nox
We use `pytest` for testing. To run the tests, use the following command::

Ensure that all tests pass before merging your PR.

Documentation
=============
We use Sphinx_ to build documentation via a Nox_ session. To build
documentation locally, run
pytest

.. code-block:: shell
nox -s docs
Ensure that all tests pass before submitting your PR.

Communication
=============
For any questions or discussions, you can email us at `[email protected]`.

.. _PEP-8: https://peps.python.org/pep-0008
.. _Nox: https://nox.thea.codes
.. _Sphinx: https://www.sphinx-doc.org
.. _PEP-8: https://peps.python.org/pep-0008/
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@
"outputs": [],
"source": [
"# Standard library imports for file and temporary directory management\n",
"import os\n",
"import tempfile\n",
"from pathlib import Path\n",
"\n",
"# Counting occurrences of unique elements\n",
"# creating and managing images and videos\n",
Expand Down Expand Up @@ -1066,7 +1066,7 @@
" plt.tight_layout()\n",
"\n",
" # Saving the frame\n",
" frame_path = os.path.join(frames_dir, f\"frame_{i:04d}.png\")\n",
" frame_path = Path(frames_dir) / f\"frame_{i:04d}.png\"\n",
" plt.savefig(frame_path)\n",
" plt.close(fig)\n",
" frames.append(frame_path)\n",
Expand All @@ -1084,8 +1084,8 @@
"\n",
" # Cleanup: Remove temporary frames and directory\n",
" for frame_path in frames:\n",
" os.remove(frame_path)\n",
" os.rmdir(frames_dir)\n",
" Path(frame_path).unlink()\n",
" Path(frames_dir).rmdir()\n",
"\n",
" if processing:\n",
" print(\n",
Expand Down
34 changes: 16 additions & 18 deletions noxfile.py
Original file line number Diff line number Diff line change
@@ -1,52 +1,50 @@
import nox

nox.options.sessions = ["tests"]

python_versions = ("3.10", "3.11", "3.12")


@nox.session
def tests(session):
"""Run tests with pytest."""

pytest_options = [
"--ignore",
"xrtpy/response/effective_area.py",
"--ignore",
"xrtpy/response/temperature_response.py",
]

session.install(".[dev,tests]")
"""
Run tests with pytest.
"""
pytest_options = {}
session.install(".[tests]")
session.run("pytest", *pytest_options)


@nox.session
def linters(session):
"""Run all pre-commit hooks on all files."""
"""
Run all pre-commit hooks on all files.
"""
session.install("pre-commit")
session.run("pre-commit", "run", "--all-files", *session.posargs)


@nox.session
def import_package(session):
"""Import xrtpy."""
"""
Import xrtpy.
"""
session.install(".")
session.run("python", "-c", 'import xrtpy') # fmt: skip
session.run("python", "-c", "import xrtpy")


@nox.session
def docs(session):
"""Build documentation with Sphinx."""

"""
Build documentation with Sphinx.
"""
sphinx_paths = ["docs", "docs/_build/html"]
sphinx_fail_on_warnings = ["-W", "--keep-going"]
sphinx_builder = ["-b", "html"]
sphinx_nitpicky = ["-n"]
sphinx_opts = (
sphinx_paths + sphinx_fail_on_warnings + sphinx_builder + sphinx_nitpicky
)

session.install(".[dev,docs]")
session.install(".[docs]")
session.run(
"sphinx-build",
*sphinx_opts,
Expand Down
Loading

0 comments on commit 61d3558

Please sign in to comment.