protein-quest 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. protein_quest-0.3.0/.github/workflows/ci.yml +72 -0
  2. protein_quest-0.3.0/.github/workflows/pages.yml +60 -0
  3. protein_quest-0.3.0/.github/workflows/pypi-publish.yml +26 -0
  4. protein_quest-0.3.0/.gitignore +76 -0
  5. protein_quest-0.3.0/.vscode/extensions.json +8 -0
  6. protein_quest-0.3.0/CITATION.cff +27 -0
  7. protein_quest-0.3.0/CODE_OF_CONDUCT.md +128 -0
  8. protein_quest-0.3.0/CONTRIBUTING.md +92 -0
  9. protein_quest-0.3.0/LICENSE +201 -0
  10. protein_quest-0.3.0/PKG-INFO +219 -0
  11. protein_quest-0.3.0/README.md +186 -0
  12. protein_quest-0.3.0/docs/CONTRIBUTING.md +1 -0
  13. protein_quest-0.3.0/docs/cli_doc_hook.py +113 -0
  14. protein_quest-0.3.0/docs/index.md +1 -0
  15. protein_quest-0.3.0/docs/protein-quest-mcp.png +0 -0
  16. protein_quest-0.3.0/mkdocs.yml +76 -0
  17. protein_quest-0.3.0/pyproject.toml +176 -0
  18. protein_quest-0.3.0/src/protein_quest/__init__.py +0 -0
  19. protein_quest-0.3.0/src/protein_quest/__version__.py +1 -0
  20. protein_quest-0.3.0/src/protein_quest/alphafold/__init__.py +1 -0
  21. protein_quest-0.3.0/src/protein_quest/alphafold/confidence.py +153 -0
  22. protein_quest-0.3.0/src/protein_quest/alphafold/entry_summary.py +38 -0
  23. protein_quest-0.3.0/src/protein_quest/alphafold/fetch.py +314 -0
  24. protein_quest-0.3.0/src/protein_quest/cli.py +782 -0
  25. protein_quest-0.3.0/src/protein_quest/emdb.py +34 -0
  26. protein_quest-0.3.0/src/protein_quest/filters.py +107 -0
  27. protein_quest-0.3.0/src/protein_quest/go.py +168 -0
  28. protein_quest-0.3.0/src/protein_quest/mcp_server.py +208 -0
  29. protein_quest-0.3.0/src/protein_quest/parallel.py +68 -0
  30. protein_quest-0.3.0/src/protein_quest/pdbe/__init__.py +1 -0
  31. protein_quest-0.3.0/src/protein_quest/pdbe/fetch.py +51 -0
  32. protein_quest-0.3.0/src/protein_quest/pdbe/io.py +185 -0
  33. protein_quest-0.3.0/src/protein_quest/py.typed +0 -0
  34. protein_quest-0.3.0/src/protein_quest/taxonomy.py +139 -0
  35. protein_quest-0.3.0/src/protein_quest/uniprot.py +511 -0
  36. protein_quest-0.3.0/src/protein_quest/utils.py +105 -0
  37. protein_quest-0.3.0/tests/alphafold/AF-A1YPR0-F1-model_v4.pdb +4952 -0
  38. protein_quest-0.3.0/tests/alphafold/cassettes/test_fetch/test_fetch_many.yaml +6289 -0
  39. protein_quest-0.3.0/tests/alphafold/test_confidence.py +63 -0
  40. protein_quest-0.3.0/tests/alphafold/test_entry_summary.py +15 -0
  41. protein_quest-0.3.0/tests/alphafold/test_fetch.py +20 -0
  42. protein_quest-0.3.0/tests/cassettes/test_emdb/test_fetch.yaml +3559 -0
  43. protein_quest-0.3.0/tests/cassettes/test_go/test_search_gene_ontology_term.yaml +39 -0
  44. protein_quest-0.3.0/tests/cassettes/test_taxonomy/test_search_taxon.yaml +1862 -0
  45. protein_quest-0.3.0/tests/cassettes/test_taxonomy/test_search_taxon_by_id.yaml +80 -0
  46. protein_quest-0.3.0/tests/cassettes/test_uniprot/test_search4af.yaml +66 -0
  47. protein_quest-0.3.0/tests/cassettes/test_uniprot/test_search4emdb.yaml +65 -0
  48. protein_quest-0.3.0/tests/cassettes/test_uniprot/test_search4pdb.yaml +71 -0
  49. protein_quest-0.3.0/tests/cassettes/test_uniprot/test_search4uniprot.yaml +64 -0
  50. protein_quest-0.3.0/tests/pdbe/cassettes/test_fetch/test_fetch.yaml +179 -0
  51. protein_quest-0.3.0/tests/pdbe/fixtures/2y29.cif +940 -0
  52. protein_quest-0.3.0/tests/pdbe/test_fetch.py +17 -0
  53. protein_quest-0.3.0/tests/pdbe/test_io.py +81 -0
  54. protein_quest-0.3.0/tests/test_cli.py +14 -0
  55. protein_quest-0.3.0/tests/test_emdb.py +17 -0
  56. protein_quest-0.3.0/tests/test_go.py +40 -0
  57. protein_quest-0.3.0/tests/test_mcp.py +18 -0
  58. protein_quest-0.3.0/tests/test_taxonomy.py +52 -0
  59. protein_quest-0.3.0/tests/test_uniprot.py +315 -0
  60. protein_quest-0.3.0/uv.lock +3456 -0
@@ -0,0 +1,72 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+
9
+ concurrency:
10
+ group: ${{ github.workflow }}-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ test:
15
+ name: test
16
+ runs-on: ubuntu-latest
17
+ permissions:
18
+ id-token: write
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - name: Install uv
22
+ uses: astral-sh/setup-uv@v6
23
+ - name: Install the project
24
+ run: uv sync --locked --dev --extra mcp
25
+ - name: Install pocl
26
+ run: uv pip install pocl-binary-distribution==3.0
27
+ - name: Run tests
28
+ run: |
29
+ uv run pytest --cov --cov-report=xml
30
+ echo $? > pytest-exitcode
31
+ continue-on-error: true
32
+ # Always upload coverage, even if tests fail
33
+ - name: Run codacy-coverage-reporter
34
+ uses: codacy/codacy-coverage-reporter-action@v1.3.0
35
+ with:
36
+ project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
37
+ coverage-reports: coverage.xml
38
+ - name: Fail job if pytest failed
39
+ run: |
40
+ if [ -f pytest-exitcode ] && [ "$(cat pytest-exitcode)" -ne 0 ]; then
41
+ echo "Pytest failed, failing job."
42
+ exit 1
43
+ fi
44
+ build:
45
+ name: build
46
+ runs-on: ubuntu-latest
47
+ steps:
48
+ - uses: actions/checkout@v4
49
+ - name: Install uv
50
+ uses: astral-sh/setup-uv@v6
51
+ - name: Build the project
52
+ run: uv build
53
+ lint:
54
+ name: lint
55
+ runs-on: ubuntu-latest
56
+ steps:
57
+ - uses: actions/checkout@v4
58
+ - name: Install uv
59
+ uses: astral-sh/setup-uv@v6
60
+ - name: Run linters
61
+ run: uvx ruff check
62
+ typing:
63
+ name: typing
64
+ runs-on: ubuntu-latest
65
+ steps:
66
+ - uses: actions/checkout@v4
67
+ - name: Install uv
68
+ uses: astral-sh/setup-uv@v6
69
+ - name: Install the project
70
+ run: uv sync --locked --dev --extra mcp
71
+ - name: Run type checkers
72
+ run: uv run pyrefly check src tests
@@ -0,0 +1,60 @@
1
+ name: Deploy MkDocs to GitHub Pages
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+ pages: write
12
+ id-token: write
13
+
14
+ # Only have one deployment in progress at a time
15
+ concurrency:
16
+ group: "pages"
17
+ cancel-in-progress: true
18
+
19
+ jobs:
20
+ build:
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - name: Checkout
24
+ uses: actions/checkout@v4
25
+
26
+ - name: Install uv
27
+ uses: astral-sh/setup-uv@v6
28
+
29
+ - name: Install dependencies
30
+ run: uv sync --locked --group docs
31
+
32
+ - name: Build MkDocs site
33
+ run: |
34
+ uv run mkdocs build
35
+
36
+ - name: Upload artifact
37
+ uses: actions/upload-pages-artifact@v3
38
+ with:
39
+ path: site
40
+
41
+ deploy:
42
+ # Add a dependency to the build job
43
+ needs: build
44
+
45
+ # Grant GITHUB_TOKEN the permissions required to make a Pages deployment
46
+ permissions:
47
+ pages: write # to deploy to Pages
48
+ id-token: write # to verify the deployment originates from an appropriate source
49
+
50
+ # Deploy to the github-pages environment
51
+ environment:
52
+ name: github-pages
53
+ url: ${{ steps.deployment.outputs.page_url }}
54
+
55
+ # Specify runner + deployment step
56
+ runs-on: ubuntu-latest
57
+ steps:
58
+ - name: Deploy to GitHub Pages
59
+ id: deployment
60
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,26 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ publish:
9
+ name: Build and Publish to PyPI
10
+ runs-on: ubuntu-latest
11
+ environment:
12
+ name: pypi
13
+ url: https://pypi.org/p/protein-quest
14
+ permissions:
15
+ id-token: write # IMPORTANT: mandatory for trusted publishing
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Install uv
20
+ uses: astral-sh/setup-uv@v6
21
+
22
+ - name: Build package
23
+ run: uv build
24
+
25
+ - name: Publish to PyPI
26
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,76 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ *.py[cod]
3
+ *$py.class
4
+ __pycache__
5
+
6
+ # Distribution / packaging
7
+ .Python
8
+ build/
9
+ develop-eggs/
10
+ dist/
11
+ downloads/
12
+ eggs/
13
+ .eggs/
14
+ lib/
15
+ lib64/
16
+ parts/
17
+ sdist/
18
+ var/
19
+ wheels/
20
+ share/python-wheels/
21
+ *.egg-info/
22
+ .installed.cfg
23
+ *.egg
24
+
25
+ # jupyter notebook
26
+ .ipynb_checkpoints
27
+
28
+ # Unit test / coverage reports
29
+ htmlcov/
30
+ .coverage
31
+ .coverage.*
32
+ coverage.xml
33
+ .cache
34
+ .pytest_cache
35
+ .tox/
36
+
37
+ # Sphinx documentation
38
+ docs/_build
39
+
40
+ # ide
41
+ # PyCharm
42
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
43
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
44
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
45
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
46
+ #.idea/
47
+ .spyderproject
48
+ .spyproject
49
+
50
+ # Mac
51
+ .DS_Store
52
+
53
+ # virtual environments
54
+ env
55
+ .env
56
+ env3
57
+ .env3
58
+ venv
59
+ .venv
60
+ venv3
61
+ .venv3
62
+ ENV/
63
+ env.bak/
64
+ venv.bak/
65
+
66
+ # vim
67
+ *.swp
68
+ *.swo
69
+ *.orig
70
+
71
+ /docs/session1/
72
+ /docs/alphafold_files/
73
+ /docs/pdb_files/
74
+ /docs/density_filtered/
75
+ /site
76
+ /mysession/
@@ -0,0 +1,8 @@
1
+ {
2
+ "recommendations": [
3
+ "ms-toolsai.jupyter",
4
+ "ms-python.vscode-pylance",
5
+ "ms-python.python",
6
+ "charliermarsh.ruff"
7
+ ]
8
+ }
@@ -0,0 +1,27 @@
1
+ # YAML 1.2
2
+ ---
3
+ cff-version: 1.2.0
4
+ title: protein quest
5
+ message: >-
6
+ If you use this software, please cite it using the
7
+ metadata from this file.
8
+ type: software
9
+ authors:
10
+ - affiliation: "Netherlands eScience Center"
11
+ family-names: Verhoeven
12
+ given-names: Stefan
13
+ orcid: "https://orcid.org/0000-0002-5821-2060"
14
+ - given-names: Anna
15
+ family-names: Engel
16
+ affiliation: '@UtrechtUniversity'
17
+ orcid: "https://orcid.org/0009-0002-1806-7951"
18
+ - given-names: Alexandre
19
+ family-names: Bonvin
20
+ affiliation: '@UtrechtUniversity'
21
+ orcid: "https://orcid.org/0000-0001-7369-1322"
22
+ repository-code: https://github.com/haddocking/protein-quest
23
+ identifiers:
24
+ - description: Latest version of software
25
+ type: doi
26
+ # TODO update once release has been made
27
+ value: 10.5281/zenodo.15632658
@@ -0,0 +1,128 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our
6
+ community a harassment-free experience for everyone, regardless of age, body
7
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
8
+ identity and expression, level of experience, education, socio-economic status,
9
+ nationality, personal appearance, race, religion, or sexual identity
10
+ and orientation.
11
+
12
+ We pledge to act and interact in ways that contribute to an open, welcoming,
13
+ diverse, inclusive, and healthy community.
14
+
15
+ ## Our Standards
16
+
17
+ Examples of behavior that contributes to a positive environment for our
18
+ community include:
19
+
20
+ * Demonstrating empathy and kindness toward other people
21
+ * Being respectful of differing opinions, viewpoints, and experiences
22
+ * Giving and gracefully accepting constructive feedback
23
+ * Accepting responsibility and apologizing to those affected by our mistakes,
24
+ and learning from the experience
25
+ * Focusing on what is best not just for us as individuals, but for the
26
+ overall community
27
+
28
+ Examples of unacceptable behavior include:
29
+
30
+ * The use of sexualized language or imagery, and sexual attention or
31
+ advances of any kind
32
+ * Trolling, insulting or derogatory comments, and personal or political attacks
33
+ * Public or private harassment
34
+ * Publishing others' private information, such as a physical or email
35
+ address, without their explicit permission
36
+ * Other conduct which could reasonably be considered inappropriate in a
37
+ professional setting
38
+
39
+ ## Enforcement Responsibilities
40
+
41
+ Community leaders are responsible for clarifying and enforcing our standards of
42
+ acceptable behavior and will take appropriate and fair corrective action in
43
+ response to any behavior that they deem inappropriate, threatening, offensive,
44
+ or harmful.
45
+
46
+ Community leaders have the right and responsibility to remove, edit, or reject
47
+ comments, commits, code, wiki edits, issues, and other contributions that are
48
+ not aligned to this Code of Conduct, and will communicate reasons for moderation
49
+ decisions when appropriate.
50
+
51
+ ## Scope
52
+
53
+ This Code of Conduct applies within all community spaces, and also applies when
54
+ an individual is officially representing the community in public spaces.
55
+ Examples of representing our community include using an official e-mail address,
56
+ posting via an official social media account, or acting as an appointed
57
+ representative at an online or offline event.
58
+
59
+ ## Enforcement
60
+
61
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
62
+ reported to the community leaders responsible for enforcement at
63
+ s.verhoeven@esciencecenter.nl.
64
+ All complaints will be reviewed and investigated promptly and fairly.
65
+
66
+ All community leaders are obligated to respect the privacy and security of the
67
+ reporter of any incident.
68
+
69
+ ## Enforcement Guidelines
70
+
71
+ Community leaders will follow these Community Impact Guidelines in determining
72
+ the consequences for any action they deem in violation of this Code of Conduct:
73
+
74
+ ### 1. Correction
75
+
76
+ **Community Impact**: Use of inappropriate language or other behavior deemed
77
+ unprofessional or unwelcome in the community.
78
+
79
+ **Consequence**: A private, written warning from community leaders, providing
80
+ clarity around the nature of the violation and an explanation of why the
81
+ behavior was inappropriate. A public apology may be requested.
82
+
83
+ ### 2. Warning
84
+
85
+ **Community Impact**: A violation through a single incident or series
86
+ of actions.
87
+
88
+ **Consequence**: A warning with consequences for continued behavior. No
89
+ interaction with the people involved, including unsolicited interaction with
90
+ those enforcing the Code of Conduct, for a specified period of time. This
91
+ includes avoiding interactions in community spaces as well as external channels
92
+ like social media. Violating these terms may lead to a temporary or
93
+ permanent ban.
94
+
95
+ ### 3. Temporary Ban
96
+
97
+ **Community Impact**: A serious violation of community standards, including
98
+ sustained inappropriate behavior.
99
+
100
+ **Consequence**: A temporary ban from any sort of interaction or public
101
+ communication with the community for a specified period of time. No public or
102
+ private interaction with the people involved, including unsolicited interaction
103
+ with those enforcing the Code of Conduct, is allowed during this period.
104
+ Violating these terms may lead to a permanent ban.
105
+
106
+ ### 4. Permanent Ban
107
+
108
+ **Community Impact**: Demonstrating a pattern of violation of community
109
+ standards, including sustained inappropriate behavior, harassment of an
110
+ individual, or aggression toward or disparagement of classes of individuals.
111
+
112
+ **Consequence**: A permanent ban from any sort of public interaction within
113
+ the community.
114
+
115
+ ## Attribution
116
+
117
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118
+ version 2.0, available at
119
+ https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
120
+
121
+ Community Impact Guidelines were inspired by [Mozilla's code of conduct
122
+ enforcement ladder](https://github.com/mozilla/diversity).
123
+
124
+ [homepage]: https://www.contributor-covenant.org
125
+
126
+ For answers to common questions about this code of conduct, see the FAQ at
127
+ https://www.contributor-covenant.org/faq. Translations are available at
128
+ https://www.contributor-covenant.org/translations.
@@ -0,0 +1,92 @@
1
+ # Contributing guidelines
2
+
3
+ We welcome any kind of contribution to our software, from simple comment or question to a full fledged [pull request](https://help.github.com/articles/about-pull-requests/). Please read and follow our [Code of Conduct](CODE_OF_CONDUCT.md).
4
+
5
+ A contribution can be one of the following cases:
6
+
7
+ 1. you have a question;
8
+ 1. you think you may have found a bug (including unexpected behavior);
9
+ 1. you want to make some kind of change to the code base (e.g. to fix a bug, to add a new feature, to update documentation);
10
+ 1. you want to make a new release of the code base.
11
+
12
+ The sections below outline the steps in each case.
13
+
14
+ ## You have a question
15
+
16
+ 1. use the search functionality [here](https://github.com/haddocking/protein-quest/issues) to see if someone already filed the same issue;
17
+ 2. if your issue search did not yield any relevant results, make a new issue;
18
+ 3. apply the "Question" label; apply other labels when relevant.
19
+
20
+ ## You think you may have found a bug
21
+
22
+ 1. use the search functionality [here](https://github.com/haddocking/protein-quest/issues) to see if someone already filed the same issue;
23
+ 1. if your issue search did not yield any relevant results, make a new issue, making sure to provide enough information to the rest of the community to understand the cause and context of the problem. Depending on the issue, you may want to include:
24
+ - the [SHA hashcode](https://help.github.com/articles/autolinked-references-and-urls/#commit-shas) of the commit that is causing your problem;
25
+ - some identifying information (name and version number) for dependencies you're using;
26
+ - information about the operating system;
27
+ 1. apply relevant labels to the newly created issue.
28
+
29
+ ## You want to make some kind of change to the code base
30
+
31
+ 1. (**important**) announce your plan to the rest of the community *before you start working*. This announcement should be in the form of a (new) issue;
32
+ 1. (**important**) wait until some kind of consensus is reached about your idea being a good idea;
33
+ 1. if needed, fork the repository to your own Github profile and create your own feature branch off of the latest main commit. While working on your feature branch, make sure to stay up to date with the main branch by pulling in changes, possibly from the 'upstream' repository (follow the instructions [here](https://help.github.com/articles/configuring-a-remote-for-a-fork/) and [here](https://help.github.com/articles/syncing-a-fork/));
34
+ 1. install [uv](https://docs.astral.sh/uv) to manage this packages development environment);
35
+ 1. Make sure `uv sync --all-extras --all-groups && . .venv/bin/activate && protein-quest --help` works;
36
+ 1. make sure the existing tests still work by running `uv run pytest`;
37
+ 1. add your own tests (if necessary);
38
+ 1. format your code with `uvx ruff format` and sort imports with `uvx ruff check --select I --fix`;
39
+ 1. lint your code with `uvx ruff check` (use `uvx ruff check --fix` to fix issues automatically);
40
+ 1. type check your code with `uv run pyrefly check src tests`;
41
+ 1. update or expand the documentation (see [Contributing with documentation](#contributing-with-documentation) section below);
42
+ 1. [push](http://rogerdudler.github.io/git-guide/) your feature branch to (your fork of) the protein-quest repository on GitHub;
43
+ 1. create the pull request, e.g. following the instructions [here](https://help.github.com/articles/creating-a-pull-request/).
44
+
45
+ In case you feel like you've made a valuable contribution, but you don't know how to write or run tests for it, or how to generate the documentation: don't let this discourage you from making the pull request; we can help you! Just go ahead and submit the pull request, but keep in mind that you might be asked to append additional commits to your pull request.
46
+
47
+ ## You want to make a new release of the code base
48
+
49
+ To create a release you need write permission on the repository.
50
+
51
+ 1. Bump the version in [src/protein_quest/__version__.py](src/protein_quest/__version__.py).
52
+ 2. Check the author list in [`CITATION.cff`](CITATION.cff)
53
+ 3. Go to the [GitHub release page](https://github.com/haddocking/protein-quest/releases)
54
+ 4. Press draft a new release button
55
+ 5. Fill tag, title and description field. For tag use version from `src/protein_quest/__version__.py` and prepend with "v" character. For description use "Python package to search/retrieve/filter proteins and protein structures." line plus press "Generate release notes" button.
56
+ 6. Press the Publish Release button
57
+ 7. Wait until [Build and upload to PyPI](https://github.com/haddocking/protein-quest/actions/workflows/pypi-publish.yml) has completed
58
+ 8. Verify new release is on [PyPi](https://pypi.org/project/protein-quest/#history)
59
+ 9. Verify new Zenodo record has been created.
60
+
61
+ ## Contributing to documentation
62
+
63
+ To work on notebooks in the docs/ directory:
64
+
65
+ ```shell
66
+ uv sync --group docs
67
+ # Open a notebook with VS code and select .venv/bin/python as kernel
68
+ ```
69
+
70
+ Start the live-reloading docs server with:
71
+
72
+ ```shell
73
+ uv run mkdocs serve
74
+ ```
75
+
76
+ Build the documentation site with:
77
+
78
+ ```shell
79
+ uv run mkdocs build
80
+ # The site will be built in the `site/` directory.
81
+ # You can preview it with
82
+ python3 -m http.server -d site
83
+ ```
84
+
85
+ ## Contributing to tests
86
+
87
+ The code coverage are stored at https://app.codacy.com/gh/haddocking/protein-quest/coverage .
88
+
89
+ The search functions of the protein-quest package talk to web services on the Internet.
90
+ To have fast tests we use [pytest-recording](https://github.com/kiwicom/pytest-recording) to record and replay HTTP interactions.
91
+ See [pytest-recording documentation](https://github.com/kiwicom/pytest-recording) for more details on how to use it.
92
+ Like overwrite previous recordings in test/cassettes/**.yaml files with `--record-mode=rewrite`.