Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
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
Next Next commit
skpkg: updated labpdfproc with scikit-package level 5
  • Loading branch information
Adib Kabir
Adib Kabir committed Sep 29, 2026
commit 428e874cbd05f34743b8adb1d7b96d45a8b313bf
64 changes: 61 additions & 3 deletions .github/workflows/build-wheel-release-upload.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,76 @@
name: Build Wheel, Release on GitHub/PyPI, and Deploy Docs
name: Build Wheel and Release

# Trigger on tag push or manual dispatch.
# Tag and release privilege are verified inside the reusable workflow.
on:
workflow_dispatch:
push:
tags:
- "*" # Trigger on all tags initially, but tag and release privilege are verified in _build-wheel-release-upload.yml
- "*"

# ── Release modality ──────────────────────────────────────────────────────────
# Three options are provided below. Only ONE job should be active at a time.
# To switch: comment out the active job and uncomment your preferred option,
# then commit the change to main before tagging a release.
# ─────────────────────────────────────────────────────────────────────────────

jobs:
# Option 1 (default): Release to GitHub, publish to PyPI, and deploy docs.
#
# The wheel is uploaded to PyPI so users can install with `pip install`.
# A GitHub release is created with the changelog as the release body, and
# the Sphinx documentation is rebuilt and deployed to GitHub Pages.
#
# Choose this for open-source packages distributed via PyPI and/or
# conda-forge where broad public availability is the goal.
build-release:
uses: scikit-package/release-scripts/.github/workflows/_build-wheel-release-upload.yml@v0
with:
project: diffpy.labpdfproc
c_extension: false
maintainer_GITHUB_username: sbillinge
maintainer_github_username: sbillinge
secrets:
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
PAT_TOKEN: ${{ secrets.PAT_TOKEN }}

# Option 2: Release to GitHub and deploy docs, without publishing to PyPI.
#
# A GitHub release is created and the Sphinx docs are deployed, but the
# wheel is not uploaded to PyPI. The source code remains publicly visible
# on GitHub and can be installed directly from there.
#
# Choose this when the package is public but you prefer to keep it off the
# default pip index — for example, if you distribute via conda-forge only,
# or if the package is not yet ready for a permanent PyPI presence.
#
# To use: comment out Option 1 above and uncomment the lines below.
# build-release-no-pypi:
# uses: scikit-package/release-scripts/.github/workflows/_build-release-github-no-pypi.yml@v0
# with:
# project: diffpy.labpdfproc
# c_extension: false
# maintainer_github_username: sbillinge
# secrets:
# PAT_TOKEN: ${{ secrets.PAT_TOKEN }}

# Option 3: Release to GitHub with wheel, license, and instructions bundled
# as a downloadable zip attached to the GitHub release asset.
#
# The wheel is built and packaged together with INSTRUCTIONS.txt and the
# LICENSE file into a zip that is attached directly to the GitHub release.
# Users with access to the (private) repo download the zip, follow the
# instructions inside, and install locally with pip. No PyPI or conda-forge
# upload occurs, and no docs are deployed.
#
# Choose this for private or restricted packages where distribution must be
# controlled: only users with repo access can download the release asset,
# making the GitHub release itself the distribution channel.
#
# To use: comment out Option 1 above and uncomment the lines below.
# build-release-private:
# uses: scikit-package/release-scripts/.github/workflows/_build-release-github-private-pure.yml@v0
# with:
# project: diffpy.labpdfproc
# maintainer_github_username: sbillinge
# secrets:
# PAT_TOKEN: ${{ secrets.PAT_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/check-news-item.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Check for News
on:
pull_request_target:
branches:
- main
- main # GitHub does not evaluate expressions in trigger filters; edit this value if your base branch is not main

jobs:
check-news-item:
Expand Down
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
default_language_version:
python: python3
python: python3.14
ci:
autofix_commit_msg: |
[pre-commit.ci] auto fixes from pre-commit hooks
Expand Down Expand Up @@ -52,7 +52,7 @@ repos:
- tomli
# prettier - multi formatter for .json, .yml, and .md files
- repo: https://github.com/pre-commit/mirrors-prettier
rev: f12edd9c7be1c20cfa42420fd0e6df71e42b51ea # frozen: v4.0.0-alpha.8
rev: v4.0.0-alpha.8
hooks:
- id: prettier
additional_dependencies:
Expand Down
109 changes: 0 additions & 109 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,112 +3,3 @@ Release notes
=============

.. current developments

0.3.1
=====

**Added:**

* Add back support for Python 3.10 and 3.11.


0.3.0
=====

**Added:**

* Functionalities to estimate mu*D theoretically.
* Added published reference to ``README.rst``.
* Fast calculation supports values up to muD = 7
* Recookiecut with updated ``scikit-package`` to enable docs preview in PRs.
* Updated package standards to scikit-package 0.3.0.
* Added ``cookiecutter.json`` file for the ``package update`` command.
* Functionality to read wavelength and anode type directly from a diffpy configuration file.
* Utility and example documentation for ``tools`` module.
* Gooey support so that the app can be run with GUI
* Coverage report in each PR
* doi in Readme for papers.
* Support for independent variables other than two-theta.
* new subcommand ``applymud`` to run the original absorption correction process through CLI.
* Utility and example documentation for the main module.
* Added documentation for new CLI updates.
* Documentation for functions module.
* Spelling check via Codespell in pre-commit
* Python 3.13 support
* Functionality in `load_user_info` to enable user to enter an ORCID.

**Changed:**

* Default to brute-force computation when muD < 0.5 or > 7.
* Print a warning message instead of error, explicitly stating the input muD value
* Functions that use DiffractionObject` in `diffpy.utils` to follow the new API.
* Workflow for loading wavelength - raise an error when both wavelength and anode type are specified.
* Readme: muD now requires the ``--mud`` flag instead of a required argument.
* Made muD an optional argument and provided different options (manually entry / z-scan file path) for users to specify muD
* Increased the number of significant figures for wavelength and separated values for Ka1 and Ka2.
* hyphens / underscores format according to new scikit-package group standard.
* GitHub workflows for renamed test file.
* Return a ``ValueError`` if no wavelength is found on config file or if its not specified.
* Compartmentalize commands into the subcommands ``mud``, ``zscan``, and ``sample``. See documentation for more info.
* Changed ``doc`` to ``docs`` and ``CODE_OF_CONDUCT.rst`` to ``CODE-OF-CONDUCT.rst`` to comply with scikit-package standards.
* All function docstrings and tests to be more informative, incorporating new ORCID function and improving overall clarity.

**Fixed:**

* duplicated wavelength information in output files

**Removed:**

* Remove the import of extend_path from pkgutil in diffpy/__init__.py since we are not strictly following the Python namespace package convention.


0.2.0
=====

**Added:**

* Support for Python 3.13

**Removed:**

* Support for Python 3.10


0.1.3
=====

**Added:**

* generate package API doc
* redo cookiecutter to add issue templates and update readme


0.1.2
=====

**Added:**

* polynomial interpolation as the default method for cve computation.

**Fixed:**

* add PyPI packages under pip.txt



0.1.1
=====



0.1.1
=====



0.1.0
=====



Initial release of labPDFproc. Please see README and documentation for details
5 changes: 1 addition & 4 deletions LICENSE.rst
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
BSD 3-Clause License

Copyright (c) 2025-2026, The Trustees of Columbia University in the City of New York.
All rights reserved.

Copyright (c) 2026-present, diffpy.labpdfproc developers and contributors.
Copyright (c) 2026, The Trustees of Columbia University in the City of New York.
All rights reserved.

Redistribution and use in source and binary forms, with or without
Expand Down
1 change: 0 additions & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ graft tests
graft requirements

include AUTHORS.rst LICENSE*.rst README.rst
include src/diffpy/labpdfproc/data *

# Exclude all bytecode files and __pycache__ directories
global-exclude *.py[cod] # Exclude all .pyc, .pyo, and .pyd files.
Expand Down
34 changes: 4 additions & 30 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -38,30 +38,7 @@

Tools for processing x-ray powder diffraction data from laboratory sources.

PDFgetX3 has revolutionized how PDF methods can be applied to solve nanostructure problems.
However, the program was designed for use with Rapid Acquisition PDF (RAPDF) data from synchrotron sources.
A key approximation inherent in the use of PDFgetX3 for RAPDF data is that absorption effects are negligible.
This is typically not the case for laboratory x-ray diffractometers, where absorption effects can be significant.

This app is designed to preprocess data from laboratory x-ray diffractometers before using PDFgetX3 to obtain PDFs.
The app currently carries out an absorption correction assuming a parallel beam capillary geometry
which is the most common geometry for lab PDF measurements.

The theory is described in the following paper:

Chen, Y., Schertenleib, T., Yang, A., Schouwink, P., Queen, W. L., and Billinge, S. J. L.,
*Absorption Correction for Reliable Pair Distribution Functions from Low Energy X-ray Sources*.
Crystal Growth & Design, 2026, 26 (3), 1036–1047.
https://doi.org/10.1021/acs.cgd.5c00551


The related experimental data acquisition protocols are described in the following paper:

Schertenleib, T., Schmuckler, D., Chen, Y., Jin, G. B., Queen, W. L., and Billinge, S. J. L. (2025).
*Testing Protocols for Obtaining Reliable Pair Distribution Functions from Laboratory X-Ray Sources Using PDFgetX3*.
Chem. Methods, 2500001.
https://doi.org/10.1002/cmtd.202500001

* LONGER DESCRIPTION HERE

For more information about the diffpy.labpdfproc library, please consult our `online documentation <https://diffpy.github.io/diffpy.labpdfproc>`_.

Expand All @@ -70,10 +47,7 @@ Citation

If you use diffpy.labpdfproc in a scientific publication, we would like you to cite this package as

Chen, Y., Schertenleib, T., Yang, A., Schouwink, P., Queen, W. L., and Billinge, S. J. L.,
*Absorption Correction for Reliable Pair Distribution Functions from Low Energy X-ray Sources*.
Crystal Growth & Design, 2026, 26 (3), 1036–1047.
https://doi.org/10.1021/acs.cgd.5c00551
diffpy.labpdfproc Package, https://github.com/diffpy/diffpy.labpdfproc

Installation
------------
Expand Down Expand Up @@ -108,7 +82,7 @@ and run the following ::

This package also provides command-line utilities. To check the software has been installed correctly, type ::

labpdfproc --version
diffpy.labpdfproc --version

You can also type the following command to verify the installation. ::

Expand All @@ -117,7 +91,7 @@ You can also type the following command to verify the installation. ::

To view the basic usage and available commands, type ::

labpdfproc -h
diffpy.labpdfproc -h

Getting Started
---------------
Expand Down
2 changes: 1 addition & 1 deletion cookiecutter.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"maintainer_emails": "sbillinge@ucsb.edu",
"maintainer_github_usernames": "sbillinge",
"contributors": "Yucong Chen, Till Schertenleib, Caden Myers, Billinge Group members",
"license_holders": "The Trustees of Columbia University in the City of New York",
"project_name": "diffpy.labpdfproc",
"license_holders": "The Trustees of Columbia University in the City of New York",
"github_username_or_orgname": "diffpy",
"github_repo_name": "diffpy.labpdfproc",
"conda_pypi_package_dist_name": "diffpy.labpdfproc",
Expand Down
72 changes: 36 additions & 36 deletions docs/make.bat
Original file line number Diff line number Diff line change
@@ -1,36 +1,36 @@
@ECHO OFF

pushd %~dp0

REM Command file for Sphinx documentation

if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=source
set BUILDDIR=build
set SPHINXPROJ=PackagingScientificPython

if "%1" == "" goto help

%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)

%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
goto end

:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%

:end
popd
@ECHO OFF
pushd %~dp0
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=source
set BUILDDIR=build
set SPHINXPROJ=PackagingScientificPython
if "%1" == "" goto help
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
goto end
:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
:end
popd
Loading