{ "info": { "author": "Tommy Yu", "author_email": "tommy.yu@auckland.ac.nz", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Plugins", "Framework :: Setuptools Plugin", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: OS Independent", "Operating System :: POSIX", "Operating System :: POSIX :: BSD", "Operating System :: POSIX :: Linux", "Programming Language :: JavaScript", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Testing", "Topic :: System :: Software Distribution", "Topic :: Utilities" ], "description": "calmjs.dev\n==========\n\nPackage for aiding the development of JavaScript code to be provided as\npart of Python packages through integration with `Node.js`_ development\ntools into a Python environment via the `Calmjs framework`_.\n\n.. image:: https://travis-ci.org/calmjs/calmjs.dev.svg?branch=2.3.0\n :target: https://travis-ci.org/calmjs/calmjs.dev\n.. image:: https://ci.appveyor.com/api/projects/status/0mxtiaf2j98w5fy6/branch/2.3.0?svg=true\n :target: https://ci.appveyor.com/project/metatoaster/calmjs-dev/branch/2.3.0\n.. image:: https://coveralls.io/repos/github/calmjs/calmjs.dev/badge.svg?branch=2.3.0\n :target: https://coveralls.io/github/calmjs/calmjs.dev?branch=2.3.0\n\n\nIntroduction\n------------\n\nPython packages can contain arbitrary resource files, which can include\nJavaScript sources. This situation is commonly found in packages that\nprovide frontend functionalities that enhance user experience that\nrequire interactions with a related backend Python code running on the\nserver provided by the given package. In order to facilitate the\ntesting of those JavaScript code from those Python packages, commonly\n`Node.js`_ packages and frameworks are often used to achieve this.\n\nTypically, for the management of this dependency, this often require two\nor more separate package management systems that are not properly aware\nof each other, resulting in often cumbersome linkage or needless\nduplication of packages installed on a given system. Moreover, the\nconfigurations files for the Node.js/JavaScript package dependencies,\nalong with the building of artifacts and testing of the JavaScript\nprovided by those Python packages are very specific to the given project\nand generally not portable. If multiple such packages are required for\na downstream Python project, the scripts and definition files for\nbuilding of artifacts and testing generally have to be manually\nmodified, which is often a very aggravating and error-prone process.\n\nThe Calmjs framework, however, provides the means for Python packages to\ndeclare the JavaScript modules they are to export, and this package,\n|calmjs.dev|, provides the means to consume those information such that\nthe JavaScript tests declared within those Python packages can be\nexecuted without having to manually construct and verify the paths to\nthe source and tests files, no matter where they are within the\nenvironment, provided they are properly declared through the Calmjs\nframework. The tests can then run either against the JavaScript sources\nprovided by the Python package through the artifact generation\nframework, or against prebuilt artifacts that contain those\nfunctionalities. Naturally, the support for the artifact generation\nframework requires integration with the Calmjs framework. Currently,\ngeneration of AMD artifacts is supported using the |calmjs.rjs|_, and\nthe generation of |webpack|_ artifacts supported through the\n|calmjs.webpack|_ package.\n\n.. |calmjs| replace:: ``calmjs``\n.. |calmjs.dev| replace:: ``calmjs.dev``\n.. |calmjs.rjs| replace:: ``calmjs.rjs``\n.. |calmjs.webpack| replace:: ``calmjs.webpack``\n.. |npm| replace:: ``npm``\n.. |setuptools| replace:: ``setuptools``\n.. |webpack| replace:: ``webpack``\n.. _Calmjs framework: https://pypi.org/project/calmjs/\n.. _calmjs: https://pypi.org/project/calmjs/\n.. _calmjs.rjs: https://pypi.org/project/calmjs.rjs/\n.. _calmjs.webpack: https://pypi.org/project/calmjs.webpack/\n.. _Node.js: https://nodejs.org/\n.. _setuptools: https://pypi.org/project/setuptools/\n.. _webpack: https://webpack.js.org/\n\n\nFeatures\n--------\n\n- Provides a set of commonly used development tools that are commonly\n used for testing JavaScript code. In brief, these include:\n\n |karma|_\n Test runner for running tests included with packages against the\n JavaScript code contained there.\n |mocha|_\n A JavaScript test framework for writing unit tests for node.js or\n the browser.\n |phantomjs|_\n A headless webkit with JavaScript API capable of interfacing with\n karma; this enables the running of integration JavaScript tests.\n |sinon|_\n A set of spies, stubs and mocks for JavaScript, for working with\n unit testing frameworks.\n\n Plus other integration packages that get them to work with each other,\n namely the various ``karma-*`` packages for integration with |karma|.\n For full details on the environment that will be installed through the\n |calmjs| framework, the command ``calmjs npm calmjs.dev`` can be\n invoked to view the ``package.json`` once this package is installed\n into a Python environment. For installation, please refer to the\n following section.\n\n- Through the use of the |calmjs| module registry system, Python\n packages can declare JavaScript sources that can be passed through\n specific toolchains that build them into deployable artifacts. The\n |calmjs.dev| package provide a common framework for the generation of\n configuration files for the execution of tests through the karma test\n runner.\n\n The usage of this is typically through the |calmjs| runtime system.\n\n.. |karma| replace:: ``karma``\n.. |mocha| replace:: ``mocha``\n.. |phantomjs| replace:: ``phantomjs``\n.. |sinon| replace:: ``sinon``\n.. _karma: https://www.npmjs.com/package/karma\n.. _mocha: https://www.npmjs.com/package/mocha\n.. _phantomjs: https://www.npmjs.com/package/phantomjs-prebuilt\n.. _sinon: https://www.npmjs.com/package/sinon\n\n\nInstallation\n------------\n\nAs the goal of |calmjs.dev| is to integrate Node.js development tools\ninto a Python environment, both Node.js and |npm| are required to be\navailable within the target installation environment; if they are not\ninstalled please follow the installation steps for `Node.js`_\nappropriate for the target operating system/environment/platform.\n\nNaturally, since this is achieved through |calmjs|, it will need to be\navailable in the target installation environment; however, this is\nachieved simply by installing |calmjs.dev| through ``pip`` from PyPI.\n\n.. code:: console\n\n $ pip install calmjs.dev\n\nAlternative installation methods (for developers, advanced users)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDevelopment is still ongoing with |calmjs.dev|, for the latest features\nand bug fixes, the development version may be desirable. However, in\norder for the source installation to function correctly, the |calmjs|\npackage *must* be available in the current environment for all the\npackage metadata be correctly generated. With recent versions of\n``pip`` and ``setuptools`` that correctly support the ``setup_requires``\nkeyword, the following command should ensure that |calmjs| be available\nbefore ``pip`` attempts to set up this package. The latest development\nversion of this package may be installed using:\n\n.. code:: console\n\n $ pip install git+https://github.com/calmjs/calmjs.dev.git#egg=calmjs.dev\n\nOr alternatively, clone the git repository manually and run the command\nmanually, e.g.:\n\n.. code:: console\n\n $ git clone https://github.com/calmjs/calmjs.dev.git\n $ cd calmjs.dev\n $ pip install -e .\n\nFailing to have |calmjs| be available before the source installation of\n|calmjs.dev| will result in the critical Node.js dependencies not being\ndefined correctly for this package. This may be corrected by\nregenerating them using the following at the root of this source based\ninstallation:\n\n.. code:: console\n\n $ python setup.py egg_info\n\nIf no error message that indicate the failure to usage of certain\nkeywords, run the tests (documented in the next section) to be sure\nthat the package is functioning correctly.\n\nInstallation of Node.js external dependencies\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAs this package integrates a number of Node.js packages to achieve the\nintended functionality of integration with that environment, Node.js\npackages required by this package can be installed into the current\nworking directory through the |calmjs| executable with the included\n|npm| command:\n\n.. code:: console\n\n $ calmjs npm --install calmjs.dev\n\nTesting the installation\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nFinally, to verify for the successful installation of |calmjs.dev|, the\nincluded tests may be executed through this command:\n\n.. code:: console\n\n $ python -m unittest calmjs.dev.tests.make_suite\n\nHowever, if the steps to install external Node.js dependencies to the\ncurrent directory was followed, the current directory may be specified\nas the ``CALMJS_TEST_ENV`` environment variable. Under POSIX compatible\nshells this may be executed instead from within that directory:\n\n.. code:: console\n\n $ CALMJS_TEST_ENV=. python -m unittest calmjs.dev.tests.make_suite\n\nDo note a number of failures during execution of Karma may appear; this\nis normal as these are tests that involve the simulation of failures to\nensure proper error handling on real test failures.\n\nUsage\n-----\n\nThis package provides features that may be used as part of the |calmjs|\nruntime, be used in conjunction with toolchains that already provide\nintegration with the underlying toolchain for this package (which also\nimplies that toolchain developers are provided the ability build these\nintegration), and finally, a way for package developers to make use of\nthese features to quickly set up their package for testing of their\nJavaScript sources in conjunction with these toolchains.\n\nThe default tool is meant to provide a |calmjs| runtime that is injected\nbefore a |calmjs| toolchain runtime that is responsible for the\ngeneration of deployable artifacts, such as AMD bundles (through\nRequireJS) or webpack bundles (through webpack). Typically, this\npackage is used in conjunction with the respective integration packages\n(e.g. |calmjs.rjs| and |calmjs.webpack|). Those specific packages will\nhave additional instructions on how they make use of this package, such\nas the instructions on how to create the entry points to support the\ntesting of artifacts using the ``calmjs artifact karma`` command that\nis provided by this package.\n\nWith RequireJS\n~~~~~~~~~~~~~~\n\nFor instance, a developer might execute the ``r.js`` tool through\n|calmjs.rjs| for creation of an AMD bundle from their Python project\nusing a command such as:\n\n.. code:: console\n\n $ calmjs rjs example.package\n\nThe above command would package all the JavaScript code provided by the\nPython package ``example.package`` into an AMD bundle artifact through\n``r.js``. As the ``example.package`` may also provide tests for its\nJavaScript code (naturally written in JavaScript), it may be executed\nthrough the karma test runner provided by the selected package. The\ncommand is as simple as adding ``karma`` before the toolchain runtime,\nlike:\n\n.. code:: console\n\n $ calmjs karma rjs example.package\n\nThis would apply a test advice to the ``rjs`` toolchain runtime and\ninvoke it. Normally, before the bundling is done, the tests will be\nexecuted against the transpiled sources in the build directory. Note\nthat the test advice is also implemented by |calmjs.rjs| to ensure that\nthis testing workflow is properly integrated.\n\nWith webpack\n~~~~~~~~~~~~\n\nLikewise for |calmjs.webpack|, where its support for |webpack| is also\nprovided through a similar mechanism such that the following command\nwill execute the tests for the package through the typical |webpack|\nmethod of |karma| invocation:\n\n.. code:: console\n\n $ calmjs karma webpack example.package\n\nSkip artifact building\n~~~~~~~~~~~~~~~~~~~~~~\n\nIf the generation of the artifact or bundle file after testing concludes\n(whether success or failure) is not desired, the ``-T`` or the\n``--only-test`` flag may be applied to the ``karma`` command like so:\n\n.. code:: console\n\n $ calmjs karma -T webpack example.package\n $ calmjs karma --only-test rjs example.package\n\nEasily test the generated bundle artifact using existing tests\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo run tests against pre-generated artifact files, |calmjs.dev| provides\na surrogate toolchain runtime specific for the ``karma`` command that\nmay be used to achieve this purpose. For example, given an artifact\nfile (e.g. ``bundle.js``), it is possible to test whether it correctly\nincluded JavaScript code generated/provided by ``example.package`` using\ntests provided by the same package with the following command:\n\n.. code:: console\n\n $ calmjs karma run \\\n --artifact=bundle.js \\\n --test-with-package=example.package\n\nHowever, for more complicated toolchains and packages this will probably\nnot work, as the generation of these artifacts typically involve extra\noptional advices that have been added. To address that, one may apply\nthe ``--toolchain-package`` flag which serves a similar purpose as the\n``--optional-advice`` flag for certain toolchains. For |calmjs.rjs|,\nthis is necessary. The full command may be like so:\n\n.. code:: console\n\n $ calmjs karma run \\\n --artifact=bundle.js \\\n --test-with-package=example.package \\\n --toolchain-package=calmjs.rjs\n\nLikewise for |webpack|; if the selected artifact file is generated\nthrough ``calmjs webpack``, it may be tested using the following:\n\n.. code:: console\n\n $ calmjs karma run \\\n --artifact=bundle.js \\\n --test-with-package=example.package \\\n --toolchain-package=calmjs.webpack\n\nAs with all |calmjs| tools, more help can be acquired by appending\n``-h`` or ``--help`` to each of the runtime commands, i.e. ``calmjs\nkarma -h`` or ``calmjs karma run -h``. Replacing the ``-h`` flag with\n``-V`` will report the version information for the underlying packages\nassociated with the respective runtime used.\n\nMore on testing in conjunction with artifacts\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``--artifact`` flag can also be specified directly on the ``karma``\nrunner; this has the consequence of enabling the testing of limited or\nexplicitly mapped JavaScript sources exported by specific Python\nmodules. What this means is that instead of building and testing all\nthe dependency modules along with a given module, all those dependencies\ncan be applied to the test environment as a separate, complete artifact.\nThis has the effect of removing the dependency sources from the build\ndirectory such that coverage report no longer shows up, with the bonus\nof also testing the artifact whether or not the it is compatible with\nthe sources being tested. An example with the ``nunja.stock`` package\nwhich requires ``nunja``:\n\n.. code:: console\n\n $ calmjs rjs nunja\n $ calmjs karma --coverage --artifact=nunja.js --cover-test \\\n rjs nunja.stock --sourcepath-method=explicit\n\nThe first command produces the artifact file ``nunja.js``, which is then\nimmediately used by the subsequent command which explicitly filters out\nall other sources not specified. Otherwise, the standard way is that\nthe dependencies will also be included into the test and the resulting\nartifact file. The ``--cover-test`` flag denotes that the test coverage\nreporting should be extended to the tests provided. Similarly, enabling\nthe ``--cover-artifact`` flag will extend coverage reporting to the\nartifacts included for the test run.\n\nTesting of prebuilt artifacts defined for packages\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPackage level artifacts defined and generated through the tools that\nmake use of the ``calmjs.artifacts`` registry system may be tested using\nthe ``calmjs artifact karma`` tool if the artifact entry in the\n``calmjs.artifacts`` registry also has a corresponding entry in the\n``calmjs.artifacts.tests`` registry. Typically, the module that the\nentry point references for the artifact entry will be documented by the\ntoolchain package that supplied the builder entry. If the artifacts\nin the package to be tested are created and the package has well-defined\nentries suitable for testing purpose, the following command may be\nexecuted to test the defined and generated artifacts:\n\n.. code:: console\n\n $ calmjs artifact karma example.package\n\nThere are cases where the test execution may require sourcing tests from\nother packages; this use case is especially valid for dependent packages\nwhere their developer want to ensure that the changes they may have made\nto their dependencies through the extensions they developed and provided\nby their packages have no negative impact to existing functionality.\nThis functionality is implemented by the ``--test-with-package`` flag,\nwhich may be used to specify which package the artifact should source\nthe tests from.\n\n.. code:: console\n\n $ calmjs artifact karma example.package \\\n --test-with-package example.dependent\n\nThe above command will use karma to execute tests provided by the\n``example.dependent`` package against the artifacts defined for\n``example.package``. If the artifacts were correctly built, with no\nnew code breaking existing functionality that was provided by the\n``example.dependent`` package, all tests should pass.\n\nNote that ``--test-with-package`` flag overrides the list of source\npackages that will provide the tests to be tested against the artifact.\n\nIf additional artifacts are required before the inclusion of the package\nartifact into the test runner (e.g. testing for possible conflicts that\nartifacts may introduce to the package artifact), they may be specified\nusing the ``--artifact`` flag; specified artifacts will be prepended to\nthe list of artifacts provided by the builder for the test execution.\n\n\nTroubleshooting\n---------------\n\nThe following may be some issues that may be encountered with standard\nor typical usage of |calmjs.dev|.\n\nError: No provider for \"framework:mocha\"! (Resolving: framework:mocha)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe most likely cause of this error is that the |npm| dependencies\nspecified for this package is not available for the current Node.js\nenvironment. Please ensure that is installed before trying again. One\nmethod is to prepend |calmjs.dev| to the ``calmjs npm`` install command,\ne.g:\n\n.. code:: console\n\n $ calmjs npm --install calmjs.dev ...\n\nAlternatively, package developers can have extras that requires this\npackage, and instruct downstream users interested in the development of\nthat package to install and use the package with that extras flag\nenabled. For instance, ``nunja`` has the support for that:\n\n.. code:: console\n\n $ calmjs npm --install nunja[dev]\n\nERROR [plugin]: \"karma-...\" plugin: ...\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nA message specific to some plugin may result in the test runner not\nbeing able to execute any test. This is typically caused by certain\nversions of karma test runner not being able to cleanly deal with\nmisbehaving plugins that is available in the ``node_modules`` directory.\nIf the plugin shown inside the quote (starting with ``karma-``) is\nunnecessary for the execution of tests, it should be removed and the\ntest command should be executed again.\n\nUserWarning: Unknown distribution option: 'package_json'\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nInstallation using the development method will show the above message if\n|calmjs| was not already installed into the current environment. Please\neither reinstall, or regenerate the metadata by running:\n\n.. code:: console\n\n $ python setup.py egg_info\n\nIn the root of the |calmjs.dev| source directory to ensure correct\nbehavior of this package.\n\n\nContribute\n----------\n\n- Issue Tracker: https://github.com/calmjs/calmjs.dev/issues\n- Source Code: https://github.com/calmjs/calmjs.dev\n\n\nLegal\n-----\n\nThe Calmjs project is copyright (c) 2016 Auckland Bioengineering\nInstitute, University of Auckland. |calmjs.dev| is licensed under the\nterms of the GPLv2 or later.\n\nChangelog\n=========\n\n2.3.0 (2019-05-28)\n------------------\n\n- Provide the ``-T`` or ``--test-only`` flag to the ``karma`` runtime to\n allow toolchain execution be terminated after the tests are executed\n regardless of outcome. This would generally allow the test to run\n without forcing the toolchain to build the artifact. [\n `#11 `_\n ]\n\n2.2.2 (2018-08-17)\n------------------\n\n- Configuration writers that write out karma configuration scripts that\n import other Node.js modules that are present within the environment\n that the karma binary reside in should no longer encounter a ``Error:\n Cannot find module`` message. [\n `#10 `_\n ]\n- Permit the use of other karma_conf dict/mapping types in the spec. [\n `#9 `_\n ]\n\n2.2.1 (2018-08-01)\n------------------\n\n- Allow the karma configuration writer to be specified in the spec, such\n that it may be overridden by framework integration packages. [\n `#8 `_\n ]\n\n2.2.0 (2018-07-24)\n------------------\n\n- Support the correct resolution of test child module registries, which\n was introduced in ``calmjs-3.3.0``. [\n `#6 `_\n ]\n- Ensure that a missing karma binary is also correctly dealt with by the\n same set of exception and flags. [\n `#7 `_\n ]\n\n2.1.0 (2018-05-28)\n------------------\n\n- Ensure the exit code indicates failure if the artifact test entry\n point references an import that cannot be resolved (failure to set up\n the test must result in a failure). [\n `#3 `_\n ]\n- Make use of the corrected semantics provided by calmjs-3.1.0 for the\n deferred export location verification, which also silences the\n calmjs-4.0.0 deprecation warning. [\n `#5 `_\n ]\n\n2.0.0 (2018-01-10)\n------------------\n\n- Migration to the calmjs-3.0.0 API.\n- Bumped a number of dependencies on Node.js packages.\n- The paths that are covered by the test coverage report are now\n recorded in the Spec as part of the test execution workflow through\n the KarmaDriver.\n- Provide framework and command for testing of predefined artifacts\n generated for packages defined through the ``calmjs.artifacts``\n registry; ``calmjs.artifacts.tests`` registry was created such that\n toolchain packages may declare the test compliment builder functions\n to facilitate testing for their dependent packages.\n- Implemented ``--cover-report-type`` flag to support the specification\n of multiple coverage report types to be generated, and ensured that\n the defined report types actually work (a karma/istanbul bug was\n found and a workaround was implemented).\n- A number of internal code refactor, i.e. a number of internal API\n changes have happened.\n- Deprecated ``--coverage-type`` flag, as it is inconsistently named and\n that features provided by ``--cover-report-type`` superseded this.\n- Deprecated ``--test-package`` flag in favor of ``--test-with-package``\n for more clarity about the intention of that flag.\n\n1.1.0 (2017-08-10)\n------------------\n\n- Tests are now automatically wrapped by a default template when served\n by karma to better limit the scope of the variables defined within\n each file. This can be disabled using ``--no-wrap-tests`` flag on the\n ``karma`` runtime.\n\n1.0.3 (2017-05-22)\n------------------\n\n- Move the ``--artifact`` and ``--cover-artifact`` flag up to the main\n ``karma`` runtime to permit wider and more flexible usage for all\n runners.\n- Correctly report the path of missing specified artifacts in the logs.\n\n1.0.2 (2017-01-27)\n------------------\n\n- Provide test prefix key and constant.\n\n1.0.1 (2016-11-30)\n------------------\n\n- Correct the inability to launch standard graphical browsers directly\n via the runner under Windows.\n\n1.0.0 (2016-11-18)\n------------------\n\n- Initial release of the development support for the calmjs framework.\n- Include karma test runner integration as a calmjs runtime that can\n accept calmjs toolchain runtimes to facilitate testing.\n- Generation of test coverage reports of JavaScript sources executed.\n- Leverage the toolchain advice system for adding the test runner and\n also permit the modification of test configurations by toolchain\n implementations that require specific instructions for a successful\n execution of tests.\n- Permit integration with other packages for testing artifacts generated\n by other systems.\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/calmjs/calmjs.dev", "keywords": "", "license": "gpl", "maintainer": "", "maintainer_email": "", "name": "calmjs.dev", "package_url": "https://pypi.org/project/calmjs.dev/", "platform": "", "project_url": "https://pypi.org/project/calmjs.dev/", "project_urls": { "Homepage": "https://github.com/calmjs/calmjs.dev" }, "release_url": "https://pypi.org/project/calmjs.dev/2.3.0/", "requires_dist": [ "calmjs (<4,>=3.3.0)", "calmjs.parse (>=1.0.0)" ], "requires_python": "", "summary": "Package for aiding the development of JavaScript code to be provided as part of Python packages through integration with Node.js development tools into a Python environment via the Calmjs framework.", "version": "2.3.0" }, "last_serial": 5325185, "releases": { "0.0": [], "1.0.0": [ { "comment_text": "", "digests": { "md5": "9b3c182f922ff563d4b54dd9c40dd4f4", "sha256": "7bcb1798e213c7bf8876ffc95049e4a2883eb410a74a8b1a96ff60c3c332c54d" }, "downloads": -1, "filename": "calmjs.dev-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9b3c182f922ff563d4b54dd9c40dd4f4", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 33477, "upload_time": "2016-11-18T07:50:10", "url": "https://files.pythonhosted.org/packages/6b/2b/d6b1497f09aa79b16c688c5e955faf697437ee975050767cb1e9df2c5931/calmjs.dev-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f5dac3fa0813e12fb1726f453f1ce5da", "sha256": "791b22e260797bc1f25e03016899235a914ad567af9f220f4574c7f024fa7423" }, "downloads": -1, "filename": "calmjs.dev-1.0.0.zip", "has_sig": false, "md5_digest": "f5dac3fa0813e12fb1726f453f1ce5da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40445, "upload_time": "2016-11-18T07:50:07", "url": "https://files.pythonhosted.org/packages/59/0e/b9f0c9e70cc4a331b1edcbe1f0014d592c4d855898c52d9150766bdcd66e/calmjs.dev-1.0.0.zip" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "deb747b119251e9d944514de5b3f9736", "sha256": "a305a4ceb26557c59621aff773c0f78ce43d0df5a5303c5a916b492f67ae32c3" }, "downloads": -1, "filename": "calmjs.dev-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "deb747b119251e9d944514de5b3f9736", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 33919, "upload_time": "2016-11-30T02:32:07", "url": "https://files.pythonhosted.org/packages/da/16/b4532b9b20f7598ef06caeb6439f430586c9989571866536c6a21e1d335b/calmjs.dev-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d6000be10654ca4e51e5578b34d76356", "sha256": "7a35bdc6ee2d20e8aa991c145e31ec526922e322617e2d1512cf025e7de7215e" }, "downloads": -1, "filename": "calmjs.dev-1.0.1.zip", "has_sig": false, "md5_digest": "d6000be10654ca4e51e5578b34d76356", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40954, "upload_time": "2016-11-30T02:32:04", "url": "https://files.pythonhosted.org/packages/28/ba/23a730562c29b1239321dc7811c168e14bffb7a3d28fb0dd6d99e9334142/calmjs.dev-1.0.1.zip" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "34d8ae59f1226acf5451bda3b13b1276", "sha256": "cdd04d2c0849dc20244af77fb58f7deeca5b6b0ba0b79b2e098fa99e8544b70e" }, "downloads": -1, "filename": "calmjs.dev-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "34d8ae59f1226acf5451bda3b13b1276", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 34032, "upload_time": "2017-01-27T01:51:05", "url": "https://files.pythonhosted.org/packages/8c/23/d44cbb55a4448ac10de113512f96cb3ec33c0148621145344c0ef6f8485c/calmjs.dev-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f9d800b88b3db64ab7fcd529c7d718f4", "sha256": "38ec4396ab5f2fe0fcb9581f955cacd92cb981a3abe1cdfd78176735816bc318" }, "downloads": -1, "filename": "calmjs.dev-1.0.2.zip", "has_sig": false, "md5_digest": "f9d800b88b3db64ab7fcd529c7d718f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41103, "upload_time": "2017-01-27T01:51:08", "url": "https://files.pythonhosted.org/packages/ed/8a/bc562230c0a4eb94e29cfcd4aaa655edf19bbcb1b33d47f60b359b7bcb6c/calmjs.dev-1.0.2.zip" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "eb90f075c288da35aeedd6a8981e0f9a", "sha256": "568bc517f5380297485681ee66b68bf6804c06f25526bac8dce626ba194658b3" }, "downloads": -1, "filename": "calmjs.dev-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eb90f075c288da35aeedd6a8981e0f9a", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 36009, "upload_time": "2017-05-22T07:06:25", "url": "https://files.pythonhosted.org/packages/37/bd/08af61b47a2222ff809427fbb87b77957cd4c733155af6611af3822d5e50/calmjs.dev-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "003c62bc4efc72c3e28bfdca6e55bce0", "sha256": "2d1dd6fae4328d66ad2de0c7b8ccea7a7e48c6226aeb7d552c47376ff91dca9d" }, "downloads": -1, "filename": "calmjs.dev-1.0.3.zip", "has_sig": false, "md5_digest": "003c62bc4efc72c3e28bfdca6e55bce0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43863, "upload_time": "2017-05-22T07:06:23", "url": "https://files.pythonhosted.org/packages/22/28/0cd40ba477ff85a93669f50ae8893558125f9259349bc70d3c7d118d0cda/calmjs.dev-1.0.3.zip" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "7120b7792c3e8d97b108a15a1ddb9943", "sha256": "1a5eead82a1787ef2ddddc0193b4a455ea24a7a8004938c4fb40de57794dbe7e" }, "downloads": -1, "filename": "calmjs.dev-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7120b7792c3e8d97b108a15a1ddb9943", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 37070, "upload_time": "2017-08-10T07:53:07", "url": "https://files.pythonhosted.org/packages/0c/33/2d2d5bb80654abbe0218bc7d3764ee6b31646052848b24bd62b8936c7b47/calmjs.dev-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d12804b304fc9fb626dd580ccca00022", "sha256": "cb3c2f20bf8f7a16368331bb7c077cb006c292e8db41bda2affb9751debd2e52" }, "downloads": -1, "filename": "calmjs.dev-1.1.0.zip", "has_sig": false, "md5_digest": "d12804b304fc9fb626dd580ccca00022", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45151, "upload_time": "2017-08-10T07:53:09", "url": "https://files.pythonhosted.org/packages/44/89/448df8ca697f3bc4f84b183f17c3911d7451b2c37ba280f572dc32b38ecd/calmjs.dev-1.1.0.zip" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "a7a34218c1a5ddb47e220a20ecae5abf", "sha256": "28c7bb82f2c6fa5885d48383c56a6999b4dad95fceb3ad7beb73bae5400d54cb" }, "downloads": -1, "filename": "calmjs.dev-2.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a7a34218c1a5ddb47e220a20ecae5abf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 50339, "upload_time": "2018-01-10T15:54:47", "url": "https://files.pythonhosted.org/packages/d7/de/8d06d20315ddc595ed9b585a6228bf8a31ec63eb511b517166fedb3f2539/calmjs.dev-2.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ce5f96d45f4adfb7be8c6c6f876f937e", "sha256": "78a03eaa266dba10479d65fa223664f054156f5f58d5155e728f33968a67d7b2" }, "downloads": -1, "filename": "calmjs.dev-2.0.0.zip", "has_sig": false, "md5_digest": "ce5f96d45f4adfb7be8c6c6f876f937e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59911, "upload_time": "2018-01-10T15:54:49", "url": "https://files.pythonhosted.org/packages/7e/26/9f8fbaf679b5073b7b9e299389928206184ea9f65d9d81334d8ad6ce1a9c/calmjs.dev-2.0.0.zip" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "745b0d4629aeae3f6f84ee2677999cff", "sha256": "8b4094ab84d71be2c007da5830e8b3e8eb2ff8474343d7f7d4263637412da294" }, "downloads": -1, "filename": "calmjs.dev-2.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "745b0d4629aeae3f6f84ee2677999cff", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42944, "upload_time": "2018-05-28T03:48:03", "url": "https://files.pythonhosted.org/packages/f6/15/cf9e85270cd7ee9fe1d76c70bc9e196a892cb7f2c7036df527704468b306/calmjs.dev-2.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a283b9cc2f5739ffa83ca852ab2a4567", "sha256": "466c471f8529b1ce390c43339fe6fb418cd98ffef27be95e8072199e73a51a9e" }, "downloads": -1, "filename": "calmjs.dev-2.1.0.zip", "has_sig": false, "md5_digest": "a283b9cc2f5739ffa83ca852ab2a4567", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61011, "upload_time": "2018-05-28T03:48:05", "url": "https://files.pythonhosted.org/packages/9c/20/73f7548efad69681ab846b8db0616e9afb1ea2d4cfe432350aa7bacaf94f/calmjs.dev-2.1.0.zip" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "c8c80c12f49e32db06570ee68adbb23b", "sha256": "014ee9842781f1ff64b8e90eea32c4bdc4ef1c47b4b6d06ab6b4f6beebcdbbe1" }, "downloads": -1, "filename": "calmjs.dev-2.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c8c80c12f49e32db06570ee68adbb23b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 43786, "upload_time": "2018-07-24T06:41:09", "url": "https://files.pythonhosted.org/packages/98/d1/33ef2739fecef47c22020f8c23d2fb6b2ebae8a641fe944ac7543af93221/calmjs.dev-2.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "735280d3391bf4902fc1e9d0e324843b", "sha256": "65ce5b13ca78fe065992202e39cb0ab16beb1d20c9dc734ee6dd3f55e6b29838" }, "downloads": -1, "filename": "calmjs.dev-2.2.0.zip", "has_sig": false, "md5_digest": "735280d3391bf4902fc1e9d0e324843b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 62084, "upload_time": "2018-07-24T06:41:11", "url": "https://files.pythonhosted.org/packages/39/1a/58a01567d4f2c9259ab9b341dc41bab11617a1669afe6f5167964d3d2dae/calmjs.dev-2.2.0.zip" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "6a2bc16ca14a5e7402330402d601ac12", "sha256": "bef7dc33a4349dad8dc3849a5ad99d4b747edceee6c7473aea99744cd3538a9d" }, "downloads": -1, "filename": "calmjs.dev-2.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6a2bc16ca14a5e7402330402d601ac12", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 44555, "upload_time": "2018-08-01T08:41:25", "url": "https://files.pythonhosted.org/packages/3f/fb/4c2c7d11f4e24a56aa745fba040c653baacd6e2eec3134d29e87c7013d27/calmjs.dev-2.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "39fe1c7853d12eb00c12d25ed442ff37", "sha256": "c76fcdd2da5c1afe8411851c957296113ebb4d08ce64b7d27d31769c2444695e" }, "downloads": -1, "filename": "calmjs.dev-2.2.1.zip", "has_sig": false, "md5_digest": "39fe1c7853d12eb00c12d25ed442ff37", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 62983, "upload_time": "2018-08-01T08:41:27", "url": "https://files.pythonhosted.org/packages/74/fe/03217cd9e4aca2807de8c2027f7e694dded530b25c4bfd0ac11852ee553f/calmjs.dev-2.2.1.zip" } ], "2.2.2": [ { "comment_text": "", "digests": { "md5": "7a4bc1f984c1c841d59485b119a9a527", "sha256": "15aee80848b7692c1db291ee96518a30cf376354fd58d775afddb34826d1531f" }, "downloads": -1, "filename": "calmjs.dev-2.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7a4bc1f984c1c841d59485b119a9a527", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 45492, "upload_time": "2018-08-17T04:05:41", "url": "https://files.pythonhosted.org/packages/ac/45/f6a4b602b3b531b09d757f6cd5fe3d9e81090fec9151987ce95023c0afc3/calmjs.dev-2.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ad0066f05413e917b416d69b02619a93", "sha256": "de60e0735dec165049ffdabfd178e1a5dd2505517f8a0d91c6c0d51e06abb5e2" }, "downloads": -1, "filename": "calmjs.dev-2.2.2.zip", "has_sig": false, "md5_digest": "ad0066f05413e917b416d69b02619a93", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 64234, "upload_time": "2018-08-17T04:05:43", "url": "https://files.pythonhosted.org/packages/87/3c/0f5ea565a5e3b4193b8da98f3d67082383253df14ac462fce3b33caea673/calmjs.dev-2.2.2.zip" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "0b2eb6a47cbf1ae07c0083e61a88d173", "sha256": "6b95c24813ce9f66cdeff40357385d8da545df9bdef9d34a4838cdbd0c034a14" }, "downloads": -1, "filename": "calmjs.dev-2.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0b2eb6a47cbf1ae07c0083e61a88d173", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46470, "upload_time": "2019-05-28T06:03:36", "url": "https://files.pythonhosted.org/packages/7c/c4/b7e3cbf2733f1ad528297f1eaaef31f8c0632817d00cd7d84ed5248cc498/calmjs.dev-2.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "58332585590ff4127be8223ef71cf9e6", "sha256": "bf794e4fff57523a2e4c9bf02736b15430795119d8456ed8d9f33c670bda17e2" }, "downloads": -1, "filename": "calmjs.dev-2.3.0.zip", "has_sig": false, "md5_digest": "58332585590ff4127be8223ef71cf9e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66275, "upload_time": "2019-05-28T06:03:44", "url": "https://files.pythonhosted.org/packages/8f/da/23d21f781007c903667af3daf4779c2b426d06e01cc58d333101211f693a/calmjs.dev-2.3.0.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0b2eb6a47cbf1ae07c0083e61a88d173", "sha256": "6b95c24813ce9f66cdeff40357385d8da545df9bdef9d34a4838cdbd0c034a14" }, "downloads": -1, "filename": "calmjs.dev-2.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0b2eb6a47cbf1ae07c0083e61a88d173", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46470, "upload_time": "2019-05-28T06:03:36", "url": "https://files.pythonhosted.org/packages/7c/c4/b7e3cbf2733f1ad528297f1eaaef31f8c0632817d00cd7d84ed5248cc498/calmjs.dev-2.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "58332585590ff4127be8223ef71cf9e6", "sha256": "bf794e4fff57523a2e4c9bf02736b15430795119d8456ed8d9f33c670bda17e2" }, "downloads": -1, "filename": "calmjs.dev-2.3.0.zip", "has_sig": false, "md5_digest": "58332585590ff4127be8223ef71cf9e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66275, "upload_time": "2019-05-28T06:03:44", "url": "https://files.pythonhosted.org/packages/8f/da/23d21f781007c903667af3daf4779c2b426d06e01cc58d333101211f693a/calmjs.dev-2.3.0.zip" } ] }