Metadata-Version: 2.2
Name: dkist-processing-ops
Version: 1.6.38
Summary: Automated Processing smoke test and operations workflows
Author-email: NSO / AURA <dkistdc@nso.edu>
License: BSD 3-Clause
Project-URL: repository, https://bitbucket.org/dkistdc/dkist-processing-ops
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.11
Description-Content-Type: text/x-rst
License-File: LICENSE.rst
Requires-Dist: dkist-processing-common==10.6.2
Requires-Dist: dkist-service-configuration==2.3.0
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: pytest-xdist; extra == "test"
Provides-Extra: frozen
Requires-Dist: ConfigUpdater==3.2; extra == "frozen"
Requires-Dist: Deprecated==1.2.18; extra == "frozen"
Requires-Dist: Flask==2.2.5; extra == "frozen"
Requires-Dist: Flask-AppBuilder==4.5.3; extra == "frozen"
Requires-Dist: Flask-Babel==2.0.0; extra == "frozen"
Requires-Dist: Flask-Caching==2.3.1; extra == "frozen"
Requires-Dist: Flask-JWT-Extended==4.7.1; extra == "frozen"
Requires-Dist: Flask-Limiter==3.12; extra == "frozen"
Requires-Dist: Flask-Login==0.6.3; extra == "frozen"
Requires-Dist: Flask-SQLAlchemy==2.5.1; extra == "frozen"
Requires-Dist: Flask-Session==0.5.0; extra == "frozen"
Requires-Dist: Flask-WTF==1.2.2; extra == "frozen"
Requires-Dist: Jinja2==3.1.6; extra == "frozen"
Requires-Dist: Mako==1.3.9; extra == "frozen"
Requires-Dist: MarkupSafe==3.0.2; extra == "frozen"
Requires-Dist: PyJWT==2.10.1; extra == "frozen"
Requires-Dist: PyYAML==6.0.2; extra == "frozen"
Requires-Dist: Pygments==2.19.1; extra == "frozen"
Requires-Dist: SQLAlchemy==1.4.54; extra == "frozen"
Requires-Dist: SQLAlchemy-JSONField==1.0.2; extra == "frozen"
Requires-Dist: SQLAlchemy-Utils==0.41.2; extra == "frozen"
Requires-Dist: WTForms==3.2.1; extra == "frozen"
Requires-Dist: Werkzeug==2.2.3; extra == "frozen"
Requires-Dist: aioftp==0.24.1; extra == "frozen"
Requires-Dist: aiohappyeyeballs==2.6.1; extra == "frozen"
Requires-Dist: aiohttp==3.11.14; extra == "frozen"
Requires-Dist: aiosignal==1.3.2; extra == "frozen"
Requires-Dist: aiosqlite==0.21.0; extra == "frozen"
Requires-Dist: alembic==1.15.1; extra == "frozen"
Requires-Dist: amqp==5.3.1; extra == "frozen"
Requires-Dist: annotated-types==0.7.0; extra == "frozen"
Requires-Dist: anyio==4.9.0; extra == "frozen"
Requires-Dist: apache-airflow==2.10.5; extra == "frozen"
Requires-Dist: apache-airflow-providers-celery==3.10.3; extra == "frozen"
Requires-Dist: apache-airflow-providers-common-compat==1.5.1; extra == "frozen"
Requires-Dist: apache-airflow-providers-common-io==1.5.1; extra == "frozen"
Requires-Dist: apache-airflow-providers-common-sql==1.24.0; extra == "frozen"
Requires-Dist: apache-airflow-providers-fab==1.5.3; extra == "frozen"
Requires-Dist: apache-airflow-providers-ftp==3.12.3; extra == "frozen"
Requires-Dist: apache-airflow-providers-http==5.2.1; extra == "frozen"
Requires-Dist: apache-airflow-providers-imap==3.8.3; extra == "frozen"
Requires-Dist: apache-airflow-providers-postgres==6.1.1; extra == "frozen"
Requires-Dist: apache-airflow-providers-smtp==2.0.1; extra == "frozen"
Requires-Dist: apache-airflow-providers-sqlite==4.0.1; extra == "frozen"
Requires-Dist: apispec==6.8.1; extra == "frozen"
Requires-Dist: argcomplete==3.6.0; extra == "frozen"
Requires-Dist: asdf==3.5.0; extra == "frozen"
Requires-Dist: asdf_standard==1.1.1; extra == "frozen"
Requires-Dist: asdf_transform_schemas==0.5.0; extra == "frozen"
Requires-Dist: asgiref==3.8.1; extra == "frozen"
Requires-Dist: asteval==1.0.6; extra == "frozen"
Requires-Dist: astropy==6.1.7; extra == "frozen"
Requires-Dist: astropy-iers-data==0.2025.3.17.0.34.53; extra == "frozen"
Requires-Dist: asyncpg==0.30.0; extra == "frozen"
Requires-Dist: attrs==25.3.0; extra == "frozen"
Requires-Dist: babel==2.17.0; extra == "frozen"
Requires-Dist: billiard==4.2.1; extra == "frozen"
Requires-Dist: blinker==1.9.0; extra == "frozen"
Requires-Dist: boto3==1.37.15; extra == "frozen"
Requires-Dist: botocore==1.37.15; extra == "frozen"
Requires-Dist: cachelib==0.13.0; extra == "frozen"
Requires-Dist: celery==5.4.0; extra == "frozen"
Requires-Dist: certifi==2025.1.31; extra == "frozen"
Requires-Dist: cffi==1.17.1; extra == "frozen"
Requires-Dist: charset-normalizer==3.4.1; extra == "frozen"
Requires-Dist: click==8.1.8; extra == "frozen"
Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
Requires-Dist: click-plugins==1.1.1; extra == "frozen"
Requires-Dist: click-repl==0.3.0; extra == "frozen"
Requires-Dist: clickclick==20.10.2; extra == "frozen"
Requires-Dist: colorama==0.4.6; extra == "frozen"
Requires-Dist: colorlog==6.9.0; extra == "frozen"
Requires-Dist: connexion==2.14.2; extra == "frozen"
Requires-Dist: contourpy==1.3.1; extra == "frozen"
Requires-Dist: cron-descriptor==1.4.5; extra == "frozen"
Requires-Dist: croniter==6.0.0; extra == "frozen"
Requires-Dist: cryptography==44.0.2; extra == "frozen"
Requires-Dist: cycler==0.12.1; extra == "frozen"
Requires-Dist: dacite==1.9.2; extra == "frozen"
Requires-Dist: decorator==5.2.1; extra == "frozen"
Requires-Dist: dill==0.3.9; extra == "frozen"
Requires-Dist: dkist-header-validator==5.1.1; extra == "frozen"
Requires-Dist: dkist-processing-common==10.6.2; extra == "frozen"
Requires-Dist: dkist-processing-core==5.1.0; extra == "frozen"
Requires-Dist: dkist-processing-ops==1.6.38; extra == "frozen"
Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
Requires-Dist: dkist-service-configuration==2.3.0; extra == "frozen"
Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
Requires-Dist: dkist_fits_specifications==4.11.0; extra == "frozen"
Requires-Dist: dnspython==2.7.0; extra == "frozen"
Requires-Dist: ecs-logging==2.2.0; extra == "frozen"
Requires-Dist: elastic-apm==6.23.0; extra == "frozen"
Requires-Dist: email_validator==2.2.0; extra == "frozen"
Requires-Dist: fastjsonschema==2.21.1; extra == "frozen"
Requires-Dist: flower==2.0.1; extra == "frozen"
Requires-Dist: fonttools==4.56.0; extra == "frozen"
Requires-Dist: frozenlist==1.5.0; extra == "frozen"
Requires-Dist: fsspec==2025.3.0; extra == "frozen"
Requires-Dist: globus-sdk==3.51.0; extra == "frozen"
Requires-Dist: google-re2==1.1.20240702; extra == "frozen"
Requires-Dist: googleapis-common-protos==1.69.2; extra == "frozen"
Requires-Dist: gqlclient==1.2.3; extra == "frozen"
Requires-Dist: greenlet==3.1.1; extra == "frozen"
Requires-Dist: grpcio==1.71.0; extra == "frozen"
Requires-Dist: gunicorn==23.0.0; extra == "frozen"
Requires-Dist: h11==0.14.0; extra == "frozen"
Requires-Dist: httpcore==1.0.7; extra == "frozen"
Requires-Dist: httpx==0.28.1; extra == "frozen"
Requires-Dist: humanize==4.12.1; extra == "frozen"
Requires-Dist: idna==3.10; extra == "frozen"
Requires-Dist: imageio==2.37.0; extra == "frozen"
Requires-Dist: imageio-ffmpeg==0.6.0; extra == "frozen"
Requires-Dist: importlib_metadata==8.6.1; extra == "frozen"
Requires-Dist: inflection==0.5.1; extra == "frozen"
Requires-Dist: itsdangerous==2.2.0; extra == "frozen"
Requires-Dist: jmespath==1.0.1; extra == "frozen"
Requires-Dist: jsonschema==4.23.0; extra == "frozen"
Requires-Dist: jsonschema-specifications==2024.10.1; extra == "frozen"
Requires-Dist: jupyter_core==5.7.2; extra == "frozen"
Requires-Dist: kiwisolver==1.4.8; extra == "frozen"
Requires-Dist: kombu==5.5.0; extra == "frozen"
Requires-Dist: lazy-object-proxy==1.10.0; extra == "frozen"
Requires-Dist: limits==4.4.1; extra == "frozen"
Requires-Dist: linkify-it-py==2.0.3; extra == "frozen"
Requires-Dist: lmfit==1.3.3; extra == "frozen"
Requires-Dist: lockfile==0.12.2; extra == "frozen"
Requires-Dist: loguru==0.7.3; extra == "frozen"
Requires-Dist: markdown-it-py==3.0.0; extra == "frozen"
Requires-Dist: marshmallow==3.26.1; extra == "frozen"
Requires-Dist: marshmallow-oneofschema==3.1.1; extra == "frozen"
Requires-Dist: marshmallow-sqlalchemy==0.28.2; extra == "frozen"
Requires-Dist: matplotlib==3.10.1; extra == "frozen"
Requires-Dist: mdit-py-plugins==0.4.2; extra == "frozen"
Requires-Dist: mdurl==0.1.2; extra == "frozen"
Requires-Dist: methodtools==0.4.7; extra == "frozen"
Requires-Dist: more-itertools==10.6.0; extra == "frozen"
Requires-Dist: moviepy==2.1.2; extra == "frozen"
Requires-Dist: multidict==6.2.0; extra == "frozen"
Requires-Dist: nbformat==5.10.4; extra == "frozen"
Requires-Dist: numpy==2.2.4; extra == "frozen"
Requires-Dist: object-clerk==0.1.1; extra == "frozen"
Requires-Dist: opentelemetry-api==1.31.0; extra == "frozen"
Requires-Dist: opentelemetry-exporter-otlp==1.31.0; extra == "frozen"
Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.31.0; extra == "frozen"
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.31.0; extra == "frozen"
Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.31.0; extra == "frozen"
Requires-Dist: opentelemetry-proto==1.31.0; extra == "frozen"
Requires-Dist: opentelemetry-sdk==1.31.0; extra == "frozen"
Requires-Dist: opentelemetry-semantic-conventions==0.52b0; extra == "frozen"
Requires-Dist: ordered-set==4.1.0; extra == "frozen"
Requires-Dist: packaging==24.2; extra == "frozen"
Requires-Dist: pandas==2.2.3; extra == "frozen"
Requires-Dist: parfive==2.1.0; extra == "frozen"
Requires-Dist: pathspec==0.12.1; extra == "frozen"
Requires-Dist: pendulum==3.0.0; extra == "frozen"
Requires-Dist: pika==1.3.2; extra == "frozen"
Requires-Dist: pillow==10.4.0; extra == "frozen"
Requires-Dist: pip==25.0.1; extra == "frozen"
Requires-Dist: platformdirs==4.3.6; extra == "frozen"
Requires-Dist: pluggy==1.5.0; extra == "frozen"
Requires-Dist: prison==0.2.1; extra == "frozen"
Requires-Dist: proglog==0.1.10; extra == "frozen"
Requires-Dist: prometheus_client==0.21.1; extra == "frozen"
Requires-Dist: prompt_toolkit==3.0.50; extra == "frozen"
Requires-Dist: propcache==0.3.0; extra == "frozen"
Requires-Dist: protobuf==5.29.3; extra == "frozen"
Requires-Dist: psutil==7.0.0; extra == "frozen"
Requires-Dist: psycopg2-binary==2.9.10; extra == "frozen"
Requires-Dist: py==1.11.0; extra == "frozen"
Requires-Dist: pycparser==2.22; extra == "frozen"
Requires-Dist: pydantic==2.10.6; extra == "frozen"
Requires-Dist: pydantic-settings==2.8.1; extra == "frozen"
Requires-Dist: pydantic_core==2.27.2; extra == "frozen"
Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
Requires-Dist: pyparsing==3.2.1; extra == "frozen"
Requires-Dist: python-daemon==3.1.2; extra == "frozen"
Requires-Dist: python-dateutil==2.9.0.post0; extra == "frozen"
Requires-Dist: python-dotenv==1.0.1; extra == "frozen"
Requires-Dist: python-nvd3==0.16.0; extra == "frozen"
Requires-Dist: python-slugify==8.0.4; extra == "frozen"
Requires-Dist: pytz==2025.1; extra == "frozen"
Requires-Dist: redis==4.6.0; extra == "frozen"
Requires-Dist: referencing==0.36.2; extra == "frozen"
Requires-Dist: requests==2.32.3; extra == "frozen"
Requires-Dist: requests-toolbelt==1.0.0; extra == "frozen"
Requires-Dist: retry==0.9.2; extra == "frozen"
Requires-Dist: rfc3339-validator==0.1.4; extra == "frozen"
Requires-Dist: rich==13.9.4; extra == "frozen"
Requires-Dist: rich-argparse==1.7.0; extra == "frozen"
Requires-Dist: rpds-py==0.23.1; extra == "frozen"
Requires-Dist: s3transfer==0.11.4; extra == "frozen"
Requires-Dist: scipy==1.15.2; extra == "frozen"
Requires-Dist: semantic-version==2.10.0; extra == "frozen"
Requires-Dist: setproctitle==1.3.5; extra == "frozen"
Requires-Dist: setuptools==65.5.0; extra == "frozen"
Requires-Dist: six==1.17.0; extra == "frozen"
Requires-Dist: sniffio==1.3.1; extra == "frozen"
Requires-Dist: sqids==0.5.1; extra == "frozen"
Requires-Dist: sqlparse==0.5.3; extra == "frozen"
Requires-Dist: sunpy==6.1.1; extra == "frozen"
Requires-Dist: tabulate==0.9.0; extra == "frozen"
Requires-Dist: talus==1.1.0; extra == "frozen"
Requires-Dist: tenacity==9.0.0; extra == "frozen"
Requires-Dist: termcolor==2.5.0; extra == "frozen"
Requires-Dist: text-unidecode==1.3; extra == "frozen"
Requires-Dist: time-machine==2.16.0; extra == "frozen"
Requires-Dist: tornado==6.4.2; extra == "frozen"
Requires-Dist: tqdm==4.67.1; extra == "frozen"
Requires-Dist: traitlets==5.14.3; extra == "frozen"
Requires-Dist: typing_extensions==4.12.2; extra == "frozen"
Requires-Dist: tzdata==2025.1; extra == "frozen"
Requires-Dist: uc-micro-py==1.0.3; extra == "frozen"
Requires-Dist: uncertainties==3.2.2; extra == "frozen"
Requires-Dist: universal_pathlib==0.2.6; extra == "frozen"
Requires-Dist: urllib3==2.3.0; extra == "frozen"
Requires-Dist: vine==5.1.0; extra == "frozen"
Requires-Dist: voluptuous==0.15.2; extra == "frozen"
Requires-Dist: wcwidth==0.2.13; extra == "frozen"
Requires-Dist: wirerope==1.0.0; extra == "frozen"
Requires-Dist: wrapt==1.17.2; extra == "frozen"
Requires-Dist: yamale==6.0.0; extra == "frozen"
Requires-Dist: yarl==1.18.3; extra == "frozen"
Requires-Dist: zipp==3.21.0; extra == "frozen"

dkist-processing-ops
====================
|codecov|

This repository works in concert with `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_ and
`dkist-processing-common <https://pypi.org/project/dkist-processing-common/>`_ to provide workflows for the
operational management and smoke testing of the `Automated Processing <https://nso.atlassian.net/wiki/spaces/DPD/pages/3671451/04+-+Automated+Processing>`_ stack.


Developer Setup
---------------

.. code-block:: bash

    pip install -e .[test]
    pip install pre-commit
    pre-commit install

Deployment
----------

Deployment is done with `turtlebot <https://bitbucket.org/dkistdc/turtlebot/src/main/>`_ and follows
the process detailed in `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_

Additionally, when a new release is ready to be built the following steps need to be taken:

1. Freezing Dependencies
#########################

A new "frozen" extra is generated by the `dkist-dev-tools <https://bitbucket.org/dkistdc/dkist-dev-tools/src/main/>`_
package. If you don't have `dkist-dev-tools` installed please follow the directions from that repo.

To freeze dependencies run

.. code-block:: bash

    ddt freeze vX.Y.Z[rcK]

Where "vX.Y.Z[rcK]" is the version about to be released.

2. Tag and Push
###############

Once all commits are in place add a git tag that will define the released version, then push the tags up to Bitbucket:

.. code-block:: bash

    git tag vX.Y.Z[rcK]
    git push --tags origin BRANCH

In the case of an rc, BRANCH will likely be your development branch. For full releases BRANCH should be "main".

.. |codecov| image:: https://codecov.io/bb/dkistdc/dkist-processing-ops/branch/main/graph/badge.svg
   :target: https://codecov.io/bb/dkistdc/dkist-processing-ops
