Skip to content
Merged
Show file tree
Hide file tree
Changes from 32 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
b533f60
feat: add plugin scaffolding
johanneskoester Jul 24, 2025
c6dbe2d
noqa
johanneskoester Jul 24, 2025
91dc565
migrate to pixi
johanneskoester Jul 24, 2025
9e17b5b
fixes
johanneskoester Jul 24, 2025
fb2965b
fmt
johanneskoester Jul 24, 2025
2ba553e
lint
johanneskoester Jul 24, 2025
44afd19
add readthedocs config
johanneskoester Jul 24, 2025
e7f03ef
deps
johanneskoester Jul 24, 2025
6ac2c7f
fix test
johanneskoester Jul 24, 2025
04f26fa
dbg
johanneskoester Jul 24, 2025
e3d4976
test
johanneskoester Jul 24, 2025
ecce586
fixes
johanneskoester Jul 24, 2025
be1be06
fix
johanneskoester Jul 24, 2025
fc4d779
source
johanneskoester Jul 24, 2025
08c2988
fix
johanneskoester Jul 24, 2025
6101c6d
fix
johanneskoester Jul 24, 2025
2a22cf1
fixes
johanneskoester Jul 24, 2025
31d171d
fixes
johanneskoester Jul 25, 2025
fe1509d
Update snakedeploy/providers.py
johanneskoester Jul 25, 2025
e0bd56e
Update .readthedocs.yaml
johanneskoester Jul 25, 2025
d77657f
fixes
johanneskoester Jul 25, 2025
dc28d6c
Merge branch 'feat/scaffold-plugins' of github.com:snakemake/snakedep…
johanneskoester Jul 25, 2025
0a143d7
fix
johanneskoester Jul 25, 2025
b383560
Update snakedeploy/templates/plugins/software-deployment-plugins/init.py
johanneskoester Jul 25, 2025
84480a5
Update snakedeploy/scaffold_plugins/common.py
johanneskoester Jul 25, 2025
99f504d
Update snakedeploy/templates/plugins/software-deployment-plugins/init.py
johanneskoester Jul 25, 2025
38f3298
fix
johanneskoester Jul 25, 2025
cc8b509
Merge branch 'feat/scaffold-plugins' of github.com:snakemake/snakedep…
johanneskoester Jul 25, 2025
98fcf65
fix
johanneskoester Jul 25, 2025
e150463
fix
johanneskoester Jul 25, 2025
7e8b756
fix
johanneskoester Jul 25, 2025
7c93805
Update snakedeploy/scaffold_plugins/common.py
johanneskoester Jul 25, 2025
4a92134
fix AI shit
johanneskoester Jul 25, 2025
e07983f
fix
johanneskoester Jul 25, 2025
2b66100
docs
johanneskoester Jul 25, 2025
c30e06a
css
johanneskoester Jul 25, 2025
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
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
snakedeploy/_version.py export-subst
# SCM syntax highlighting & preventing 3-way merges
pixi.lock merge=binary linguist-language=YAML linguist-generated=true
32 changes: 6 additions & 26 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,42 +13,22 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: Setup environments
run: |
conda create -c conda-forge --quiet --name black black>=22
conda create -c conda-forge --quiet --name pyflakes pyflakes

- name: Check formatting with black
run: |
export PATH="/usr/share/miniconda/bin:$PATH"
source activate black
black --check snakedeploy
- uses: prefix-dev/setup-pixi@v0

- name: Check imports with pyflakes
- name: Test snakedeploy
run: |
export PATH="/usr/share/miniconda/bin:$PATH"
source activate pyflakes
pyflakes snakedeploy
pixi run format --check
pixi run check

testing:
needs: code-quality
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.8, 3.9]

steps:
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- uses: actions/checkout@v4

- name: Setup test environment
run: |
pip install -e .
- uses: prefix-dev/setup-pixi@v0

- name: Test snakedeploy
run: |
/bin/bash tests/test_client.sh
pixi run test
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,8 @@ build
__pycache__
dist
.env

# pixi environments
.pixi
*.egg-info
pixi.lock
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.11
16 changes: 16 additions & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
version: 2

build:
os: ubuntu-22.04
commands:
- curl -fsSL https://pixi.sh/install.sh | sh
- $HOME/.pixi/bin/pixi run build-docs
- mkdir -p $READTHEDOCS_OUTPUT/html
- rm -rf $READTHEDOCS_OUTPUT/html && mv docs/_build/html $READTHEDOCS_OUTPUT/html

sphinx:
configuration: docs/conf.py

python:
install:
- requirements: docs/requirements.txt
89 changes: 0 additions & 89 deletions docs/_static/theme.css

This file was deleted.

118 changes: 19 additions & 99 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,8 @@
# All configuration values have a default; values that are commented out
# serve to show the default.

import sys
import os
from recommonmark.parser import CommonMarkParser
from sphinxawesome_theme.postprocess import Icons

source_parsers = {".md": CommonMarkParser}


# 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.
sys.path.insert(0, os.path.abspath("../"))

# -- General configuration ------------------------------------------------

Expand All @@ -37,19 +28,20 @@
"sphinx.ext.autodoc",
"sphinx.ext.mathjax",
"sphinx.ext.viewcode",
"sphinxcontrib.napoleon",
"sphinxarg.ext",
"sphinx.ext.autosectionlabel",
]

# Snakmake theme (made by SciAni).
html_css_files = ["theme.css"]
# html_css_files = ["theme.css"]

# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates"]

html_permalinks_icon = Icons.permalinks_icon

# The suffix of source filenames.
source_suffix = [".rst", ".md"]
# source_suffix = [".rst"]

# The encoding of source files.
# source_encoding = 'utf-8-sig'
Expand All @@ -61,23 +53,6 @@
project = "Snakedeploy"
copyright = "2020, Johannes Koester and Vanessa Sochat"

import snakedeploy

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = snakedeploy.__version__

if os.environ.get("READTHEDOCS") == "True":
# Because Read The Docs modifies conf.py, versioneer gives a "dirty"
# version like "5.10.0+0.g28674b1.dirty" that is cleaned here.
version = version.partition("+0.g")[0]

# The full version, including alpha/beta/rc tags.
release = version

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
# language = None
Expand Down Expand Up @@ -108,7 +83,7 @@
# show_authors = False

# The name of the Pygments (syntax highlighting) style to use.
pygments_style = "sphinx"
# pygments_style = "sphinx"

# A list of ignored prefixes for module index sorting.
# modindex_common_prefix = []
Expand All @@ -121,7 +96,18 @@

# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = "sphinx_rtd_theme"
html_theme = "sphinxawesome_theme"
html_theme_options = {
"logo_light": "logo-snake.svg",
"logo_dark": "logo-snake.svg",
"main_nav_links": {
"Snakemake Homepage": "https://snakemake.github.io",
"Snakemake Documentation": "https://snakemake.readthedocs.io",
},
"awesome_external_links": True,
"awesome_headerlinks": True,
"show_prev_next": False,
}

# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
Expand Down Expand Up @@ -199,32 +185,11 @@
# html_file_suffix = None

# Output file base name for HTML help builder.
htmlhelp_basename = "Snakedeploydoc"
# htmlhelp_basename = "Snakedeploydoc"


# -- Options for LaTeX output ---------------------------------------------

latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#'preamble': '',
}

# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(
"index",
"Snakedeploy.tex",
"Snakedeploy Documentation",
"Johannes Koester",
"manual",
),
]

# The name of an image file (relative to this directory) to place at the top of
# the title page.
Expand All @@ -249,51 +214,6 @@

# -- Options for manual page output ---------------------------------------

# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(
"index",
"snakedeploy",
"Snakedeploy Documentation",
["Johannes Koester", "Vanessa Sochat"],
1,
)
]

# If true, show URL addresses after external links.
# man_show_urls = False


# -- 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",
"Snakemake",
"Snakedeploy Documentation",
["Johannes Koester", "Vanessa Sochat"],
"Snakedeploy",
"Easily deploy snakemake pipeline templates.",
"Miscellaneous",
),
]

# Documents to append as an appendix to all manuals.
# texinfo_appendices = []

# If false, no module index is generated.
# texinfo_domain_indices = True

# How to display URL addresses: 'footnote', 'no', or 'inline'.
# texinfo_show_urls = 'footnote'

# If true, do not generate a @detailmenu in the "Top" node's menu.
# texinfo_no_detailmenu = False


def setup(app):
app.add_stylesheet("sphinx-argparse.css")
18 changes: 16 additions & 2 deletions docs/getting_started/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,21 @@
Installation
============

Snakedeploy can be installed via conda, pypi or from source.
Snakedeploy can be installed via pixi, conda, pypi or from source.

Install via pixi
================
For global installation (recommended), run

.. code:: console

$ pixi global install snakedeploy

For local installation into an existing pixi workspace, run

.. code:: console

$ pixi add snakedeploy

Install via mamba/conda
=======================
Expand Down Expand Up @@ -42,7 +56,7 @@ Install from source

$ pip install -e .

========================

Testing the installation
========================

Expand Down
68 changes: 53 additions & 15 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,50 @@
Snakedeploy
============

.. image:: https://img.shields.io/pypi/pyversions/snakedeploy.svg
.. image:: https://img.shields.io/conda/dn/bioconda/snakedeploy.svg?label=Bioconda&color=%23064e3b
:target: https://bioconda.github.io/recipes/snakedeploy/README.html

.. image:: https://img.shields.io/pypi/pyversions/snakedeploy.svg?color=%23065f46
:target: https://www.python.org

.. image:: https://img.shields.io/pypi/v/snakedeploy.svg
.. image:: https://img.shields.io/pypi/v/snakedeploy.svg?color=%23047857
:target: https://pypi.python.org/pypi/snakedeploy

.. image:: https://github.com/snakemake/snakedeploy/workflows/CI/badge.svg?branch=main&label=CI
:target: https://github.com/snakemake/snakemake/actions?query=branch%3Amain+workflow%3ACI
.. image:: https://img.shields.io/github/actions/workflow/status/snakemake/snakedeploy/main.yml?label=tests&color=%2310b981
:target: https://github.com/snakemake/snakedeploy/actions?query=branch%3Amain+workflow%3ACI

.. image:: https://img.shields.io/badge/stack-overflow-orange.svg?color=%2334d399
:target: https://stackoverflow.com/questions/tagged/snakemake

.. image:: https://img.shields.io/discord/753690260830945390?label=discord%20chat
.. image:: https://img.shields.io/discord/753690260830945390?label=discord%20chat&color=%23a7f3d0
:alt: Discord
:target: https://discord.gg/NUdMtmr

.. image:: https://img.shields.io/github/stars/snakemake/snakedeploy?style=social
:alt: GitHub stars
:target: https://github.com/snakemake/snakemake/stargazers
.. image:: https://img.shields.io/badge/bluesky-follow-%23d1fae5
:alt: Bluesky
:target: https://bsky.app/profile/johanneskoester.bsky.social

.. image:: https://img.shields.io/badge/mastodon-follow-%23ecfdf5
:alt: Mastodon
:target: https://fosstodon.org/@johanneskoester



Snakedeploy is a command line tool and Python library for automation of deployment and maintenance tasks around `Snakemake and Snakemake workflows <https://snakemake.github.io>`.

SnakeDeploy is a command line tool and Python library
to easily deploy Snakemake pipelines from version control like GitHub.
To learn more about Snakemake, visit the `official documentation <https://snakemake.github.io/>`_
* **Workflow users** can apply it to automatically :ref:`deploy (i.e. set up for use) <deploy>` public workflows for execution on their local machine or use it to :ref:`register input data <input_registration>` for their workflow configuration.
* **Workflow developers** can use it to automatically :ref:`update conda environment files <update_conda_envs>` or :ref:`Snakemake wrapper versions <update_snakemake_wrappers>` and :ref:`pin/lock conda environments<pin_conda_envs>` in their workflows.
* **Snakemake developers** can use it to :ref:`scaffold Snakemake plugins <scaffold_snakemake_plugins>` (i.e. to obtain a skeleton codebase as a starting point for each type of possible Snakemake plugin).

.. _main-support:

-------
Support
-------

* In case of **questions**, please post on `stack overflow <https://stackoverflow.com/questions/tagged/snakemake>`_.
* For **bugs and feature requests**, please use the `issue tracker <https://github.com/snakemake/snakedeploy/issues>`_.
* For **contributions**, visit snakedeploy on `Github <https://github.com/snakemake/snakedeploy>`_.
* In case of **questions**, please post on `stack overflow <https://stackoverflow.com/questions/tagged/snakemake>`__ or ask on `Discord <https://discord.gg/NUdMtmr>`_.
* For **bugs and feature requests**, please use the `issue tracker <https://github.com/snakemake/snakedeploy/issues>`__.
* For **contributions**, visit snakedeploy on `Github <https://github.com/snakemake/snakedeploy>`__.

.. toctree::
:caption: Getting started
Expand All @@ -43,7 +56,32 @@ Support
:maxdepth: 1

getting_started/installation
getting_started/tools

.. toctree::
:caption: Workflow users
:name: workflow_users
:hidden:
:maxdepth: 1

workflow_users/workflow_deployment
workflow_users/input_registration

.. toctree::
:caption: Workflow developers
:name: workflow_developers
:hidden:
:maxdepth: 1

workflow_developers/update_conda_envs
workflow_developers/update_snakemake_wrappers

.. toctree::
:caption: Snakemake developers
:name: snakemake_developers
:hidden:
:maxdepth: 1

snakemake_developers/scaffold_plugins

.. toctree::
:caption: API Reference
Expand Down
Loading
Loading