{"id":23353720,"url":"https://github.com/intoli/dysco","last_synced_at":"2025-04-07T19:20:04.300Z","repository":{"id":57424879,"uuid":"220706956","full_name":"intoli/dysco","owner":"intoli","description":"Configurable dynamic scoping for python.","archived":false,"fork":false,"pushed_at":"2019-11-19T02:47:52.000Z","size":492,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-13T20:49:20.089Z","etag":null,"topics":["dynamic-scope","python","python3","python36","python37","python38"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/intoli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-09T21:37:30.000Z","updated_at":"2019-11-19T02:41:42.000Z","dependencies_parsed_at":"2022-09-13T15:31:08.992Z","dependency_job_id":null,"html_url":"https://github.com/intoli/dysco","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intoli%2Fdysco","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intoli%2Fdysco/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intoli%2Fdysco/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intoli%2Fdysco/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/intoli","download_url":"https://codeload.github.com/intoli/dysco/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247713263,"owners_count":20983683,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dynamic-scope","python","python3","python36","python37","python38"],"created_at":"2024-12-21T09:15:42.616Z","updated_at":"2025-04-07T19:20:04.274Z","avatar_url":"https://github.com/intoli.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Dysco](https://github.com/intoli/dysco/raw/master/media/dysco.png)\n\n\u003ch1 vertical-align=\"middle\"\u003eDysco - Dynamic Scoping in Python\n    \u003ca targe=\"_blank\" href=\"https://twitter.com/share?url=https%3A%2F%2Fgithub.com%2Fintoli%2Fdysco%2F\u0026text=Dysco%20-%20Configurable%20dynamic%20scoping%20for%20Python\"\u003e\n        \u003cimg height=\"26px\" src=\"https://simplesharebuttons.com/images/somacro/twitter.png\"\n +          alt=\"Tweet\"\u003e\u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://www.facebook.com/sharer/sharer.php?u=https%3A//github.com/intoli/dysco\"\u003e\n        \u003cimg height=\"26px\" src=\"https://simplesharebuttons.com/images/somacro/facebook.png\"\n            alt=\"Share on Facebook\"\u003e\u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"http://reddit.com/submit?url=https%3A%2F%2Fgithub.com%2Fintoli%2Fdysco%2F\u0026title=Dysco%20%E2%80%94%20Configurable%20dynamic%20scoping%20for%20Python\"\u003e\n        \u003cimg height=\"26px\" src=\"https://simplesharebuttons.com/images/somacro/reddit.png\"\n            alt=\"Share on Reddit\"\u003e\u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://news.ycombinator.com/submitlink?u=https://github.com/intoli/dysco\u0026t=Dysco%20%E2%80%94%20Configurable%20dynamic%20scoping%20for%20Python\"\u003e\n        \u003cimg height=\"26px\" src=\"https://github.com/intoli/dysco/raw/master/media/ycombinator.png\"\n            alt=\"Share on Hacker News\"\u003e\u003c/a\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"left\"\u003e\n    \u003ca href=\"https://circleci.com/gh/intoli/dysco/tree/master\"\u003e\n        \u003cimg src=\"https://img.shields.io/circleci/project/github/intoli/dysco/master.svg\"\n            alt=\"Build Status\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://circleci.intoli.com/artifacts/intoli/dysco/coverage-report/index.html\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/dynamic/json.svg?label=coverage\u0026colorB=ff69b4\u0026query=$.coverage\u0026uri=https://circleci.intoli.com/artifacts/intoli/dysco/coverage-report/total-coverage.json\"\n          alt=\"Coverage\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/intoli/dysco/blob/master/LICENSE.md\"\u003e\n        \u003cimg src=\"https://img.shields.io/pypi/l/dysco.svg\"\n            alt=\"License\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://pypi.python.org/pypi/dysco/\"\u003e\n        \u003cimg src=\"https://img.shields.io/pypi/v/dysco.svg\"\n            alt=\"PyPI Version\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n###### [Installation](#installation) | [Development](#development) | [Contributing](#contributing)\n\n\u003e Dysco is a lightweight Python library that brings [dynamic scoping](https://en.wikipedia.org/wiki/Scope_(computer_science)#Dynamic_scoping) capabilities to Python in a highly configurable way.\n\n\n## Installation\n\nDysco can be installed from [pypy](https://pypi.org/project/dysco/) using `pip` or any compatible Python package manager.\n\n```bash\n# Installation with pip.\npip install dysco\n\n# Or, installation with poetry.\npoetry add dysco\n```\n\n## Development\n\nTo install the dependencies locally, you need [poetry](https://poetry.eustace.io/docs/#installation) to be installed.\nYou can then run\n\n```bash\n# This is only required if you're not using poetry v1.0.0 or greater.\n# It tells poetry to place the virtual environment in `.venv`.\npoetry config settings.virtualenvs.in-project true\n\n# Install all of the dependencies.\npoetry install\n```\n\nto install the project dependencies.\n\nThe library is tested against Python versions 3.7 and 3.8.\nThese are most easily installed using [pyenv](https://github.com/pyenv/pyenv#installation) with the following command.\n\n```bash\n# Install the supported Python versions.\npyenv install --skip-existing 3.7.5\npyenv install --skip-existing 3.8.0\n```\n\nTesting, linting, and document generation can then be run via [tox](https://tox.readthedocs.io/en/latest/).\nThe bare `tox` command will run everything in all environments, or you can break it down by Python version and task.\nFor example, you could run the individual Python 3.8 tasks manually by running the following.\n\n```bash\n# Install the project dependencies in `.tox/py38/`.\ntox -e py38-init\n\n# Run black, flake8, isort, and mypy.\ntox -e py38-lint\n\n# Run the tests and generate a coverage report.\ntox -e py38-test --coverage\n\n## Build the project documentation.\ntox -e py38-docs\n```\n\n## Deployment\n\nYou first need to configure your credentials with poetry.\n\n```bash\npoetry config http-basic.pypi intoli \u003cpypi-password\u003e\n```\n\nYou can then use invoke to bump the version number, commit the changes, tag the version, and deploy to pypi.\n\n```bash\n# Bumps the patch version and deploys the package.\n# Valid options are major, minor, and patch.\ninvoke bump patch\n```\n\n## Contributing\n\nContributions are welcome, but please follow these contributor guidelines outlined in [CONTRIBUTING.md](CONTRIBUTING.md).\n\n\n## License\n\nExodus is licensed under a [BSD 2-Clause License](LICENSE.md) and is copyright [Intoli, LLC](https://intoli.com).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintoli%2Fdysco","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintoli%2Fdysco","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintoli%2Fdysco/lists"}