├── .editorconfig ├── .flake8 ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ └── bug_report.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── bad-link-reporter.yml │ ├── codemeta2cff.yaml │ ├── doc-builder.yml │ ├── iga.yml │ ├── ignored-urls.txt │ ├── markdown-linter.yml │ ├── pypi-publish.yaml │ ├── python-linter.yml │ └── waystation.yml ├── .gitignore ├── .gitlint ├── .graphics ├── caltech-round.png └── caltech-round.svg ├── .jsonlintrc.json ├── .markdownlint.json ├── CHANGES.md ├── CITATION.cff ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── INSTALL-Python3.md ├── LICENSE ├── README.md ├── RELEASE.md ├── SUPPORT.md ├── action.yml ├── codemeta.json ├── dev ├── 1000-top-github-contributors.txt ├── common-words-also-names.txt ├── experiments │ ├── comparison-name-taggers │ │ ├── bert1.py │ │ ├── bert2.py │ │ ├── bert3.py │ │ ├── h.py │ │ └── n.py │ ├── detect-language │ │ ├── get-top-github-contributors-china.py │ │ ├── get-top-github-contributors-japan.py │ │ ├── get-top-github-contributors-korea.py │ │ ├── github-top-chinese-contributors.txt │ │ ├── github-top-contributors-korean.txt │ │ ├── test-language-detectors.py │ │ ├── test-spacy-chinese.py │ │ ├── test-spacy-japanese.py │ │ └── test-spacy-korean.py │ ├── graphql-test.py │ ├── loading-big-set │ │ └── testpickle.py │ └── validation │ │ ├── README.md │ │ ├── data │ │ ├── README.md │ │ └── datacite_4.3_schema.json │ │ └── validation.py ├── format-descriptions │ ├── citation-cff │ │ ├── README.md │ │ └── schema-guide.md │ ├── codemeta │ │ ├── README.md │ │ ├── codemeta-crosswalk.csv │ │ ├── funding-examples.md │ │ └── reference-codemeta-crosswalk.numbers │ ├── datacite │ │ ├── DataCite-MetadataKernel_v4.4.pdf │ │ └── README.md │ └── inveniordm │ │ ├── inveniordm-field-mapping.numbers │ │ ├── inveniordm-samples │ │ └── inveniordm-record-sample.json │ │ └── vocabularies │ │ ├── README.md │ │ ├── dates.txt │ │ ├── description-types.txt │ │ ├── id-types.txt │ │ ├── relations.txt │ │ ├── resources.txt │ │ ├── roles.txt │ │ └── title-types.txt ├── org-names │ ├── famous-orgs.txt │ └── github-orgs.txt ├── person-names │ ├── README.md │ ├── chinese-surnames.txt │ ├── enamdict │ │ └── JMnedict.xml.gz │ ├── japanese-surnames.txt │ ├── korean-surnames.txt │ └── wikipedia │ │ └── parse-common-names.py └── scripts │ ├── create-licenses-file │ ├── download-sample-repo │ ├── filter-github-orgs │ └── list-github-orgs ├── docs ├── Makefile ├── _static │ ├── css │ │ └── custom.css │ └── media │ │ ├── caltech-round.png │ │ ├── cloud-upload-reversed.png │ │ ├── cloud-upload.png │ │ ├── cloud-upload.svg │ │ ├── example-github-citation.jpg │ │ ├── example-github-release.jpg │ │ ├── example-record-landing-page.jpg │ │ ├── favicon.ico │ │ ├── get-invenio-pat.png │ │ ├── gh-workflow-list.png │ │ ├── gh-workflow-run-options.png │ │ ├── gh-workflow-run.png │ │ ├── github-action-details.png │ │ ├── github-actions-all-workflows.png │ │ ├── github-final-secrets-list.png │ │ ├── github-notifications-actions.png │ │ ├── github-notifications-link.png │ │ ├── github-notifications-selections.png │ │ ├── github-run-workflow.png │ │ ├── github-running-workflow.png │ │ ├── github-secrets.png │ │ ├── github-sidebar-secrets.png │ │ ├── github-tabs-actions.png │ │ ├── github-tabs.png │ │ ├── github-workflow-options-circled.png │ │ ├── github-workflow-options.png │ │ ├── inveniordm-version-example.png │ │ └── new-pat.png ├── appendix.md ├── cli-usage.md ├── colophon.md ├── conf.py ├── gha-usage.md ├── glossary.md ├── index.md ├── installation.md ├── introduction.md ├── quick-start.md └── tips.md ├── iga ├── __init__.py ├── __main__.py ├── cli.py ├── data │ ├── make-pickle-orgs │ ├── make-pickle-surnames │ ├── org-names.p │ ├── org-names.txt │ ├── surnames.p │ └── surnames.txt ├── data_utils.py ├── doi.py ├── exceptions.py ├── exit_codes.py ├── github.py ├── id_utils.py ├── invenio.py ├── json_utils.py ├── licenses.py ├── metadata.py ├── name_utils.py ├── orcid.py ├── reference.py ├── ror.py ├── text_utils.py └── vendor │ ├── README.md │ └── pybtex_apa7_style │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── formatting │ ├── __init__.py │ └── apa.py │ ├── labels │ ├── __init__.py │ └── apa.py │ ├── names │ ├── __init__.py │ └── firstlast.py │ ├── poetry.lock │ └── pyproject.toml ├── requirements-dev.txt ├── requirements-lint.txt ├── requirements.txt ├── sample-workflow.yml ├── setup.cfg ├── setup.py └── tests ├── conftest.py ├── data ├── expected-iga-output │ └── libsbml-5.19.7.json ├── fake-example │ ├── LICENSE │ ├── account.json │ ├── codemeta.json │ ├── expected-metadata.json │ ├── filenames.json │ ├── release.json │ └── repo.json ├── github-examples │ ├── neither-codemeta-nor-cff │ │ ├── TCCON │ │ │ ├── from-data-caltech-edu.json │ │ │ └── py-ginput │ │ │ │ ├── LICENSE.txt │ │ │ │ ├── filenames.json │ │ │ │ ├── release.json │ │ │ │ ├── repo.json │ │ │ │ └── user.json │ │ └── sbmlteam │ │ │ ├── jsbml │ │ │ ├── LICENSE │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── repo.json │ │ │ └── user.json │ │ │ └── libsbml │ │ │ ├── LICENSE.html │ │ │ ├── LICENSE.txt │ │ │ ├── filenames.json │ │ │ ├── repo.json │ │ │ └── user.json │ ├── with-citation-cff │ │ ├── SDXorg │ │ │ └── pysd │ │ │ │ ├── CITATION.cff │ │ │ │ ├── LICENSE │ │ │ │ ├── filenames.json │ │ │ │ ├── release.json │ │ │ │ ├── repo.json │ │ │ │ └── user.json │ │ ├── open-mmlab │ │ │ └── mmocr │ │ │ │ ├── CITATION.cff │ │ │ │ ├── LICENSE │ │ │ │ ├── filenames.json │ │ │ │ ├── repo.json │ │ │ │ └── user.json │ │ └── tensorflow │ │ │ └── tensorflow │ │ │ ├── CITATION.cff │ │ │ ├── LICENSE │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ ├── repo.json │ │ │ └── user.json │ └── with-codemeta │ │ ├── KarrLab │ │ └── de_sim │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── README.md │ │ ├── UUDigitalHumanitieslab │ │ └── tscan │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── betteridiot │ │ └── bamnostic │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── caltechlibrary │ │ ├── eprinttools │ │ │ ├── CITATION.cff │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── license.html │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── handprint │ │ │ ├── CITATION.cff │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ └── urlup │ │ │ ├── LICENSE │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── cds-astro │ │ └── tutorials │ │ │ ├── LICENCE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── charlie86 │ │ └── spotifyr │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── codemeta │ │ └── codemeta │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── crosscite │ │ └── content-negotiation │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── datacite │ │ ├── akita │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ └── pidgraph-notebooks-python │ │ │ ├── CITATION.cff │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── ddsjoberg │ │ └── gtsummary │ │ │ ├── CITATION.cff │ │ │ ├── LICENSE │ │ │ ├── LICENSE.md │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── duetosymmetry │ │ └── qnm │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── fairdataihub │ │ ├── FAIRshare-Docs-expected.json │ │ ├── FAIRshare-Docs │ │ │ ├── CITATION.cff │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ └── SODA-for-SPARC │ │ │ ├── CITATION.cff │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── gem-pasteur │ │ └── Integron_Finder │ │ │ ├── CITATION.cff │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── karthik │ │ └── wesanderson │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── mne-tools │ │ └── mne-python │ │ │ ├── CITATION.cff │ │ │ ├── LICENSE.txt │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── o2r-project │ │ └── o2r-meta │ │ │ ├── CITATION.cff │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── open-mpi │ │ └── hwloc │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ └── repo.json │ │ ├── pat-s │ │ └── oddsratio │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── proycon │ │ └── codemeta-harvester │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── detect-license.sh │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── ropensci │ │ └── mctq │ │ │ ├── CITATION.cff │ │ │ ├── LICENSE │ │ │ ├── LICENSE.md │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── smsaladi │ │ └── em_data_requirements │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ ├── stain │ │ └── signposting │ │ │ ├── CITATION.cff │ │ │ ├── LICENSE │ │ │ ├── account.json │ │ │ ├── codemeta.json │ │ │ ├── filenames.json │ │ │ ├── release.json │ │ │ └── repo.json │ │ └── sulstice │ │ └── global-chem │ │ ├── CITATION.cff │ │ ├── LICENSE │ │ ├── account.json │ │ ├── codemeta.json │ │ ├── filenames.json │ │ ├── release.json │ │ └── repo.json ├── orcid-examples │ ├── 0000-0001-6151-2200.json │ ├── 0000-0001-9105-5960.json │ ├── 0000-0002-8876-7606.json │ └── 0000-0003-0900-6903.json └── ror-examples │ ├── 02s6k3f65.json │ ├── 03ybx0x41.json │ └── 05dxps055.json ├── test_cli.py ├── test_data_utils.py ├── test_doi.py ├── test_exceptions.py ├── test_exit_codes.py ├── test_github.py ├── test_github_mocks.py ├── test_id_utils.py ├── test_init.py ├── test_is_person.py ├── test_licenses.py ├── test_name_splitting.py ├── test_name_utils.py ├── test_orcid.py ├── test_record_from_codemeta.py ├── test_reference.py ├── test_ror.py └── test_text_utils.py /.editorconfig: -------------------------------------------------------------------------------- 1 | # Summary: EditorConfig file for this project. -*- conf -*- 2 | # 3 | # For more information, see https://EditorConfig.org 4 | # 5 | # Copyright 2024 California Institute of Technology. 6 | # License: Modified BSD 3-clause – see file "LICENSE" in the project website. 7 | # Website: https://github.com/caltechlibrary/iga 8 | 9 | root = true 10 | 11 | [*] 12 | charset = utf-8 13 | end_of_line = lf 14 | indent_size = 4 15 | indent_style = space 16 | insert_final_newline = true 17 | max_line_length = 90 18 | tab_width = 4 19 | trim_trailing_whitespace = true 20 | 21 | [*.cfg] 22 | indent_size = 2 23 | 24 | [*.json] 25 | indent_size = 2 26 | 27 | [*.{yml, yaml}] 28 | indent_size = 2 29 | 30 | # Shell scripts on Windows. 31 | [*.{cmd, bat}] 32 | end_of_line = crlf 33 | 34 | [Makefile, makefile] 35 | indent_size = 4 36 | indent_style = tab 37 | tab_width = 8 38 | 39 | [.applescript] 40 | indent_size = 4 41 | indent_style = tab 42 | tab_width = 4 43 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Summary: repository-specific file attributes assignments for git. 2 | # 3 | # Copyright 2024 California Institute of Technology. 4 | # License: Modified BSD 3-clause – see file "LICENSE" in the project website. 5 | # Website: https://github.com/caltechlibrary/iga 6 | 7 | # Set default interpretation of line endings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8 | 9 | * text=auto 10 | 11 | # Interpretation of common text files ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 12 | 13 | *.bat text eol=crlf 14 | *.cff text 15 | *.cfg text 16 | *.css text diff=css 17 | *.env text 18 | *.html text diff=html 19 | *.ini text 20 | *.ipynb text eol=lf 21 | *.js text 22 | *.json text 23 | *.md text diff=markdown 24 | *.py text diff=python 25 | *.rst text 26 | *.sh text 27 | *.sql text 28 | *.svg text 29 | *.toml text 30 | *.tex text diff=tex 31 | *.txt text 32 | *.yaml text merge=yaml 33 | *.yml text merge=yaml 34 | 35 | # RC files like .babelrc, .eslintrc, etc. 36 | *.*rc text 37 | 38 | LICENSE text 39 | Makefile text 40 | 41 | *.gitattributes text 42 | *.*ignore text 43 | .gitconfig text 44 | 45 | # Interpretation of common binary files ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 46 | 47 | *.bz binary 48 | *.DOC binary 49 | *.doc binary 50 | *.DOCX binary 51 | *.docx binary 52 | *.DOT binary 53 | *.dot binary 54 | *.gz binary 55 | *.jpeg binary 56 | *.jpg binary 57 | *.PDF binary 58 | *.pdf binary 59 | *.RTF binary 60 | *.rtf binary 61 | *.tar binary 62 | *.tgz binary 63 | *.tif binary 64 | *.tiff binary 65 | *.xls binary 66 | *.zip binary 67 | 68 | # Special case for CSV files ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 69 | # This avoids compatibility issues between Windows and Mac. 70 | 71 | *.csv text eol=crlf 72 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve this software 4 | title: '' 5 | labels: 'kind/bug-report' 6 | assignees: '' 7 | --- 8 | 9 | ### Description 10 | 11 | Please explain in a clear and concise way what the issue is. 12 | 13 | 14 | ### How to reproduce the issue 15 | 16 | Explain in a step-by-step fashion what someone else would need to do in order to reproduce the issue. Try to include literal examples of commands or code in your description, like this: 17 | 18 | ``` 19 | put commands and/or code in code blocks *like this* 20 | ``` 21 | 22 |
23 | 24 | Put the output of code examples, log files, or other detailed content in HTML details blocks _like this_. 25 | 26 |
27 | 28 | 29 | ### Screenshots 30 | 31 | If applicable, add screenshots to help explain your problem. 32 | 33 | 34 | ### Software environment 35 | 36 | Please include the following information: 37 | * Version of the software: 38 | * (If relevant) the version of Python that you are using: 39 | * (If relevant) the operating system and version that you are using: 40 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ⭐️ Please remember to make PRs against a branch (usually `develop`) and not against `main`. ⭐️ 2 | 3 | ### Description 4 | 5 | Please describe what this PR is about and what it changes. If this PR is in response to an issue in the issue tracker, please reference it. 6 | 7 | ### Software environment 8 | 9 | Please include the following information: 10 | * Version of the software: 11 | * (If relevant) version of Python in which the changes were tested: 12 | * (If relevant) OS and version on which the changes were tested: 13 | 14 | ### Checklist 15 | 16 | Please check that the following have been done: 17 | - [ ] the [description section above](#description) has been filled out 18 | - [ ] the [software environment section above](#software-environment) has been filled out 19 | - [ ] this PR is against `develop` or another branch and not `main` 20 | -------------------------------------------------------------------------------- /.github/workflows/bad-link-reporter.yml: -------------------------------------------------------------------------------- 1 | # GitHub Actions workflow for Baler (BAd Link reportER) version 2.0.4. 2 | # This is available as the file "sample-workflow.yml" from the source 3 | # code repository for Baler: https://github.com/caltechlibrary/baler 4 | 5 | name: Bad Link Reporter 6 | 7 | # Configure this section ───────────────────────────────────────────── 8 | 9 | env: 10 | # Files to check. (Put patterns on separate lines, no leading dash.) 11 | files: | 12 | **/*.md 13 | 14 | # Label assigned to issues created by this workflow: 15 | labels: bug 16 | 17 | # Number of previous issues to check for duplicate reports. 18 | lookback: 10 19 | 20 | # Time (sec) to wait on an unresponsive URL before trying once more. 21 | timeout: 15 22 | 23 | # Optional file containing a list of URLs to ignore, one per line: 24 | ignore: .github/workflows/ignored-urls.txt 25 | 26 | on: 27 | schedule: # Cron syntax is: "min hr day-of-month month day-of-week" 28 | - cron: 00 04 * * 1 29 | push: 30 | paths: ['**.md'] 31 | workflow_dispatch: 32 | 33 | # The rest of this file should be left as-is ───────────────────────── 34 | 35 | run-name: Test links in Markdown files 36 | jobs: 37 | Baler: 38 | name: Link checker and reporter 39 | runs-on: ubuntu-latest 40 | permissions: 41 | issues: write 42 | steps: 43 | - uses: caltechlibrary/baler@v2 44 | with: 45 | files: ${{github.event.inputs.files || env.files}} 46 | labels: ${{github.event.inputs.labels || env.labels}} 47 | ignore: ${{github.event.inputs.ignore || env.ignore}} 48 | timeout: ${{github.event.inputs.timeout || env.timeout}} 49 | lookback: ${{github.event.inputs.lookback || env.lookback}} 50 | -------------------------------------------------------------------------------- /.github/workflows/codemeta2cff.yaml: -------------------------------------------------------------------------------- 1 | name: CodeMeta2CFF 2 | run-name: Run CodeMeta2CFF after ${{github.event_name}} by ${{github.actor}} 3 | 4 | on: 5 | push: 6 | paths: ['codemeta.json'] 7 | workflow_dispatch: 8 | inputs: 9 | reason: 10 | description: 'Reason' 11 | required: false 12 | default: 'Manual trigger' 13 | 14 | jobs: 15 | CodeMeta2CFF: 16 | runs-on: ubuntu-latest 17 | steps: 18 | - name: Checkout 19 | uses: actions/checkout@v4 20 | - name: Convert CFF 21 | uses: caltechlibrary/codemeta2cff@main 22 | - name: Commit CFF 23 | uses: EndBug/add-and-commit@v9 24 | with: 25 | message: 'Add updated CITATION.cff from codemeta.json file' 26 | add: 'CITATION.cff' 27 | -------------------------------------------------------------------------------- /.github/workflows/ignored-urls.txt: -------------------------------------------------------------------------------- 1 | https://your-invenio-server.org/ 2 | -------------------------------------------------------------------------------- /.github/workflows/markdown-linter.yml: -------------------------------------------------------------------------------- 1 | # Summary: GitHub Actions workflow to run a Markdown linter on .md files. 2 | # 3 | # Copyright 2024 California Institute of Technology. 4 | # License: Modified BSD 3-clause – see file "LICENSE" in the project website. 5 | # Website: https://github.com/caltechlibrary/iga 6 | 7 | name: Markdown file linter 8 | run-name: Lint Markdown files after ${{github.event_name}} by ${{github.actor}} 9 | 10 | on: 11 | push: 12 | branches: 13 | - main 14 | paths: 15 | - '*.md' 16 | - .markdownlint.json 17 | pull_request: 18 | branches: 19 | - main 20 | paths: 21 | - '*.md' 22 | - .markdownlint.json 23 | workflow_dispatch: 24 | paths: 25 | - '*.md' 26 | 27 | jobs: 28 | lint: 29 | name: Run Markdown linter 30 | runs-on: ubuntu-latest 31 | steps: 32 | - name: Check out copy of git repository. 33 | uses: actions/checkout@v4 34 | 35 | - name: Run Markdownlint on .md files. 36 | uses: DavidAnson/markdownlint-cli2-action@v15 37 | with: 38 | config: .markdownlint.json 39 | globs: | 40 | *.md 41 | -------------------------------------------------------------------------------- /.github/workflows/pypi-publish.yaml: -------------------------------------------------------------------------------- 1 | name: Pypi Publish 2 | 3 | on: 4 | push: 5 | tags: 6 | - v* 7 | 8 | jobs: 9 | build-n-publish: 10 | runs-on: ubuntu-latest 11 | environment: 12 | name: pypi 13 | url: https://pypi.org/p/iga 14 | permissions: 15 | id-token: write 16 | steps: 17 | - uses: actions/checkout@v2 18 | - name: Set up Python 3.9 19 | uses: actions/setup-python@v2 20 | with: 21 | python-version: 3.9 22 | - name: Install dependencies 23 | run: | 24 | python -m pip install --upgrade pip 25 | pip install setuptools wheel 26 | - name: Build package 27 | run: | 28 | python setup.py sdist bdist_wheel 29 | - name: Publish 30 | uses: pypa/gh-action-pypi-publish@release/v1 31 | -------------------------------------------------------------------------------- /.github/workflows/python-linter.yml: -------------------------------------------------------------------------------- 1 | # Summary: GitHub Actions workflow to run flake8 on codebase. 2 | # 3 | # Copyright 2024 California Institute of Technology. 4 | # License: Modified BSD 3-clause – see file "LICENSE" in the project website. 5 | # Website: https://github.com/caltechlibrary/baler 6 | 7 | name: Python file linter 8 | run-name: Lint code after ${{github.event_name}} by ${{github.actor}} 9 | 10 | on: 11 | push: 12 | paths: 13 | - '**.py' 14 | pull_request: 15 | paths: 16 | - '**.py' 17 | workflow_dispatch: 18 | paths: 19 | - '**.py' 20 | 21 | jobs: 22 | flake8-lint: 23 | name: Run flake8 24 | runs-on: ubuntu-latest 25 | steps: 26 | - name: Check out source repository 27 | uses: actions/checkout@v4 28 | 29 | - name: Set up Python environment 30 | uses: actions/setup-python@v4 31 | with: 32 | python-version: "3.11" 33 | cache: pip 34 | 35 | - name: Install dependencies 36 | run: | 37 | python -m pip install --upgrade pip 38 | python -m pip install -r requirements-lint.txt 39 | 40 | - name: Run flake8 41 | uses: TrueBrain/actions-flake8@v2 42 | with: 43 | only_warn: 1 44 | extra_arguments: --show-source --config=./.flake8 --extend-exclude=iga/vendor/,dev/,docs/,tests/ 45 | plugins: flake8>=4.0.1 flake8-bugbear>=22.4.25 flake8-builtins>=1.5.3 flake8-comprehensions>=3.8.0 flake8-executable>=2.1.1 flake8_implicit_str_concat>=0.3.0 flake8-pie>=0.15.0 flake8-simplify>=0.19.2 46 | -------------------------------------------------------------------------------- /.github/workflows/waystation.yml: -------------------------------------------------------------------------------- 1 | # GitHub Actions workflow for Waystation version 1.8.0. 2 | # Available as the file "sample-workflow.yml" from the software 3 | # repository at https://github.com/caltechlibrary/waystation 4 | 5 | name: GitHub Pages archiver 6 | run-name: Archive GitHub Pages in the Wayback Machine 7 | 8 | on: 9 | release: 10 | types: [published] 11 | workflow_dispatch: 12 | inputs: 13 | dry_run: 14 | description: Run without actually sending URLs 15 | type: boolean 16 | 17 | jobs: 18 | run-waystation: 19 | name: Run Waystation 20 | runs-on: ubuntu-latest 21 | steps: 22 | - uses: caltechlibrary/waystation@v1.8 23 | with: 24 | dry_run: ${{github.event.inputs.dry_run || false}} 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Summary: rules for files and subdirectories to be ignored by git. 2 | # 3 | # Copyright 2024 California Institute of Technology. 4 | # License: Modified BSD 3-clause – see file "LICENSE" in the project website. 5 | # Website: https://github.com/caltechlibrary/iga 6 | # 7 | # ╭─────────────────────── Notice ── Notice ── Notice ────────────────────────╮ 8 | # │ The recommended approach is to add ONLY project-specific rules to the │ 9 | # │ .gitignore of a repo. Users can put rules that apply to their individual │ 10 | # │ ways of doing things into global git ignore files that they set up using │ 11 | # │ (e.g.) "git config --global core.excludesfile ~/.gitignore_global". For │ 12 | # │ example, a number of files such as Emacs checkpoint and backup files are │ 13 | # │ things that are not specific to a given project; rather, Emacs creates │ 14 | # │ them everywhere, in all projects, because they're a byproduct of how it │ 15 | # │ works. Thus, rules to ignore them belong in users' own global .gitignore │ 16 | # │ files, not in a project's .gitignore. │ 17 | # │ │ 18 | # │ A useful starting point for global .gitignore file contents can be found │ 19 | # │ at https://github.com/github/gitignore/tree/main/Global (as of 2022-07-14)│ 20 | # ╰───────────────────────────────────────────────────────────────────────────╯ 21 | 22 | # Ignore backup files created by our Makefile ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 23 | 24 | *.bak 25 | 26 | # Python-specific things to ignore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 27 | 28 | __pycache__/ 29 | *.py[cod] 30 | *$py.class 31 | *.egg-info/ 32 | .eggs/ 33 | .pytest_cache 34 | .coverage 35 | tests/*.log 36 | 37 | # Project-specific things to ignore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 38 | 39 | build 40 | dist 41 | docs/_build 42 | e.sh 43 | iga/tmp 44 | *.tmp 45 | *.log 46 | fake.txt 47 | debug.out 48 | -------------------------------------------------------------------------------- /.gitlint: -------------------------------------------------------------------------------- 1 | # Summary: project config file for gitlint. -*- mode: confg -*- 2 | # 3 | # Copyright 2024 by the California Institute of Technology. 4 | # License: BSD-type license – see file "LICENSE" in the project website. 5 | # Website: https://github.com/caltechlibrary/iga 6 | 7 | [general] 8 | verbosity=2 9 | ignore=title-trailing-punctuation,body-is-missing 10 | regex-style-search=True 11 | 12 | [title-max-length] 13 | line-length=72 14 | 15 | # Dependabot tends to generate lines that exceed the char limit. 16 | [ignore-by-author-name] 17 | regex=dependabot 18 | ignore=all 19 | -------------------------------------------------------------------------------- /.graphics/caltech-round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/.graphics/caltech-round.png -------------------------------------------------------------------------------- /.jsonlintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "comments": false, 3 | "trailing-commas": false, 4 | "duplicate-keys": false, 5 | "log-files": false, 6 | "compact": true, 7 | "continue": true, 8 | "patterns": ["**/*.json"] 9 | } 10 | -------------------------------------------------------------------------------- /.markdownlint.json: -------------------------------------------------------------------------------- 1 | { 2 | "blank_lines": { 3 | "maximum": 2 4 | }, 5 | "html": { 6 | "allowed_elements": [ 7 | "a", 8 | "b", 9 | "br", 10 | "code", 11 | "details", 12 | "div", 13 | "em", 14 | "h4", 15 | "i", 16 | "img", 17 | "ins", 18 | "kbd", 19 | "p", 20 | "picture", 21 | "pre", 22 | "source", 23 | "span", 24 | "sup", 25 | "summary" 26 | ] 27 | }, 28 | "line-length": { 29 | "line_length": 10000 30 | }, 31 | "no-alt-text": true, 32 | "no-duplicate-header": { 33 | "allow_different_nesting": true 34 | }, 35 | "MD024": { 36 | "siblings_only": true 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /CITATION.cff: -------------------------------------------------------------------------------- 1 | cff-version: 1.2.0 2 | message: "If you use this software, please cite it as below." 3 | title: InvenioRDM GitHub Archiver (IGA) 4 | authors: 5 | - family-names: Hucka 6 | given-names: Michael 7 | orcid: https://orcid.org/0000-0001-9105-5960 8 | - family-names: Morrell 9 | given-names: Thomas E 10 | orcid: https://orcid.org/0000-0001-9266-5146 11 | abstract: The InvenioRDM GitHub Archiver (IGA) automatically archives GitHub releases in an InvenioRDM repository. 12 | repository-code: "https://github.com/caltechlibrary/iga" 13 | type: software 14 | doi: 10.22002/7vcz4-d4p68 15 | version: 1.3.5 16 | license-url: "https://github.com/caltechlibrary/iga/blob/main/LICENSE" 17 | keywords: 18 | - software 19 | - science 20 | - archiving 21 | - archives 22 | - preservation 23 | - source code 24 | - source code archiving 25 | - source code preservation 26 | - code preservation 27 | - automation 28 | - reproducibility 29 | - research reproducibility 30 | - InvenioRDM 31 | - Invenio 32 | - GitHub 33 | - GitHub Actions 34 | - GitHub Automation 35 | date-released: 2024-11-07 36 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Guidelines for contributing to this project 2 | 3 | Any constructive contributions – bug reports, pull requests (code or documentation), suggestions for improvements, and more – are welcome. 4 | 5 | 6 | ## Conduct 7 | 8 | Everyone is asked to read and respect the [code of conduct](CODE_OF_CONDUCT.md) before participating in this project. 9 | 10 | 11 | ## Coordinating work 12 | 13 | A quick way to find out what is currently in the near-term plans for this project is to look at the [GitHub issue tracker](https://github.com/caltechlibrary/iga/issues), but the possibilities are not limited to what you see there – if you have ideas for new features and enhancements, please feel free to write them up as a new issue or contact the developers directly! 14 | 15 | New development takes place in the `develop` branch. The `v1` branch reflect the latest release, so that code should be the same as the lateset released version of the software. 16 | 17 | 18 | ## Submitting contributions 19 | 20 | Please feel free to contact the author directly, or even better, jump right in and use the standard GitHub approach of forking the repo and creating a pull request. When committing code changes and submitting pull requests, please write a clear log message for your commits. 21 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022-2024, Caltech 2 | All rights not granted herein are expressly reserved by Caltech. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, 8 | this list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its contributors 15 | may be used to endorse or promote products derived from this software without 16 | specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 22 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 | POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /RELEASE.md: -------------------------------------------------------------------------------- 1 | # Making a Release 2 | 3 | These are the current steps for making a release of IGA 4 | 5 | 1. Work in the develop branch 6 | 2. Run `pytest -v --cov=iga -l tests/` 7 | 3. Add changes to CHANGES.md 8 | 4. Update the version number in setup.cfg 9 | 5. Update the version number in codemeta.json 10 | 6. Make a release on GitHub. This will trigger iga to run and do the release on pypi. Wait for all actions to finish. 11 | 7. Move all new commits to the v1 branch. When on the v1 branch type `git rebase develop` 12 | -------------------------------------------------------------------------------- /SUPPORT.md: -------------------------------------------------------------------------------- 1 | Support 2 | ======= 3 | 4 | Thank you for your interest in this project. If you are experiencing problems or have questions, the following are the preferred methods of reaching someone: 5 | 6 | 1. Report a new issue using the [issue tracker](https://github.com/caltechlibrary/iga/issues). 7 | 2. Send email to the Caltech Library: [helpdesk@library.caltech.edu](mailto:helpdesk@library.caltech.edu). 8 | 3. Send email to an individual involved in the project. People's names appear in the top-level `README.md` file in the source code repository. 9 | -------------------------------------------------------------------------------- /dev/experiments/comparison-name-taggers/bert1.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from transformers import AutoTokenizer, AutoModelForTokenClassification, pipeline 4 | 5 | model_name = 'dslim/bert-large-NER' 6 | 7 | bert_tokenizer = AutoTokenizer.from_pretrained(model_name) 8 | bert_model = AutoModelForTokenClassification.from_pretrained(model_name) 9 | 10 | nlp = pipeline('ner', model=bert_model, tokenizer=bert_tokenizer) 11 | 12 | from pprint import pprint 13 | pprint(nlp('Martin Luther King, Jr.')) 14 | 15 | breakpoint() 16 | -------------------------------------------------------------------------------- /dev/experiments/comparison-name-taggers/bert2.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from transformers import AutoTokenizer, AutoModelForTokenClassification 4 | from transformers import pipeline 5 | 6 | model_name = "Davlan/distilbert-base-multilingual-cased-ner-hrl" 7 | 8 | tokenizer = AutoTokenizer.from_pretrained(model_name) 9 | model = AutoModelForTokenClassification.from_pretrained(model_name) 10 | nlp = pipeline("ner", model=model, tokenizer=tokenizer, aggregation_strategy="max") 11 | 12 | from pprint import pprint 13 | pprint(nlp('Martin Luther King, Jr.')) 14 | breakpoint() 15 | -------------------------------------------------------------------------------- /dev/experiments/comparison-name-taggers/bert3.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from transformers import AutoTokenizer, AutoModelForTokenClassification 4 | from transformers import pipeline 5 | 6 | tokenizer = AutoTokenizer.from_pretrained("xlm-roberta-large-finetuned-conll03-english") 7 | model = AutoModelForTokenClassification.from_pretrained("xlm-roberta-large-finetuned-conll03-english") 8 | classifier = pipeline("ner", model=model, tokenizer=tokenizer) 9 | 10 | from pprint import pprint 11 | pprint(classifier('Martin Luther King, Jr.')) 12 | breakpoint() 13 | -------------------------------------------------------------------------------- /dev/experiments/comparison-name-taggers/h.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # import requests 4 | 5 | # API_URL = "https://api-inference.huggingface.co/models/opensource/extract_names" 6 | # headers = {"Authorization": f"Bearer {API_TOKEN}"} 7 | 8 | # def query(payload): 9 | # response = requests.post(API_URL, headers=headers, json=payload) 10 | # return response.json() 11 | 12 | # output = query({ 13 | # "inputs": "My name is Sarah Jessica Parker but you can call me Jessica", 14 | # }) 15 | 16 | 17 | from transformers import AutoTokenizer, AutoModelForTokenClassification 18 | 19 | model_name = "opensource/extract_names" 20 | 21 | tokenizer = AutoTokenizer.from_pretrained(model_name) 22 | 23 | model = AutoModelForTokenClassification.from_pretrained(model_name) 24 | 25 | breakpoint() 26 | -------------------------------------------------------------------------------- /dev/experiments/comparison-name-taggers/n.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from nameparser import HumanName 4 | from pprint import pprint 5 | pprint(HumanName('Martin Luther King, Jr.')) 6 | pprint(HumanName('Mike Hucka')) 7 | pprint(HumanName('Maria Teresa García Ramírez de Arroyo')) 8 | breakpoint() 9 | -------------------------------------------------------------------------------- /dev/experiments/detect-language/get-top-github-contributors-china.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Summary: print names of top GitHub contributors from China. 3 | # Data from https://github.com/gayanvoice/top-github-users 4 | 5 | import pandas as pd 6 | import lxml 7 | import string 8 | 9 | base_url = 'https://raw.githubusercontent.com/gayanvoice/top-github-users/main/markdown/public_contributions' 10 | page_url = f'{base_url}/china.md' 11 | 12 | # Despite that the page is .md, the table inside it is actually in raw HTML. 13 | page = pd.read_html(page_url, encoding='UTF-8') 14 | table = page[3] 15 | 16 | # Remove non-Korean script characters. 17 | remove_latin = str.maketrans('', '', string.printable) 18 | 19 | names = [name.translate(remove_latin) for name in table['Name']] 20 | names = [nonblank for nonblank in names if nonblank] 21 | print(*names, sep='\n') 22 | -------------------------------------------------------------------------------- /dev/experiments/detect-language/get-top-github-contributors-japan.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Summary: print names of top South Korean GitHub contributors. 3 | # Data from https://github.com/gayanvoice/top-github-users 4 | 5 | import pandas as pd 6 | import lxml 7 | import string 8 | 9 | base_url = 'https://raw.githubusercontent.com/gayanvoice/top-github-users/main/markdown/public_contributions' 10 | page_url = f'{base_url}/japan.md' 11 | 12 | # Despite that the page is .md, the table inside it is actually in raw HTML. 13 | page = pd.read_html(page_url, encoding='UTF-8') 14 | table = page[3] 15 | 16 | # Remove non-Korean script characters. 17 | remove_latin = str.maketrans('', '', string.printable) 18 | 19 | names = [name.translate(remove_latin) for name in table['Name']] 20 | names = [nonblank for nonblank in names if nonblank] 21 | print(*names, sep='\n') 22 | -------------------------------------------------------------------------------- /dev/experiments/detect-language/get-top-github-contributors-korea.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Summary: print names of top South Korean GitHub contributors. 3 | # Data from https://github.com/gayanvoice/top-github-users 4 | 5 | import pandas as pd 6 | import lxml 7 | import string 8 | 9 | base_url = 'https://raw.githubusercontent.com/gayanvoice/top-github-users/main/markdown/public_contributions' 10 | page_url = f'{base_url}/south_korea.md' 11 | 12 | # Despite that the page is .md, the table inside it is actually in raw HTML. 13 | page = pd.read_html(page_url, encoding='UTF-8') 14 | table = page[3] 15 | 16 | # Remove non-Korean script characters. 17 | remove_latin = str.maketrans('', '', string.printable) 18 | 19 | names = [name.translate(remove_latin) for name in table['Name']] 20 | names = [nonblank for nonblank in names if nonblank] 21 | print(*names, sep='\n') 22 | -------------------------------------------------------------------------------- /dev/experiments/detect-language/github-top-chinese-contributors.txt: -------------------------------------------------------------------------------- 1 | 布客飞龙 2 | 小弟调调 3 | 芋道源码 4 | 三咲智子 5 | 题叶 6 | 王下邀月熊 7 | 张炎泼 8 | 徐明 9 | 灵茶山艾府 10 | 王诗翔 11 | 云游君 12 | 吴晟 13 | 卡色 14 | 罗泽轩 15 | 贤心 16 | 前端开发博客 17 | 李鼎 18 | 响马 19 | 管宜尧 20 | 辉鸭蛋 21 | 云风 22 | 伊撒尔 23 | 依云 24 | 程序员 25 | 大帅老猿 26 | 阿崔 27 | 吴多益 28 | 荣顶 29 | 李宗英 30 | 安正超 31 | 彭于斌 32 | 大漠穷秋 33 | 文翼 34 | 曾哥 35 | 骷髅头 36 | 崔庆才丨静觅 37 | 一蓑烟雨 38 | 钝悟 39 | 李靖 40 | 迷渡 41 | 游游游 42 | 云谦 43 | 马三小伙儿 44 | 白宦成 45 | 童鞋提不起劲 46 | 刘炬光 47 | 居戎氏 48 | 鹤翔万里 49 | 张涛 50 | 虫师 51 | 郭飞 52 | 谭光志 53 | 魔法 54 | 颜海镜 55 | 双愚 56 | 陈夏明 57 | 老马啸西风 58 | 黄玄 59 | 一丝 60 | 乐平 61 | 达峰的夏天 62 | 刘丹冰 63 | 庄表伟 64 | 张风捷特烈 65 | 路人甲 66 | 程序员鱼皮 67 | 残页 68 | 吕立青 69 | 杨琼璞 70 | 程序员欣宸 71 | 簞純 72 | 闲耘™ 73 | 轮子哥 74 | 阳明 75 | 方志朋 76 | 削微寒 77 | 剧中人 78 | 染陌同学 79 | 程序员 80 | 一个有毅力的吃货 81 | 千古壹号 82 | 程序员泥瓦匠 83 | 杨尚川 84 | 编程吴彦祖代码蔡徐坤 85 | 陌竹 86 | 黄健宏 87 | 杨充 88 | 脉脉不得语 89 | 夜莺 90 | 离谱 91 | 编程指北 92 | 蓝色的秋风 93 | 李文周 94 | 若川 95 | 王浩 96 | 薛翔 97 | 东方有鱼名为咸 98 | 朱天龙 99 | 工业聚 100 | 小林 101 | 吴海超 102 | 程序猿 103 | 江南一点雨 104 | 暴走的鑫鑫 105 | 黄子毅 106 | 言肆 107 | 秦宇航 108 | 糖饼 109 | 易容 110 | 咕咚 111 | 重剑无锋 112 | 全栈然叔 113 | 老齐 114 | 小二 115 | 余凡 116 | 景彬 117 | 艾伦 118 | 新运维社区 119 | 猫开 120 | 云云酱 121 | 施展 122 | 天猪 123 | 狼叔 124 | 王福朋 125 | 吖猩 126 | 邓维佳 127 | 前端小武 128 | 刘彦玮 129 | 骆昊 130 | 许雪里 131 | 徐小夕 132 | 程序员大目 133 | 煎鱼 134 | 字节流动 135 | 明城 136 | 舒克·贝塔 137 | 江小湖 138 | 陆泽西 139 | 吕文翰 140 | 泉哥 141 | 技术胖 142 | 村长 143 | 代码家 144 | 冴羽 145 | 林鑫 146 | 林晨 147 | 阿拉斯加大闸蟹 148 | 見える 149 | 房燕良 150 | 第一名的小蝌蚪 151 | 牛さん 152 | 杨萧玉 153 | 陈小缘 154 | 高云墨智 155 | 晋先森 156 | 鱼哥 157 | 达达 158 | 梦宇 159 | 程序亦非猿 160 | 砖家 161 | 葫芦娃 162 | 素十八 163 | 欧阳大哥 164 | 华仔 165 | 胡中元 166 | 半桶水 167 | 碎碎酱 168 | 三水清 169 | 树朾 170 | 门心叼龙 171 | 痕迹 172 | 浪里行舟 173 | 梦里茶 174 | 张鸿洋 175 | 微醺岁月 176 | 黄伟平 177 | 张恕征 178 | 计算机视觉 179 | 袁宵 180 | 稚晖 181 | 花裤衩 182 | 纯洁的微笑 183 | 吴师兄学算法 184 | 开源中国 185 | 梁少峰 186 | 易枭寒 187 | 豪情 188 | 范凯 189 | 郭永峰 190 | 隐形人真忙 191 | -------------------------------------------------------------------------------- /dev/experiments/detect-language/github-top-contributors-korean.txt: -------------------------------------------------------------------------------- 1 | 유용민 2 | 정승훈 3 | 도경 4 | 이정호 5 | 박현우 6 | 김성길 7 | 깃짱 8 | 전민재 9 | 안예성 10 | 구영표 11 | 박준현 12 | 변찬우 13 | 이은비 14 | 권강빈 15 | 洪民憙 16 | 정현수 17 | 최미래 18 | 백승하 19 | 스타샤 20 | 신수형 21 | 임우찬 22 | 신종화 23 | 이강욱 24 | 윤정민 25 | 이석호 26 | 김지현 27 | 전해성 28 | 이정호 29 | 심미진 30 | 웹스토리보이 31 | 이수진 32 | 김서진 33 | 최민재 34 | 황준승 35 | 백여우 36 | 전해림 37 | 니콜라스 38 | 박준현 39 | 김노트 40 | 강대현 41 | 김재호 42 | 김세현 43 | 임세현 44 | 시니어코딩 45 | 이정은 46 | 김준환 47 | 한규진 48 | 신준서 49 | 강지석 50 | 김승우 51 | 테디 52 | 고석진 53 | 이정민 54 | 임동현 55 | 권용빈 56 | 차승호 57 | 나상우 58 | 이규진빌규진 59 | 박찬인 60 | 김한수 61 | 차경민 62 | 김도형 63 | 홍정현 64 | 소연 65 | 우준성 66 | 이선우 67 | 이원중 68 | 강수진 69 | 정우일 70 | 박우빈 71 | 황성현 72 | 조성동 73 | 정찬효 74 | 박우림 75 | 페르난도 76 | 레이크한영수 77 | 주엽 78 | 정석호 79 | 강성진 80 | 정시원 81 | 승민 82 | 김나영 83 | 이재하 84 | 정성민 85 | 전지환 86 | 재이다 87 | 김민혁 88 | 이정연 89 | 조용주 90 | 사이먼 91 | 프로그래머스교육팀 92 | 토르 93 | 태민 94 | 이안 95 | 아구몬 96 | 안성현 97 | 이승우 98 | 양윤재 99 | 박창주 100 | 이승규 101 | 이준혁 102 | 강종연 103 | 박연오 104 | 서울정보소통광장 105 | 조은 106 | 정건우 107 | 류성두 108 | 노종원 109 | 小河 110 | 서현석 111 | 홍영준 112 | 신백균 113 | 령이 114 | 이동영 115 | 신중빈 116 | -------------------------------------------------------------------------------- /dev/experiments/detect-language/test-spacy-chinese.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import spacy 4 | 5 | nlp = spacy.load('zh_core_web_lg') 6 | 7 | with open('../../person-names/chinese-surnames.txt', 'r') as file: 8 | names = file.read().splitlines() 9 | 10 | def has_entities(result): 11 | return result if result.ents else None 12 | 13 | results = [nlp(n) for n in names] 14 | labels = [x.ents[0].label_ for x in filter(has_entities, results)] 15 | 16 | percent = ( len(labels)/len(names) )*100 17 | print(f'Labeled {len(labels)} out of {len(names)} names ({percent:3.1f}%)') 18 | 19 | correct = sum(1 for value in labels if value == 'PERSON') 20 | incorrect = len(labels) - correct 21 | 22 | percent_correct = ( correct/len(names) )*100 23 | print(f'Correct: {correct} out of {len(labels)} labels ({percent_correct:3.1f}% of total)') 24 | 25 | # print('Test') 26 | 27 | # import regex 28 | # p = regex.compile(r'\L', alternatives=names) 29 | # test = '吴晟' 30 | # print(p.search(test)) 31 | -------------------------------------------------------------------------------- /dev/experiments/detect-language/test-spacy-japanese.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 -u 2 | 3 | import sys 4 | 5 | # ja_ginza 6 | # ja_ginza_electra 7 | # ja_core_news_lg 8 | # ja_core_news_trf 9 | 10 | if len(sys.argv) < 2: 11 | exit('Need one argument: a model name') 12 | 13 | model = sys.argv[1] 14 | 15 | import spacy 16 | print(f'Loading spacy model {model} ...') 17 | nlp = spacy.load(model) 18 | print(f'Loading spacy model {model} ... Done.') 19 | 20 | with open('../../person-names/japanese-surnames.txt', 'r') as file: 21 | names = file.read().splitlines() 22 | 23 | names_subset = names[::10] 24 | 25 | def spacy_result(name): 26 | print('.', end='') 27 | return nlp(name) 28 | 29 | def has_entities(result): 30 | return result if result.ents else None 31 | 32 | results = [spacy_result(n) for n in names_subset] 33 | labels = [x.ents[0].label_ for x in filter(has_entities, results)] 34 | 35 | percent = ( len(labels)/len(names_subset) )*100 36 | print(f'Labeled {len(labels)} out of {len(names_subset)} names ({percent:3.1f}%)') 37 | 38 | correct = sum(1 for value in labels if value.lower() == 'person') 39 | incorrect = len(labels) - correct 40 | 41 | percent_correct = ( correct/len(names_subset) )*100 42 | print(f'Correct: {correct} out of {len(labels)} labels ({percent_correct:3.1f}% of total)') 43 | -------------------------------------------------------------------------------- /dev/experiments/detect-language/test-spacy-korean.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import spacy 4 | 5 | nlp = spacy.load('ko_core_news_lg') 6 | 7 | with open('korean.txt', 'r') as file: 8 | names = file.read().splitlines() 9 | 10 | def has_entities(result): 11 | return result if result.ents else None 12 | 13 | results = [nlp(n) for n in names] 14 | labels = [x.ents[0].label_ for x in filter(has_entities, results)] 15 | 16 | percent = ( len(labels)/len(names) )*100 17 | print(f'Labeled {len(labels)} out of {len(names)} names ({percent:3.1f}%)') 18 | 19 | correct = sum(1 for value in labels if value == 'PS') 20 | incorrect = len(labels) - correct 21 | 22 | percent_correct = ( correct/len(names) )*100 23 | print(f'Correct: {correct} out of {len(labels)} labels ({percent_correct:3.1f}% of total)') 24 | -------------------------------------------------------------------------------- /dev/experiments/graphql-test.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from gql import gql, Client 4 | from gql.transport.aiohttp import AIOHTTPTransport 5 | 6 | # Select your transport with a defined url endpoint 7 | transport = AIOHTTPTransport(url='https://api.github.com/graphql') 8 | 9 | # Create a GraphQL client using the defined transport 10 | client = Client(transport=transport, fetch_schema_from_transport=True) 11 | 12 | # Provide a GraphQL query 13 | query = gql(''' 14 | { 15 | search(query: "type:org", type: USER, first: 100) { 16 | userCount 17 | nodes { 18 | ... on Organization { 19 | name 20 | createdAt 21 | description 22 | } 23 | } 24 | } 25 | } 26 | ''') 27 | 28 | # Execute the query on the transport 29 | result = client.execute(query) 30 | print(result) 31 | -------------------------------------------------------------------------------- /dev/experiments/loading-big-set/testpickle.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import gzip 4 | import pickle 5 | from commonpy.data_structures import CaseFoldSet 6 | from timeit import timeit 7 | 8 | 9 | def read_from_file(): 10 | orgs = CaseFoldSet() 11 | with open('github-orgs.txt', 'r') as f: 12 | for line in f.readlines(): 13 | orgs.add(line) 14 | return orgs 15 | 16 | 17 | def make_pickle(): 18 | orgs = CaseFoldSet() 19 | with open('github-orgs.txt', 'r') as f: 20 | for line in f.readlines(): 21 | orgs.add(line) 22 | with open('pickle.p', 'wb') as f: 23 | pickle.dump(orgs, f) 24 | 25 | 26 | def read_from_pickle(): 27 | with open('pickle.p', 'rb') as f: 28 | return pickle.load(f) 29 | 30 | 31 | def read_from_gzipped_pickle(): 32 | with gzip.open('pickle.p.gz', 'rb') as pickle_file: 33 | return pickle.load(pickle_file) 34 | 35 | 36 | print('file = ', timeit(read_from_file, number=10)) 37 | print('pickle = ', timeit(read_from_pickle, number=10)) 38 | print('gzipped pickle = ', timeit(read_from_gzipped_pickle, number=10)) 39 | -------------------------------------------------------------------------------- /dev/experiments/validation/README.md: -------------------------------------------------------------------------------- 1 | # Schema validation notes 2 | 3 | Early on, I thought that records would come in DataCite 4.3 format. However, it turns out that InvenioRDM does not use DataCite record format per se; it uses something _compatible_ with DataCite. The upshot is that doing schema validation using DataCite schemas doesn't help, and in addition, it's not clear exactly what schema version is used in any given InvenioRDM installation. So, the current version of IGA doesn't do JSON schema validation. The code I started to write is in this directory, in case it's ever useful in the future. 4 | -------------------------------------------------------------------------------- /dev/experiments/validation/data/README.md: -------------------------------------------------------------------------------- 1 | # DataCite 4.3 schema 2 | 3 | This schema was copied from the DataCite GitHub repository. 4 | -------------------------------------------------------------------------------- /dev/experiments/validation/validation.py: -------------------------------------------------------------------------------- 1 | from os import path 2 | from iga.exceptions import InternalError 3 | 4 | _SCHEMA_PATH = path.join(path.dirname(__file__), 'data/datacite_4.3_schema.json') 5 | 6 | def valid_record(record): 7 | '''Return True if the given record is valid.''' 8 | import json 9 | import jsonschema 10 | 11 | # Step 1: do basic JSON validation. 12 | try: 13 | record_json = json.loads(record) 14 | except json.decoder.JSONDecodeError as ex: 15 | log('given record failed to load using Python json library: ' + str(ex)) 16 | return False 17 | 18 | # Step 2: validate against DataCite JSON schema. 19 | try: 20 | with open(_SCHEMA_PATH, 'r') as schema_file: 21 | datacite_schema = schema_file.read() 22 | schema_json = json.loads(datacite_schema) 23 | jsonschema.validate(instance=record_json, schema=schema_json) 24 | except OSError as ex: 25 | raise InternalError('Unable to read internal JSON schema: ' + str(ex)) 26 | except json.decoder.JSONDecodeError as ex: 27 | raise InternalError('Internal JSON schema is corrupted: ' + str(ex)) 28 | except jsonschema.exceptions.ValidationError as ex: 29 | log('given record failed schema validation: ' + str(ex)) 30 | return False 31 | return True 32 | 33 | -------------------------------------------------------------------------------- /dev/format-descriptions/citation-cff/README.md: -------------------------------------------------------------------------------- 1 | # Citation File Format schema 2 | 3 | The file [`schema-guide.md`](schema-guide.md) in this directory is a copy of the following file (as it existed on 2023-04-18), known as the _Guide to Citation File Format schema version 1.2.0_. 4 | 5 | https://github.com/citation-file-format/citation-file-format/blob/main/schema-guide.md 6 | 7 | The copy here is for easy access during development of IGA. 8 | -------------------------------------------------------------------------------- /dev/format-descriptions/codemeta/reference-codemeta-crosswalk.numbers: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/dev/format-descriptions/codemeta/reference-codemeta-crosswalk.numbers -------------------------------------------------------------------------------- /dev/format-descriptions/datacite/DataCite-MetadataKernel_v4.4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/dev/format-descriptions/datacite/DataCite-MetadataKernel_v4.4.pdf -------------------------------------------------------------------------------- /dev/format-descriptions/datacite/README.md: -------------------------------------------------------------------------------- 1 | # DataCite metadata schema 2 | 3 | The PDF file in this directory is a local copy of the following file (as it existed on 2023-04-18), kept in this directory for easy access during development of IGA: 4 | 5 | https://schema.datacite.org/meta/kernel-4.4/doc/DataCite-MetadataKernel_v4.4.pdf 6 | 7 | Full reference: 8 | 9 | DataCite Metadata Working Group. (2021). DataCite Metadata Schema Documentation for the Publication and Citation of Research Data and Other Research Outputs. Version 4.4. DataCite e.V. https://doi.org/10.14454/3w3z-sa82 10 | -------------------------------------------------------------------------------- /dev/format-descriptions/inveniordm/inveniordm-field-mapping.numbers: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/dev/format-descriptions/inveniordm/inveniordm-field-mapping.numbers -------------------------------------------------------------------------------- /dev/format-descriptions/inveniordm/vocabularies/README.md: -------------------------------------------------------------------------------- 1 | # InvenioRDM vocabularies as of 2023-02-11 2 | 3 | The values of some controlled vocabulary terms are hardwired in IGA, and others are obtained at run-time using the [`caltechdata_api`](https://github.com/caltechlibrary/caltechdata_api) package. The files in this directory are the terms in some of the vocabularies as they existed on 2023-02-11, for reference during software development of IGA. (These files are not loaded into IGA.) 4 | 5 | -------------------------------------------------------------------------------- /dev/format-descriptions/inveniordm/vocabularies/dates.txt: -------------------------------------------------------------------------------- 1 | accepted 2 | available 3 | collected 4 | copyrighted 5 | created 6 | issued 7 | other 8 | submitted 9 | updated 10 | valid 11 | withdrawn 12 | -------------------------------------------------------------------------------- /dev/format-descriptions/inveniordm/vocabularies/description-types.txt: -------------------------------------------------------------------------------- 1 | abstract 2 | methods 3 | series-information 4 | table-of-contents 5 | technical-info 6 | other 7 | -------------------------------------------------------------------------------- /dev/format-descriptions/inveniordm/vocabularies/id-types.txt: -------------------------------------------------------------------------------- 1 | ark 2 | arxiv 3 | bibcode 4 | cdid 5 | doi 6 | dsa-110-id 7 | ean13 8 | eissn 9 | handle 10 | igsn 11 | isbn 12 | issn 13 | istc 14 | lissn 15 | lsid 16 | pmid 17 | purl 18 | tiltid 19 | upc 20 | url 21 | urn 22 | w3id 23 | -------------------------------------------------------------------------------- /dev/format-descriptions/inveniordm/vocabularies/relations.txt: -------------------------------------------------------------------------------- 1 | cites 2 | compiles 3 | continues 4 | describes 5 | documents 6 | haspart 7 | hasversion 8 | iscompiledby 9 | iscontinuedby 10 | isnewversionof 11 | isobsoletedby 12 | isoriginalformof 13 | ispreviousversionof 14 | isreviewedby 15 | obsoletes 16 | reviews 17 | 18 | iscitedby 19 | ✔ isderivedfrom 20 | ✔ isdescribedby 21 | ✔ isdocumentedby 22 | ✔ isidenticalto 23 | ispartof 24 | ✔ isreferencedby 25 | isrequiredby 26 | issourceof 27 | issupplementedby 28 | issupplementto 29 | ✔ isvariantformof 30 | ✔ isversionof 31 | references 32 | requires 33 | -------------------------------------------------------------------------------- /dev/format-descriptions/inveniordm/vocabularies/resources.txt: -------------------------------------------------------------------------------- 1 | publication 2 | publication-annotationcollection 3 | publication-book 4 | publication-section 5 | publication-conferencepaper 6 | publication-datamanagementplan 7 | publication-article 8 | publication-patent 9 | publication-preprint 10 | publication-deliverable 11 | publication-milestone 12 | publication-proposal 13 | publication-report 14 | publication-softwaredocumentation 15 | publication-taxonomictreatment 16 | publication-technicalnote 17 | publication-thesis 18 | publication-workingpaper 19 | publication-other 20 | poster 21 | presentation 22 | dataset 23 | image 24 | image-figure 25 | image-plot 26 | image-drawing 27 | image-map 28 | image-photo 29 | image-other 30 | video 31 | software 32 | lesson 33 | other 34 | model 35 | interactive-resource 36 | workflow 37 | collection 38 | -------------------------------------------------------------------------------- /dev/format-descriptions/inveniordm/vocabularies/roles.txt: -------------------------------------------------------------------------------- 1 | contactperson 2 | datacollector 3 | datacurator 4 | datamanager 5 | distributor 6 | editor 7 | hostinginstitution 8 | other 9 | producer 10 | projectleader 11 | projectmanager 12 | projectmember 13 | registrationagency 14 | registrationauthority 15 | relatedperson 16 | researcher 17 | researchgroup 18 | rightsholder 19 | sponsor 20 | supervisor 21 | workpackageleader 22 | -------------------------------------------------------------------------------- /dev/format-descriptions/inveniordm/vocabularies/title-types.txt: -------------------------------------------------------------------------------- 1 | alternative-title 2 | subtitle 3 | translated-title 4 | other 5 | -------------------------------------------------------------------------------- /dev/person-names/enamdict/JMnedict.xml.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/dev/person-names/enamdict/JMnedict.xml.gz -------------------------------------------------------------------------------- /dev/person-names/wikipedia/parse-common-names.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import pandas as pd 4 | import lxml 5 | import string 6 | import itertools 7 | 8 | url = 'https://en.wikipedia.org/wiki/List_of_common_Chinese_surnames' 9 | page = pd.read_html(url, encoding='UTF-8') 10 | 11 | names = set() 12 | 13 | # Table "Surname list" 14 | 15 | table = page[1] 16 | names.update(table['Character'].values[:, 0].tolist()) 17 | names.update(table['Character'].values[:, 1].tolist()) 18 | 19 | # Table "400 character list" 20 | 21 | table = page[2] 22 | names.update(table['Name'].values[:].tolist()) 23 | 24 | # Table "Taiwan" 25 | 26 | table = page[3] 27 | names.update(table['Character'].values[:, 0].tolist()) 28 | names.update(table['Character'].values[:, 1].tolist()) 29 | 30 | # Table "Philippines" 31 | 32 | table = page[4] 33 | # This one has slashes in the values. 34 | list_of_lists = [item.split('/') for item in table['Character(s)'].values.tolist()] 35 | flattened = itertools.chain(*list_of_lists) 36 | names.update(flattened) 37 | 38 | # Table "Ontario" 39 | 40 | table = page[5] 41 | names.update(table['Character(s)'].values[:, 0].tolist()) 42 | names.update(table['Character(s)'].values[:, 1].tolist()) 43 | 44 | # Table "Newer version" 45 | 46 | table = page[8] 47 | names.update(table['Character(s)'].values[:, 0].tolist()) 48 | names.update(table['Character(s)'].values[:, 1].tolist()) 49 | 50 | # Table "United States" 51 | 52 | table = page[9] 53 | names.update(table['Character(s)'].values[:, 0].tolist()) 54 | names.update(table['Character(s)'].values[:, 1].tolist()) 55 | 56 | print(*names, sep='\n') 57 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # @file Makefile 2 | # @brief Makefile for building docs using Sphinx and MyST 3 | # @created 2021-01-25 4 | # @license Please see the file named LICENSE in the project directory 5 | # @website https://github.com/caltechlibrary/iga 6 | 7 | # Before we go any further, test if certain programs are available. 8 | # The following is based on the approach posted by Jonathan Ben-Avraham to 9 | # Stack Overflow in 2014 at https://stackoverflow.com/a/25668869 10 | 11 | PROGRAMS_NEEDED = sphinx-build 12 | TEST := $(foreach p,$(PROGRAMS_NEEDED),\ 13 | $(if $(shell which $(p)),_,$(error Cannot find program "$(p)"))) 14 | 15 | 16 | # Gather values that we need ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 17 | 18 | # You can set the following variables from the command line, and also from 19 | # the environment for the first two. 20 | 21 | SPHINXOPTS ?= 22 | SPHINXBUILD ?= sphinx-build 23 | SPHINXAUTO = sphinx-autobuild 24 | SRCDIR = . 25 | BUILDDIR = _build 26 | 27 | # Actions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 28 | 29 | # Put it first so that "make" without argument is like "make help". 30 | help: 31 | @echo "Available commands:" 32 | @echo " auto to watch source directory & rebuild docs if files change" |\ 33 | expand -t 14 34 | @$(SPHINXBUILD) -M help "$(SRCDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) |\ 35 | egrep -v '^Sphinx|Please' | sort | expand -t 20 36 | 37 | auto autobuild live livehtml: 38 | @$(SPHINXAUTO) "$(SRCDIR)" "$(BUILDDIR)"/html $(SPHINXOPTS) $(O) 39 | 40 | # Catch-all target: route all unknown targets to Sphinx using the new 41 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 42 | %: Makefile 43 | @$(SPHINXBUILD) -M $@ "$(SRCDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 44 | 45 | 46 | # Cleanup and miscellaneous directives ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 47 | 48 | .PHONY: help auto autobuild livehtml Makefile 49 | -------------------------------------------------------------------------------- /docs/_static/media/caltech-round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/caltech-round.png -------------------------------------------------------------------------------- /docs/_static/media/cloud-upload-reversed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/cloud-upload-reversed.png -------------------------------------------------------------------------------- /docs/_static/media/cloud-upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/cloud-upload.png -------------------------------------------------------------------------------- /docs/_static/media/cloud-upload.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 8 | 9 | 10 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /docs/_static/media/example-github-citation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/example-github-citation.jpg -------------------------------------------------------------------------------- /docs/_static/media/example-github-release.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/example-github-release.jpg -------------------------------------------------------------------------------- /docs/_static/media/example-record-landing-page.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/example-record-landing-page.jpg -------------------------------------------------------------------------------- /docs/_static/media/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/favicon.ico -------------------------------------------------------------------------------- /docs/_static/media/get-invenio-pat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/get-invenio-pat.png -------------------------------------------------------------------------------- /docs/_static/media/gh-workflow-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/gh-workflow-list.png -------------------------------------------------------------------------------- /docs/_static/media/gh-workflow-run-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/gh-workflow-run-options.png -------------------------------------------------------------------------------- /docs/_static/media/gh-workflow-run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/gh-workflow-run.png -------------------------------------------------------------------------------- /docs/_static/media/github-action-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/github-action-details.png -------------------------------------------------------------------------------- /docs/_static/media/github-actions-all-workflows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/github-actions-all-workflows.png -------------------------------------------------------------------------------- /docs/_static/media/github-final-secrets-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/github-final-secrets-list.png -------------------------------------------------------------------------------- /docs/_static/media/github-notifications-actions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/github-notifications-actions.png -------------------------------------------------------------------------------- /docs/_static/media/github-notifications-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/github-notifications-link.png -------------------------------------------------------------------------------- /docs/_static/media/github-notifications-selections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/github-notifications-selections.png -------------------------------------------------------------------------------- /docs/_static/media/github-run-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/github-run-workflow.png -------------------------------------------------------------------------------- /docs/_static/media/github-running-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/github-running-workflow.png -------------------------------------------------------------------------------- /docs/_static/media/github-secrets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/github-secrets.png -------------------------------------------------------------------------------- /docs/_static/media/github-sidebar-secrets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/github-sidebar-secrets.png -------------------------------------------------------------------------------- /docs/_static/media/github-tabs-actions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/github-tabs-actions.png -------------------------------------------------------------------------------- /docs/_static/media/github-tabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/github-tabs.png -------------------------------------------------------------------------------- /docs/_static/media/github-workflow-options-circled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/github-workflow-options-circled.png -------------------------------------------------------------------------------- /docs/_static/media/github-workflow-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/github-workflow-options.png -------------------------------------------------------------------------------- /docs/_static/media/inveniordm-version-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/inveniordm-version-example.png -------------------------------------------------------------------------------- /docs/_static/media/new-pat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/docs/_static/media/new-pat.png -------------------------------------------------------------------------------- /docs/colophon.md: -------------------------------------------------------------------------------- 1 | # Colophon 2 | 3 | [Michael Hucka](https://www.cds.caltech.edu/~mhucka/) wrote the IGA documentation using the [Sphinx](https://www.sphinx-doc.org) document generator together with [MyST-flavored Markdown](https://myst-parser.readthedocs.io/en/latest/). The theme is the [Material theme for Sphinx](https://bashtage.github.io/sphinx-material/), with light customizations such as the use of Google's [Atkinson Hyperlegible](https://fonts.google.com/specimen/Atkinson+Hyperlegible) font. A [GitHub Action](https://github.com/caltechlibrary/iga/blob/main/.github/workflows/build-sphinx.yml) takes care of creating the formatted version of the documentation and hosting it on GitHub.io at https://caltechlibrary.github.io/iga. The formatted output can also be produced manually using commands implemented in the `Makefile` located in the [`docs/`](https://github.com/caltechlibrary/iga/tree/main/docs) subdirectory of the IGA source code repository. 4 | 5 | The vector artwork of an arrow pointing to a cloud, used as for the logo and icon for IGA, came from GitHub. 6 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # InvenioRDM GitHub Archiver 2 | 3 | [InvenioRDM](https://inveniosoftware.org/products/rdm/) is used by many institutional repositories such as [CaltechDATA](https://data.caltech.edu) to let users preserve software and data in a long-term archive managed by their institution. Depositing software and/or data into these repositories requires the creation of detailed metadata records – a tedious and error-prone process if done manually. This is where the [_InvenioRDM GitHub Archiver_](https://github.com/caltechlibrary/iga) (IGA) comes in. 4 | 5 | IGA can create metadata records and send releases from GitHub to an InvenioRDM-based repository server. It can be run as a command line program; it also can be set up as a [GitHub Action](https://docs.github.com/en/actions) to archive GitHub releases in InvenioRDM automatically each time they are made. 6 | 7 |
8 | 9 | 10 | 11 |
IGA sends metadata and assets from GitHub to an InvenioRDM server.
12 |
13 | 14 | 15 | ## Sections 16 | 17 | ```{toctree} 18 | --- 19 | maxdepth: 2 20 | --- 21 | introduction.md 22 | installation.md 23 | quick-start.md 24 | cli-usage.md 25 | gha-usage.md 26 | tips.md 27 | glossary.md 28 | colophon.md 29 | appendix.md 30 | ``` 31 | -------------------------------------------------------------------------------- /iga/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | __init__.py for iga 3 | 4 | This file is part of https://github.com/caltechlibrary/iga/. 5 | 6 | Copyright (c) 2022-2024 by the California Institute of Technology. This code 7 | is open-source software released under a BSD-type license. Please see the 8 | file "LICENSE" for more information. 9 | ''' 10 | 11 | # Package metadata 12 | # ............................................................................. 13 | # 14 | # ╭────────────────────── Notice ── Notice ── Notice ─────────────────────╮ 15 | # │ The following values are automatically updated at every release │ 16 | # │ by the Makefile. Manual changes to these values will be lost. │ 17 | # ╰────────────────────── Notice ── Notice ── Notice ─────────────────────╯ 18 | 19 | __version__ = '1.3.0' 20 | __description__ = 'The InvenioRDM GitHub Archiver (IGA) automatically archives GitHub releases in an InvenioRDM repository.' 21 | __url__ = 'https://caltechlibrary.github.io/iga' 22 | __author__ = 'Michael Hucka' 23 | __email__ = 'mhucka@caltech.edu' 24 | __license__ = 'https://github.com/caltechlibrary/iga/blob/main/LICENSE' 25 | 26 | 27 | # Miscellaneous utilities. 28 | # ............................................................................. 29 | 30 | def print_version(): 31 | print(f'{__name__} version {__version__}') 32 | print(f'Authors: {__author__}') 33 | print(f'URL: {__url__}') 34 | print(f'License: {__license__}') 35 | -------------------------------------------------------------------------------- /iga/__main__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | __main__.py: main entry point for IGA. 3 | 4 | This file is part of https://github.com/caltechlibrary/iga/. 5 | 6 | Copyright (c) 2022-2024 by the California Institute of Technology. This code 7 | is open-source software released under a BSD-type license. Please see the 8 | file "LICENSE" for more information. 9 | ''' 10 | 11 | import sys 12 | if sys.version_info <= (3, 9): 13 | print('IGA requires Python version 3.9 or higher,') 14 | print('but the current version of Python is ' + str(sys.version_info.major) 15 | + '.' + str(sys.version_info.minor) + '.') 16 | sys.exit(1) 17 | 18 | from iga.cli import cli 19 | 20 | 21 | # The following entry point definition is for the console_scripts keyword 22 | # option to setuptools. The entry point for console_scripts has to be a 23 | # function that takes zero arguments. 24 | def console_scripts_main(): 25 | cli() 26 | 27 | 28 | # The following allows users to invoke this using "python3 -m iga". 29 | if __name__ == '__main__': 30 | cli() 31 | -------------------------------------------------------------------------------- /iga/data/make-pickle-orgs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import sys 4 | 5 | if len(sys.argv) < 3: 6 | print('Usage: make-pickle INPUTTEXTFILE.txt PICKLEOUTPUT.p') 7 | exit(1) 8 | 9 | input_file = sys.argv[1] 10 | output_file = sys.argv[2] 11 | 12 | from commonpy.data_structures import CaseFoldSet 13 | import gzip 14 | from os import path 15 | import pickle 16 | 17 | parent = path.dirname(path.abspath(__file__)) 18 | sys.path.append(path.dirname(parent)) 19 | sys.path.append(path.dirname(path.dirname(parent))) 20 | 21 | from iga.name_utils import _plain_name 22 | 23 | def names_from_file(): 24 | print(f'Reading {input_file} and making a set') 25 | names = CaseFoldSet() 26 | with open(input_file, 'r') as f: 27 | names.update(_plain_name(name) for name in f.read().splitlines()) 28 | print(f'Read {len(names)} names from {input_file}') 29 | return names 30 | 31 | print(f'Writing {output_file}') 32 | names = names_from_file() 33 | with open(output_file, 'wb') as f: 34 | pickle.dump(names, f) 35 | 36 | print(f'Wrote {len(names)} names to {output_file}') 37 | -------------------------------------------------------------------------------- /iga/data/make-pickle-surnames: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import sys 4 | 5 | if len(sys.argv) < 3: 6 | print('Usage: make-pickle INPUTTEXTFILE.txt PICKLEOUTPUT.p') 7 | exit(1) 8 | 9 | input_file = sys.argv[1] 10 | output_file = sys.argv[2] 11 | 12 | from commonpy.data_structures import CaseFoldSet 13 | import gzip 14 | from os import path 15 | import pickle 16 | 17 | parent = path.dirname(path.abspath(__file__)) 18 | sys.path.append(path.dirname(parent)) 19 | sys.path.append(path.dirname(path.dirname(parent))) 20 | 21 | from iga.name_utils import _plain_name 22 | 23 | def names_from_file(): 24 | print(f'Reading {input_file} and making a set') 25 | names = CaseFoldSet() 26 | with open(input_file, 'r') as f: 27 | names.update(f.read().splitlines()) 28 | print(f'Read {len(names)} names from {input_file}') 29 | return names 30 | 31 | print(f'Writing {output_file}') 32 | names = names_from_file() 33 | with open(output_file, 'wb') as f: 34 | pickle.dump(names, f) 35 | 36 | print(f'Wrote {len(names)} names to {output_file}') 37 | -------------------------------------------------------------------------------- /iga/data/org-names.p: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/iga/data/org-names.p -------------------------------------------------------------------------------- /iga/data/surnames.p: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/iga/data/surnames.p -------------------------------------------------------------------------------- /iga/exceptions.py: -------------------------------------------------------------------------------- 1 | ''' 2 | exceptions.py: exceptions for IGA 3 | 4 | This file is part of https://github.com/caltechlibrary/iga/. 5 | 6 | Copyright (c) 2022-2024 by the California Institute of Technology. This code 7 | is open-source software released under a BSD-type license. Please see the 8 | file "LICENSE" for more information. 9 | ''' 10 | 11 | 12 | # Base class. 13 | # ............................................................................. 14 | # The base class makes it possible to use a single test to distinguish between 15 | # exceptions generated by IGA and exceptions generated by something else. 16 | 17 | class IGAException(Exception): 18 | '''Base class for IGA exceptions.''' 19 | 20 | 21 | # Exception classes. 22 | # ............................................................................. 23 | 24 | class GitHubError(IGAException): 25 | '''GitHub returned an error.''' 26 | 27 | 28 | class InvenioRDMError(IGAException): 29 | '''InvenioRDM returned an error.''' 30 | 31 | 32 | class BadToken(IGAException): 33 | '''Invalid personal access token.''' 34 | 35 | 36 | class MissingData(IGAException): 37 | '''Could not obtain all the required data to create an InvenioRDM record.''' 38 | 39 | 40 | class RecordNotFound(IGAException): 41 | '''Could not find the requested record in the InvenioRDM server.''' 42 | 43 | 44 | class InternalError(IGAException): 45 | '''An internal error occurred in IGA.''' 46 | -------------------------------------------------------------------------------- /iga/exit_codes.py: -------------------------------------------------------------------------------- 1 | ''' 2 | exit_codes.py: define exit codes for program return values 3 | 4 | This file is part of https://github.com/caltechlibrary/iga/. 5 | 6 | Copyright (c) 2022-2024 by the California Institute of Technology. This code 7 | is open-source software released under a BSD-type license. Please see the 8 | file "LICENSE" for more information. 9 | ''' 10 | 11 | from aenum import Enum, MultiValue 12 | 13 | 14 | # I adapted the clever approach posted by the author of the Python aenum 15 | # package, Ethan Furman, to Stack Overflow on 2016-03-13 at 16 | # https://stackoverflow.com/a/35964875/743730 17 | # The most important bit is realizing you can define __int__(). 18 | 19 | class ExitCode(Enum): 20 | '''Class of exit codes that this program may return. 21 | 22 | The numeric value of a given code can be obtained by using int(). For 23 | example, int(ExitCode.success) will produce 0. 24 | ''' 25 | 26 | _init_ = 'value meaning' 27 | _settings_ = MultiValue 28 | 29 | success = 0, "success – program completed normally" 30 | user_interrupt = 1, "the user interrupted the program's execution" 31 | bad_arg = 2, "encountered a bad or missing value for an option" 32 | file_error = 3, "encountered a problem with a file or directory" 33 | github_error = 4, "encountered a problem interacting with GitHub" 34 | inveniordm_error = 5, "encountered a problem interacting with InvenioRDM" 35 | bad_token = 6, "the personal access token was rejected" 36 | exception = 7, "a miscellaneous exception or fatal error occurred" 37 | 38 | def __int__(self): 39 | return self.value 40 | -------------------------------------------------------------------------------- /iga/text_utils.py: -------------------------------------------------------------------------------- 1 | ''' 2 | text_utils.py: misc. utilities for doing stuff with text 3 | 4 | This file is part of https://github.com/caltechlibrary/iga/. 5 | 6 | Copyright (c) 2024 by the California Institute of Technology. This code 7 | is open-source software released under a BSD-type license. Please see the 8 | file "LICENSE" for more information. 9 | ''' 10 | 11 | 12 | def cleaned_text(text): 13 | '''Return text that has been mildly cleaned up. 14 | 15 | Whitespace characters are normalized to single spaces, and period 16 | characters are followed by one space. 17 | ''' 18 | # Get rid of embedded newlines and related characters. 19 | text = ' '.join(text.splitlines()) 20 | # Normalize runs of multiple spaces to one. 21 | return ' '.join(text.split()) 22 | 23 | 24 | def without_html(text): 25 | '''Return the given text with HTML tags, if any, removed.''' 26 | from lxml import html 27 | try: 28 | return html.fromstring(text).text_content().strip() 29 | except KeyboardInterrupt: 30 | raise 31 | except Exception: # noqa PIE786 32 | return text 33 | 34 | 35 | # Note: here's the master list of extensions for python-markdown: 36 | # https://github.com/Python-Markdown/markdown/wiki/Third-Party-Extensions 37 | 38 | def html_from_md(md): 39 | '''Convert Markdown content to HTML.''' 40 | from markdown import markdown 41 | return markdown(md, extensions=['pymdownx.superfences', 42 | 'pymdownx.extra', 43 | 'pymdownx.emoji', 44 | 'mdx_breakless_lists', 45 | 'mdx_linkify', 46 | 'markdown_checklist.extension', 47 | ]) 48 | -------------------------------------------------------------------------------- /iga/vendor/pybtex_apa7_style/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Naeka 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /iga/vendor/pybtex_apa7_style/README.md: -------------------------------------------------------------------------------- 1 | # APA7 Style for Pybtex 2 | 3 | *This is a fork of [naeka's pybtex-apa-style](https://github.com/naeka/pybtex-apa-style), which targeted APA6*. 4 | 5 | This plugin provides [APA7](https://apastyle.apa.org/) style for Pybtex. 6 | 7 | [Pybtex](https://pybtex.org/) provides Python support for interacting with bibTeX 8 | bibliography data. Style plugins provide support for formatting bibliographies, 9 | similar to the role that `csl` files play for LaTeX. 10 | 11 | ## Installation 12 | 13 | ```shell 14 | $ pip install pybtex pybtex-apa7-style 15 | ``` 16 | 17 | ## Usage 18 | 19 | Pybtex uses [Python's plugin system](https://packaging.python.org/en/latest/guides/creating-and-discovering-plugins/). 20 | To use APA7, load it as a plugin as shown in the example below. 21 | 22 | ```python3 23 | from pybtex.plugin import find_plugin 24 | from pybtex.database import parse_file 25 | APA = find_plugin('pybtex.style.formatting', 'apa7')() 26 | HTML = find_plugin('pybtex.backends', 'html')() 27 | 28 | def bib_to_apa7_html(bibfile): 29 | bibliography = parse_file(bibfile, 'bibtex') 30 | formatted_bib = APA.format_bibliography(bibliography) 31 | return "
".join(entry.text.render(HTML) for entry in formatted_bib) 32 | ``` 33 | 34 | ## Contributing 35 | 36 | This is a work in progres; APA style is not fully-specified and has endless edge cases. 37 | I would be delighted to receive examples of bibTeX entries which are not formatted correctly 38 | in APA. 39 | 40 | If you clone [this project's repository](https://github.com/cproctor/pybtex-apa7-style), you 41 | can add bibTeX exemplars in `tests/examples` and then run `python tests/test_visual_results.py`. 42 | Open `tests/results.html` to see the resulting APA-formatted HTML. 43 | -------------------------------------------------------------------------------- /iga/vendor/pybtex_apa7_style/formatting/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/iga/vendor/pybtex_apa7_style/formatting/__init__.py -------------------------------------------------------------------------------- /iga/vendor/pybtex_apa7_style/labels/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/iga/vendor/pybtex_apa7_style/labels/__init__.py -------------------------------------------------------------------------------- /iga/vendor/pybtex_apa7_style/names/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caltechlibrary/iga/833415ae5f10ff06c837dedb7a8f91e72f6725fd/iga/vendor/pybtex_apa7_style/names/__init__.py -------------------------------------------------------------------------------- /iga/vendor/pybtex_apa7_style/names/firstlast.py: -------------------------------------------------------------------------------- 1 | # -*- coding:Utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from pybtex.style.names import BaseNameStyle, name_part 5 | from pybtex.style.template import join 6 | 7 | 8 | class NameStyle(BaseNameStyle): 9 | 10 | def format(self, person, abbr=False): 11 | r""" 12 | Format names similarly to {vv~}{ll}{, jj}{, f.} in BibTeX. 13 | 14 | >>> from pybtex.database import Person 15 | >>> name = Person(string=r"Charles Louis Xavier Joseph de la Vall{\'e}e Poussin") 16 | >>> firstlast = NameStyle().format 17 | 18 | >>> print(firstlast(name).format().render_as('latex')) 19 | Charles Louis Xavier~Joseph de~la Vall{é}e~Poussin 20 | >>> print(firstlast(name).format().render_as('html')) 21 | Charles Louis Xavier Joseph de la Vallée Poussin 22 | 23 | >>> print(firstlast(name, abbr=True).format().render_as('latex')) 24 | C.~L. X.~J. de~la Vall{é}e~Poussin 25 | >>> print(firstlast(name, abbr=True).format().render_as('html')) 26 | C. L. X. J. de la Vallée Poussin 27 | 28 | >>> name = Person(first='First', last='Last', middle='Middle') 29 | >>> print(firstlast(name).format().render_as('latex')) 30 | First~Middle Last 31 | >>> print(firstlast(name, abbr=True).format().render_as('latex')) 32 | F.~M. Last 33 | 34 | """ 35 | return join[ 36 | name_part(abbr=abbr)[person.rich_first_names + person.rich_middle_names], 37 | name_part(before=' ')[person.rich_prelast_names], 38 | name_part(before=' ')[person.rich_last_names], 39 | ] 40 | -------------------------------------------------------------------------------- /iga/vendor/pybtex_apa7_style/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "pybtex-apa7-style" 3 | version = "0.1.3" 4 | description = "Provides APA7 style for Pybtex" 5 | readme = "README.md" 6 | authors = ["Chris Proctor "] 7 | homepage = "https://github.com/cproctor/pybtex-apa7-style" 8 | repository = "https://github.com/cproctor/pybtex-apa7-style" 9 | license = "MIT" 10 | classifiers = [ 11 | "Operating System :: OS Independent", 12 | "Programming Language :: Python", 13 | "Programming Language :: Python :: 3", 14 | "License :: OSI Approved :: MIT License", 15 | "Topic :: Text Processing :: Markup", 16 | "Topic :: Utilities", 17 | ] 18 | packages = [ 19 | { include = "formatting" }, 20 | { include = "labels" }, 21 | { include = "names" }, 22 | ] 23 | 24 | [tool.poetry.dependencies] 25 | python = "^3.9" 26 | pybtex = "^0.24.0" 27 | 28 | [tool.poetry.dev-dependencies] 29 | 30 | [build-system] 31 | requires = ["poetry-core>=1.0.0"] 32 | build-backend = "poetry.core.masonry.api" 33 | 34 | [tool.poetry.plugins."pybtex.style.formatting"] 35 | apa7 = "formatting.apa:APAStyle" 36 | 37 | [tool.poetry.plugins."pybtex.style.labels"] 38 | apa7 = "labels.apa:LabelStyle" 39 | 40 | [tool.poetry.plugins."pybtex.style.names"] 41 | firstlast = "names.firstlast:NameStyle" 42 | 43 | 44 | -------------------------------------------------------------------------------- /requirements-dev.txt: -------------------------------------------------------------------------------- 1 | # Summary: Python dependencies for IGA for development & testing. 2 | # 3 | # Copyright 2024 California Institute of Technology. 4 | # License: Modified BSD 3-clause – see file "LICENSE" in the project website. 5 | # Website: https://github.com/caltechlibrary/iga 6 | 7 | -r requirements.txt 8 | -r requirements-lint.txt 9 | 10 | pytest >= 8.2.0 11 | pytest-cov >= 5.0.0 12 | pytest-mock >= 3.14.0 13 | 14 | twine 15 | wheel 16 | 17 | linkify-it-py 18 | myst-parser 19 | sphinx-autobuild 20 | sphinx-material 21 | sphinxcontrib-mermaid 22 | -------------------------------------------------------------------------------- /requirements-lint.txt: -------------------------------------------------------------------------------- 1 | # Summary: Python dependencies for linting the codebase. 2 | # 3 | # This set of dependencies is split out from requirements-dev.txt so that 4 | # GitHub Actions can load just this subset and not all the other 5 | # requirements. (IGA has a huge list of requirements and they take a long 6 | # time to install -- a needless waste of time when only running flake8.) 7 | # 8 | # Copyright 2024 California Institute of Technology. 9 | # License: Modified BSD 3-clause – see file "LICENSE" in the project website. 10 | # Website: https://github.com/caltechlibrary/iga 11 | 12 | flake8 >= 7.0.0 13 | flake8-bugbear >= 24.4.26 14 | flake8-builtins >= 2.5.0 15 | flake8-comprehensions >= 3.14.0 16 | flake8-executable >= 2.1.3 17 | flake8_implicit_str_concat >= 0.4.0 18 | flake8-pie >= 0.16.0 19 | flake8_simplify >= 0.21.0 20 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | # Summary: Python dependencies for IGA. 2 | # 3 | # Copyright 2024 California Institute of Technology. 4 | # License: Modified BSD 3-clause – see file "LICENSE" in the project website. 5 | # Website: https://github.com/caltechlibrary/iga 6 | 7 | aenum >= 3.1.15 8 | arrow >= 1.3.0 9 | boltons >= 21.0.0 10 | caltechdata-api >= 1.8.1 11 | commonpy >= 1.13.0 12 | dirtyjson >= 1.0.8 13 | ginza >= 5.2.0 14 | ja_ginza_electra >= 5.2.0 15 | httpx >= 0.23.1 16 | humanize >= 4.9.0 17 | idutils >= 1.2.1 18 | iptools >= 0.7.0 19 | isbnlib >= 3.10.14 20 | jamo >= 0.4.1 21 | json5 >= 0.9.25 22 | latexcodec >= 3.0.0 23 | lingua-language-detector >= 2.0.2 24 | lxml >= 5.2.2 25 | Markdown >= 3.6 26 | markdown-checklist >= 0.4.4 27 | mdx-breakless-lists >= 1.0.1 28 | mdx_linkify >= 2.1 29 | nameparser >= 1.1.3 30 | probablepeople >= 0.5.5 31 | pybtex >= 0.24.0 32 | pybtex-apa7-style >= 0.1.3 33 | pymdown-extensions >= 10.8.1 34 | PyYAML >= 6.0.1 35 | regex >= 2022.3.2 36 | rich-click == 1.7.4 37 | sidetrack >= 2.0.1 38 | spacy >= 3.7.4 39 | spacy-alignments >= 0.9.1 40 | spacy-curated-transformers >= 0.2.2 41 | spacy-legacy >= 3.0.12 42 | spacy-loggers >= 1.0.5 43 | spacy-pkuseg >= 0.0.33 44 | spacy-transformers >= 1.1.9 45 | StringDist >= 1.0.9 46 | url-normalize >= 1.4.3 47 | validators >= 0.28.1 48 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | # Summary: IGA package metadata and PyPI configuration. 2 | # 3 | # Copyright 2024 California Institute of Technology. 4 | # License: Modified BSD 3-clause – see file "LICENSE" in the project website. 5 | # Website: https://github.com/caltechlibrary/iga 6 | 7 | [metadata] 8 | name = iga 9 | version = 1.3.5 10 | description = The InvenioRDM GitHub Archiver (IGA) automatically archives GitHub releases in an InvenioRDM repository. 11 | author = Tom Morrell 12 | author_email = tmorrell@caltech.edu 13 | license = https://github.com/caltechlibrary/iga/blob/main/LICENSE 14 | license_files = LICENSE 15 | url = https://github.com/caltechlibrary/iga 16 | # The remaining items below are used by PyPI. 17 | project_urls = 18 | Source Code = https://github.com/caltechlibrary/iga 19 | Bug Tracker = https://github.com/caltechlibrary/iga/issues 20 | keywords = Python, applications 21 | classifiers = 22 | Development Status :: 5 - Production/Stable 23 | Environment :: Console 24 | Environment :: No Input/Output (Daemon) 25 | Intended Audience :: Science/Research 26 | Operating System :: MacOS :: MacOS X 27 | Operating System :: POSIX 28 | Operating System :: POSIX :: Linux 29 | Operating System :: Unix 30 | Programming Language :: Python 31 | Programming Language :: Python :: 3.9 32 | long_description = file:README.md 33 | long_description_content_type = text/markdown 34 | 35 | [options] 36 | packages = find: 37 | zip_safe = False 38 | python_requires = >= 3.9 39 | 40 | [options.entry_points] 41 | console_scripts = 42 | iga = iga.__main__:console_scripts_main 43 | 44 | [tool:pytest] 45 | pythonpath = . 46 | testpaths = tests iga 47 | addopts = --cov=iga 48 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Summary: IGA installation setup.py file. 3 | # 4 | # Note: the full configuration metadata is maintained in setup.cfg, not here. 5 | # This file exists to hook in setup.cfg and requirements.txt, so that the 6 | # requirements don't have to be repeated and so that "python3 setup.py" works. 7 | # 8 | # Copyright 2024 California Institute of Technology. 9 | # License: Modified BSD 3-clause – see file "LICENSE" in the project website. 10 | # Website: https://github.com/caltechlibrary/iga 11 | 12 | from setuptools import setup 13 | 14 | 15 | def requirements(file): 16 | from os import path 17 | required = [] 18 | requirements_file = path.join(path.abspath(path.dirname(__file__)), file) 19 | if path.exists(requirements_file): 20 | with open(requirements_file, encoding='utf-8') as f: 21 | required = [ln for ln in filter(str.strip, f.read().splitlines()) 22 | if not ln.startswith('#')] 23 | if any(item.startswith(('-', '.', '/')) for item in required): 24 | # The requirements.txt uses pip features. Try to use pip's parser. 25 | try: 26 | from pip._internal.req import parse_requirements 27 | from pip._internal.network.session import PipSession 28 | parsed = parse_requirements(requirements_file, PipSession()) 29 | required = [item.requirement for item in parsed] 30 | except ImportError: 31 | # No pip, or not the expected version. Give up & return as-is. 32 | pass 33 | return required 34 | 35 | 36 | setup( 37 | setup_requires=['wheel'], 38 | install_requires=requirements('requirements.txt'), 39 | ) 40 | -------------------------------------------------------------------------------- /tests/conftest.py: -------------------------------------------------------------------------------- 1 | import os 2 | from os.path import dirname, abspath, splitext, join, basename 3 | import pytest 4 | from sidetrack import set_debug 5 | 6 | 7 | @pytest.fixture(scope='module', autouse=True) 8 | def save_debug_log(request): 9 | '''Turn on debug logging & save the output to 'testfile.log'.''' 10 | here = dirname(abspath(__file__)) 11 | mod_name = request.module.__name__ 12 | log_file = join(here, splitext(basename(mod_name))[0] + '.log') 13 | open(log_file, 'w').close() 14 | set_debug(True, log_file) 15 | os.environ['IGA_RUN_MODE'] = 'debug' 16 | yield 17 | 18 | 19 | # @pytest.fixture(scope='function') 20 | # def unset_environment(request, monkeypatch): 21 | # '''Set MY_VARIABLE environment variable, this fixture must be used with `parametrize`''' 22 | # monkeypatch.delenv('INVENIO_SERVER') 23 | # monkeypatch.delenv('INVENIO_TOKEN') 24 | # monkeypatch.delenv('GITHUB_TOKEN') 25 | # yield request.param 26 | -------------------------------------------------------------------------------- /tests/data/fake-example/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018-2021, Caltech 2 | All rights not granted herein are expressly reserved by Caltech. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, 8 | this list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its contributors 15 | may be used to endorse or promote products derived from this software without 16 | specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 22 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 | POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /tests/data/fake-example/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "fakeaccount", 3 | "id": 15038637, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjE1MDM4NjM3", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/15038637?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/fakeaccount", 8 | "html_url": "https://github.com/fakeaccount", 9 | "followers_url": "https://api.github.com/users/fakeaccount/followers", 10 | "following_url": "https://api.github.com/users/fakeaccount/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/fakeaccount/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/fakeaccount/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/fakeaccount/subscriptions", 14 | "organizations_url": "https://api.github.com/users/fakeaccount/orgs", 15 | "repos_url": "https://api.github.com/users/fakeaccount/repos", 16 | "events_url": "https://api.github.com/users/fakeaccount/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/fakeaccount/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "Fake name", 21 | "company": null, 22 | "blog": "https://www.library.caltech.edu/", 23 | "location": "Pasadena, CA 91125", 24 | "email": "helpdesk@library.caltech.edu", 25 | "hireable": null, 26 | "bio": "Fake bio", 27 | "twitter_username": null, 28 | "public_repos": 278, 29 | "public_gists": 0, 30 | "followers": 20, 31 | "following": 0, 32 | "created_at": "2015-10-08T19:15:54Z", 33 | "updated_at": "2022-12-12T02:42:23Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/fake-example/codemeta.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://doi.org/10.5063/schema/codemeta-2.0", 3 | "@type": "SoftwareSourceCode", 4 | "description": "A fake description", 5 | "name": "fakename", 6 | "codeRepository": "https://github.com/fakeaccount/fakerepo", 7 | "issueTracker": "https://github.com/fakeaccount/fakerepo/issues", 8 | "license": "https://github.com/fakeaccount/fakerepo/blob/master/LICENSE", 9 | "version": "faketag", 10 | "author": [ 11 | { 12 | "@type": "Person", 13 | "givenName": "Michael", 14 | "familyName": "Hucka", 15 | "affiliation": "Caltech Library", 16 | "email": "mhucka@caltech.edu", 17 | "@id": "https://orcid.org/0000-0001-9105-5960" 18 | }], 19 | "copyrightHolder": [ 20 | { 21 | "@id": "https://ror.org/05dxps055", 22 | "@type": "Organization", 23 | "name": "California Institute of Technology" 24 | } 25 | ], 26 | "copyrightYear": 2023, 27 | "developmentStatus": "active", 28 | "downloadUrl": "https://github.com/fakeaccount/fakerepo/archive/faketag.zip", 29 | "keywords": [ 30 | "fakekeyword", 31 | ], 32 | "maintainer": "https://orcid.org/0000-0001-9105-5960", 33 | "programmingLanguage": "fakelanguage" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/fake-example/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | "LICENSE", 3 | "codemeta.json", 4 | ] 5 | -------------------------------------------------------------------------------- /tests/data/github-examples/neither-codemeta-nor-cff/TCCON/py-ginput/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".gitignore", 3 | ".hgignore", 4 | ".makehelp", 5 | ".run_ginput_template.py", 6 | "HISTORY.md", 7 | "LICENSE.txt", 8 | "MANIFEST.in", 9 | "Makefile", 10 | "README.md", 11 | "environment-linux64-py310.yml", 12 | "environment-linux64-py36.yml", 13 | "environment-py310.yml", 14 | "environment-py36.yml", 15 | "ginput", 16 | "install-runscript.sh", 17 | "install.sh", 18 | "man", 19 | "one-off-scripts", 20 | "setup.py", 21 | ] 22 | -------------------------------------------------------------------------------- /tests/data/github-examples/neither-codemeta-nor-cff/TCCON/py-ginput/user.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "TCCON", 3 | "id": 115177671, 4 | "node_id": "O_kgDOBt14xw", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/115177671?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/TCCON", 8 | "html_url": "https://github.com/TCCON", 9 | "followers_url": "https://api.github.com/users/TCCON/followers", 10 | "following_url": "https://api.github.com/users/TCCON/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/TCCON/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/TCCON/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/TCCON/subscriptions", 14 | "organizations_url": "https://api.github.com/users/TCCON/orgs", 15 | "repos_url": "https://api.github.com/users/TCCON/repos", 16 | "events_url": "https://api.github.com/users/TCCON/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/TCCON/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "Total Carbon Column Observing Network", 21 | "company": null, 22 | "blog": "https://tccon-wiki.caltech.edu/", 23 | "location": null, 24 | "email": "tccon.ftir@gmail.com", 25 | "hireable": null, 26 | "bio": null, 27 | "twitter_username": "tccon_ftir", 28 | "public_repos": 5, 29 | "public_gists": 0, 30 | "followers": 3, 31 | "following": 0, 32 | "created_at": "2022-10-06T16:45:10Z", 33 | "updated_at": "2022-10-06T17:15:44Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/neither-codemeta-nor-cff/sbmlteam/jsbml/codemeta.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://doi.org/10.5063/schema/codemeta-2.0", 3 | "@type": "SoftwareSourceCode", 4 | "description": "Open-source, pure Java library for reading, writing, and manipulating SBML files and data streams", 5 | "name": "jsbml", 6 | "codeRepository": "https://github.com/sbmlteam/jsbml", 7 | "issueTracker": "https://github.com/sbmlteam/jsbml/issues", 8 | "license": "https://github.com/sbmlteam/jsbml/blob/master/LICENSE", 9 | "version": "1.5.0", 10 | "author": [], 11 | "developmentStatus": "active", 12 | "downloadUrl": "https://github.com/sbmlteam/jsbml/archive/jsbml-1.5.zip", 13 | "keywords": [ 14 | "software", 15 | "systems biology", 16 | "SBML" 17 | ], 18 | } 19 | -------------------------------------------------------------------------------- /tests/data/github-examples/neither-codemeta-nor-cff/sbmlteam/jsbml/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".gitignore", 3 | ".graphics", 4 | "CODE_OF_CONDUCT.md", 5 | "CONTRIBUTING.md", 6 | "COPYING.txt", 7 | "FUNDING.txt", 8 | "LICENSE", 9 | "NEWS.md", 10 | "README.md", 11 | "SUPPORT.md", 12 | "build.xml", 13 | "codemeta.json", 14 | "core", 15 | "dev", 16 | "doc", 17 | "example_implementations", 18 | "examples", 19 | "extensions", 20 | "jsbml-build.properties", 21 | "lib", 22 | "modules", 23 | "overview.html", 24 | "pom.xml", 25 | "stylesheet.css", 26 | "test", 27 | ] 28 | -------------------------------------------------------------------------------- /tests/data/github-examples/neither-codemeta-nor-cff/sbmlteam/jsbml/user.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "sbmlteam", 3 | "id": 1799692, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3OTk2OTI=", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/1799692?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/sbmlteam", 8 | "html_url": "https://github.com/sbmlteam", 9 | "followers_url": "https://api.github.com/users/sbmlteam/followers", 10 | "following_url": "https://api.github.com/users/sbmlteam/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/sbmlteam/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/sbmlteam/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/sbmlteam/subscriptions", 14 | "organizations_url": "https://api.github.com/users/sbmlteam/orgs", 15 | "repos_url": "https://api.github.com/users/sbmlteam/repos", 16 | "events_url": "https://api.github.com/users/sbmlteam/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/sbmlteam/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "SBML Team", 21 | "company": null, 22 | "blog": "http://sbml.org/about", 23 | "location": null, 24 | "email": "sbml-team@googlegroups.com", 25 | "hireable": null, 26 | "bio": "The team supports SBML infrastructure & the SBML community. Note: additional team projects are located in SourceForge at https://sourceforge.net/projects/sbml/", 27 | "twitter_username": null, 28 | "public_repos": 39, 29 | "public_gists": 0, 30 | "followers": 3, 31 | "following": 0, 32 | "created_at": "2012-05-31T16:18:39Z", 33 | "updated_at": "2023-01-12T12:17:55Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/neither-codemeta-nor-cff/sbmlteam/libsbml/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".ci", 3 | ".github", 4 | ".gitignore", 5 | ".graphics", 6 | ".sonarcloud.properties", 7 | ".travis.yml", 8 | "CMakeLists.txt", 9 | "CMakeModules", 10 | "CODE_OF_CONDUCT.md", 11 | "CONTRIBUTING.md", 12 | "COPYING.html", 13 | "COPYING.txt", 14 | "FUNDING.txt", 15 | "LICENSE.html", 16 | "LICENSE.txt", 17 | "Makefile.in", 18 | "NEWS.txt", 19 | "README-code-from-svn.txt", 20 | "README.md", 21 | "VERSION.txt", 22 | "VERSION_PACKAGES.ac", 23 | "acinclude.m4", 24 | "aclocal.m4", 25 | "arrays-package.cmake", 26 | "artefacts.md", 27 | "autogen.sh", 28 | "ci.md", 29 | "cmake_uninstall.cmake.in", 30 | "common.cmake", 31 | "comp-package.cmake", 32 | "conanfile.txt", 33 | "config", 34 | "configure", 35 | "configure.ac", 36 | "dev", 37 | "distrib-package.cmake", 38 | "docs", 39 | "dyn-package.cmake", 40 | "examples", 41 | "fbc-package.cmake", 42 | "groups-package.cmake", 43 | "l3v2extendedmath-package.cmake", 44 | "layout-package.cmake", 45 | "libsbml.spec.in", 46 | "libtoolize.sh", 47 | "macosx", 48 | "multi-package.cmake", 49 | "pull_request_template.md", 50 | "qual-package.cmake", 51 | "render-package.cmake", 52 | "req-package.cmake", 53 | "spatial-package.cmake", 54 | "src", 55 | ] 56 | -------------------------------------------------------------------------------- /tests/data/github-examples/neither-codemeta-nor-cff/sbmlteam/libsbml/user.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "sbmlteam", 3 | "id": 1799692, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3OTk2OTI=", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/1799692?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/sbmlteam", 8 | "html_url": "https://github.com/sbmlteam", 9 | "followers_url": "https://api.github.com/users/sbmlteam/followers", 10 | "following_url": "https://api.github.com/users/sbmlteam/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/sbmlteam/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/sbmlteam/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/sbmlteam/subscriptions", 14 | "organizations_url": "https://api.github.com/users/sbmlteam/orgs", 15 | "repos_url": "https://api.github.com/users/sbmlteam/repos", 16 | "events_url": "https://api.github.com/users/sbmlteam/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/sbmlteam/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "SBML Team", 21 | "company": null, 22 | "blog": "http://sbml.org/about", 23 | "location": null, 24 | "email": "sbml-team@googlegroups.com", 25 | "hireable": null, 26 | "bio": "The team supports SBML infrastructure & the SBML community. Note: additional team projects are located in SourceForge at https://sourceforge.net/projects/sbml/", 27 | "twitter_username": null, 28 | "public_repos": 39, 29 | "public_gists": 0, 30 | "followers": 3, 31 | "following": 0, 32 | "created_at": "2012-05-31T16:18:39Z", 33 | "updated_at": "2023-01-12T12:17:55Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-citation-cff/SDXorg/pysd/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013-2022 PySD contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-citation-cff/SDXorg/pysd/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".github", 3 | ".gitignore", 4 | ".gitmodules", 5 | ".readthedocs.yaml", 6 | "LICENSE", 7 | "MANIFEST.in", 8 | "README.md", 9 | "citation.cff", 10 | "docs", 11 | "paper", 12 | "pysd", 13 | "requirements.txt", 14 | "setup.cfg", 15 | "setup.py", 16 | "tests", 17 | ] 18 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-citation-cff/SDXorg/pysd/user.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "SDXorg", 3 | "id": 11491926, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjExNDkxOTI2", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/11491926?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/SDXorg", 8 | "html_url": "https://github.com/SDXorg", 9 | "followers_url": "https://api.github.com/users/SDXorg/followers", 10 | "following_url": "https://api.github.com/users/SDXorg/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/SDXorg/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/SDXorg/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/SDXorg/subscriptions", 14 | "organizations_url": "https://api.github.com/users/SDXorg/orgs", 15 | "repos_url": "https://api.github.com/users/SDXorg/repos", 16 | "events_url": "https://api.github.com/users/SDXorg/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/SDXorg/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": null, 21 | "company": null, 22 | "blog": "", 23 | "location": null, 24 | "email": null, 25 | "hireable": null, 26 | "bio": "Open source tools for system dynamics", 27 | "twitter_username": null, 28 | "public_repos": 6, 29 | "public_gists": 0, 30 | "followers": 11, 31 | "following": 0, 32 | "created_at": "2015-03-15T20:34:46Z", 33 | "updated_at": "2022-09-06T19:22:06Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-citation-cff/open-mmlab/mmocr/CITATION.cff: -------------------------------------------------------------------------------- 1 | cff-version: 1.2.0 2 | message: "If you use this software, please cite it as below." 3 | title: "OpenMMLab Text Detection, Recognition and Understanding Toolbox" 4 | authors: 5 | - name: "MMOCR Contributors" 6 | version: 0.3.0 7 | date-released: 2020-08-15 8 | repository-code: "https://github.com/open-mmlab/mmocr" 9 | license: Apache-2.0 10 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-citation-cff/open-mmlab/mmocr/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".circleci", 3 | ".codespellrc", 4 | ".coveragerc", 5 | ".dev_scripts", 6 | ".github", 7 | ".gitignore", 8 | ".owners.yml", 9 | ".pre-commit-config.yaml", 10 | ".pylintrc", 11 | ".readthedocs.yml", 12 | "CITATION.cff", 13 | "LICENSE", 14 | "MANIFEST.in", 15 | "README.md", 16 | "README_zh-CN.md", 17 | "configs", 18 | "dataset_zoo", 19 | "demo", 20 | "dicts", 21 | "docker", 22 | "docs", 23 | "mmocr", 24 | "model-index.yml", 25 | "projects", 26 | "requirements.txt", 27 | "requirements", 28 | "resources", 29 | "setup.cfg", 30 | "setup.py", 31 | "tests", 32 | "tools", 33 | ] 34 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-citation-cff/open-mmlab/mmocr/user.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "open-mmlab", 3 | "id": 10245193, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjEwMjQ1MTkz", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/10245193?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/open-mmlab", 8 | "html_url": "https://github.com/open-mmlab", 9 | "followers_url": "https://api.github.com/users/open-mmlab/followers", 10 | "following_url": "https://api.github.com/users/open-mmlab/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/open-mmlab/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/open-mmlab/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/open-mmlab/subscriptions", 14 | "organizations_url": "https://api.github.com/users/open-mmlab/orgs", 15 | "repos_url": "https://api.github.com/users/open-mmlab/repos", 16 | "events_url": "https://api.github.com/users/open-mmlab/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/open-mmlab/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "OpenMMLab", 21 | "company": null, 22 | "blog": "https://openmmlab.com", 23 | "location": "China", 24 | "email": null, 25 | "hireable": null, 26 | "bio": null, 27 | "twitter_username": "OpenMMLab", 28 | "public_repos": 42, 29 | "public_gists": 0, 30 | "followers": 3634, 31 | "following": 0, 32 | "created_at": "2014-12-19T16:17:27Z", 33 | "updated_at": "2023-01-06T04:08:33Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-citation-cff/tensorflow/tensorflow/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".bazelrc", 3 | ".bazelversion", 4 | ".clang-format", 5 | ".github", 6 | ".gitignore", 7 | ".pylintrc", 8 | ".zenodo.json", 9 | "AUTHORS", 10 | "BUILD", 11 | "CITATION.cff", 12 | "CODEOWNERS", 13 | "CODE_OF_CONDUCT.md", 14 | "CONTRIBUTING.md", 15 | "ISSUES.md", 16 | "ISSUE_TEMPLATE.md", 17 | "LICENSE", 18 | "README.md", 19 | "RELEASE.md", 20 | "SECURITY.md", 21 | "WORKSPACE", 22 | "arm_compiler.BUILD", 23 | "configure", 24 | "configure.cmd", 25 | "configure.py", 26 | "fuzztest.bazelrc", 27 | "models.BUILD", 28 | "tensorflow", 29 | "third_party", 30 | "tools", 31 | ] 32 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-citation-cff/tensorflow/tensorflow/release.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Not Found", 3 | "documentation_url": "https://docs.github.com/rest/reference/repos#get-a-release-by-tag-name" 4 | } 5 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-citation-cff/tensorflow/tensorflow/user.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "tensorflow", 3 | "id": 15658638, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjE1NjU4NjM4", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/15658638?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/tensorflow", 8 | "html_url": "https://github.com/tensorflow", 9 | "followers_url": "https://api.github.com/users/tensorflow/followers", 10 | "following_url": "https://api.github.com/users/tensorflow/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/tensorflow/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/tensorflow/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/tensorflow/subscriptions", 14 | "organizations_url": "https://api.github.com/users/tensorflow/orgs", 15 | "repos_url": "https://api.github.com/users/tensorflow/repos", 16 | "events_url": "https://api.github.com/users/tensorflow/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/tensorflow/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": null, 21 | "company": null, 22 | "blog": "http://www.tensorflow.org", 23 | "location": null, 24 | "email": "github-admin@tensorflow.org", 25 | "hireable": null, 26 | "bio": null, 27 | "twitter_username": null, 28 | "public_repos": 107, 29 | "public_gists": 0, 30 | "followers": 5928, 31 | "following": 0, 32 | "created_at": "2015-11-04T19:32:50Z", 33 | "updated_at": "2023-01-25T21:37:45Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/KarrLab/de_sim/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2019-2020 Karr Lab 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/KarrLab/de_sim/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "KarrLab", 3 | "id": 13785824, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjEzNzg1ODI0", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/13785824?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/KarrLab", 8 | "html_url": "https://github.com/KarrLab", 9 | "followers_url": "https://api.github.com/users/KarrLab/followers", 10 | "following_url": "https://api.github.com/users/KarrLab/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/KarrLab/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/KarrLab/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/KarrLab/subscriptions", 14 | "organizations_url": "https://api.github.com/users/KarrLab/orgs", 15 | "repos_url": "https://api.github.com/users/KarrLab/repos", 16 | "events_url": "https://api.github.com/users/KarrLab/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/KarrLab/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "Karr whole-cell modeling lab", 21 | "company": null, 22 | "blog": "https://www.karrlab.org", 23 | "location": "1255 5th Avenue, New York NY 10029", 24 | "email": "info@karrlab.org", 25 | "hireable": null, 26 | "bio": "Developing whole-cell computational models to predict and engineer biology.", 27 | "twitter_username": null, 28 | "public_repos": 64, 29 | "public_gists": 0, 30 | "followers": 5, 31 | "following": 0, 32 | "created_at": "2015-08-13T17:33:41Z", 33 | "updated_at": "2020-04-20T21:24:08Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/KarrLab/de_sim/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".circleci", 3 | ".gitignore", 4 | ".karr_lab_build_utils.yml", 5 | "CODE_OF_CONDUCT.md", 6 | "CONTRIBUTING.md", 7 | "Dockerfile", 8 | "LICENSE", 9 | "MANIFEST.in", 10 | "README.md", 11 | "codemeta.json", 12 | "de_sim", 13 | "docs", 14 | "joss_paper", 15 | "make", 16 | "pytest.ini", 17 | "requirements.optional.txt", 18 | "requirements.txt", 19 | "setup.cfg", 20 | "setup.py", 21 | "tests", 22 | ] 23 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/README.md: -------------------------------------------------------------------------------- 1 | # Samples of GitHub repositories with codemeta.json files 2 | 3 | I obtained these files on 2023-01-19 by doing a search on GitHub.com using the expression 4 | ``` 5 | path:**/codemeta.json 6 | ``` 7 | 8 | and then inspecting the first few pages of results, looking for examples that used licenses no more restrictive than ours (so, BSD 3-clause or MIT or better). I then saved the `codemeta.json` file, plus the JSON output of using GitHub's API to get the repository data and the latest release data. (The latter are stored in the files `repo.json` and `release.json`, respectively.) 9 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/UUDigitalHumanitieslab/tscan/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "UUDigitalHumanitieslab", 3 | "id": 7656260, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjc2NTYyNjA=", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/7656260?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/UUDigitalHumanitieslab", 8 | "html_url": "https://github.com/UUDigitalHumanitieslab", 9 | "followers_url": "https://api.github.com/users/UUDigitalHumanitieslab/followers", 10 | "following_url": "https://api.github.com/users/UUDigitalHumanitieslab/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/UUDigitalHumanitieslab/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/UUDigitalHumanitieslab/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/UUDigitalHumanitieslab/subscriptions", 14 | "organizations_url": "https://api.github.com/users/UUDigitalHumanitieslab/orgs", 15 | "repos_url": "https://api.github.com/users/UUDigitalHumanitieslab/repos", 16 | "events_url": "https://api.github.com/users/UUDigitalHumanitieslab/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/UUDigitalHumanitieslab/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "UU Digital Humanities Lab", 21 | "company": null, 22 | "blog": "http://dig.hum.uu.nl", 23 | "location": "Utrecht", 24 | "email": "digitalhumanities@uu.nl", 25 | "hireable": null, 26 | "bio": "Digital Humanities Lab of Utrecht University", 27 | "twitter_username": null, 28 | "public_repos": 83, 29 | "public_gists": 0, 30 | "followers": 6, 31 | "following": 0, 32 | "created_at": "2014-05-21T09:40:56Z", 33 | "updated_at": "2021-11-05T14:43:22Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/UUDigitalHumanitieslab/tscan/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".clang-format", 3 | ".dockerignore", 4 | ".github", 5 | ".gitignore", 6 | ".travis.yml", 7 | "AUTHORS", 8 | "COPYING", 9 | "Dockerfile", 10 | "Makefile.am", 11 | "NEWS", 12 | "README", 13 | "README.md", 14 | "bootstrap.sh", 15 | "codemeta.json", 16 | "configure.ac", 17 | "cppcheck-suppressions-list.txt", 18 | "data", 19 | "docker-compose.yaml", 20 | "docker", 21 | "docs", 22 | "downloaddata.sh", 23 | "include", 24 | "m4", 25 | "src", 26 | "surprise.sh", 27 | "tests", 28 | "tscan.cfg.example", 29 | "view", 30 | "webservice", 31 | ] 32 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/betteridiot/bamnostic/LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2018, Marcus D. Sherman 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | * Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | * Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/betteridiot/bamnostic/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "betteridiot", 3 | "id": 25447319, 4 | "node_id": "MDQ6VXNlcjI1NDQ3MzE5", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/25447319?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/betteridiot", 8 | "html_url": "https://github.com/betteridiot", 9 | "followers_url": "https://api.github.com/users/betteridiot/followers", 10 | "following_url": "https://api.github.com/users/betteridiot/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/betteridiot/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/betteridiot/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/betteridiot/subscriptions", 14 | "organizations_url": "https://api.github.com/users/betteridiot/orgs", 15 | "repos_url": "https://api.github.com/users/betteridiot/repos", 16 | "events_url": "https://api.github.com/users/betteridiot/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/betteridiot/received_events", 18 | "type": "User", 19 | "site_admin": false, 20 | "name": "Marcus D Sherman", 21 | "company": null, 22 | "blog": "", 23 | "location": "Portland, Maine", 24 | "email": null, 25 | "hireable": null, 26 | "bio": "PhD candidate in DCMB at the UMich. Member of @mills-lab. @PyDataAnnArbor volunteer, @PyCon staff", 27 | "twitter_username": null, 28 | "public_repos": 19, 29 | "public_gists": 0, 30 | "followers": 42, 31 | "following": 1, 32 | "created_at": "2017-01-31T02:55:36Z", 33 | "updated_at": "2023-01-24T13:49:34Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/betteridiot/bamnostic/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".appveyor.yml", 3 | ".flake8", 4 | ".github", 5 | ".gitignore", 6 | ".readthedocs.yaml", 7 | ".stickler.yml", 8 | ".travis.yml", 9 | "CODE_OF_CONDUCT.md", 10 | "CONTRIBUTING.md", 11 | "LICENSE", 12 | "MANIFEST.in", 13 | "README.md", 14 | "README.rst", 15 | "bamnostic", 16 | "codemeta.json", 17 | "docs", 18 | "pyproject.toml", 19 | "pytest.ini", 20 | "requirements.txt", 21 | "setup.cfg", 22 | "setup.py", 23 | "tests", 24 | "version", 25 | ] 26 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/caltechlibrary/eprinttools/CITATION.cff: -------------------------------------------------------------------------------- 1 | cff-version: 1.2.0 2 | message: "If you use this software, please cite it as below." 3 | type: software 4 | title: "eprinttools" 5 | abstract: "Command line tools, Golang package and Python module for 6 | working with the EPrints 3.x REST API" 7 | authors: 8 | - family-names: Doiel 9 | given-names: R. S. 10 | orcid: "https://orcid.org/0000-0003-0900-6903" 11 | 12 | contributors: 13 | - family-names: Porter 14 | given-names: George 15 | orcid: "https://orcid.org/0000-0002-6539-638X" 16 | 17 | maintainers: 18 | - family-names: Doiel 19 | given-names: R. S. 20 | orcid: "https://orcid.org/0000-0003-0900-6903" 21 | 22 | repository-code: "https://github.com/caltechlibrary/eprinttools" 23 | version: 1.2.2 24 | license-url: "https://caltechlibrary.github.io/eprinttools/license.html" 25 | keywords: [ "metadata", "repository", "EPrints", "CrossRef", "DataCite", "software" ] 26 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/caltechlibrary/eprinttools/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Copyright (c) 2022, Caltech 3 | All rights not granted herein are expressly reserved by Caltech. 4 | 5 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 8 | 9 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 10 | 11 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 12 | 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 14 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/caltechlibrary/eprinttools/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "caltechlibrary", 3 | "id": 15038637, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjE1MDM4NjM3", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/15038637?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/caltechlibrary", 8 | "html_url": "https://github.com/caltechlibrary", 9 | "followers_url": "https://api.github.com/users/caltechlibrary/followers", 10 | "following_url": "https://api.github.com/users/caltechlibrary/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/caltechlibrary/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/caltechlibrary/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/caltechlibrary/subscriptions", 14 | "organizations_url": "https://api.github.com/users/caltechlibrary/orgs", 15 | "repos_url": "https://api.github.com/users/caltechlibrary/repos", 16 | "events_url": "https://api.github.com/users/caltechlibrary/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/caltechlibrary/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "Caltech Library", 21 | "company": null, 22 | "blog": "https://www.library.caltech.edu/", 23 | "location": "Pasadena, CA 91125", 24 | "email": "helpdesk@library.caltech.edu", 25 | "hireable": null, 26 | "bio": "We manage the physical and digital holdings of the California Institute of Technology, provide services and training, and develop open-source software.", 27 | "twitter_username": null, 28 | "public_repos": 278, 29 | "public_gists": 0, 30 | "followers": 20, 31 | "following": 0, 32 | "created_at": "2015-10-08T19:15:54Z", 33 | "updated_at": "2022-12-12T02:42:23Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/caltechlibrary/handprint/CITATION.cff: -------------------------------------------------------------------------------- 1 | # YAML 1.2 2 | --- 3 | authors: 4 | - 5 | affiliation: "Caltech Library" 6 | given-names: Michael 7 | family-names: Hucka 8 | orcid: "0000-0001-9105-5960" 9 | cff-version: "1.1.0" 10 | message: "If you use this software, please cite it using these metadata." 11 | repository-code: "https://github.com/caltechlibrary/handprint" 12 | title: "Handprint: Run handwritten text recognition services on images of documents" 13 | date-released: 2022-06-24 14 | version: "1.6.0" 15 | doi: 10.22002/20207 16 | keywords: 17 | - handwritten text recognition 18 | - optical character recognition 19 | - machine learning 20 | - artificial intelligence 21 | - cloud services 22 | - document processing 23 | ... 24 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/caltechlibrary/handprint/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018-2022, Caltech 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions are met: 5 | 6 | 1. Redistributions of source code must retain the above copyright notice, 7 | this list of conditions and the following disclaimer. 8 | 9 | 2. Redistributions in binary form must reproduce the above copyright notice, 10 | this list of conditions and the following disclaimer in the documentation 11 | and/or other materials provided with the distribution. 12 | 13 | 3. Neither the name of the copyright holder nor the names of its contributors 14 | may be used to endorse or promote products derived from this software without 15 | specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/caltechlibrary/handprint/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "caltechlibrary", 3 | "id": 15038637, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjE1MDM4NjM3", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/15038637?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/caltechlibrary", 8 | "html_url": "https://github.com/caltechlibrary", 9 | "followers_url": "https://api.github.com/users/caltechlibrary/followers", 10 | "following_url": "https://api.github.com/users/caltechlibrary/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/caltechlibrary/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/caltechlibrary/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/caltechlibrary/subscriptions", 14 | "organizations_url": "https://api.github.com/users/caltechlibrary/orgs", 15 | "repos_url": "https://api.github.com/users/caltechlibrary/repos", 16 | "events_url": "https://api.github.com/users/caltechlibrary/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/caltechlibrary/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "Caltech Library", 21 | "company": null, 22 | "blog": "https://www.library.caltech.edu/", 23 | "location": "Pasadena, CA 91125", 24 | "email": "helpdesk@library.caltech.edu", 25 | "hireable": null, 26 | "bio": "We manage the physical and digital holdings of the California Institute of Technology, provide services and training, and develop open-source software.", 27 | "twitter_username": null, 28 | "public_repos": 278, 29 | "public_gists": 0, 30 | "followers": 20, 31 | "following": 0, 32 | "created_at": "2015-10-08T19:15:54Z", 33 | "updated_at": "2022-12-12T02:42:23Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/caltechlibrary/handprint/codemeta.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://doi.org/10.5063/schema/codemeta-2.0", 3 | "@type": "SoftwareSourceCode", 4 | "description": "Apply different handwritten text recognition services and algorithms to handwritten documents.", 5 | "name": "Handprint", 6 | "codeRepository": "https://github.com/caltechlibrary/handprint", 7 | "issueTracker": "https://github.com/caltechlibrary/handprint/issues", 8 | "license": "https://github.com/caltechlibrary/handprint/blob/master/LICENSE", 9 | "version": "1.6.0", 10 | "author": [ 11 | { 12 | "@type": "Person", 13 | "givenName": "Michael", 14 | "familyName": "Hucka", 15 | "affiliation": "Caltech Library", 16 | "email": "mhucka@caltech.edu", 17 | "@id": "https://orcid.org/0000-0001-9105-5960" 18 | }], 19 | "developmentStatus": "active", 20 | "keywords": [ 21 | "handwritten text recognition", 22 | "HTR", 23 | "OCR", 24 | "machine learning" 25 | ], 26 | "maintainer": "https://orcid.org/0000-0001-9105-5960", 27 | "programmingLanguage": "Python" 28 | } 29 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/caltechlibrary/handprint/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".gitattributes", 3 | ".github", 4 | ".gitignore", 5 | ".graphics", 6 | "CHANGES.md", 7 | "CITATION.cff", 8 | "CODE_OF_CONDUCT.md", 9 | "CONTRIBUTING.md", 10 | "LICENSE", 11 | "Makefile", 12 | "Pipfile", 13 | "Pipfile.lock", 14 | "README-PAPER.md", 15 | "README.md", 16 | "SUPPORT.md", 17 | "bin", 18 | "codemeta.json", 19 | "dev", 20 | "docs", 21 | "handprint", 22 | "pubs", 23 | "requirements-dev.txt", 24 | "requirements.txt", 25 | "setup.cfg", 26 | "setup.py", 27 | "tests", 28 | ] 29 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/caltechlibrary/urlup/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018-2021, Caltech 2 | All rights not granted herein are expressly reserved by Caltech. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, 8 | this list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its contributors 15 | may be used to endorse or promote products derived from this software without 16 | specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 22 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 | POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/caltechlibrary/urlup/codemeta.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://doi.org/10.5063/schema/codemeta-2.0", 3 | "@type": "SoftwareSourceCode", 4 | "description": "A small utility program and Python 3 module to dereference URLs and determine their final destinations after following redirections.", 5 | "name": "Urlup", 6 | "codeRepository": "https://github.com/caltechlibrary/urlup", 7 | "issueTracker": "https://github.com/caltechlibrary/urlup/issues", 8 | "license": "https://github.com/caltechlibrary/urlup/blob/master/LICENSE", 9 | "version": "1.5.1", 10 | "author": [ 11 | { 12 | "@type": "Person", 13 | "givenName": "Michael", 14 | "familyName": "Hucka", 15 | "affiliation": "Caltech Library", 16 | "email": "mhucka@caltech.edu", 17 | "@id": "https://orcid.org/0000-0001-9105-5960" 18 | }], 19 | "developmentStatus": "active", 20 | "downloadUrl": "https://github.com/caltechlibrary/urlup/archive/1.5.1.zip", 21 | "keywords": [ 22 | "TIND.io", 23 | "MARC", 24 | "URL" 25 | ], 26 | "maintainer": "https://orcid.org/0000-0001-9105-5960", 27 | "programmingLanguage": "Python" 28 | } 29 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/caltechlibrary/urlup/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".gitignore", 3 | ".graphics", 4 | "CHANGES.md", 5 | "CODE_OF_CONDUCT.md", 6 | "CONTRIBUTING.md", 7 | "INSTALL-Python3.md", 8 | "LICENSE", 9 | "MANIFEST.in", 10 | "Makefile", 11 | "README.md", 12 | "SUPPORT.md", 13 | "bin", 14 | "codemeta.json", 15 | "dev", 16 | "make.bat", 17 | "pyinstaller-darwin.spec", 18 | "pyinstaller-win32.spec", 19 | "requirements.txt", 20 | "setup.cfg", 21 | "setup.py", 22 | "tests", 23 | "urlup", 24 | ] 25 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/cds-astro/tutorials/LICENCE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2022, CDS (Centre de Données astronomiques de Strasbourg) 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/cds-astro/tutorials/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "cds-astro", 3 | "id": 26145382, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjI2MTQ1Mzgy", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/26145382?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/cds-astro", 8 | "html_url": "https://github.com/cds-astro", 9 | "followers_url": "https://api.github.com/users/cds-astro/followers", 10 | "following_url": "https://api.github.com/users/cds-astro/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/cds-astro/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/cds-astro/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/cds-astro/subscriptions", 14 | "organizations_url": "https://api.github.com/users/cds-astro/orgs", 15 | "repos_url": "https://api.github.com/users/cds-astro/repos", 16 | "events_url": "https://api.github.com/users/cds-astro/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/cds-astro/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "CDS (Centre de Données astronomiques de Strasbourg)", 21 | "company": null, 22 | "blog": "http://cds.unistra.fr/", 23 | "location": null, 24 | "email": null, 25 | "hireable": null, 26 | "bio": null, 27 | "twitter_username": null, 28 | "public_repos": 28, 29 | "public_gists": 0, 30 | "followers": 27, 31 | "following": 0, 32 | "created_at": "2017-03-02T16:12:35Z", 33 | "updated_at": "2017-03-02T16:17:35Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/cds-astro/tutorials/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".github", 3 | ".gitignore", 4 | ".pre-commit-config.yaml", 5 | "LICENCE", 6 | "Notebooks", 7 | "Past_Conferences_and_Schools", 8 | "README.md", 9 | "codemeta.json", 10 | "justfile", 11 | "postBuild", 12 | "pyproject.toml", 13 | "requirements-dev.txt", 14 | "requirements-docs.txt", 15 | "requirements.txt", 16 | "runtime.txt", 17 | ] 18 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/charlie86/spotifyr/LICENSE: -------------------------------------------------------------------------------- 1 | YEAR: 2017 2 | COPYRIGHT HOLDER: Charlie Thompson 3 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/charlie86/spotifyr/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "charlie86", 3 | "id": 9537903, 4 | "node_id": "MDQ6VXNlcjk1Mzc5MDM=", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/9537903?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/charlie86", 8 | "html_url": "https://github.com/charlie86", 9 | "followers_url": "https://api.github.com/users/charlie86/followers", 10 | "following_url": "https://api.github.com/users/charlie86/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/charlie86/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/charlie86/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/charlie86/subscriptions", 14 | "organizations_url": "https://api.github.com/users/charlie86/orgs", 15 | "repos_url": "https://api.github.com/users/charlie86/repos", 16 | "events_url": "https://api.github.com/users/charlie86/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/charlie86/received_events", 18 | "type": "User", 19 | "site_admin": false, 20 | "name": null, 21 | "company": "Spotify", 22 | "blog": "rcharlie.com", 23 | "location": null, 24 | "email": null, 25 | "hireable": null, 26 | "bio": "Data Scientist", 27 | "twitter_username": null, 28 | "public_repos": 29, 29 | "public_gists": 2, 30 | "followers": 115, 31 | "following": 0, 32 | "created_at": "2014-11-03T19:42:33Z", 33 | "updated_at": "2022-12-09T22:11:23Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/charlie86/spotifyr/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".DS_Store", 3 | ".Rbuildignore", 4 | ".gitignore", 5 | "CODE_OF_CONDUCT.md", 6 | "CRAN-SUBMISSION", 7 | "DESCRIPTION", 8 | "LICENSE", 9 | "NAMESPACE", 10 | "NEWS.md", 11 | "R", 12 | "README.md", 13 | "_pkgdown.yml", 14 | "codemeta.json", 15 | "cran-comments.md", 16 | "data-raw", 17 | "docs", 18 | "inst", 19 | "man", 20 | "readme.Rmd", 21 | "spotifyr.Rproj", 22 | "tests", 23 | ] 24 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/codemeta/codemeta/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "codemeta", 3 | "id": 15223235, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjE1MjIzMjM1", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/15223235?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/codemeta", 8 | "html_url": "https://github.com/codemeta", 9 | "followers_url": "https://api.github.com/users/codemeta/followers", 10 | "following_url": "https://api.github.com/users/codemeta/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/codemeta/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/codemeta/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/codemeta/subscriptions", 14 | "organizations_url": "https://api.github.com/users/codemeta/orgs", 15 | "repos_url": "https://api.github.com/users/codemeta/repos", 16 | "events_url": "https://api.github.com/users/codemeta/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/codemeta/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "CodeMeta", 21 | "company": null, 22 | "blog": "https://codemeta.github.io", 23 | "location": "Santa Barbara, CA", 24 | "email": null, 25 | "hireable": null, 26 | "bio": "CodeMeta focuses on metadata and discovery systems for software citation and attribution.", 27 | "twitter_username": null, 28 | "public_repos": 5, 29 | "public_gists": 0, 30 | "followers": 1, 31 | "following": 0, 32 | "created_at": "2015-10-21T00:57:05Z", 33 | "updated_at": "2017-09-27T16:45:45Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/codemeta/codemeta/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".gitignore", 3 | ".travis.yml", 4 | "CONTRIBUTING.md", 5 | "CONTRIBUTORS.MD", 6 | "LICENSE", 7 | "README.md", 8 | "codemeta.json", 9 | "codemeta.jsonld", 10 | "crosswalk.csv", 11 | "crosswalks", 12 | "examples", 13 | "properties_description.csv", 14 | "scripts", 15 | "tests", 16 | ] 17 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/crosscite/content-negotiation/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 DataCite 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/crosscite/content-negotiation/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "crosscite", 3 | "id": 756493, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjc1NjQ5Mw==", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/756493?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/crosscite", 8 | "html_url": "https://github.com/crosscite", 9 | "followers_url": "https://api.github.com/users/crosscite/followers", 10 | "following_url": "https://api.github.com/users/crosscite/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/crosscite/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/crosscite/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/crosscite/subscriptions", 14 | "organizations_url": "https://api.github.com/users/crosscite/orgs", 15 | "repos_url": "https://api.github.com/users/crosscite/repos", 16 | "events_url": "https://api.github.com/users/crosscite/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/crosscite/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": null, 21 | "company": null, 22 | "blog": "", 23 | "location": null, 24 | "email": null, 25 | "hireable": null, 26 | "bio": null, 27 | "twitter_username": null, 28 | "public_repos": 4, 29 | "public_gists": 0, 30 | "followers": 0, 31 | "following": 0, 32 | "created_at": "2011-04-28T08:26:19Z", 33 | "updated_at": "2017-04-12T17:14:14Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/crosscite/content-negotiation/codemeta.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/codemeta/codemeta/master/codemeta.jsonld", 3 | "@type": "SoftwareSourceCode", 4 | "@id": "https://doi.org/10.5438/T1JG-HVHN", 5 | "agents": { 6 | "@id": "http://orcid.org/0000-0003-1419-2405", 7 | "@type": "person", 8 | "name": "Martin Fenner", 9 | "affiliation": "DataCite", 10 | "mustBeCited": true, 11 | "isMaintainer": true, 12 | "isRightsHolder": true 13 | }, 14 | "identifier": "https://doi.org/10.5438/T1JG-HVHN", 15 | "codeRepository": "https://github.com/crosscite/content-negotiation", 16 | "dateCreated": "2017-04-08", 17 | "datePublished": "2017-04-28", 18 | "dateModified": "2017-04-28", 19 | "description": "An API for DOI content negotiation. Also available as Docker container.", 20 | "isAutomatedBuild": true, 21 | "licenseId": "MIT", 22 | "publisher": "DataCite", 23 | "tags": [ 24 | "doi", 25 | "metadata", 26 | "crossref", 27 | "datacite", 28 | "schema.org", 29 | "bibtex", 30 | "codemeta", 31 | "content negotiation" 32 | ], 33 | "title": "Content-Negotation: an API for DOI content negotiation", 34 | "programmingLanguage": { 35 | "name": "Ruby", 36 | "version": "≥ 2.3.3", 37 | "URL": "https://www.ruby-lang.org" 38 | }, 39 | "readme": "https://github.com/crosscite/content-negotiation/blob/master/README.md" 40 | } 41 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/crosscite/content-negotiation/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".dockerignore", 3 | ".env.build", 4 | ".github", 5 | ".gitignore", 6 | ".rubocop.yml", 7 | ".travis.yml", 8 | ".vscode", 9 | "CHANGELOG.md", 10 | "Dockerfile", 11 | "Gemfile", 12 | "Gemfile.lock", 13 | "LICENSE", 14 | "README.md", 15 | "Rakefile", 16 | "app", 17 | "bin", 18 | "codemeta.json", 19 | "config.ru", 20 | "config", 21 | "coverage", 22 | "devspace.yaml", 23 | "docker-compose.yml", 24 | "lib", 25 | "spec", 26 | "tmp", 27 | "vendor", 28 | ] 29 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/datacite/akita/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 DataCite 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/datacite/akita/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "datacite", 3 | "id": 411326, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjQxMTMyNg==", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/411326?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/datacite", 8 | "html_url": "https://github.com/datacite", 9 | "followers_url": "https://api.github.com/users/datacite/followers", 10 | "following_url": "https://api.github.com/users/datacite/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/datacite/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/datacite/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/datacite/subscriptions", 14 | "organizations_url": "https://api.github.com/users/datacite/orgs", 15 | "repos_url": "https://api.github.com/users/datacite/repos", 16 | "events_url": "https://api.github.com/users/datacite/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/datacite/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "DataCite", 21 | "company": null, 22 | "blog": "https://www.datacite.org", 23 | "location": null, 24 | "email": "info@datacite.org", 25 | "hireable": null, 26 | "bio": "Connecting research, identifying knowledge", 27 | "twitter_username": "DataCite", 28 | "public_repos": 111, 29 | "public_gists": 0, 30 | "followers": 16, 31 | "following": 0, 32 | "created_at": "2010-09-22T11:11:04Z", 33 | "updated_at": "2021-12-22T11:46:44Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/datacite/akita/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".babelrc", 3 | ".dockerignore", 4 | ".eslintrc.js", 5 | ".github", 6 | ".gitignore", 7 | ".prettierignore", 8 | ".prettierrc.json", 9 | ".yarnclean", 10 | "LICENSE", 11 | "README.md", 12 | "codemeta.json", 13 | "config", 14 | "cypress.json", 15 | "cypress", 16 | "decs.d.ts", 17 | "jest.config.js", 18 | "next-env.d.ts", 19 | "next.config.js", 20 | "package.json", 21 | "public", 22 | "server.js", 23 | "src", 24 | "tsconfig.json", 25 | "vercel.json", 26 | "yarn.lock", 27 | ] 28 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/datacite/pidgraph-notebooks-python/CITATION.cff: -------------------------------------------------------------------------------- 1 | 2 | cff-version: 1.1.0 3 | message: "If you use this software, please cite it as below." 4 | authors: 5 | doi: 10.14454/fqq6-w751 6 | version: 1.1.1 7 | title: FREYA PID Graph Jupyter Notebooks 8 | date-released: 2020-05-08 9 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/datacite/pidgraph-notebooks-python/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 DataCite 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/datacite/pidgraph-notebooks-python/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "datacite", 3 | "id": 411326, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjQxMTMyNg==", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/411326?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/datacite", 8 | "html_url": "https://github.com/datacite", 9 | "followers_url": "https://api.github.com/users/datacite/followers", 10 | "following_url": "https://api.github.com/users/datacite/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/datacite/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/datacite/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/datacite/subscriptions", 14 | "organizations_url": "https://api.github.com/users/datacite/orgs", 15 | "repos_url": "https://api.github.com/users/datacite/repos", 16 | "events_url": "https://api.github.com/users/datacite/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/datacite/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "DataCite", 21 | "company": null, 22 | "blog": "https://www.datacite.org", 23 | "location": null, 24 | "email": "info@datacite.org", 25 | "hireable": null, 26 | "bio": "Connecting research, identifying knowledge", 27 | "twitter_username": "DataCite", 28 | "public_repos": 111, 29 | "public_gists": 0, 30 | "followers": 16, 31 | "following": 0, 32 | "created_at": "2010-09-22T11:11:04Z", 33 | "updated_at": "2021-12-22T11:46:44Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/datacite/pidgraph-notebooks-python/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".github", 3 | ".gitignore", 4 | "CITATION.cff", 5 | "LICENSE", 6 | "README.md", 7 | "codemeta.json", 8 | "dmp", 9 | "images", 10 | "mdc-dataset-carrer-status", 11 | "mdc-dataset-discipline", 12 | "postBuild", 13 | "render_notebooks.sh", 14 | "requirements.txt", 15 | "researcher-publications", 16 | "runtime.txt", 17 | "user-story-1-datacenter-publication-citations", 18 | "user-story-10-grant-outputs", 19 | "user-story-2-software-citations", 20 | "user-story-3-impacts-of-organization", 21 | "user-story-4-open-access", 22 | "user-story-5-dissertations", 23 | "user-story-6-disambiguate-researchers", 24 | "user-story-7-second-degree-citations", 25 | "user-story-8-impacts-of-data", 26 | "user-story-9-researcher-coauthors", 27 | "user-story-nfdi4ing-instrument", 28 | ] 29 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/ddsjoberg/gtsummary/LICENSE: -------------------------------------------------------------------------------- 1 | YEAR: 2020 2 | COPYRIGHT HOLDER: Daniel D. Sjoberg 3 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/ddsjoberg/gtsummary/LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2020 Daniel D. Sjoberg 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/ddsjoberg/gtsummary/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "ddsjoberg", 3 | "id": 26774684, 4 | "node_id": "MDQ6VXNlcjI2Nzc0Njg0", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/26774684?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/ddsjoberg", 8 | "html_url": "https://github.com/ddsjoberg", 9 | "followers_url": "https://api.github.com/users/ddsjoberg/followers", 10 | "following_url": "https://api.github.com/users/ddsjoberg/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/ddsjoberg/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/ddsjoberg/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/ddsjoberg/subscriptions", 14 | "organizations_url": "https://api.github.com/users/ddsjoberg/orgs", 15 | "repos_url": "https://api.github.com/users/ddsjoberg/repos", 16 | "events_url": "https://api.github.com/users/ddsjoberg/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/ddsjoberg/received_events", 18 | "type": "User", 19 | "site_admin": false, 20 | "name": "Daniel Sjoberg", 21 | "company": "MSKCC", 22 | "blog": "www.danieldsjoberg.com", 23 | "location": "NY, NY", 24 | "email": null, 25 | "hireable": null, 26 | "bio": "Biostatistician @sloan_kettering; \r\nDrPH candidate @columbia; \r\nGolden Girls Superfan", 27 | "twitter_username": "statistishdan", 28 | "public_repos": 64, 29 | "public_gists": 11, 30 | "followers": 231, 31 | "following": 37, 32 | "created_at": "2017-03-29T17:55:10Z", 33 | "updated_at": "2023-01-25T12:29:12Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/ddsjoberg/gtsummary/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".Rbuildignore", 3 | ".Rprofile", 4 | ".covrignore", 5 | ".github", 6 | ".gitignore", 7 | "CITATION.cff", 8 | "DESCRIPTION", 9 | "LICENSE", 10 | "LICENSE.md", 11 | "NAMESPACE", 12 | "NEWS.md", 13 | "R", 14 | "README.Rmd", 15 | "README.md", 16 | "benchmark", 17 | "codecov.yml", 18 | "codemeta.json", 19 | "cran-comments.md", 20 | "data-raw", 21 | "data", 22 | "gtsummary.Rproj", 23 | "inst", 24 | "man-images", 25 | "man", 26 | "pkgdown", 27 | "tests", 28 | "vignettes", 29 | ] 30 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/duetosymmetry/qnm/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Leo C. Stein 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/duetosymmetry/qnm/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "duetosymmetry", 3 | "id": 679461, 4 | "node_id": "MDQ6VXNlcjY3OTQ2MQ==", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/679461?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/duetosymmetry", 8 | "html_url": "https://github.com/duetosymmetry", 9 | "followers_url": "https://api.github.com/users/duetosymmetry/followers", 10 | "following_url": "https://api.github.com/users/duetosymmetry/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/duetosymmetry/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/duetosymmetry/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/duetosymmetry/subscriptions", 14 | "organizations_url": "https://api.github.com/users/duetosymmetry/orgs", 15 | "repos_url": "https://api.github.com/users/duetosymmetry/repos", 16 | "events_url": "https://api.github.com/users/duetosymmetry/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/duetosymmetry/received_events", 18 | "type": "User", 19 | "site_admin": false, 20 | "name": "Leo C. Stein", 21 | "company": null, 22 | "blog": "https://duetosymmetry.com/", 23 | "location": null, 24 | "email": null, 25 | "hireable": null, 26 | "bio": "Assistant Professor of Physics and Astronomy at U of MS. Gravitational waves, general relativity and beyond. Formerly at @caltech, @mit, Cornell", 27 | "twitter_username": "duetosymmetry", 28 | "public_repos": 78, 29 | "public_gists": 5, 30 | "followers": 265, 31 | "following": 239, 32 | "created_at": "2011-03-20T02:47:18Z", 33 | "updated_at": "2023-02-01T16:32:14Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/duetosymmetry/qnm/codemeta.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://doi.org/10.5063/schema/codemeta-2.0", 3 | "@type": "SoftwareSourceCode", 4 | "name": "qnm: Kerr quasinormal modes, separation constants, and spherical-spheroidal mixing coefficients calculator", 5 | "description": "qnm computes the Kerr quasinormal mode frequencies, angular separation constants, and spherical-spheroidal mixing coefficients. The qnm package includes a Leaver solver with the Cook-Zalutskiy spectral approach to the angular sector, and a caching mechanism to avoid repeating calculations. A large cache of low ℓ, m, n modes is available for download and can be installed with a single function call and interpolated to provide good initial guess for root-polishing at new values of spin.", 6 | "identifier": "ascl:1910.022", 7 | "author": [ 8 | { 9 | "@type": "Person", 10 | "givenName": "Leo C.", 11 | "familyName": "Stein", 12 | "id": "https://orcid.org/0000-0001-7559-9597" 13 | } 14 | ], 15 | "citation": "https://inspirehep.net/record/1751578", 16 | "relatedLink": [ 17 | "https://pypi.org/project/qnm/", 18 | "https://qnm.readthedocs.io/", 19 | "https://doi.org/10.5281/zenodo.2593978", 20 | "https://arxiv.org/abs/1908.10377" 21 | ], 22 | "codeRepository": "https://github.com/duetosymmetry/qnm", 23 | "programmingLanguage": "python", 24 | "referencePublication": [ 25 | { 26 | "@type": "ScholarlyArticle", 27 | "url": "https://inspirehep.net/record/1751578", 28 | "id": "https://doi.org/10.21105/joss.01683" 29 | } 30 | ], 31 | "version": "0.4.0", 32 | "license": "https://spdx.org/licenses/MIT.html" 33 | } 34 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/duetosymmetry/qnm/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".gitattributes", 3 | ".github", 4 | ".gitignore", 5 | ".readthedocs.yml", 6 | "CITATION.bib", 7 | "CODE_OF_CONDUCT.md", 8 | "LICENSE", 9 | "README.md", 10 | "codemeta.json", 11 | "docs", 12 | "notebooks", 13 | "qnm", 14 | "requirements.txt", 15 | "setup.py", 16 | "test", 17 | ] 18 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/fairdataihub/FAIRshare-Docs/CITATION.cff: -------------------------------------------------------------------------------- 1 | abstract: Documentation for the FAIRshare application 2 | authors: 3 | - affiliation: FAIR Data Innovations Hub 4 | email: ssoundarajan@calmi2.org 5 | family-names: Soundarajan 6 | given-names: Sanjay 7 | - affiliation: California Medical Innovations Institute 8 | email: bpatel@calmi2.org 9 | family-names: Patel 10 | given-names: Bhavesh 11 | cff-version: 1.2.0 12 | date-released: '2023-02-24' 13 | identifiers: 14 | - description: DOI for this software's record on Zenodo 15 | type: doi 16 | value: https://doi.org/10.5281/zenodo.7675563 17 | keywords: 18 | - FAIR 19 | - data 20 | - curation 21 | - documentation 22 | - electron 23 | - macos 24 | - ubuntu 25 | - windows 26 | license: MIT 27 | message: If you use this software, please cite it as below. 28 | repository-artifact: https://github.com/fairdataihub/FAIRshare-Docs 29 | repository-code: https://github.com/fairdataihub/FAIRshare-Docs 30 | title: FAIRshare docs 31 | type: software 32 | url: https://fairdataihub.org/ 33 | version: 4.2.21 34 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/fairdataihub/FAIRshare-Docs/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "fairdataihub", 3 | "id": 90935916, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjkwOTM1OTE2", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/90935916?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/fairdataihub", 8 | "html_url": "https://github.com/fairdataihub", 9 | "followers_url": "https://api.github.com/users/fairdataihub/followers", 10 | "following_url": "https://api.github.com/users/fairdataihub/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/fairdataihub/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/fairdataihub/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/fairdataihub/subscriptions", 14 | "organizations_url": "https://api.github.com/users/fairdataihub/orgs", 15 | "repos_url": "https://api.github.com/users/fairdataihub/repos", 16 | "events_url": "https://api.github.com/users/fairdataihub/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/fairdataihub/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "FAIR Data Innovations Hub", 21 | "company": null, 22 | "blog": "https://fairdataihub.org", 23 | "location": "United States of America", 24 | "email": "info@fairdataihub.org", 25 | "hireable": null, 26 | "bio": "We build open source tools to help researchers learn about and implement FAIR Data practices", 27 | "twitter_username": null, 28 | "public_repos": 25, 29 | "public_gists": 0, 30 | "followers": 10, 31 | "following": 0, 32 | "created_at": "2021-09-17T20:59:37Z", 33 | "updated_at": "2023-01-22T13:59:13Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/fairdataihub/FAIRshare-Docs/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".editorconfig", 3 | ".eslintrc", 4 | ".github", 5 | ".gitignore", 6 | ".husky", 7 | ".prettierrc", 8 | ".zenodo.json", 9 | "CHANGELOG.md", 10 | "CITATION.cff", 11 | "CODE_OF_CONDUCT.md", 12 | "CONTRIBUTING.md", 13 | "LICENSE", 14 | "README.md", 15 | "api", 16 | "babel.config.js", 17 | "codemeta.json", 18 | "commitlint.config.js", 19 | "devmoji.config.js", 20 | "docs.compatibility.json", 21 | "docs", 22 | "docusaurus.config.js", 23 | "package.json", 24 | "postcss.config.js", 25 | "release.config.js", 26 | "renovate.json", 27 | "sidebars.js", 28 | "src", 29 | "static", 30 | "tailwind.config.js", 31 | "vercel.json", 32 | "versioned_docs", 33 | "versioned_sidebars", 34 | "versions.json", 35 | "yarn.lock", 36 | ] 37 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/fairdataihub/SODA-for-SPARC/CITATION.cff: -------------------------------------------------------------------------------- 1 | # This CITATION.cff file was generated with FAIRshare. 2 | # Visit https://fairdataihub.org/fairshare to learn more! 3 | 4 | abstract: Simplifying data curation for researchers funded by the NIH SPARC initiative 5 | authors: 6 | - affiliation: FAIR Data Innovations Hub 7 | email: bpatel@calmi2.org 8 | family-names: Patel 9 | given-names: Bhavesh 10 | - affiliation: FAIR Data Innovations Hub 11 | email: ssoundarajan@calmi2.org 12 | family-names: Soundarajan 13 | given-names: Sanjay 14 | - affiliation: FAIR Data Innovations Hub 15 | email: cmarroquin@calmi2.org 16 | family-names: Marroquin 17 | given-names: Aaron 18 | - affiliation: FAIR Data Innovations Hub 19 | email: jclark@calmi2.org 20 | family-names: Clark 21 | given-names: Jacob 22 | - affiliation: FAIR Data Innovations Hub 23 | email: dportillo@calmi2.org 24 | family-names: Portillo 25 | given-names: Dorian 26 | cff-version: 1.2.0 27 | date-released: '2023-02-24' 28 | identifiers: 29 | - description: DOI for this software's record on Zenodo 30 | type: doi 31 | value: 10.5281/zenodo.7682467 32 | keywords: 33 | - SPARC 34 | - FAIR 35 | - data 36 | - curation 37 | - mac 38 | - sparc-dataset 39 | - ubuntu 40 | - windows 41 | license: MIT 42 | message: If you use this software, please cite it as below. 43 | repository-artifact: https://fairdataihub.org/sodaforsparc 44 | repository-code: https://github.com/fairdataihub/SODA-for-SPARC 45 | title: SODA (Software to Organize Data Automatically) for SPARC 46 | type: software 47 | url: https://fairdataihub.org/ 48 | version: 10.0.2 49 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/fairdataihub/SODA-for-SPARC/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/fairdataihub/SODA-for-SPARC/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "fairdataihub", 3 | "id": 90935916, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjkwOTM1OTE2", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/90935916?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/fairdataihub", 8 | "html_url": "https://github.com/fairdataihub", 9 | "followers_url": "https://api.github.com/users/fairdataihub/followers", 10 | "following_url": "https://api.github.com/users/fairdataihub/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/fairdataihub/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/fairdataihub/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/fairdataihub/subscriptions", 14 | "organizations_url": "https://api.github.com/users/fairdataihub/orgs", 15 | "repos_url": "https://api.github.com/users/fairdataihub/repos", 16 | "events_url": "https://api.github.com/users/fairdataihub/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/fairdataihub/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "FAIR Data Innovations Hub", 21 | "company": null, 22 | "blog": "https://fairdataihub.org", 23 | "location": "United States of America", 24 | "email": "info@fairdataihub.org", 25 | "hireable": null, 26 | "bio": "We build open source tools to help researchers learn about and implement FAIR Data practices", 27 | "twitter_username": null, 28 | "public_repos": 25, 29 | "public_gists": 0, 30 | "followers": 10, 31 | "following": 0, 32 | "created_at": "2021-09-17T20:59:37Z", 33 | "updated_at": "2023-01-22T13:59:13Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/fairdataihub/SODA-for-SPARC/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".github", 3 | ".gitignore", 4 | ".husky", 5 | ".prettierignore", 6 | ".storybook", 7 | ".zenodo.json", 8 | "CHANGELOG.md", 9 | "CITATION.cff", 10 | "CODE_OF_CONDUCT.md", 11 | "CONTRIBUTING.md", 12 | "LICENSE", 13 | "README.md", 14 | "assets", 15 | "codemeta.json", 16 | "commitlint.config.js", 17 | "debian.json", 18 | "devmoji.config.js", 19 | "docs", 20 | "entitlements.mac.inherit.plist", 21 | "file_templates", 22 | "index.html", 23 | "main-process", 24 | "main.js", 25 | "notarize.js", 26 | "package-lock.json", 27 | "package.json", 28 | "pennsieve-io-chain.pem", 29 | "preload.js", 30 | "prettier.config.js", 31 | "pyflask", 32 | "renderer-process", 33 | "renovate.json", 34 | "scripts", 35 | "sections", 36 | "soda_json_file.json", 37 | "splash-screen.html", 38 | "stories", 39 | "tools", 40 | ] 41 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/gem-pasteur/Integron_Finder/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "gem-pasteur", 3 | "id": 5920106, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjU5MjAxMDY=", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/5920106?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/gem-pasteur", 8 | "html_url": "https://github.com/gem-pasteur", 9 | "followers_url": "https://api.github.com/users/gem-pasteur/followers", 10 | "following_url": "https://api.github.com/users/gem-pasteur/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/gem-pasteur/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/gem-pasteur/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/gem-pasteur/subscriptions", 14 | "organizations_url": "https://api.github.com/users/gem-pasteur/orgs", 15 | "repos_url": "https://api.github.com/users/gem-pasteur/repos", 16 | "events_url": "https://api.github.com/users/gem-pasteur/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/gem-pasteur/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": null, 21 | "company": null, 22 | "blog": "https://research.pasteur.fr/en/team/microbial-evolutionary-genomics/", 23 | "location": null, 24 | "email": null, 25 | "hireable": null, 26 | "bio": null, 27 | "twitter_username": null, 28 | "public_repos": 5, 29 | "public_gists": 0, 30 | "followers": 3, 31 | "following": 0, 32 | "created_at": "2013-11-12T14:28:05Z", 33 | "updated_at": "2022-09-15T12:13:48Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/gem-pasteur/Integron_Finder/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".github", 3 | ".gitignore", 4 | ".travis.yml", 5 | ".workflow-index.yml", 6 | "CITATION.cff", 7 | "CONTRIBUTING.md", 8 | "CONTRIBUTORS.md", 9 | "COPYING", 10 | "COPYRIGHT", 11 | "MANIFEST.in", 12 | "README.md", 13 | "codemeta.json", 14 | "doc", 15 | "docker", 16 | "integron_finder", 17 | "nextflow.config", 18 | "parallel_integron_finder.nf", 19 | "pyproject.toml", 20 | "setup.cfg", 21 | "setup.py", 22 | "tests", 23 | ] 24 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/karthik/wesanderson/LICENSE: -------------------------------------------------------------------------------- 1 | YEAR: 2022 2 | COPYRIGHT HOLDER: Karthik Ram -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/karthik/wesanderson/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "karthik", 3 | "id": 138494, 4 | "node_id": "MDQ6VXNlcjEzODQ5NA==", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/138494?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/karthik", 8 | "html_url": "https://github.com/karthik", 9 | "followers_url": "https://api.github.com/users/karthik/followers", 10 | "following_url": "https://api.github.com/users/karthik/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/karthik/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/karthik/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/karthik/subscriptions", 14 | "organizations_url": "https://api.github.com/users/karthik/orgs", 15 | "repos_url": "https://api.github.com/users/karthik/repos", 16 | "events_url": "https://api.github.com/users/karthik/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/karthik/received_events", 18 | "type": "User", 19 | "site_admin": false, 20 | "name": "Karthik Ram", 21 | "company": "@ucberkeley @ropensci @si2-urssi", 22 | "blog": "https://ram.berkeley.edu", 23 | "location": "Berkeley, CA", 24 | "email": null, 25 | "hireable": true, 26 | "bio": "Research associate professor at UC Berkeley and director of @ropensci. ", 27 | "twitter_username": "_inundata", 28 | "public_repos": 217, 29 | "public_gists": 96, 30 | "followers": 1092, 31 | "following": 21, 32 | "created_at": "2009-10-12T04:41:48Z", 33 | "updated_at": "2023-02-01T23:21:34Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/karthik/wesanderson/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".Rbuildignore", 3 | ".github", 4 | ".gitignore", 5 | ".travis.yml", 6 | "DESCRIPTION", 7 | "LICENSE", 8 | "NAMESPACE", 9 | "NEWS", 10 | "R", 11 | "README.Rmd", 12 | "README.md", 13 | "codemeta.json", 14 | "cran-comments.md", 15 | "data", 16 | "figure", 17 | "man", 18 | "rushmore.jpg", 19 | "wesanderson.Rproj", 20 | ] 21 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/mne-tools/mne-python/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright © 2011-2022, authors of MNE-Python 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of the copyright holder nor the names of its 12 | contributors may be used to endorse or promote products derived from 13 | this software without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/mne-tools/mne-python/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "mne-tools", 3 | "id": 583875, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjU4Mzg3NQ==", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/583875?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/mne-tools", 8 | "html_url": "https://github.com/mne-tools", 9 | "followers_url": "https://api.github.com/users/mne-tools/followers", 10 | "following_url": "https://api.github.com/users/mne-tools/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/mne-tools/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/mne-tools/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/mne-tools/subscriptions", 14 | "organizations_url": "https://api.github.com/users/mne-tools/orgs", 15 | "repos_url": "https://api.github.com/users/mne-tools/repos", 16 | "events_url": "https://api.github.com/users/mne-tools/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/mne-tools/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "MNE tools for MEG and EEG data analysis", 21 | "company": null, 22 | "blog": "http://mne.tools", 23 | "location": null, 24 | "email": null, 25 | "hireable": null, 26 | "bio": null, 27 | "twitter_username": null, 28 | "public_repos": 40, 29 | "public_gists": 0, 30 | "followers": 70, 31 | "following": 0, 32 | "created_at": "2011-01-26T02:24:38Z", 33 | "updated_at": "2023-01-11T12:11:46Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/mne-tools/mne-python/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".circleci", 3 | ".cirrus.yml", 4 | ".coveragerc", 5 | ".github", 6 | ".gitignore", 7 | ".lgtm.yml", 8 | ".mailmap", 9 | "CITATION.cff", 10 | "CONTRIBUTING.md", 11 | "LICENSE.txt", 12 | "MANIFEST.in", 13 | "Makefile", 14 | "README.rst", 15 | "SECURITY.md", 16 | "azure-pipelines.yml", 17 | "codecov.yml", 18 | "codemeta.json", 19 | "doc", 20 | "environment.yml", 21 | "examples", 22 | "ignore_words.txt", 23 | "logo", 24 | "mne", 25 | "requirements.txt", 26 | "requirements_base.txt", 27 | "requirements_doc.txt", 28 | "requirements_hdf5.txt", 29 | "requirements_testing.txt", 30 | "requirements_testing_extra.txt", 31 | "setup.cfg", 32 | "setup.py", 33 | "tools", 34 | "tutorials", 35 | ] 36 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/o2r-project/o2r-meta/CITATION.cff: -------------------------------------------------------------------------------- 1 | cff-version: 1.1.0 2 | message: "If you use this software, please cite it as 'Nüst, Daniel, 2018. Reproducibility Service for Executable Research Compendia: Technical Specifications and Reference Implementation. Zenodo. https://doi.org/10.5281/zenodo.2203843'." 3 | authors: 4 | - family-names: Schutzeichel 5 | given-names: Marc 6 | affiliation: University of Münster, Münster, Germany 7 | - family-names: Nüst 8 | given-names: Daniel 9 | orcid: https://orcid.org/0000-0002-0024-5046 10 | affiliation: Opening Reproducible Research, University of Münster, Münster, Germany 11 | email: daniel.nuest@uni-muenster.de 12 | website: https://nuest.staff.ifgi.de/ 13 | - family-names: Konkol 14 | given-names: Markus 15 | affiliation: Opening Reproducible Research, University of Münster, Münster, Germany 16 | website: https://github.com/Timmimim 17 | - family-names: Suleiman 18 | given-names: Jan 19 | affiliation: Opening Reproducible Research, University of Münster, Münster, Germany 20 | website: https://github.com/jansule 21 | - family-names: Garzon 22 | given-names: Sebastian 23 | orcid: https://orcid.org/0000-0002-8335-9312 24 | affiliation: Opening Reproducible Research, University of Münster, Münster, Germany 25 | website: https://github.com/sbastiangarzon 26 | 27 | title: "o2r-meta" 28 | version: 0.1.0 29 | date-released: 2020-07-02 30 | license: Apache-2.0 31 | url: https://github.com/o2r-project/o2r-meta/ 32 | commit: 1447d43a660e1a38add5736d0b0dc52e6860c0e0 33 | abstract: "Python library for extracting, mapping, and validating metadata for reproducible workflows in scholarly communication." 34 | repository-code: https://github.com/o2r-project/o2r-meta/releases/tag/v0.1.0 35 | identifiers: 36 | - type: "swh" 37 | value: "swh:1:rev:fb1a32f9819aef9ff37af4984048ab5b0a85e81f" 38 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/o2r-project/o2r-meta/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "o2r-project", 3 | "id": 16774537, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjE2Nzc0NTM3", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/16774537?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/o2r-project", 8 | "html_url": "https://github.com/o2r-project", 9 | "followers_url": "https://api.github.com/users/o2r-project/followers", 10 | "following_url": "https://api.github.com/users/o2r-project/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/o2r-project/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/o2r-project/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/o2r-project/subscriptions", 14 | "organizations_url": "https://api.github.com/users/o2r-project/orgs", 15 | "repos_url": "https://api.github.com/users/o2r-project/repos", 16 | "events_url": "https://api.github.com/users/o2r-project/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/o2r-project/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "Opening Reproducible Research", 21 | "company": null, 22 | "blog": "http://o2r.info", 23 | "location": "Münster", 24 | "email": "daniel.nuest@uni-muenster.de", 25 | "hireable": null, 26 | "bio": null, 27 | "twitter_username": null, 28 | "public_repos": 52, 29 | "public_gists": 0, 30 | "followers": 3, 31 | "following": 0, 32 | "created_at": "2016-01-19T09:04:57Z", 33 | "updated_at": "2016-05-02T08:13:08Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/o2r-project/o2r-meta/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".gitattributes", 3 | ".github", 4 | ".gitignore", 5 | ".travis.yml", 6 | "AUTHORS", 7 | "CITATION.cff", 8 | "CONDUCT.md", 9 | "Dockerfile", 10 | "LICENSE", 11 | "README.md", 12 | "codemeta.json", 13 | "docs", 14 | "harvest", 15 | "hooks", 16 | "o2rmeta", 17 | "requirements-dev.txt", 18 | "requirements-opt.txt", 19 | "requirements.txt", 20 | "setup.py", 21 | "tests", 22 | ] 23 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/open-mpi/hwloc/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "open-mpi", 3 | "id": 2165682, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjIxNjU2ODI=", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/2165682?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/open-mpi", 8 | "html_url": "https://github.com/open-mpi", 9 | "followers_url": "https://api.github.com/users/open-mpi/followers", 10 | "following_url": "https://api.github.com/users/open-mpi/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/open-mpi/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/open-mpi/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/open-mpi/subscriptions", 14 | "organizations_url": "https://api.github.com/users/open-mpi/orgs", 15 | "repos_url": "https://api.github.com/users/open-mpi/repos", 16 | "events_url": "https://api.github.com/users/open-mpi/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/open-mpi/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "Open MPI", 21 | "company": null, 22 | "blog": "https://www.open-mpi.org", 23 | "location": null, 24 | "email": null, 25 | "hireable": null, 26 | "bio": null, 27 | "twitter_username": null, 28 | "public_repos": 25, 29 | "public_gists": 0, 30 | "followers": 37, 31 | "following": 0, 32 | "created_at": "2012-08-16T21:43:12Z", 33 | "updated_at": "2023-01-28T12:22:40Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/open-mpi/hwloc/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".github", 3 | ".gitignore", 4 | "AUTHORS", 5 | "COPYING", 6 | "HACKING", 7 | "Makefile.am", 8 | "NEWS", 9 | "README", 10 | "VERSION", 11 | "autogen.sh", 12 | "codemeta.json", 13 | "config", 14 | "configure.ac", 15 | "contrib", 16 | "doc", 17 | "hwloc.pc.in", 18 | "hwloc", 19 | "include", 20 | "netloc.pc.in", 21 | "netloc", 22 | "netlocscotch.pc.in", 23 | "tests", 24 | "utils", 25 | ] 26 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/pat-s/oddsratio/LICENSE: -------------------------------------------------------------------------------- 1 | YEAR: 2016 2 | COPYRIGHT HOLDER: Patrick Schratz 3 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/pat-s/oddsratio/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "pat-s", 3 | "id": 8430564, 4 | "node_id": "MDQ6VXNlcjg0MzA1NjQ=", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/8430564?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/pat-s", 8 | "html_url": "https://github.com/pat-s", 9 | "followers_url": "https://api.github.com/users/pat-s/followers", 10 | "following_url": "https://api.github.com/users/pat-s/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/pat-s/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/pat-s/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/pat-s/subscriptions", 14 | "organizations_url": "https://api.github.com/users/pat-s/orgs", 15 | "repos_url": "https://api.github.com/users/pat-s/repos", 16 | "events_url": "https://api.github.com/users/pat-s/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/pat-s/received_events", 18 | "type": "User", 19 | "site_admin": false, 20 | "name": "Patrick Schratz", 21 | "company": "cynkra GmbH", 22 | "blog": "https://pat-s.me", 23 | "location": "Zurich, CH", 24 | "email": null, 25 | "hireable": null, 26 | "bio": "DevOps, FOSS, #rstats", 27 | "twitter_username": "patscli", 28 | "public_repos": 88, 29 | "public_gists": 24, 30 | "followers": 276, 31 | "following": 19, 32 | "created_at": "2014-08-12T18:08:05Z", 33 | "updated_at": "2023-01-30T10:38:44Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/pat-s/oddsratio/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".Rbuildignore", 3 | ".gitattributes", 4 | ".github", 5 | ".gitignore", 6 | ".lintr", 7 | ".pre-commit-config.yaml", 8 | ".travis.yml", 9 | "DESCRIPTION", 10 | "LICENSE", 11 | "NAMESPACE", 12 | "NEWS.md", 13 | "R", 14 | "README.md", 15 | "codemeta.json", 16 | "cran-comments.md", 17 | "data", 18 | "inst", 19 | "man", 20 | "oddsratio.Rproj", 21 | "pkgdown", 22 | "tests", 23 | "tic.R", 24 | "vignettes", 25 | ] 26 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/proycon/codemeta-harvester/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "proycon", 3 | "id": 75427, 4 | "node_id": "MDQ6VXNlcjc1NDI3", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/75427?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/proycon", 8 | "html_url": "https://github.com/proycon", 9 | "followers_url": "https://api.github.com/users/proycon/followers", 10 | "following_url": "https://api.github.com/users/proycon/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/proycon/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/proycon/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/proycon/subscriptions", 14 | "organizations_url": "https://api.github.com/users/proycon/orgs", 15 | "repos_url": "https://api.github.com/users/proycon/repos", 16 | "events_url": "https://api.github.com/users/proycon/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/proycon/received_events", 18 | "type": "User", 19 | "site_admin": false, 20 | "name": "Maarten van Gompel", 21 | "company": "KNAW Humanities Cluster & CLST, Radboud University", 22 | "blog": "https://proycon.anaproy.nl", 23 | "location": "Eindhoven, the Netherlands", 24 | "email": null, 25 | "hireable": null, 26 | "bio": "Research software engineer - NLP - AI - 🐧 Linux & open-source enthusiast - 🐍 Python/ 🌊C/C++ / 🦀 Rust / 🐚 Shell - 🔐 InfoSec - https://git.sr.ht/~proycon\r\n", 27 | "twitter_username": null, 28 | "public_repos": 187, 29 | "public_gists": 21, 30 | "followers": 209, 31 | "following": 100, 32 | "created_at": "2009-04-19T14:06:29Z", 33 | "updated_at": "2023-01-27T14:01:51Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/proycon/codemeta-harvester/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".gitignore", 3 | "Dockerfile", 4 | "LICENSE", 5 | "Makefile", 6 | "README.md", 7 | "codemeta-harvester", 8 | "codemeta.json", 9 | "detect-ci.sh", 10 | "detect-documentation.sh", 11 | "detect-license.sh", 12 | "detect-repostatus-from-git.sh", 13 | "detect-repostatus.sh", 14 | "detect-trl.sh", 15 | "example", 16 | ] 17 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/ropensci/mctq/LICENSE: -------------------------------------------------------------------------------- 1 | YEAR: 2023 2 | COPYRIGHT HOLDER: Daniel Vartanian 3 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/ropensci/mctq/LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2023 Daniel Vartanian 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/ropensci/mctq/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "ropensci", 3 | "id": 1200269, 4 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjEyMDAyNjk=", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/1200269?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/ropensci", 8 | "html_url": "https://github.com/ropensci", 9 | "followers_url": "https://api.github.com/users/ropensci/followers", 10 | "following_url": "https://api.github.com/users/ropensci/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/ropensci/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/ropensci/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/ropensci/subscriptions", 14 | "organizations_url": "https://api.github.com/users/ropensci/orgs", 15 | "repos_url": "https://api.github.com/users/ropensci/repos", 16 | "events_url": "https://api.github.com/users/ropensci/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/ropensci/received_events", 18 | "type": "Organization", 19 | "site_admin": false, 20 | "name": "rOpenSci", 21 | "company": null, 22 | "blog": "https://ropensci.org/", 23 | "location": "Berkeley, CA", 24 | "email": "info@ropensci.org", 25 | "hireable": null, 26 | "bio": null, 27 | "twitter_username": "rOpenSci", 28 | "public_repos": 341, 29 | "public_gists": 0, 30 | "followers": 320, 31 | "following": 0, 32 | "created_at": "2011-11-16T19:26:47Z", 33 | "updated_at": "2023-02-14T13:58:23Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/ropensci/mctq/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".Rbuildignore", 3 | ".github", 4 | ".gitignore", 5 | ".lintr", 6 | "CITATION.cff", 7 | "DESCRIPTION", 8 | "LICENSE", 9 | "LICENSE.md", 10 | "NAMESPACE", 11 | "NEWS.md", 12 | "R", 13 | "README.Rmd", 14 | "README.md", 15 | "_pkgdown.yml", 16 | "codecov.yml", 17 | "codemeta.json", 18 | "cran-comments.md", 19 | "data-raw", 20 | "data", 21 | "inst", 22 | "man-roxygen", 23 | "man", 24 | "mctq.Rproj", 25 | "tests", 26 | "vignettes", 27 | ] 28 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/smsaladi/em_data_requirements/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Shyam Saladi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/smsaladi/em_data_requirements/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "smsaladi", 3 | "id": 2942215, 4 | "node_id": "MDQ6VXNlcjI5NDIyMTU=", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/2942215?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/smsaladi", 8 | "html_url": "https://github.com/smsaladi", 9 | "followers_url": "https://api.github.com/users/smsaladi/followers", 10 | "following_url": "https://api.github.com/users/smsaladi/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/smsaladi/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/smsaladi/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/smsaladi/subscriptions", 14 | "organizations_url": "https://api.github.com/users/smsaladi/orgs", 15 | "repos_url": "https://api.github.com/users/smsaladi/repos", 16 | "events_url": "https://api.github.com/users/smsaladi/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/smsaladi/received_events", 18 | "type": "User", 19 | "site_admin": false, 20 | "name": "Shyam Saladi", 21 | "company": "@clemlab, Caltech", 22 | "blog": "https://shyam.saladi.org", 23 | "location": "zsh", 24 | "email": null, 25 | "hireable": null, 26 | "bio": null, 27 | "twitter_username": null, 28 | "public_repos": 99, 29 | "public_gists": 7, 30 | "followers": 38, 31 | "following": 41, 32 | "created_at": "2012-12-02T03:34:20Z", 33 | "updated_at": "2023-01-26T12:46:48Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/smsaladi/em_data_requirements/codemeta.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://doi.org/10.5063/schema/codemeta-2.0", 3 | "@type": "SoftwareSourceCode", 4 | "description": "Big microscopes are on the rise, and with them comes a deluge of data! How will to deal with it? Try this customizable 'back of the envelope' calculation to estimate where your hardware bottlenecks might be!", 5 | "name": "em_data_requirements", 6 | "codeRepository": "https://github.com/smsaladi/em_data_requirements", 7 | "issueTracker": "https://github.com/smsaladi/em_data_requirements/issues", 8 | "license": "https://spdx.org/licenses/MIT.html", 9 | "version": "1.0", 10 | "author": [ 11 | { 12 | "@type": "Person", 13 | "givenName": "Shyam M.", 14 | "familyName": "Saladi", 15 | "affiliation": "Caltech", 16 | "email": "saladi@caltech.edu", 17 | "@id": "https://orcid.org/0000-0001-9701-3059" 18 | }], 19 | "developmentStatus": "active", 20 | "downloadUrl": 21 | "https://github.com/smsaladi/em_data_requirements/archive/1.0.zip", 22 | "keywords": [ 23 | "GitHub", 24 | "EM", 25 | "computer-hardware", 26 | "big-data" 27 | ], 28 | "maintainer": "https://orcid.org/0000-0001-9701-3059", 29 | "programmingLanguage": "R", 30 | "funder": { 31 | "@id": "https://doi.org/10.13039/100000001", 32 | "@type": "Organization", 33 | "name": "National Science Foundation" 34 | }, 35 | "funding": "1144469" 36 | } 37 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/smsaladi/em_data_requirements/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".gitignore", 3 | ".travis.yml", 4 | "DESCRIPTION", 5 | "LICENSE", 6 | "README.md", 7 | "app.R", 8 | "build.R", 9 | "codemeta.json", 10 | "em_data_requirements.Rproj", 11 | "github_corner.html", 12 | "google_analytics.js", 13 | ] 14 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/stain/signposting/CITATION.cff: -------------------------------------------------------------------------------- 1 | cff-version: 1.2.0 2 | message: "If you use this software, please cite it as below." 3 | abstract: "This library helps client to discover links that follow the FAIR Signposting conventions." 4 | authors: 5 | - family-names: Soiland-Reyes 6 | given-names: Stian 7 | orcid: https://orcid.org/0000-0001-9842-9718 8 | - family-names: Kinoshita 9 | given-names: Bruno P. 10 | orcid: https://orcid.org/0000-0001-8250-4074" 11 | title: "Signposting link parser library" 12 | doi: 10.5281/zenodo.6815412 13 | version: 0.9.0 14 | license: Apache-2.0 15 | repository-code: "https://github.com/stain/signposting/" 16 | keywords: 17 | - "FAIR" 18 | - "signposting" 19 | - "linkset" 20 | - "http" 21 | - "links" 22 | - "RFC8288" 23 | - "RFC9264" 24 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/stain/signposting/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "stain", 3 | "id": 253413, 4 | "node_id": "MDQ6VXNlcjI1MzQxMw==", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/253413?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/stain", 8 | "html_url": "https://github.com/stain", 9 | "followers_url": "https://api.github.com/users/stain/followers", 10 | "following_url": "https://api.github.com/users/stain/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/stain/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/stain/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/stain/subscriptions", 14 | "organizations_url": "https://api.github.com/users/stain/orgs", 15 | "repos_url": "https://api.github.com/users/stain/repos", 16 | "events_url": "https://api.github.com/users/stain/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/stain/received_events", 18 | "type": "User", 19 | "site_admin": false, 20 | "name": "Stian Soiland-Reyes", 21 | "company": "eScience lab, University of Manchester", 22 | "blog": "https://orcid.org/0000-0001-9842-9718", 23 | "location": "Manchester, UK", 24 | "email": null, 25 | "hireable": true, 26 | "bio": "Open Source research software engineer with interests in Linked Data, RESTful web services, provenance, annotations, open science, reproducible research", 27 | "twitter_username": "soilandreyes", 28 | "public_repos": 329, 29 | "public_gists": 255, 30 | "followers": 140, 31 | "following": 14, 32 | "created_at": "2010-04-26T19:24:45Z", 33 | "updated_at": "2022-11-14T07:23:31Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/stain/signposting/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".bumpversion.cfg", 3 | ".codacy.yaml", 4 | ".codeclimate.yml", 5 | ".coveragerc", 6 | ".github", 7 | ".gitignore", 8 | ".readthedocs.yml", 9 | "CITATION.cff", 10 | "LICENSE", 11 | "MANIFEST.in", 12 | "Makefile", 13 | "README.rst", 14 | "codemeta.json", 15 | "devtools", 16 | "docs", 17 | "setup.py", 18 | "src", 19 | "stubs", 20 | "tests", 21 | "tox.ini", 22 | ] 23 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/sulstice/global-chem/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "Sulstice", 3 | "id": 11812946, 4 | "node_id": "MDQ6VXNlcjExODEyOTQ2", 5 | "avatar_url": "https://avatars.githubusercontent.com/u/11812946?v=4", 6 | "gravatar_id": "", 7 | "url": "https://api.github.com/users/Sulstice", 8 | "html_url": "https://github.com/Sulstice", 9 | "followers_url": "https://api.github.com/users/Sulstice/followers", 10 | "following_url": "https://api.github.com/users/Sulstice/following{/other_user}", 11 | "gists_url": "https://api.github.com/users/Sulstice/gists{/gist_id}", 12 | "starred_url": "https://api.github.com/users/Sulstice/starred{/owner}{/repo}", 13 | "subscriptions_url": "https://api.github.com/users/Sulstice/subscriptions", 14 | "organizations_url": "https://api.github.com/users/Sulstice/orgs", 15 | "repos_url": "https://api.github.com/users/Sulstice/repos", 16 | "events_url": "https://api.github.com/users/Sulstice/events{/privacy}", 17 | "received_events_url": "https://api.github.com/users/Sulstice/received_events", 18 | "type": "User", 19 | "site_admin": false, 20 | "name": "Sul ", 21 | "company": "@mackerell-lab", 22 | "blog": "https://linktr.ee/sulstice", 23 | "location": "United States", 24 | "email": null, 25 | "hireable": true, 26 | "bio": "I'm a 3rd Year Doctorate Student who loves organic chemistry, devops, chemicals, social media, stock marketing, art, and law. I try to develop in those areas.", 27 | "twitter_username": "SulimanSharif6", 28 | "public_repos": 125, 29 | "public_gists": 13, 30 | "followers": 73, 31 | "following": 56, 32 | "created_at": "2015-04-06T04:18:58Z", 33 | "updated_at": "2022-12-23T01:39:54Z" 34 | } 35 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/sulstice/global-chem/codemeta.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://doi.org/10.5063/schema/codemeta-2.0", 3 | "@type": "SoftwareSourceCode", 4 | "license": "https://spdx.org/licenses/MPL-2.0", 5 | "codeRepository": "git+https://github.com/Sulstice/global-chem.git", 6 | "contIntegration": "https://github.com/Sulstice/global-chem/actions", 7 | "dateCreated": "2019-04-20", 8 | "datePublished": "2019-04-20", 9 | "dateModified": "2022-08-25", 10 | "downloadUrl": "https://github.com/Sulstice/global-chem/archive/refs/tags/v1.7.3.2.tar.gz", 11 | "issueTracker": "https://github.com/Sulstice/global-chem/issues", 12 | "name": "Global-Chem", 13 | "version": "1.7.3.2", 14 | "identifier": "10.5281/zenodo.7029446", 15 | "description": "A knowledge graph of common small molecules and their IUPAC/SMILES/SMARTS", 16 | "applicationCategory": "Chemistry", 17 | "funding": "N/A", 18 | "developmentStatus": "active", 19 | "funder": { 20 | "@type": "Organization", 21 | "name": "N/A" 22 | }, 23 | "keywords": [ 24 | "cheminformatics", 25 | "IUPAC", 26 | "SMILES", 27 | "SMARTS" 28 | ], 29 | "programmingLanguage": [ 30 | "Python3" 31 | ], 32 | "runtimePlatform": [ 33 | "Python", 34 | "Conda" 35 | ], 36 | "operatingSystem": [ 37 | "Linux", 38 | "Windows", 39 | "MacOS" 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /tests/data/github-examples/with-codemeta/sulstice/global-chem/filenames.json: -------------------------------------------------------------------------------- 1 | [ 2 | ".coveralls.yml", 3 | ".github", 4 | ".gitignore", 5 | ".mergify.yml", 6 | ".pre-commit-config.yaml", 7 | "CITATION.cff", 8 | "CNAME", 9 | "LICENSE", 10 | "MANIFEST.in", 11 | "README.md", 12 | "academic", 13 | "bot_services", 14 | "codemeta.json", 15 | "compliance_and_quality_assurance", 16 | "example_data", 17 | "example_notebooks", 18 | "front_end", 19 | "global_chem", 20 | "global_chem_extensions", 21 | "images", 22 | "index.html", 23 | "readme_in_other_languages", 24 | "social_guidelines", 25 | "test.py", 26 | ] 27 | -------------------------------------------------------------------------------- /tests/data/orcid-examples/0000-0001-6151-2200.json: -------------------------------------------------------------------------------- 1 | {"title": "Given Names Deactivated Family Name Deactivated (0000-0001-6151-2200) - ORCID | Connecting Research and Researchers", "displayName": "Given Names Deactivated Family Name Deactivated", "names": {"visibility": {"errors": [], "required": true, "getRequiredMessage": null, "visibility": "PUBLIC"}, "errors": [], "givenNames": {"errors": [], "value": "Given Names Deactivated", "required": true, "getRequiredMessage": null}, "familyName": {"errors": [], "value": "Family Name Deactivated", "required": true, "getRequiredMessage": null}, "creditName": null}, "biography": null, "otherNames": null, "countries": null, "keyword": null, "emails": null, "externalIdentifier": null, "website": {"errors": [], "websites": [], "visibility": null}, "lastModifiedTime": 1490400917303} -------------------------------------------------------------------------------- /tests/data/ror-examples/03ybx0x41.json: -------------------------------------------------------------------------------- 1 | {"id": "https://ror.org/03ybx0x41", "name": "Department of Biomedicine Basel", "email_address": null, "ip_addresses": [], "established": 2000, "types": ["Facility"], "relationships": [{"label": "University Children\u2019s Hospital Basel", "type": "Parent", "id": "https://ror.org/02nhqek82"}, {"label": "University Hospital of Basel", "type": "Parent", "id": "https://ror.org/04k51q396"}, {"label": "University of Basel", "type": "Parent", "id": "https://ror.org/02s6k3f65"}, {"label": "University of Basel", "type": "Successor", "id": "https://ror.org/02s6k3f65"}], "addresses": [{"lat": 47.55839, "lng": 7.57327, "state": null, "state_code": null, "city": "Basel", "geonames_city": {"id": 2661604, "city": "Basel", "geonames_admin1": {"name": "Basel-City", "id": 2661602, "ascii_name": "Basel-City", "code": "CH.BS"}, "geonames_admin2": {"name": "Basel-Stadt", "id": 6458763, "ascii_name": "Basel-Stadt", "code": "CH.BS.1200"}, "license": {"attribution": "Data from geonames.org under a CC-BY 3.0 license", "license": "http://creativecommons.org/licenses/by/3.0/"}, "nuts_level1": {"name": null, "code": null}, "nuts_level2": {"name": null, "code": null}, "nuts_level3": {"name": null, "code": null}}, "postcode": null, "primary": false, "line": null, "country_geonames_id": 2658434}], "links": ["https://biomedizin.unibas.ch/"], "aliases": ["Department of Biological and Clinical Sciences"], "acronyms": ["DBM"], "status": "withdrawn", "wikipedia_url": "", "labels": [], "country": {"country_name": "Switzerland", "country_code": "CH"}, "external_ids": {"Wikidata": {"preferred": null, "all": ["Q22387380"]}, "GRID": {"preferred": "grid.509969.a", "all": "grid.509969.a"}}} -------------------------------------------------------------------------------- /tests/test_doi.py: -------------------------------------------------------------------------------- 1 | # ============================================================================= 2 | # @file test_doi.py 3 | # @brief Py.test cases for doi.py 4 | # @created 2022-12-08 5 | # @license Please see the file named LICENSE in the project directory 6 | # @website https://github.com/caltechlibrary/iga 7 | # ============================================================================= 8 | 9 | from iga.doi import doi_for_publication, _doi_for_pubmed 10 | 11 | 12 | # Tests 13 | # ............................................................................. 14 | 15 | def test_doi_for_publication(): 16 | assert doi_for_publication('') == '' 17 | assert doi_for_publication('10.1093/bioinformatics/btw056', 'doi') == '10.1093/bioinformatics/btw056' 18 | assert doi_for_publication('arXiv:2012.13117v1', 'arxiv') == '10.48550/arXiv.2012.13117v1' 19 | assert doi_for_publication('arXiv:2012.13117v1') == '10.48550/arXiv.2012.13117v1' 20 | assert doi_for_publication('PMC4908318') == '10.1093/bioinformatics/btw056' 21 | assert doi_for_publication('x965x9092') == '' 22 | assert doi_for_publication('26360422') == '10.1371/journal.pone.0137946' 23 | 24 | 25 | def test__doi_for_pubmed(): 26 | assert _doi_for_pubmed('PMC4908318', 'pmcid') == '10.1093/bioinformatics/btw056' 27 | assert _doi_for_pubmed('34674411', 'pmid') == '10.1515/jib-2021-0026' 28 | assert _doi_for_pubmed('001001010100101', 'pmid') == '' 29 | assert _doi_for_pubmed('', 'pmid') == '' 30 | assert _doi_for_pubmed('_', 'pmid') == '' 31 | -------------------------------------------------------------------------------- /tests/test_exceptions.py: -------------------------------------------------------------------------------- 1 | # ============================================================================= 2 | # @file test_exceptions.py 3 | # @brief Py.test cases for parts of exceptions.py 4 | # @created 2023-03-02 5 | # @license Please see the file named LICENSE in the project directory 6 | # @website https://github.com/caltechlibrary/iga 7 | # ============================================================================= 8 | 9 | from iga.exceptions import IGAException, InternalError 10 | 11 | 12 | def test_exceptions(): 13 | try: 14 | raise InternalError('foo') 15 | except InternalError as ex: 16 | assert ex.args[0] == 'foo' 17 | 18 | try: 19 | raise InternalError('foo') 20 | except IGAException as ex: 21 | assert ex.args[0] == 'foo' 22 | -------------------------------------------------------------------------------- /tests/test_exit_codes.py: -------------------------------------------------------------------------------- 1 | from iga.exit_codes import ExitCode 2 | 3 | 4 | def test_exitcode(): 5 | assert int(ExitCode.success) == 0 6 | assert ExitCode.success.meaning == "success – program completed normally" 7 | -------------------------------------------------------------------------------- /tests/test_github.py: -------------------------------------------------------------------------------- 1 | from os import path 2 | import json5 3 | from unittest.mock import patch 4 | 5 | import iga.github 6 | from iga.github import ( 7 | GitHubRepo, 8 | github_account, 9 | github_account_repo_tag, 10 | github_file_url, 11 | valid_github_release_url) 12 | 13 | 14 | def test_github_account(): 15 | account = github_account('mhucka') 16 | assert account 17 | assert account.login == "mhucka" 18 | assert account.type == "User" 19 | 20 | try: 21 | account = github_account('55fake99zxy100') 22 | except iga.github.GitHubError: 23 | pass 24 | else: 25 | assert False 26 | 27 | 28 | def test_github_account_repo_tag(): 29 | url = 'https://github.com/foo/bar/releases/tag/v3.9.2' 30 | assert github_account_repo_tag(url) == ('foo', 'bar', 'v3.9.2') 31 | 32 | 33 | def test_github_valid_release_url(): 34 | assert valid_github_release_url('https://github.com/foo/bar/releases/tag/v3.9.2') 35 | assert not valid_github_release_url('https://github.com/foo/bar/releases/tag') 36 | 37 | 38 | here = path.dirname(path.abspath(__file__)) 39 | json_file = 'data/github-examples/with-codemeta/fairdataihub/FAIRshare-Docs/repo.json' 40 | with open(path.join(here, json_file), 'r') as f: 41 | repo_object = GitHubRepo(json5.loads(f.read())) 42 | 43 | @patch('iga.github.github_repo', autospec=True, return_value = repo_object) 44 | def test_repo_file_url(*args): 45 | repo = iga.github.github_repo('fairdataihub', 'FAIRshare-Docs') 46 | expected = 'https://github.com/fairdataihub/FAIRshare-Docs/blob/main/somefile' 47 | assert github_file_url(repo, 'somefile') == expected 48 | -------------------------------------------------------------------------------- /tests/test_init.py: -------------------------------------------------------------------------------- 1 | # ============================================================================= 2 | # @file test_init.py 3 | # @brief Py.test cases for module __init__.py file 4 | # @created 2022-12-08 5 | # @license Please see the file named LICENSE in the project directory 6 | # @website https://github.com/caltechlibrary/iga 7 | # ============================================================================= 8 | 9 | def test_version(): 10 | """Test version import.""" 11 | from iga import __version__ 12 | assert __version__ 13 | 14 | 15 | def test_print_version(capsys): 16 | from iga import print_version 17 | print_version() 18 | captured = capsys.readouterr() 19 | assert 'URL' in captured.out 20 | -------------------------------------------------------------------------------- /tests/test_licenses.py: -------------------------------------------------------------------------------- 1 | # ============================================================================= 2 | # @file test_licenses.py 3 | # @brief Py.test cases for parts of licenses.py 4 | # @created 2023-03-02 5 | # @license Please see the file named LICENSE in the project directory 6 | # @website https://github.com/caltechlibrary/iga 7 | # ============================================================================= 8 | 9 | from iga.licenses import LICENSES, LICENSE_URLS 10 | 11 | 12 | def test_licenses(): 13 | assert len(LICENSES) > 100 14 | assert 'MIT' in LICENSES 15 | assert LICENSES['MIT'].title == 'MIT License' 16 | assert LICENSES['MIT'].url == 'https://spdx.org/licenses/MIT' 17 | 18 | 19 | def test_license_urls(): 20 | assert 'https://spdx.org/licenses/MIT' in LICENSE_URLS 21 | assert 'https://opensource.org/licenses/MIT' in LICENSE_URLS 22 | assert LICENSE_URLS['https://spdx.org/licenses/MIT'] == 'MIT' 23 | assert 'https://spdx.org/licenses/BSD-3-Clause' in LICENSE_URLS 24 | -------------------------------------------------------------------------------- /tests/test_orcid.py: -------------------------------------------------------------------------------- 1 | import json5 2 | from os import path 3 | from sidetrack import log 4 | from unittest import mock 5 | 6 | from iga.orcid import name_from_orcid 7 | 8 | 9 | # Mocks 10 | # ............................................................................. 11 | 12 | here = path.dirname(path.abspath(__file__)) 13 | orcid_dir = path.join(here, 'data/orcid-examples/') 14 | 15 | 16 | def mocked_orcid_data(orcid): 17 | log(f'returing mocked ORCID data for {orcid}') 18 | orcid_filename = orcid + '.json' 19 | with open(path.join(orcid_dir, orcid_filename), 'r') as f: 20 | return json5.load(f) 21 | 22 | 23 | # Tests 24 | # ............................................................................. 25 | 26 | @mock.patch('iga.orcid.orcid_data', new=mocked_orcid_data) 27 | def test_name_from_orcid(): 28 | assert name_from_orcid('0000-0001-9105-5960') == ('Michael', 'Hucka') 29 | assert name_from_orcid('https://orcid.org/0000-0003-0900-6903') == ('R. S.', 'Doiel') 30 | assert name_from_orcid('https://orcid.org/0000-0002-8876-7606') == ('Neil P.', 'Chue Hong') 31 | assert name_from_orcid('https://orcid.org/0000-0001-6151-2200') == ('', '') 32 | -------------------------------------------------------------------------------- /tests/test_ror.py: -------------------------------------------------------------------------------- 1 | import json5 2 | import os 3 | from os import path 4 | from sidetrack import log 5 | from unittest import mock 6 | 7 | from iga.ror import name_from_ror 8 | 9 | 10 | # Mocks 11 | # ............................................................................. 12 | 13 | here = path.dirname(path.abspath(__file__)) 14 | ror_dir = path.join(here, 'data/ror-examples/') 15 | 16 | 17 | def mocked_ror_data(rorid): 18 | log(f'returing mocked ROR data for {rorid}') 19 | ror_filename = rorid + '.json' 20 | with open(path.join(ror_dir, ror_filename), 'r') as f: 21 | return json5.load(f) 22 | 23 | 24 | # Tests 25 | # ............................................................................. 26 | 27 | @mock.patch('iga.ror.ror_data', new=mocked_ror_data) 28 | def test_name_from_ror(): 29 | assert name_from_ror('https://ror.org/05dxps055') == 'California Institute of Technology' 30 | assert name_from_ror('05dxps055') == 'California Institute of Technology' 31 | assert name_from_ror('https://ror.org/03ybx0x41') == 'University of Basel' 32 | -------------------------------------------------------------------------------- /tests/test_text_utils.py: -------------------------------------------------------------------------------- 1 | # ============================================================================= 2 | # @file test_text_utils.py 3 | # @brief Py.test cases for parts of text_utils.py 4 | # @created 2023-03-02 5 | # @license Please see the file named LICENSE in the project directory 6 | # @website https://github.com/caltechlibrary/iga 7 | # ============================================================================= 8 | 9 | from typing import Generator 10 | from iga.text_utils import ( 11 | cleaned_text, 12 | without_html, 13 | ) 14 | 15 | 16 | def test_cleaned_text(): 17 | assert cleaned_text('') == '' 18 | assert cleaned_text('a b') == 'a b' 19 | assert cleaned_text('a\nb') == 'a b' 20 | assert cleaned_text('a\t b') == 'a b' 21 | assert cleaned_text('some text.') == 'some text.' 22 | 23 | 24 | def test_without_html(): 25 | assert without_html('') == '' 26 | assert without_html('a') == 'a' 27 | assert without_html('this has no html') == 'this has no html' 28 | assert without_html('foo bar') == 'foo bar' 29 | assert without_html('Sjoberg, D., D., Whiting, K., Curry, M., Lavery, J., A., & Larmarange, J. (2021). Reproducible Summary Tables with the gtsummary Package. The R Journal, 13(1), 570. https://doi.org/10.32614/rj-2021-053\n') == 'Sjoberg, D., D., Whiting, K., Curry, M., Lavery, J., A., & Larmarange, J. (2021). Reproducible Summary Tables with the gtsummary Package. The R Journal, 13(1), 570. https://doi.org/10.32614/rj-2021-053' 30 | --------------------------------------------------------------------------------