generated from pyiron/pyiron_module_template
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from pyiron/update_module_name
First setup transferring everything in from pyiron_contrib
- Loading branch information
Showing
63 changed files
with
9,878 additions
and
200 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,17 @@ | ||
channels: | ||
- conda-forge | ||
dependencies: | ||
- pyiron_base | ||
- coveralls | ||
- coverage | ||
- bidict =0.22.1 | ||
- cloudpickle =2.2.1 | ||
- graphviz =8.1.0 | ||
- maggma =0.57.1 | ||
- matplotlib =3.8.0 | ||
- numpy =1.26.0 | ||
- pyiron_atomistics =0.3.4 | ||
- pyiron_base =0.6.7 | ||
- python-graphviz =0.20.1 | ||
- toposort =1.10 | ||
- typeguard =4.1.5 | ||
- lammps |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
channels: | ||
- conda-forge | ||
dependencies: | ||
- lammps |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,16 @@ | ||
channels: | ||
- conda-forge | ||
dependencies: | ||
- pyiron_base | ||
|
||
- coveralls | ||
- coverage | ||
- bidict =0.22.1 | ||
- cloudpickle =2.2.1 | ||
- graphviz =8.1.0 | ||
- maggma =0.57.1 | ||
- matplotlib =3.8.0 | ||
- numpy =1.26.0 | ||
- pyiron_atomistics =0.3.4 | ||
- pyiron_base =0.6.7 | ||
- python-graphviz =0.20.1 | ||
- toposort =1.10 | ||
- typeguard =4.1.5 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
# .coveragerc to control coverage.py | ||
[run] | ||
source = pyiron_module_template | ||
omit = pyiron_module_template/_version.py | ||
source = pyiron_workflow | ||
omit = pyiron_workflow/_version.py | ||
concurrency = multiprocessing |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
pyiron_module_template/_version.py export-subst | ||
pyiron_workflow/_version.py export-subst |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
exclude: | ||
- master | ||
- main | ||
delete_closed_pr: false |
7 changes: 4 additions & 3 deletions
7
.github/workflows/push-pull-main.yml → .github/workflows/push-pull.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,15 @@ | ||
# This runs jobs which pyiron modules should run on pushes or PRs to main | ||
|
||
name: Push-Pull-main | ||
name: Push-main-Pull-all | ||
|
||
on: | ||
push: | ||
branches: [ main ] | ||
pull_request: | ||
branches: [ main ] | ||
|
||
jobs: | ||
pyiron: | ||
uses: pyiron/actions/.github/workflows/push-pull-main.yml@main | ||
secrets: inherit | ||
secrets: inherit | ||
with: | ||
notebooks-env-files: .ci_support/environment.yml .ci_support/environment-notebooks.yml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
include versioneer.py | ||
include pyiron_module_template/_version.py | ||
include pyiron_workflow/_version.py | ||
include LICENSE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,88 +1,31 @@ | ||
# pyiron_module_template | ||
# pyiron_workflow | ||
|
||
## Overview | ||
|
||
This repository is a template for new pyiron modules similar to the existing modules of the | ||
pyiron framework, e.g. | ||
[pyiron_base](https://github.com/pyiron/pyiron_base), | ||
[pyiron_atomistics](https://github.com/pyiron/pyiron_atomistics), | ||
and | ||
[pyiron_contrib](https://github.com/pyiron/pyiron_contrib). | ||
|
||
Within this repository, the new module is called `pyiron_module_template` which should be renamed to `pyiron_IntendedModuleName`. | ||
This can be easily achieved by modifying and running the update_module_name.sh script. | ||
|
||
The licence is free to choose, but as a default the BSD3 licence packed here. | ||
|
||
## Continuous Integration | ||
## Overview | ||
|
||
We collect all files relevant for the continuous integration (CI) pipelines in `.ci_support`, | ||
while the actual CI workflows are handled by GitHub and stored in `.github`. | ||
If you are cloning this template *inside* the pyiron GitHub organization, the full CI should work out-of-the-box by calling reusable workflows from [pyiron/actions](github.com/pyiron/actions) and inheriting organization-wide secrets. | ||
Otherwise, you will either need to modify the CI workflow files, or give your repository the following secrets: | ||
- `DEPENDABOT_WORKFLOW_TOKEN` (GitHub token for an account that has permissions to your repository -- needs to differ from the default `github_token` already available though! In pyiron we have a special [@pyiron_runner account](https://github.com/pyiron-runner) for this purpose.) | ||
- `PYPI_PASSWORD` (Token generated on PyPi to give access to your account there) | ||
- `CODACY_PROJECT_TOKEN` (Token generated on Codacy to give access to your account there) | ||
This repository is home to the pyiron code for structuring workflows as graph objects, with different computational elements as nodes and data and execution signals travelling along edges. It is currently in an alpha state, changing quickly, and not yet feature-complete. | ||
|
||
The default CI setup from [pyiron/actions](github.com/pyiron/actions) makes some assumptions about your directory structure. | ||
The most important one is that your environment should be specified in `.ci_support/environment.yml`. | ||
There is a base environment there already, giving dependence on `pyiron_base`. | ||
The CI will automatically keep environment files read by readthedocs (which will look at `.readthedocs.yml`) and MyBinder (which looks in `.binder`) up-to-date based on this environment file. | ||
## The absolute basics | ||
|
||
In case you need extra environment files for some setups, you can modify the workflows in `.github/workflows`, which accept input variables for the docs, tests, and notebooks environments. | ||
For example, it's typically good to not make your project depend on the `lammps` package, since this is not available for windows. | ||
However, you might want to give some demo notebooks that run on MyBinder (a linux environment) and use LAMMPS calculations. | ||
In this case, you could add a new file `.ci_support/environment-notebooks.yml`, and then edit `.github/workflows/push-pull-main.yml` so that instead of reading | ||
`pyiron_workflow` offers a single-point-of-entry in the form of the `Workflow` object, and uses decorators to make it easy to turn regular python functions into "nodes" that can be put in a computation graph: | ||
|
||
```yaml | ||
jobs: | ||
pyiron: | ||
uses: pyiron/actions/.github/workflows/push-pull-main.yml@main | ||
secrets: inherit | ||
# All the environment files variables point to .ci_support/environment.yml by default | ||
``` | ||
```python | ||
from pyiron_workflow import Workflow | ||
|
||
It instead reads | ||
@Workflow.wrap_as.function_node("sum") | ||
def x_plus_y(x: int = 0, y: int = 0) -> int: | ||
return x + y | ||
|
||
```yaml | ||
jobs: | ||
pyiron: | ||
uses: pyiron/actions/.github/workflows/push-pull-main.yml@main | ||
secrets: inherit | ||
with: | ||
notebooks-env-files: .ci_support/environment.yml .ci_support/environment-notebooks.yml | ||
``` | ||
wf = Workflow("my_workflow") | ||
wf.a1 = x_plus_y() | ||
wf.a2 = x_plus_y() | ||
wf.b = x_plus_y(x=wf.a1.outputs.sum, y=wf.a2.outputs.sum) | ||
|
||
Where `.ci_support/environment-notebooks.yml` looks like: | ||
out = wf(a1__x=0, a1__y=1, a2__x=2, a2__y=3) | ||
out.b__sum | ||
>>> 6 | ||
|
||
```yaml | ||
channels: | ||
- conda-forge | ||
dependencies: | ||
- lammps | ||
wf.draw() | ||
``` | ||
|
||
### Label-based CI | ||
|
||
Some CI triggers when labels get applied to a PR. | ||
In a new repository, you will need to define these labels: | ||
- `format_black`: Runs black analyis and creates a bot-generated commit to fix any format violations | ||
- `run_CodeQL`: Runs the external CodeQL analysis (expensive, only do at the end) | ||
- `run_coverage`: Run all the tests in `tests` and use coveralls to generate a coverage report (also expensive, only run near the end of your PR) | ||
|
||
## Documentation | ||
|
||
You should modify this README to reflect the purpose of your new package. | ||
You can look at the other pyiron modules to get a hint for what sort of information to include, and how to link badges at the head of your README file. | ||
|
||
At a minimum, we suggest creating a meaningful example notebook in the `notebooks/` directory and creating a MyBinder badge so that people can quickly and easily explore your work. | ||
|
||
You can also edit the docs for your package by modifying `docs/index.rst`. | ||
By default, only a simple API section is included. | ||
|
||
## Publishing your package | ||
|
||
If you are inside the pyiron organization or have your own `PYPI_PASSWORD` secret configured, your package will be published on PyPI automatically when you make a new "release" on GitHub -- *as long as* that tag matches the pattern specified in `setup.cfg`; by default any tag that `pyiron_module_template-`, where `pyiron_module_template` is replaced with the name of your module. We recommend using semantic versioning so that your first release looks like `pyiron_module_template-0.0.1`. | ||
|
||
Releasing your package on Conda-Forge is slightly more involved, but not too hard (at least for pure python packages). | ||
See [conda-forge/staged-recipes](https://github.com/conda-forge/staged-recipes) for how to publish it there. | ||
![](docs/_static/demo.png) |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.