flaxandteal / dewret

DEclarative Workflow REndering Tool
Apache License 2.0
1 stars 0 forks source link

Release PR: 0.9.1 #12

Closed philtweir closed 6 days ago

philtweir commented 4 months ago

Changelog

✨ Updated workflow documentations as per issue #47

feat: Updated workflows documentation for issue #47 (#51):

πŸ“š docs: Added issue templates

docs: Added issue templates. (#50):

  1. Bug report
  2. Feature request
  3. Improvement of existing functionality

πŸ›  Fix/31 return tuple

Fix/31 return tuple (#49): This PR enhances the tuple[float, float] support in Dewret, initial implementation issues encountered during testing.

Changes

πŸ“š Feat/33 documentation tidy up

Feat/33 documentation tidy up (#44):

This PR improves the Quickstart.md documentation for Dewret as discussed in issue #33. The update creates an introduction to Dewret and attempts to answer the question Why use Dewret?

Changes

πŸ›  Readded snakemake with fixed mypy issues.

Readded snakemake with fixed mypy issues. (#43):

This Pull Request adds a custom snakemake renderer that produces a workflow in snakemake. This will be an example renderer for a tutorial on how to create a custom renderer in dewret. The renderer is tested with most of snakemakes quirks to produce a workflow with minimal tweaks to be executable. I've added # TODOs inside the renderer for possible features which I will also list here

Changes

Motivation

To be used as an example custom renderer for a tutorial on how custom renderers are created. The Snakemake language is widely used in the bioinformatics community for creating reproducible and scalable workflows so the snakemake renderer was a good choice for both usability and an example.

Possible improvements

πŸ›  Revert "Example snakemake renderer (1-48)

Revert "Example snakemake renderer (1-48)" (#42): Reverts flaxandteal/dewret#32 as this breaks the build - from this CI job it looks like the branch needed rebased onto release/0.9.1 from the last 3 weeks, and mypy issues fixed.

In particular, RunDefinition and StepDefinition signatures need fixed to match - then re-PR please and we can put it back in once all green.

πŸ›  Fix subworkflows and globals

Fix subworkflows and globals (#41):

What does this PR do?

Fixes the ability of subworkflows to use global factories and constants.

πŸ›  Nested tasks should not get globals as arguments:

Nested tasks should not get globals as arguments (#40):

What does this PR do?

Only passes real arguments, not globals, to a nested task / subworkflow when it is called.

✨ Add factories

Add factories (#38):

What does this PR do?

Adds an initial implementation of input factories.

Pulling this in, on the basis that we can follow up with a second iteration if needs be.

πŸ›  Fix: minor type issues using raw or compound types

Fix: minor type issues using raw or compound types (#37):

What does this PR do?

Solves minor issues when subworkflows handle types that are not an instance of type

πŸ›  Hug not installable

Hug not installable (#36):

What does this PR do?

Removes any dependency on hug which is breaking CI.

✨ Example snakemake renderer

Example snakemake renderer (1-48) (#32):

Summary

This Pull Request adds a custom snakemake renderer that produces a workflow in snakemake. This will be an example renderer for a tutorial on how to create a custom renderer in dewret. The renderer is tested with most of snakemakes quirks to produce a workflow with minimal tweaks to be executable. I've added # TODOs inside the renderer for possible features which I will also list here

Changes

Motivation

To be used as an example custom renderer for a tutorial on how custom renderers are created. The Snakemake language is widely used in the bioinformatics community for creating reproducible and scalable workflows so the snakemake renderer was a good choice for both usability and an example.

Possible improvements

πŸ“š Clarify input behaviour

Clarify input behaviour (#27):

What does this PR do?

The fundamental problem it solves is that, as per feedback, when a raw value is passed as an argument to a function, it should not simply be captured as a default value for that function call, but be turned into a global parameter. However, this behaviour does not make sense for raw (literal) variables inside tasks/nested tasks. In practice, this turned out to be quite a major change with a number of corner cases.

Consequently, this PR includes the following:

πŸ“š Add glossary

Add glossary (#25): Begins a glossary.

πŸ“š Explain globals input

Explain globals input (1-22) (#23): Adds a brief explanation around the parameters section to the documentation, explaining how context is handled.

πŸ“š Documentation refinements

Documentation refinements (#18): This PR implements a number of suggested improvements to the documentation. It also modifies the publication of docs to occur only on push of tags rather than on push for any branch.

✨ Better error messages

Better error messages (#15): Implements several closely related features:

✨ Can we make dewret not attrs-only?

Can we make dewret not attrs-only? (#14): Can we swap attrs for something else, if desired?

Following the discussion in #10, rather than doing a general purpose layer for returned types, this implements an either/or approach, where either dataclasses or attrs may be used to specify a multi-part result. It does not touch attrs in the dewret internals, and so (for now) it remains a dependency.

✨ Check argument list is complete

Check argument list is complete [1-25] (#13): Closes #11 - provides basic Python-valid checking of task signatures in calls. Both directly, and within a nested task.

This also adds a series of minor CI fixes that arose during implementation, to ensure tests and static checking is thorough and passes.