{ "info": { "author": "Adafruit Industries", "author_email": "ntoll@ntoll.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Education", "License :: OSI Approved :: MIT License", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Education", "Topic :: Software Development :: Embedded Systems", "Topic :: System :: Software Distribution" ], "description": "CircUp\n======\n\nA tool to manage and update libraries (modules) on a CircuitPython device.\n\n.. contents::\n\nInstallation\n------------\n\nCircup requires Python 3.5 or higher.\n\nIn a `virtualenv `_,\n``pip install circup`` should do the trick. This is the simplest way to make it\nwork.\n\nIf you have no idea what a virtualenv is, try the following command,\n``pip3 install --user circup``.\n\n.. note::\n\n If you use the ``pip3`` command to install CircUp you must make sure that\n your path contains the directory into which the script will be installed.\n To discover this path,\n\n * On Unix-like systems, type ``python3 -m site --user-base`` and append\n ``bin`` to the resulting path.\n * On Windows, type the same command, but append ``Scripts`` to the\n resulting path.\n\nWhat?\n-----\n\nEach CircuitPython library on the device (``.py``, *NOT* ``.mpy`` at this time)\nusually has a version number as metadata within the module.\n\nThis utility looks at all the libraries on the device and checks if they are\nthe most recent (compared to the versions found in the most recent version of\nthe Adafruit CircuitPython Bundle). If the libraries are out of date, the\nutility helps you update them.\n\nThe Adafruit CircuitPython Bundle can be found here:\n\nhttps://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/latest\n\nFull details of these libraries, what they're for and how to get them, can be\nfound here:\n\nhttps://circuitpython.org/libraries\n\nUsage\n-----\n\nFirst, plug in a device running CircuiPython. This should appear as a mounted\nstorage device called ``CIRCUITPYTHON``.\n\nTo get help, just type the command::\n\n $ circup\n Usage: circup [OPTIONS] COMMAND [ARGS]...\n\n A tool to manage and update libraries on a CircuitPython device.\n\n Options:\n --verbose Comprehensive logging is sent to stdout.\n --version Show the version and exit.\n --help Show this message and exit.\n\n Commands:\n freeze Output details of all the modules found on the connected...\n list Lists all out of date modules found on the connected\n CIRCUITPYTHON...\n update Checks for out-of-date modules on the connected CIRCUITPYTHON...\n\nTo show version information for all the modules currently on a connected\nCIRCUITPYTHON device::\n\n $ circup freeze\n adafruit_binascii==v1.0\n adafruit_bme280==2.3.1\n adafruit_ble==1.0.2\n\nTo list all the modules that require an update::\n\n $ circup list\n The following modules are out of date or probably need an update.\n\n Module Version Latest \n ------------------ -------- -------- \n adafruit_binascii v1.0 1.0.1 \n adafruit_ble 1.0.2 4.0\n\nTo interactively update the out-of-date modules::\n\n $ circup update\n Found 3 module[s] needing update.\n Please indicate which modules you wish to update:\n\n Update 'adafruit_binascii'? [y/N]: Y\n OK\n Update 'adafruit_ble'? [y/N]: Y\n OK\n\nUse the ``--verbose`` flag to see the logs as the command is working::\n\n $ circup --verbose freeze\n Logging to /home/ntoll/.cache/circup/log/circup.log\n\n INFO: Started 2019-09-05 13:13:41.031822\n INFO: Freeze\n INFO: Found device: /media/ntoll/CIRCUITPY\n ... etc ...\n\nFinally, the ``--version`` flag will tell you the current version of the\n``circup`` command itself::\n\n $ circup --version\n CircUp, A CircuitPython module updater. Version 0.0.1\n\nThat's it!\n\n.. note::\n\n If you find a bug, or you want to suggest an enhancement or new feature\n feel free to create an issue or submit a pull request here:\n\n https://github.com/adafruit/circup\n\nDeveloper Setup\n---------------\n\n.. note::\n\n Please try to use Python 3.6+ while developing CircUp. This is so we can\n use the\n `Black code formatter `_\n (which only works with Python 3.6+).\n\nClone the repository then make a virtualenv. From the root of the project,\ninstall the requirements::\n\n pip install -e \".[dev]\"\n\nRun the test suite::\n\n make check\n\n.. warning::\n\n Whenever you run ``make check``, to ensure the test suite starts from a\n known clean state, all auto-generated assets are deleted. This includes\n assets generated by running ``pip install -e \".[dev]\"``, including the\n ``circup`` command itself. Simply re-run ``pip`` to re-generate the\n assets.\n\nThere is a Makefile that helps with most of the common workflows associated\nwith development. Typing \"make\" on its own will list the options thus::\n\n $ make\n\n There is no default Makefile target right now. Try:\n\n make clean - reset the project and remove auto-generated assets.\n make pyflakes - run the PyFlakes code checker.\n make pycodestyle - run the PEP8 style checker.\n make test - run the test suite.\n make coverage - view a report on test coverage.\n make tidy - tidy code with the 'black' formatter.\n make check - run all the checkers and tests.\n make dist - make a dist/wheel for the project.\n make publish-test - publish the project to PyPI test instance.\n make publish-live - publish the project to PyPI production.\n make docs - run sphinx to create project documentation.\n\n.. note::\n\n On Windows there is a ``make.cmd`` file that calls ``make.py``: a script\n that works in a similar way to the ``make`` command on Unix-like operating\n systems. Typing ``make`` will display help for the various commands it\n provides that are equivalent of those in the Unix Makefile.\n\nHow?\n####\n\nThe ``circup`` tool checks for a connected CircuitPython device by\ninterrogating the local filesystem to find a path to a directory which ends\nwith ``\"CIRCUITPYTHON\"`` (the name under which a CircuitPython device is\nmounted by the host operating system). This is handled in the ``find_device``\nfunction.\n\nA Python module on a connected device is represented by an instance of the\n``Module`` class. This class provides useful methods for discerning if the\nmodule is out of date, returning useful representations of it in order to\ndisplay information to the user, or updating the module on the connected\ndevice with whatever the version is in the latest Adafruit CircuitPython\nBundle.\n\nAll of the libraries included in the Adafruit CircuitPython Bundle contain,\nsomewhere within their code, two metadata objects called ``__version__`` and\n``__repo__``.\n\nThe ``__repo__`` object is a string containing the GitHub repository URL, as\nused to clone the project.\n\nThe ``__version__`` object is interesting because *within the source code in\nGit* the value is **always** the string ``\"0.0.0-auto.0\"``. When a new release\nis made of the bundle, this value is automatically replaced by the build\nscripts to the correct version information, which will always conform to the\n`semver standard `_.\n\nGiven this context, the ``circup`` tool will check a configuration file\nto discern what *it* thinks is the latest version of the bundle. If there is\nno configuration file (for example, on first run), then the bundle version is\nassumed to be ``\"0\"``.\n\nNext, it checks GitHub for the tag value (denoting the version) of the very\nlatest bundle release. Bundle versions are based upon the date of release, for\ninstance ``\"20190904\"``. If the latest version on GitHub is later than the\nversion ``circup`` currently has, then the latest version of the bundle\nis automatically downloaded and cached away somewhere.\n\nIn this way, the ``circup`` tool is able to have available to it both a path\nto a connected CIRCUITPYTHON devce and a copy of the latest version, including\nthe all important version information, of the Adafruit CircuitPython Bundle.\n\nExactly the same function (``get_modules``) is used to extract the metadata\nfrom the modules on both the connected device and in the bundle cache. This\nmetadata is used to instantiate instances of the ``Module`` class which is\nsubsequently used to facilitate the various commands the tool makes available.\n\nThese commands are defined at the very end of the ``circup.py`` code.\n\nUnit tests can be found in the ``tests`` directory. CircUp uses\n`pytest `_ style testing conventions. Test\nfunctions should include a comment to describe its *intention*. We currently\nhave 100% unit test coverage for all the core functionality (excluding\nfunctions used to define the CLI commands).\n\nTo run the full test suite, type::\n\n make check\n\nAll code is formatted using the stylistic conventions enforced by\n`black `_. The tidying of code\nformatting is part of the ``make check`` process, but you can also just use::\n\n make tidy\n\nPlease see the output from ``make`` for more information about the various\navailable options to help you work with the code base. TL;DR ``make check``\nruns everything.\n\nBefore submitting a PR, please remember to ``make check``. ;-)\n\nCircUp uses the `Click `_ module to\nrun command-line interaction. The\n`AppDirs `_ module is used to determine\nwhere to store user-specific assets created by the tool in such a way that\nmeets the host operating system's usual conventions. The\n`python-semver `_ package is used to\nvalidate and compare the semver values associated with modules. The ubiquitous\n`requests `_ module is used for HTTP activity.\n\nDocumentation, generated by `Sphinx `_,\nis based on this README and assembled by assets in the ``doc`` subdirectory.\nThe latest version of the docs will be found on\n`Read the Docs `_.\n\nDiscussion of this tool happens on the Adafruit CircuitPython\n`Discord channel `_.\n\n\nRelease History\n===============\n\n\n0.0.3\n-----\n\nAutomated Release Deployment Bug Fix\n\n* Fix missing PyPI egg dependency\n\n0.0.2\n-----\n\nInitial PyPI Release Automation w/ TravisCI\n\n* Add Continuous Integration with TravisCI\n* Deploy ``circup`` releases to PyPI automatically with TravisCI\n\n0.0.1\n-----\n\nInitial release.\n\n* Core project scaffolding.\n* ``circup freeze`` - lists version details for all modules found on the\n connected CIRCUITPYTHON device.\n* ``circup list`` - lists all modules requiring an update found on the the\n connected CIRCUITPYTHON device.\n* ``circup update`` - interactively update out-of-date modules found on the\n connected CIRCUITPYTHON device.\n* 100% test coverage.\n* Documentation.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/adafruit/circup", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "circup", "package_url": "https://pypi.org/project/circup/", "platform": "", "project_url": "https://pypi.org/project/circup/", "project_urls": { "Homepage": "https://github.com/adafruit/circup" }, "release_url": "https://pypi.org/project/circup/0.0.4/", "requires_dist": null, "requires_python": "", "summary": "A tool to manage/update libraries on CircuitPython devices.", "version": "0.0.4" }, "last_serial": 5939258, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "754c56497891dcdc7c850ee4c11571ca", "sha256": "13555ac4b0ffd3bd9fac2ab38b9c2f2971094e7c3065da47dbe63f49f33b5c0c" }, "downloads": -1, "filename": "circup-0.0.1.tar.gz", "has_sig": false, "md5_digest": "754c56497891dcdc7c850ee4c11571ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14238, "upload_time": "2019-10-04T17:45:21", "url": "https://files.pythonhosted.org/packages/67/94/fb0526baa550ddfc503b49edbe4932c7e1999e8aa1488cc30f1057cc0547/circup-0.0.1.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "cbe372f2f2e5f2e7f403449c0f97e6e6", "sha256": "6b866b8adce5e67446eb4d76105dceccb3c95f5fb5484e1953dfc0347f9f99c8" }, "downloads": -1, "filename": "circup-0.0.3.tar.gz", "has_sig": false, "md5_digest": "cbe372f2f2e5f2e7f403449c0f97e6e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14523, "upload_time": "2019-10-04T22:15:24", "url": "https://files.pythonhosted.org/packages/29/e1/d6b758935b29e4834547790ca7fe97393ba44aab435b4b35771cee38594a/circup-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "18c2f4a2d77dd7c0c1baf9f5923981b1", "sha256": "4816f57d687e1db0de17676e18054b4b17bf754c775a6d153d8e9c5380acfa32" }, "downloads": -1, "filename": "circup-0.0.4.tar.gz", "has_sig": false, "md5_digest": "18c2f4a2d77dd7c0c1baf9f5923981b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15237, "upload_time": "2019-10-07T14:58:22", "url": "https://files.pythonhosted.org/packages/cb/91/0ba0efee4cab745f09b6807d0005070b9bf79a1a995eed86d6fd970b2ef9/circup-0.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "18c2f4a2d77dd7c0c1baf9f5923981b1", "sha256": "4816f57d687e1db0de17676e18054b4b17bf754c775a6d153d8e9c5380acfa32" }, "downloads": -1, "filename": "circup-0.0.4.tar.gz", "has_sig": false, "md5_digest": "18c2f4a2d77dd7c0c1baf9f5923981b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15237, "upload_time": "2019-10-07T14:58:22", "url": "https://files.pythonhosted.org/packages/cb/91/0ba0efee4cab745f09b6807d0005070b9bf79a1a995eed86d6fd970b2ef9/circup-0.0.4.tar.gz" } ] }