{ "info": { "author": "Jack Jennings", "author_email": "jack@standard-library.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development :: Build Tools" ], "description": "\nHellbox\n=======\n\n.. image:: https://travis-ci.org/hellboxpy/hellbox.svg?branch=master\n :target: https://travis-ci.org/hellboxpy/hellbox\n\nHellbox is a modular, editor-agnostic build system designed for font development. Hellbox is similar to some \"Flow-based Programming\" environments, consisting of a system of chained blackbox components.\n\n**Hellbox is in the early stages of development. This document is more of a roadmap than documentation of the current implementation. Expect API changes without notice until v1.0.**\n\nGoals\n-----\n\n* **Consistency** Hellbox tasks don't take arguments by design, favoring consistent task output\n* **Modularity** Hellbox packages should be resuable and composable, while maintaining flexibility for custom workflows\n* **Isolation** Hellbox tasks and packages are version locked and isolated from other projects and Python installations\n\nOverview\n--------\n\nHellbox aims to provide both an environment and framework for defining build pipelines.\n\nHellbox tasks are composed of \"chutes\" \u2014 modules that perform a single operation over one or more files. Chutes are connected together using the ``>>`` operator, linking the output of one chute to the input of the next.\n\n.. code-block:: python\n\n from hellbox import Hellbox\n from hellbox_generate_otf import GenerateOtf\n\n with Hellbox(\"build\") as task:\n task.describe(\"Builds .otf files from .ufo source\")\n task.read(\"*.ufo\") >> GenerateOtf() >> task.write(\"./otf\")\n\nWith the above configuration, running ``hell run build`` will generate OTF files from all of the UFO sources, and write them to the ``otf`` directory.\n\nInstallation\n------------\n\nFirst `install hell`_, a CLI for managing hellbox projects. Then run ``hell init`` inside of your project (or ``hell install`` inside of an existing hellbox-enabled project).\n\nThis will set up a new virtual environment with Python 3 using `pipenv`, create a ``Hellfile.py`` for defining tasks, and install the ``hellbox`` library itself.\n\n.. _`install hell`: https://github.com/hellboxpy/hell#installation\n\nChutes\n------\n\nThere are two ways of defining a Hellbox chute, depending on the complexity and amount of configuration required.\n\nThe basic setup for defining your own chutes requires you to create a new subclass of ``Chute``. You must define a method ``run`` which accepts a single ``files`` argument (an array) and returns a new array of modified files. Besides ``run``, you can define any other methods you like on the new class.\n\n.. code-block:: python\n\n from hellbox.chute import Chute\n\n class FilterFilesByExt(Chute):\n\n def __init__(self, *extensions):\n self.extensions = extensions\n\n def run(self, files):\n return [f for f in files if f.extension in self.extensions]\n\nYou can then use your chute in your Hellfile as such:\n\n.. code-block:: python\n\n with Hellbox(\"backup\") as task:\n task.read(\"build/*\") >> FilterFilesByExt(\"otf\", \"txt\") >> task.write(\"backup\")\n\nIf your chute doesn't require arguments when initialized, you may prefer to define it with a function instead of a class. Using the ``@Chute.create`` function decorator makes a function definition act like a subclass of Chute:\n\n.. code-block:: python\n\n from hellbox.chute import Chute\n\n @Chute.create\n def GenerateWoff2(files):\n # do something to files...\n return files\n\n with Hellbox(\"webfonts\") as task:\n task.read(\"build/*.ttf\") >> GenerateWoff2() >> task.write(\"webfonts\")\n\nCLI\n---\n\nHellbox comes with a command line tool `hell`_ which offers a thin layer over ``pipenv``. Using the CLI is highly recommended, as it makes working in isolation dead simple.\n\n.. _`hell`: https://github.com/hellboxpy/hell/blob/master/README.md#installation\n\nDevelopment\n-----------\n\nInstall development dependencies with ``make``. Run tests with ``make test``.\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/hellboxpy/hellbox", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "hellbox", "package_url": "https://pypi.org/project/hellbox/", "platform": "", "project_url": "https://pypi.org/project/hellbox/", "project_urls": { "Homepage": "http://github.com/hellboxpy/hellbox" }, "release_url": "https://pypi.org/project/hellbox/0.1.3/", "requires_dist": [ "glob2" ], "requires_python": ">=3.6.0", "summary": "Build system for font development.", "version": "0.1.3" }, "last_serial": 5125954, "releases": { "0.1.3": [ { "comment_text": "", "digests": { "md5": "b1358f6953499a5e33f3a55370f6dc18", "sha256": "08f6b08d6796fc4edaefb4b8cacee57e79d8c1628112b297702d4e1479ab51b7" }, "downloads": -1, "filename": "hellbox-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b1358f6953499a5e33f3a55370f6dc18", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 8924, "upload_time": "2019-04-10T21:06:21", "url": "https://files.pythonhosted.org/packages/df/dc/d9f9c7e869464c49706f344ca72d978f1ef45973b2c9a40fea1adeb0d704/hellbox-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "687e135514877029d5c5039020c1d58d", "sha256": "23ac513d45ef32f9ba692c9213900e551f361a4724c14afbe465f2e9cb665c3d" }, "downloads": -1, "filename": "hellbox-0.1.3.tar.gz", "has_sig": false, "md5_digest": "687e135514877029d5c5039020c1d58d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8192, "upload_time": "2019-04-10T21:06:23", "url": "https://files.pythonhosted.org/packages/10/60/b5d1db999cc6c10eb8f06ba3ae962c23f62c041e1c6ac58f2b3d3cfdc4a3/hellbox-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b1358f6953499a5e33f3a55370f6dc18", "sha256": "08f6b08d6796fc4edaefb4b8cacee57e79d8c1628112b297702d4e1479ab51b7" }, "downloads": -1, "filename": "hellbox-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b1358f6953499a5e33f3a55370f6dc18", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 8924, "upload_time": "2019-04-10T21:06:21", "url": "https://files.pythonhosted.org/packages/df/dc/d9f9c7e869464c49706f344ca72d978f1ef45973b2c9a40fea1adeb0d704/hellbox-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "687e135514877029d5c5039020c1d58d", "sha256": "23ac513d45ef32f9ba692c9213900e551f361a4724c14afbe465f2e9cb665c3d" }, "downloads": -1, "filename": "hellbox-0.1.3.tar.gz", "has_sig": false, "md5_digest": "687e135514877029d5c5039020c1d58d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8192, "upload_time": "2019-04-10T21:06:23", "url": "https://files.pythonhosted.org/packages/10/60/b5d1db999cc6c10eb8f06ba3ae962c23f62c041e1c6ac58f2b3d3cfdc4a3/hellbox-0.1.3.tar.gz" } ] }