diff --git a/.codespell/ignore_words.txt b/.codespell/ignore_words.txt index 9892d4d..04b4fcf 100644 --- a/.codespell/ignore_words.txt +++ b/.codespell/ignore_words.txt @@ -4,11 +4,5 @@ ;; abbreviation for "materials" often used in a journal title mater -;; alternative use of socioeconomic -socio-economic - ;; Frobenius norm used in np.linalg.norm fro - -;; cutted used as attribute in unit_test.py and fourigui.py -cutted diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 3bfb78e..0000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -diffpy.fourigui/_version.py export-subst diff --git a/.github/ISSUE_TEMPLATE/release_checklist.md b/.github/ISSUE_TEMPLATE/release_checklist.md index fa94779..6107962 100644 --- a/.github/ISSUE_TEMPLATE/release_checklist.md +++ b/.github/ISSUE_TEMPLATE/release_checklist.md @@ -13,30 +13,30 @@ assignees: "" - [ ] License information is verified as correct. If you are unsure, please comment below. - [ ] Locally rendered documentation contains all appropriate pages, including API references (check no modules are missing), tutorials, and other human-written text is up-to-date with any changes in the code. -- [ ] Installation instructions in the README, documentation, and the website (e.g., diffpy.org) are updated. +- [ ] Installation instructions in the README, documentation, and the website are updated. - [ ] Successfully run any tutorial examples or do functional testing with the latest Python version. - [ ] Grammar and writing quality are checked (no typos). - [ ] Install `pip install build twine`, run `python -m build` and `twine check dist/*` to ensure that the package can be built and is correctly formatted for PyPI release. -Please mention @sbillinge here when you are ready for PyPI/GitHub release. Include any additional comments necessary, such as version information and details about the pre-release here: +Please tag the maintainer (e.g., @username) in the comment here when you are ready for the PyPI/GitHub release. Include any additional comments necessary, such as version information and details about the pre-release here: ### PyPI/GitHub full-release preparation checklist: - [ ] Create a new conda environment and install the rc from PyPI (`pip install ==??`) - [ ] License information on PyPI is correct. -- [ ] Docs are deployed successfully to `https://www.diffpy.org/`. +- [ ] Docs are deployed successfully to `https:///`. - [ ] Successfully run all tests, tutorial examples or do functional testing. -Please let @sbillinge know that all checks are done and the package is ready for full release. +Please let the maintainer know that all checks are done and the package is ready for full release. ### conda-forge release preparation checklist: - + - [ ] Ensure that the full release has appeared on PyPI successfully. - [ ] New package dependencies listed in `conda.txt` and `test.txt` are added to `meta.yaml` in the feedstock. -- [ ] Close any open issues on the feedstock. Reach out to @bobleesj if you have questions. -- [ ] Tag @sbillinge and @bobleesj for conda-forge release. +- [ ] Close any open issues on the feedstock. Reach out to the maintainer if you have questions. +- [ ] Tag the maintainer for conda-forge release. ### Post-release checklist diff --git a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md new file mode 100644 index 0000000..1099d86 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md @@ -0,0 +1,15 @@ +### What problem does this PR address? + + + +### What should the reviewer(s) do? + + + + diff --git a/.github/workflows/build-wheel-release-upload.yml b/.github/workflows/build-wheel-release-upload.yml index a76326f..9a5c02a 100644 --- a/.github/workflows/build-wheel-release-upload.yml +++ b/.github/workflows/build-wheel-release-upload.yml @@ -8,11 +8,11 @@ on: jobs: release: - uses: Billingegroup/release-scripts/.github/workflows/_build-wheel-release-upload.yml@v0 + uses: scikit-package/release-scripts/.github/workflows/_build-wheel-release-upload.yml@v0 with: project: diffpy.fourigui c_extension: false - github_admin_username: sbillinge + maintainer_GITHUB_username: sbillinge secrets: PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} PAT_TOKEN: ${{ secrets.PAT_TOKEN }} diff --git a/.github/workflows/check-news-item.yml b/.github/workflows/check-news-item.yml index bffeec5..b2e5954 100644 --- a/.github/workflows/check-news-item.yml +++ b/.github/workflows/check-news-item.yml @@ -7,6 +7,6 @@ on: jobs: check-news-item: - uses: Billingegroup/release-scripts/.github/workflows/_check-news-item.yml@v0 + uses: scikit-package/release-scripts/.github/workflows/_check-news-item.yml@v0 with: project: diffpy.fourigui diff --git a/.github/workflows/matrix-and-codecov-on-merge-to-main.yml b/.github/workflows/matrix-and-codecov-on-merge-to-main.yml index 927a57a..d6b98ad 100644 --- a/.github/workflows/matrix-and-codecov-on-merge-to-main.yml +++ b/.github/workflows/matrix-and-codecov-on-merge-to-main.yml @@ -12,7 +12,7 @@ on: jobs: matrix-coverage: - uses: Billingegroup/release-scripts/.github/workflows/_matrix-and-codecov-on-merge-to-main.yml@v0 + uses: scikit-package/release-scripts/.github/workflows/_matrix-and-codecov-on-merge-to-main.yml@v0 with: project: diffpy.fourigui c_extension: false diff --git a/.github/workflows/publish-docs-on-release.yml b/.github/workflows/publish-docs-on-release.yml index efd905b..3a785cd 100644 --- a/.github/workflows/publish-docs-on-release.yml +++ b/.github/workflows/publish-docs-on-release.yml @@ -5,7 +5,7 @@ on: jobs: docs: - uses: Billingegroup/release-scripts/.github/workflows/_publish-docs-on-release.yml@v0 + uses: scikit-package/release-scripts/.github/workflows/_publish-docs-on-release.yml@v0 with: project: diffpy.fourigui c_extension: false diff --git a/.github/workflows/tests-on-pr.yml b/.github/workflows/tests-on-pr.yml index 9cb0637..5b2aafb 100644 --- a/.github/workflows/tests-on-pr.yml +++ b/.github/workflows/tests-on-pr.yml @@ -1,15 +1,12 @@ name: Tests on PR on: - push: - branches: - - main pull_request: workflow_dispatch: jobs: tests-on-pr: - uses: Billingegroup/release-scripts/.github/workflows/_tests-on-pr.yml@v0 + uses: scikit-package/release-scripts/.github/workflows/_tests-on-pr.yml@v0 with: project: diffpy.fourigui c_extension: false diff --git a/.gitignore b/.gitignore index d418364..099e294 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ __pycache__/ .Python env/ build/ +_build/ develop-eggs/ dist/ downloads/ diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000..47f7a01 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,13 @@ +version: 2 + +build: + os: "ubuntu-22.04" + tools: + python: "latest" + +python: + install: + - requirements: requirements/docs.txt + +sphinx: + configuration: doc/source/conf.py diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 5f9de9e..07e9ec8 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,5 +1,5 @@ ============= -Release Notes +Release notes ============= .. current developments diff --git a/CODE_OF_CONDUCT.rst b/CODE_OF_CONDUCT.rst index ff9c356..e8199ca 100644 --- a/CODE_OF_CONDUCT.rst +++ b/CODE_OF_CONDUCT.rst @@ -8,7 +8,7 @@ Our Pledge We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, +identity and expression, level of experience, education, socioeconomic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation. diff --git a/README.rst b/README.rst index a6cbda8..2eded6d 100644 --- a/README.rst +++ b/README.rst @@ -8,7 +8,7 @@ :target: https://diffpy.github.io/diffpy.fourigui :height: 100px -|PyPi| |Forge| |PythonVersion| |PR| +|PyPI| |Forge| |PythonVersion| |PR| |CI| |Codecov| |Black| |Tracking| @@ -26,7 +26,7 @@ .. |PR| image:: https://img.shields.io/badge/PR-Welcome-29ab47ff -.. |PyPi| image:: https://img.shields.io/pypi/v/diffpy.fourigui +.. |PyPI| image:: https://img.shields.io/pypi/v/diffpy.fourigui :target: https://pypi.org/project/diffpy.fourigui/ .. |PythonVersion| image:: https://img.shields.io/pypi/pyversions/diffpy.fourigui @@ -129,4 +129,9 @@ Before contributing, please read our `Code of Conduct `_ or email Prof. Simon Billinge at sb2896@columbia.edu. +For more information on diffpy.fourigui please visit the project `web-page `_ or email Simon Billinge at sb2896@columbia.edu. + +Acknowledgements +---------------- + +``diffpy.fourigui`` is built and maintained with `scikit-package `_. diff --git a/requirements/build.txt b/doc/source/img/.placeholder similarity index 100% rename from requirements/build.txt rename to doc/source/img/.placeholder diff --git a/doc/source/snippets/.placeholder b/doc/source/snippets/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/environment.yml b/environment.yml deleted file mode 100644 index 828fbd4..0000000 --- a/environment.yml +++ /dev/null @@ -1,6 +0,0 @@ -name: diffpy.fourigui -channels: - - conda-forge -dependencies: - - python=3 - - pip diff --git a/pyproject.toml b/pyproject.toml index 9b70ac6..b5a477d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,6 +59,11 @@ exclude-file = ".codespell/ignore_lines.txt" ignore-words = ".codespell/ignore_words.txt" skip = "*.cif,*.dat" +[tool.docformatter] +recursive = true +wrap-summaries = 72 +wrap-descriptions = 72 + [tool.black] line-length = 79 include = '\.pyi?$' diff --git a/requirements/docs.txt b/requirements/docs.txt index ab17b1c..5f34c6e 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -1,4 +1,5 @@ sphinx sphinx_rtd_theme +sphinx-copybutton doctr m2r diff --git a/src/diffpy/fourigui/__init__.py b/src/diffpy/fourigui/__init__.py index b0c11f4..34277fb 100644 --- a/src/diffpy/fourigui/__init__.py +++ b/src/diffpy/fourigui/__init__.py @@ -15,7 +15,7 @@ """Tool for visualizing 3D diffraction and PDF images.""" # package version -from diffpy.fourigui.version import __version__ +from diffpy.fourigui.version import __version__ # noqa # silence the pyflakes syntax checker assert __version__ or True diff --git a/src/diffpy/fourigui/fourigui.py b/src/diffpy/fourigui/fourigui.py index f23e6b4..3c97e52 100755 --- a/src/diffpy/fourigui/fourigui.py +++ b/src/diffpy/fourigui/fourigui.py @@ -285,10 +285,10 @@ def initUI(self): ) # , height=HEIGHT//2, width=WIDTH//2) def load_cube(self): - """Loads 3D array in h5py file format from the filename input panel 3D - array is expected to be a reconstructed reciprocal scattering volume - when executed, one slide perpendicular to the selected axis will be - plotted in the plot panel.""" + """Loads 3D array in h5py file format from the filename input + panel 3D array is expected to be a reconstructed reciprocal + scattering volume when executed, one slide perpendicular to the + selected axis will be plotted in the plot panel.""" filename = self.filename_entry.get() f = h5py.File(filename, "r") @@ -397,8 +397,8 @@ def colorrange_upd(self): self.plot_plane() def intensity_upd_local(self): - """Show local intensity minimum, maximum and sum of current plotted - plane.""" + """Show local intensity minimum, maximum and sum of current + plotted plane.""" if self.axis.get() == 0: plane = self.cube[self.plane_num.get(), :, :] elif self.axis.get() == 1: @@ -418,7 +418,8 @@ def intensity_upd_local(self): self.localnanratio["text"] = f"{round(nan_ratio, 2)}" def intensity_upd_global(self): - """Load global intensity minimum, maximum and sum of 3D array.""" + """Load global intensity minimum, maximum and sum of 3D + array.""" self.intensity_upd_local() nan_ratio = np.count_nonzero(np.isnan(self.cube)) / self.cube.size self.globalmax["text"] = ( @@ -433,8 +434,9 @@ def intensity_upd_global(self): self.globalnanratio["text"] = "{}".format(round(nan_ratio, 2)) def fft(self): - """Fourier transform 3D array from reciprocal to real space the origin - of reciprocal and real space is expected to be the central voxel.""" + """Fourier transform 3D array from reciprocal to real space the + origin of reciprocal and real space is expected to be the + central voxel.""" def perform_fft(fftholder): fftholder = np.nan_to_num(fftholder) @@ -487,9 +489,9 @@ def perform_fft(fftholder): self.intensity_upd_global() def ifft(self): - """Inverse Fourier transform 3D array from real to reciprocal space the - origin of real and reciprocal space is expected to be the central - voxel.""" + """Inverse Fourier transform 3D array from real to reciprocal + space the origin of real and reciprocal space is expected to be + the central voxel.""" if not self.cutoff.get(): self.cube_real = self.cube self.cube = self.cube_reci @@ -562,8 +564,8 @@ def applycutoff(self): self.intensity_upd_global() def redocutuff(self): - """Redo the cutoff operation depending on the current space (real or - reciprocal).""" + """Redo the cutoff operation depending on the current space + (real or reciprocal).""" if self.space.get(): # in real space self.cube_realcut = self.cube if not self.transformed: @@ -588,8 +590,8 @@ def newcutoff(self): self.applycutoff() def plot_next_plane(self): - """Plot the next plane in the dataset, looping back to the first if at - the end.""" + """Plot the next plane in the dataset, looping back to the first + if at the end.""" n = self.plane_num.get() if n == len(self.cube[self.axis.get()]) - 1: n = 0 @@ -616,7 +618,8 @@ def animation(self): self.plot_next_plane() def multiple_funcs(*funcs): - """Executes multiple functions passed as arguments in sequence.""" + """Executes multiple functions passed as arguments in + sequence.""" for func in funcs: func diff --git a/src/diffpy/fourigui/version.py b/src/diffpy/fourigui/version.py index f52dcaa..434404d 100644 --- a/src/diffpy/fourigui/version.py +++ b/src/diffpy/fourigui/version.py @@ -7,7 +7,7 @@ # File coded by: Billinge Group members and community contributors. # # See GitHub contributions for a more detailed list of contributors. -# https://github.com/diffpy/diffpy.fourigui/graphs/contributors +# https://github.com/diffpy/diffpy.fourigui/graphs/contributors # noqa: E501 # # See LICENSE.rst for license information. # diff --git a/tests/test_version.py b/tests/test_version.py index 32b5ed4..2954e80 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -1,6 +1,6 @@ """Unit tests for __version__.py.""" -import diffpy.fourigui +import diffpy.fourigui # noqa def test_package_version():