{"id":15009567,"url":"https://github.com/bradleygolden/boxer","last_synced_at":"2025-04-09T17:25:09.708Z","repository":{"id":57416158,"uuid":"84156277","full_name":"bradleygolden/boxer","owner":"bradleygolden","description":"pyenv and tox powered by docker","archived":false,"fork":false,"pushed_at":"2017-12-07T11:59:59.000Z","size":245,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-23T19:38:58.335Z","etag":null,"topics":["beginner-friendly","boxer","docker","open-source","pyenv","python","python-2","python-2-7","python-3","python-3-5","python-3-6","python-environment","python2","python3","tox"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bradleygolden.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-07T04:53:59.000Z","updated_at":"2024-11-28T16:33:14.000Z","dependencies_parsed_at":"2022-09-05T04:41:49.365Z","dependency_job_id":null,"html_url":"https://github.com/bradleygolden/boxer","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradleygolden%2Fboxer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradleygolden%2Fboxer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradleygolden%2Fboxer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradleygolden%2Fboxer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bradleygolden","download_url":"https://codeload.github.com/bradleygolden/boxer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248075794,"owners_count":21043649,"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":["beginner-friendly","boxer","docker","open-source","pyenv","python","python-2","python-2-7","python-3","python-3-5","python-3-6","python-environment","python2","python3","tox"],"created_at":"2024-09-24T19:26:40.442Z","updated_at":"2025-04-09T17:25:09.687Z","avatar_url":"https://github.com/bradleygolden.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# boxer\n\n\u003cimg src=\"https://github.com/bradleygolden/boxer/blob/master/repo-logo.jpg\" width=\"300\"\u003e\n\n[![Build Status](https://travis-ci.org/bradleygolden/boxer.svg?branch=master)](https://travis-ci.org/bradleygolden/boxer)\n[![Coverage Status](https://coveralls.io/repos/github/bradleygolden/boxer/badge.svg?branch=master)](https://coveralls.io/github/bradleygolden/boxer?branch=master)\n\npyenv and tox combined with the power of docker.\n\nboxer is a an automation tool that manages testing and python environments. The power of boxer lies in its ability to run tests against your code, with all versions of python, in complete isolation from your local devlopment environment. This is helpful because you no longer have to think about installing python, let alone multiple versions of it. Simply run ```boxer``` in your command line and you have the power of [tox](https://tox.readthedocs.io/en/latest/), [pyenv](https://github.com/pyenv/pyenv), and [docker](https://www.docker.com/) at your fingertips.\n\n## Features:\n* Automatically manages your python environments\n* Runs tests in an isolated conatainer, away from your local environment\n* Use tox as you always have\n* Python versions 2.7.13, 3.5.3, 3.6.0 are included by default\n* Use any python \u003e= 2.7\n\n### Warning\nboxer is not yet ready to be integrated with CI.\n\n## How does it work?\n\nUnder the hood, boxer is using [docker-py](https://github.com/docker/docker-py), some existing images that I created on the Docker Hub, and the awesome [click](http://click.pocoo.org/5/) package. As you run the cli, a Dockerfile is created dynamically in the .boxer directory chained with a few images that I created for this project. boxer then builds the images created in the .boxer directory, runs them, and executes tox against your tox.ini.\n\nImages on the Docker Hub:\n* [docker-tox](https://hub.docker.com/r/bgolden/docker-tox/)\n* [docker-pyenv](https://hub.docker.com/r/bgolden/docker-pyenv/)\n\n## What you need:\n* [docker](https://docs.docker.com/engine/installation/)\n* [pip](https://pip.pypa.io/en/stable/installing/)\n* connection to [docker hub](https://hub.docker.com/)\n\n## Install\n```\n# $ pip install boxer  # soon\n$ pip install git+https://github.com/bradleygolden/boxer.git\n```\n\n## Usage\n```\n$ cd \u003cproject/with/tox.ini\u003e\n$ boxer\n```\n\n## Python versions included\n\n\n\nAlternatively, you can include more versions of python youself.\n\n```\n$ boxer -p 3.5.1 -p 3.4.4\n```\n\n## Example Output\n```\nStep 1/1 : FROM bgolden/docker-tox:latest\n# Executing 3 build triggers...\n\nStep 1/1 : COPY $BUILD_PATH /workspace\nStep 1/1 : WORKDIR /workspace\nStep 1/1 : CMD tox\n---\u003e Running in 7884d8ae4472\n---\u003e 0fef0fa44d49\nSuccessfully built 0fef0fa44d49\nGLOB sdist-make: /workspace/setup.py\npy36 create: /workspace/.tox/py36\npy36 installdeps: pytest\npy36 inst: /workspace/.tox/dist/Example App-1.0.zip\npy36 installed: appdirs==1.4.3,Example-App==1.0,packaging==16.8,py==1.4.32,pyparsing==2.2.0,pytest==3.0.6,six==1.10.0\npy36 runtests: PYTHONHASHSEED='4201167492'\npy36 runtests: commands[0] | pytest\n============================= test session starts ==============================\nplatform linux -- Python 3.6.0, pytest-3.0.6, py-1.4.32, pluggy-0.4.0\nrootdir: /workspace, inifile:\ncollected 1 items\n\ntest_app.py .\n\n=========================== 1 passed in 0.01 seconds ===========================\n___________________________________ summary ____________________________________\npy36: commands succeeded\ncongratulations :)\n```\n\n## Help\n```\n$ boxer --help\n\nUsage: boxer [OPTIONS]\n\n \n  Example script.\n \nOptions:\n  --project TEXT       Directory where your tox project is located\n  --image TEXT         Tox docker image you wish to use to run with boxer\n  --logs TEXT          Path to boxer log file\n  --boxer TEXT         Path to store boxer data\n  --dockerfile TEXT    Path to dockerfile\n  --dockerignore TEXT  Path to dockerignore file\n  --tag TEXT           Name of container tag saved by boxer\n  --tox-file TEXT      Path to tox file\n  -p, --python TEXT    Additional python versions to use (e.g. 2.7.13)\n  --help               Show this message and exit.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradleygolden%2Fboxer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbradleygolden%2Fboxer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradleygolden%2Fboxer/lists"}