You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Add your existing code to directory generated by the NLeSC Python template
2
+
3
+
The following steps requires that your existing code is in a GitHub repository.
4
+
5
+
1. Follow the [instructions to create a new package](https://github.com/NLeSC/python-template#how-to-use) with the Python template, while answering the questions like you would for the existing package.
6
+
7
+
2. Create a Git structure for the new directory: (replace `<NEW_DIRECTORY>` with directory name you used during cookiecutter questionnaire)
8
+
```shell
9
+
$ cd<NEW_DIRECTORY>
10
+
$ git init
11
+
$ git add --all
12
+
$ git commit -m "Added code generated by cookiecutter"
13
+
$ git branch -M main
14
+
```
15
+
16
+
3. Import the existing repository from GitHub (Replace `<ORGANIZATION>` with your GitHub organization name , `<REPOSITORY>` with your GitHub repository name and `<BRANCH>` with your default branch for example `main` or `master`):
| package_name | my_python_package | Name of the package. Avoid using spaces, dashes, or uppercase letters for the best experience across operating systems. |
62
62
| project_name | my-python-project | Name of the project that contains the package. Avoid using spaces or uppercase letters for the best experience across operating systems. |
63
63
| package_short_description | | The information that you enter here will end up in the README, documentation, license, and setup.cfg, so it may be a good idea to prepare something in advance. |
64
+
| keyword1 | keyword1 | A term that describes your package. |
65
+
| keyword2 | keyword2 | Another term that describes your package. |
64
66
| version | 0.1.0 | |
65
67
| github_organization |<my-github-organization>| GitHub organization that will contain this project's repository. This can also be your GitHub user name. |
66
68
| license | Apache Software License 2.0 | The software license under which the code is made available. |
@@ -107,6 +109,7 @@ my-python-project/
107
109
```
108
110
109
111
For an explanation of what's there, read on in the [project_setup.md]({{cookiecutter.project_name}}/project_setup.md) file.
112
+
There are also instructions on how to [apply the template to an existing Python package](ADD_TO_EXISTING_PACKAGE.md).
It is likely that your `CITATION.cff` currently doesn't pass validation. The error messages you get from the [`cffconvert`]({{cookiecutter.repository}}/actions/workflows/cffconvert.yml) GitHub Action are unfortunately a bit cryptic, but doing the following helps:
6
+
7
+
-[ ] Check if the `given-name` and `family-name` keys need updating. If your family name has a name particle like `von` or `van` or `de`, use the `name-particle` key; if your name has a suffix like `Sr` or `IV`, use `name-suffix`. For details, refer to the schema description: https://github.com/citation-file-format/citation-file-format
8
+
-[ ] Update the value of the `orcid` key. If you do not have an orcid yet, you can get one here [https://orcid.org/](https://orcid.org/).
9
+
-[ ] Add more authors if needed
10
+
-[ ] Update `date-released` using the YYYY-MM-DD format.
11
+
-[ ] Update the `doi` key with the conceptDOI for your repository (see [https://help.zenodo.org](https://help.zenodo.org/) for more information on what a conceptDOI is). If your project doesn't have a DOI yet, you can use the string `10.0000/FIXME` to pass validation.
12
+
-[ ] Verify that the `keywords` array accurately describes your project.
13
+
14
+
Once you do all the steps above, the `cffconvert` workflow will tell you what content it expected to see in `.zenodo.json`. Copy-paste from the GitHub Action log into a new file `.zenodo.json`. Afterwards, the `cffconvert` GitHub Action should be green.
15
+
16
+
17
+
To help you keep the citation metadata up to date and synchronized, the [`cffconvert`]({{cookiecutter.repository}}/actions/workflows/cffconvert.yml) GitHub Action checks the following 6 aspects:
18
+
19
+
1. Whether your repository includes a `CITATION.cff` file.
20
+
21
+
_By including this file, authors of the software can receive credit for the work they put in._
22
+
23
+
1. Whether your `CITATION.cff` is valid YAML.
24
+
25
+
_Visit http://www.yamllint.com/ to see if the contents of your CITATION.cff are valid YAML._
26
+
27
+
1. Whether your `CITATION.cff` adheres to the schema (as listed in the `CITATION.cff` file itself under key `cff-version`).
28
+
29
+
_The Citation File Format schema can be found [here](https://github.com/citation-file-format/citation-file-format), along with an explanation of all the keys. You're advised to use the latest available schema version._
30
+
31
+
1. Whether your repository includes a `.zenodo.json` file.
32
+
33
+
_With this file, you can control what metadata should be associated with any future releases of your software on Zenodo: things like the author names, along with their affiliations and their ORCIDs, the license under which the software has been released, as well as the name of your software and a short description. If your repository doesn't have a .zenodo.json file, Zenodo will take a somewhat crude guess to assign these metadata._
34
+
35
+
_The `cffconvert` GitHub action will tell you what it expects to find in `.zenodo.json`, just copy and paste it to a new file named `.zenodo.json`. The suggested text ignores CITATION.cff's `version`, `commit`, and `date-released`. `cffconvert` considers these keys `suspect` in the sense that they are often out of date, and there is little purpose to telling Zenodo about these properties: Zenodo already knows._
36
+
37
+
1. Whether `.zenodo.json` is valid JSON.
38
+
39
+
_Currently unimplemented, but you can check for yourself on [https://jsonlint.com/](https://jsonlint.com/)._
40
+
41
+
1. Whether `CITATION.cff` and `.zenodo.json` contain equivalent data.
42
+
43
+
_This final check verifies that the two files are in sync. The check ignores CITATION.cff's `version`, `commit`, and `date-released`._
By enabling Zenodo integration, your package will automatically get a DOI which can be used to cite your package. After enabling Zenodo integration for your GitHub repository, Zenodo will create a snapshot and archive each release you make on GitHub. Moreover, Zenodo will create a new DOI for each GitHub release of your code.
6
+
7
+
To enable Zenodo integration:
8
+
9
+
1. Go to http://zenodo.org and login with your GitHub account. When you are redirected to GitHub, *Authorize application* to give permission to Zenodo to access your account.
10
+
1. Go to <https://zenodo.org/account/settings/github/> and enable Zenodo integration of your repository by clicking on `On` toggle button.
11
+
2. Your package will get a DOI only after you make a release. Create a new release as described in [README.dev.md]({{cookiecutter.repository}}/blob/main/README.dev.md#33-github)
12
+
3. At this point you should have a DOI. To find out the DOI generated by Zenodo:
13
+
1. Visit https://zenodo.org/deposit and click on your repository link
14
+
2. You will find the latest DOI in the right column in Versions box in **Cite all versions?** section
15
+
3. Copy the text of the link. For example `10.5281/zenodo.1310751`
16
+
4. Update the badge in your repository
17
+
1. Edit README.md and replace the badge placeholder with the badge link you copied in previous step.
0 commit comments