# Ensembl Python Base Library
[![License](https://img.shields.io/badge/license-Apache_2.0-blue.svg)](https://github.com/Ensembl/ensembl-py/blob/main/LICENSE)
[![Coverage](https://ensembl.github.io/ensembl-py/coverage/coverage-badge.svg)](https://ensembl.github.io/ensembl-py/coverage)
[![CI](https://github.com/Ensembl/ensembl-py/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/Ensembl/ensembl-py/actions/workflows/ci.yml)
[![Release](https://img.shields.io/pypi/v/ensembl-py)](https://pypi.org/project/ensembl-py)
Centralise generic Python code use across all other project within Ensembl, more particularly database access layers and ORMs, reusable eHive components, etc.
## Getting Started
### Installing the development environment with `venv`
```
python -m venv <VIRTUAL_ENVIRONMENT_NAME>
source <VIRTUAL_ENVIRONMENT_NAME>/bin/activate
git clone https://github.com/Ensembl/ensembl-py.git
cd ensembl-py
pip install -e .[cicd,dev,docs]
```
### Testing with `pytest`
Run test suite from the root of the repository is as simple as to run:
```
pytest
```
To run tests, calculate and display testing coverage stats:
```
coverage run -m pytest
coverage report -m
```
### Generate documentation via `mkdocs`
```
mkdocs build
```
Open automatically generated documentation page at `site/index.html`.
### Automatic formatting (PEP8 compliance)
```
black --check .
```
Use `--diff` to print a diff of what Black would change, without actually changing the files.
To actually reformat all files in the repository:
```
black .
```
### Linting and type checking
```
pylint src/python/ensembl
pylint --recursive=y src/python/tests
mypy src/python/ensembl
mypy src/python/tests
```
`pylint` will check the code for syntax, name errors and formatting style. `mypy` will use type hints to statically type check the code.
It should be relatively easy (and definitely useful) to integrate both `pylint` and `mypy` in your IDE/Text editor.
## Useful resources
### Python Documentation
- [Official Python Docs](https://docs.python.org/3/)
### Python virtual environments management
- [Python venv](https://docs.python.org/3/library/venv.html)
### Auto-generating documentation
- [mkdocs](https://www.mkdocs.org)
### Linting, type checking and formatting
- [Pylint](https://www.pylint.org/)
- [Mypy](https://mypy.readthedocs.io/en/stable/)
- [Black](https://black.readthedocs.io/en/stable/)
- [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings)
### Testing
- [pytest](https://docs.pytest.org/en/6.2.x/)
- [Coverage](https://coverage.readthedocs.io/)
### CI/CD
- [GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/)
### Development tools
- [IPython](https://ipython.org/)
### Distributing
- [Packaging Python](https://packaging.python.org/tutorials/packaging-projects/)
- [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0#apply)
- [Semantic Versioning](https://semver.org/)
Raw data
{
"_id": null,
"home_page": null,
"name": "ensembl-py",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "ensembl, bioinformatics, python, setup",
"author": null,
"author_email": "Ensembl <dev@ensembl.org>",
"download_url": "https://files.pythonhosted.org/packages/db/8c/f7b2177bba7cbb3ab6904a175b7e694b343197cdf8e9f3db8839a72c6bc2/ensembl_py-2.1.3.tar.gz",
"platform": null,
"description": "# Ensembl Python Base Library\n\n[![License](https://img.shields.io/badge/license-Apache_2.0-blue.svg)](https://github.com/Ensembl/ensembl-py/blob/main/LICENSE)\n[![Coverage](https://ensembl.github.io/ensembl-py/coverage/coverage-badge.svg)](https://ensembl.github.io/ensembl-py/coverage)\n[![CI](https://github.com/Ensembl/ensembl-py/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/Ensembl/ensembl-py/actions/workflows/ci.yml)\n[![Release](https://img.shields.io/pypi/v/ensembl-py)](https://pypi.org/project/ensembl-py)\n\nCentralise generic Python code use across all other project within Ensembl, more particularly database access layers and ORMs, reusable eHive components, etc.\n\n## Getting Started\n\n### Installing the development environment with `venv`\n\n```\npython -m venv <VIRTUAL_ENVIRONMENT_NAME>\nsource <VIRTUAL_ENVIRONMENT_NAME>/bin/activate\ngit clone https://github.com/Ensembl/ensembl-py.git\ncd ensembl-py\npip install -e .[cicd,dev,docs]\n```\n\n### Testing with `pytest`\n\nRun test suite from the root of the repository is as simple as to run:\n```\npytest\n```\n\nTo run tests, calculate and display testing coverage stats:\n```\ncoverage run -m pytest\ncoverage report -m\n```\n\n### Generate documentation via `mkdocs`\n```\nmkdocs build\n```\nOpen automatically generated documentation page at `site/index.html`.\n\n### Automatic formatting (PEP8 compliance)\n```\nblack --check .\n```\nUse `--diff` to print a diff of what Black would change, without actually changing the files.\n\nTo actually reformat all files in the repository:\n```\nblack .\n```\n\n### Linting and type checking\n```\npylint src/python/ensembl\npylint --recursive=y src/python/tests\nmypy src/python/ensembl\nmypy src/python/tests\n```\n`pylint` will check the code for syntax, name errors and formatting style. `mypy` will use type hints to statically type check the code.\n\nIt should be relatively easy (and definitely useful) to integrate both `pylint` and `mypy` in your IDE/Text editor.\n\n## Useful resources\n\n### Python Documentation\n- [Official Python Docs](https://docs.python.org/3/)\n\n### Python virtual environments management\n- [Python venv](https://docs.python.org/3/library/venv.html)\n\n### Auto-generating documentation\n- [mkdocs](https://www.mkdocs.org)\n\n### Linting, type checking and formatting\n- [Pylint](https://www.pylint.org/)\n- [Mypy](https://mypy.readthedocs.io/en/stable/)\n- [Black](https://black.readthedocs.io/en/stable/)\n- [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings)\n\n### Testing\n- [pytest](https://docs.pytest.org/en/6.2.x/)\n- [Coverage](https://coverage.readthedocs.io/)\n\n### CI/CD\n- [GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/)\n\n### Development tools\n- [IPython](https://ipython.org/)\n\n### Distributing\n- [Packaging Python](https://packaging.python.org/tutorials/packaging-projects/)\n- [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0#apply)\n- [Semantic Versioning](https://semver.org/)\n",
"bugtrack_url": null,
"license": "Apache License 2.0",
"summary": "Ensembl Python Base Library",
"version": "2.1.3",
"project_urls": {
"Documentation": "https://ensembl.github.io/ensembl-py/",
"Homepage": "https://www.ensembl.org",
"Issues": "https://github.com/Ensembl/ensembl-py/issues",
"Repository": "https://github.com/Ensembl/ensembl-py.git"
},
"split_keywords": [
"ensembl",
" bioinformatics",
" python",
" setup"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3f6191b9be1afd65c219331b18dba1f342c00700bdd51f9236eb05b326748c90",
"md5": "49061be49ea9a6ee48f34cae6e0a4b99",
"sha256": "9a939ca23c566815f0c6336c1c66143d110d814cc2d439d874aaf4bfeda26c94"
},
"downloads": -1,
"filename": "ensembl_py-2.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "49061be49ea9a6ee48f34cae6e0a4b99",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 26080,
"upload_time": "2024-09-17T13:10:13",
"upload_time_iso_8601": "2024-09-17T13:10:13.497384Z",
"url": "https://files.pythonhosted.org/packages/3f/61/91b9be1afd65c219331b18dba1f342c00700bdd51f9236eb05b326748c90/ensembl_py-2.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "db8cf7b2177bba7cbb3ab6904a175b7e694b343197cdf8e9f3db8839a72c6bc2",
"md5": "2d6a9d700cae6ff99120ae06ef5572bf",
"sha256": "cbf6a9279fc3888acc53cd7ee70727da07265d79386e1bce9b0a40e36cba12ad"
},
"downloads": -1,
"filename": "ensembl_py-2.1.3.tar.gz",
"has_sig": false,
"md5_digest": "2d6a9d700cae6ff99120ae06ef5572bf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 184836,
"upload_time": "2024-09-17T13:10:14",
"upload_time_iso_8601": "2024-09-17T13:10:14.761132Z",
"url": "https://files.pythonhosted.org/packages/db/8c/f7b2177bba7cbb3ab6904a175b7e694b343197cdf8e9f3db8839a72c6bc2/ensembl_py-2.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-17 13:10:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Ensembl",
"github_project": "ensembl-py",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "ensembl-py"
}