{ "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 :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Build Tools", "Topic :: System :: Software Distribution", "Topic :: Utilities" ], "description": "calmjs.sassy\n============\n\nPackage for extending the `Calmjs framework`_ to support the declaration\nand usage of |sass|_ in a manner that crosses Python package boundaries\nby exposing an ``import`` system that mimics the package namespaces\navailable within the current Python environment, such that styling rules\ncan be more easily propagated to their dependants. This facilitates the\nreuse of styling rules declared by Python packages' dependencies in a\nmanner more familiar to users of the given Python environments by\nreusing the same names as the namespaces they may be using.\n\n.. image:: https://travis-ci.org/calmjs/calmjs.sassy.svg?branch=1.0.1\n :target: https://travis-ci.org/calmjs/calmjs.sassy\n.. image:: https://ci.appveyor.com/api/projects/status/1gei512socwe8nho/branch/1.0.1?svg=true\n :target: https://ci.appveyor.com/project/metatoaster/calmjs-sassy/branch/1.0.1\n.. image:: https://coveralls.io/repos/github/calmjs/calmjs.sassy/badge.svg?branch=1.0.1\n :target: https://coveralls.io/github/calmjs/calmjs.sassy?branch=1.0.1\n\n.. |calmjs| replace:: ``calmjs``\n.. |calmjs.rjs| replace:: ``calmjs.rjs``\n.. |calmjs.sassy| replace:: ``calmjs.sassy``\n.. |calmjs.webpack| replace:: ``calmjs.webpack``\n.. |libsass-python| replace:: ``libsass-python``\n.. |npm| replace:: ``npm``\n.. |sass| replace:: ``sass``\n.. _Calmjs framework: https://pypi.python.org/pypi/calmjs\n.. _calmjs: https://pypi.python.org/pypi/calmjs\n.. _calmjs.rjs: https://pypi.python.org/pypi/calmjs.rjs\n.. _calmjs.webpack: https://pypi.python.org/pypi/calmjs.webpack\n.. _libsass-python: https://sass.github.io/libsass-python/\n.. _npm: https://www.npmjs.com/\n.. _sass: https://sass-lang.com/\n\nIntroduction\n------------\n\nWhile the |calmjs|_ framework can support the production of deployable\nartifacts for web applications (through packages such as |calmjs.rjs|_\nand |calmjs.webpack|_), the styling of the application would be\nincomplete without exposing the relevant stylesheets to dependant\npackages.\n\nWith the usage of the extensibility of the calmjs framework, a registry\ndedicated for |sass| may be declared. Tools that make use of these\ndeclarations may also be integrated to generate a single (or a set of)\nstylesheets for use with the library or the application.\n\n\nFeatures\n--------\n\nThis package provides:\n\n- A base registry that finds all ``.scss`` files declared in a Python\n package.\n- A basic toolchain for linking all the ``.scss`` files exported by a\n given Python package(s) and their dependencies, plus optionally their\n Node.js/npm dependencies discovered through the dependency graph with\n the aid of |calmjs|_, for the generation of ``.css`` files for use by\n the application or export to other libraries. A specific\n implementation that links against |libsass-python|_ is provided.\n- A calmjs runtime that makes use of the |libsass-python| toolchain for\n end-user one-off CSS generation.\n\n\nInstallation\n------------\n\nTo install |calmjs.sassy| into a given Python environment, the base\npackage may be installed directly from PyPI with the following command:\n\n.. code:: sh\n\n $ pip install calmjs.sassy\n\nIf support for the usage of |libsass-python| is desired, the\ninstallation command will be the following:\n\n.. code:: sh\n\n $ pip install calmjs.sassy[libsass]\n\nIf this package is used as part of the build process, and the default\n|libsass-python| toolchain is used for CSS artifact generation, the\ndependency may be declared like so in the package's ``setup.py`` file:\n\n.. code:: python\n\n setup(\n ...\n setup_requires=[\n 'calmjs.sassy[libsass]>=1.0.0,<2',\n # plus other packages required for generating the package.\n ],\n install_requires=[\n # actual dependencies required for the usage of the package.\n ],\n )\n\nAlternative installation methods (advanced users)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDevelopment is still ongoing with |calmjs.sassy|; the development\nversion may be installed through git like so:\n\n.. code:: sh\n\n $ pip install calmjs\n $ pip install git+https://github.com/calmjs/calmjs.sassy.git#egg=calmjs.sassy\n\nAlternatively, the git repository can be cloned directly and execute\n``pip install -e .`` while inside the root of the source directory.\n\nNewer versions of ``pip`` and ``setuptools`` may omit the initial manual\ninstallation of the |calmjs| package.\n\nIf ``setup.py`` within the |calmjs.sassy| source tree is used directly,\nplease keep in mind that |calmjs| MUST be available before that is\nexecuted, so that all the required package metadata may be generated\ncorrectly. Alternatively, please execute ``python setup.py egg_info``\nif any message about ``Unknown distribution option:`` is noted during\nthe invocation of ``setup.py``.\n\nAs |calmjs| is declared as both namespace and package, there are certain\nlow-level setup that is required on the working Python environment to\nensure that all modules within can be located correctly. However,\nversions of ``setuptools`` earlier than `v31.0.0`__ does not create the\nrequired package namespace declarations when a package is installed\nusing this development installation method when mixed with ``pip\ninstall`` within the same namespace. As a result, inconsistent import\nfailures can happen for any modules under the |calmjs| namespace. As an\nexample:\n\n.. __: https://setuptools.readthedocs.io/en/latest/history.html#v31-0-0\n\n.. code:: python\n\n >>> import calmjs.sassy\n Traceback (most recent call last):\n File \"\", line 1, in \n ImportError: No module named 'calmjs.sassy'\n >>> import calmjs.base\n >>> import calmjs.sassy\n >>>\n\nIf this behavior (and workaround) is undesirable, please ensure the\ninstallation of all |calmjs| related packages follow the same method\n(i.e. either ``python setup.py develop`` for all packages, or using the\nwheels acquired through ``pip``), or upgrade ``setuptools`` to version\n31 or greater and reinstall all affected packages.\n\nTesting the installation\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nFinally, to verify for the successful installation of |calmjs.sassy|,\nthe included tests may be executed through this command:\n\n.. code:: sh\n\n $ python -m unittest calmjs.sassy.tests.make_suite\n\n\nUsage\n-----\n\nTo generate the ``.css`` artifact for given package(s) that have\nexported ``.scss`` styles through the Calmjs module registry system, and\nthat the package |libsass-python| is available, the following command\nmay be executed:\n\n.. code:: sh\n\n $ calmjs scss example.package\n\nThe following sections will provide an overview on how this export\nsystem may be enabled for Python packages. For a more detailed\nexplanation on how the module registry works or how Calmjs works in\ngeneral, please refer to the README provided by the |calmjs|_ package,\nunder the section `Export JavaScript code from Python packages`__.\n\n.. __: https://pypi.python.org/pypi/calmjs/#export-javascript-code-from-python-packages\n\nThe default runtime also exposes a number of tuneable features as flags\nthat are documented below; the specifics may be found by running\n``calmjs scss --help``.\n\nDeclaring SCSS files to export for a given Python package\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSCSS files embedded within a Python package can be exposed to the\n``calmjs.scss`` registry which is provided by this package. For\nexample, given the the following entry points for that registry defined\nby a package named ``example``:\n\n.. code:: ini\n\n [calmjs.scss]\n example = example\n\nThis is the most basic declaration that works for packages that share\nthe same name as the import location provided.\n\nThe following is am example for packages that have nested submodules\n(called ``example.lib`` and ``example.app``):\n\n.. code:: ini\n\n [calmjs.scss]\n example.lib = example.lib\n example.app = example.app\n\nWhile the import locations declared looks exactly like a Python module\n(as per the rules of a Python entry point), the ``calmjs.scss``\nregistry will present them using the CommonJS/ES6 style import paths\n(i.e. ``'example/lib'`` and ``'example/app'``), so users that need\nthose style rules need to be ensure that they ``import`` those strings.\n\nPlease also note that the default source extractor will extract all\n``*.scss`` files within those directories.\n\nPutting the second example together, the ``setup.py`` file should\ncontain the following:\n\n.. code:: Python\n\n setup(\n name='example',\n setup_requires=[\n 'calmjs.scss',\n # plus other setup level requirements\n ],\n # the entry points are required to allow calmjs to pick this up\n entry_points=\"\"\"\n [calmjs.scss]\n example.lib = example.lib\n example.app = example.app\n \"\"\",\n )\n\nEnsure the SCSS is structured in the supported manner for reuse\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFor proper generation of the resulting ``.css`` and the management of\nthe ``.scss`` usage and exports, the default |libsass-python| toolchain\nimposes a small number of fixed constraints when default settings are\nused. The main constraint is that a specific entry point file must be\ndeclared to be used to acquire the styling rules for the specified\npackages for the generation of the stylesheet artifact(s). This\nparameter typically defaults to ``index.scss``, but this may be\nspecified to a different value to generate different styling rules, for\nexample for usage with different application end points.\n\nIn essence, this allow the package to create an artifact with just the\nexplicit imports and styling rules defined within it, while exporting\nthe rules it defines to their dependants piecemeal so that they may be\nable to import them using the similar package namespace and module\nnames. This enables general communication of exports and reusability of\nthose styling rules without forcing dependants to explicitly declare\ntheir required styles multiple times (i.e. only the ``@import``\nstatement is needed in the stylesheet itself, and no need to declare\nan explicit entry against something outside the package).\n\nFor example, inside an ``example.package`` there may be this layout::\n\n .\n \u251c\u2500\u2500 example\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 __init__.py\n \u2502\u00a0\u00a0 \u2514\u2500\u2500 package\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 __init__.py\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 colors.scss\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 content.py\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 form.py\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 form.scss\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 index.scss\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 ui.py\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 ui.scss\n \u2502\u00a0\u00a0 \u2514\u2500\u2500 widget.js\n \u2514\u2500\u2500 setup.py\n\nThe entry point declaration to export the ``.scss`` files within the\nexample package will be this:\n\n.. code:: ini\n\n [calmjs.scss]\n example.package = example.package\n\nNote that the ``index.scss`` (the default entry point name) for this\npackage may contain the following:\n\n.. code:: css\n\n @import \"example/package/colors\";\n @import \"example/package/form\";\n @import \"example/package/ui\";\n\nWhich are simply imports of all the ``.scss`` modules provided by the\npackage itself. For an ``example.dependant`` package that depends on\n``example.package`` and exports their own styling rules, it will need\nto declare its dependency through the ``install_requires`` keyword in\nits ``setup.py`` and declare the following entry point to expose the\nstyles defined:\n\n.. code:: ini\n\n [calmjs.scss]\n example.dependant = example.dependant\n\nPutting it all together:\n\n.. code:: python\n\n setup(\n name='example.dependant',\n install_requires=[\n 'example.package',\n # ... plus other dependencies\n ],\n entry_points=\"\"\"\n [calmjs.scss]\n example.dependant = example.dependant\n \"\"\",\n # ... plus other declarations\n )\n\nNote that the entry specific to its dependency ``example.package`` is\nalready declared already by that package. For the main entry point\n``index.scss`` of ``example.dependant``, it may contain the following:\n\n.. code:: css\n\n @import \"example/dependant/colors\";\n @import \"example/dependant/full_ui\";\n @import \"example/package/form\";\n\nIn this example, only the ``form.scss`` styles exported by the\n``example.package`` was included, while omitting ``colors.scss`` and\n``ui.scss`` as it could clash with the definitions required and\nimplemented by the other styles it shipped in that dependant package\n(e.g. ``colors`` and ``full_ui``). Other dependants of this\n``example.dependant`` package may then declare usage of any of these\nexported styles as per their owners' preferences. This is one method to\nprovide extensible styles that are reusable in a piecemeal manner by\npackage dependants.\n\nNaturally, there are parameters to specify entry points other than\n``index.scss`` for a given package, if necessary (for example, multiple\nstylesheets may need to be exported for use with different workflows\nprovided by the given package).\n\nInclude .scss files in Node.js package repositories\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAs the integration with Node.js was the goal of the Calmjs framework, it\nis possible to declare linkage with Node.js packages that ship with\n``.scss`` files from package repositories such as |npm|_. The actual\nusage is very similar to the typical integration through Calmjs, where\nthe difference lies in the keywords to be specified.\n\nFor example, a ``setup.py`` may contain the following:\n\n.. code:: Python\n\n setup(\n name=\"example.package\"\n package_json={\n \"dependencies\": {\n \"bootstrap\": \"~4.0.0\",\n },\n },\n extras_calmjs_scss={\n 'node_modules': {\n 'bootstrap': 'bootstrap/scss',\n }\n },\n )\n\nThe declaration above with simply expose all the ``.scss`` files inside\nthe ``bootstrap`` package from ``npm`` as the directory was declared to\nbe used for the build process. Importing the desired module from that\ndependency is simply:\n\n.. code:: css\n\n @import \"bootstrap/nav\";\n @import \"bootstrap/navbar\";\n\nWould work seamlessly, much like the usage of JavaScript code.\n\nComplete artifacts from ``npm`` may also be explicitly specified to\nexport under a specific identifier.\n\nDeclaring prebuilt, standard CSS bundle for the Python package\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFinally, to complete the Python package deployment story, the process\nshould include the automatic generation and inclusion of the stylesheet\nartifacts in the resulting Python wheel. This can be achieved by\nspecifying an entry in the ``calmjs.artifacts`` registry, with the key\nbeing the filename of the artifact and the value being the import\nlocation to a builder. A default builder function provided at\n``calmjs.sassy.artifact:complete_css`` will enable the generation\nof a complete stylesheet, based on the default toolchain and settings,\nwith ``calmjs.sassy.artifact:complete_compressed_css`` provide a spec\nthat will produced compressed style output. Note that both these\nbuilders make use of the ``libsass-python`` toolchain.\n\nAn example entry point configuration that only produce the complete css\nartifact (without compression):\n\n.. code:: ini\n\n [calmjs.artifacts]\n example.bundle.css = calmjs.sassy.artifact:complete_css\n\nOnce those entry points are installed, running ``calmjs artifact build\nexample.package`` will make use of the SCSS toolchain and build the\nartifact at ``example.bundle.css`` inside the ``calmjs_artifacts``\ndirectory within the metadata directory for ``example.package``.\nAlternatively, for solution more integrated with ``setuptools``, the\n``setup`` function in ``setup.py`` should also enable the\n``build_calmjs_artifacts`` flag such that ``setup.py build`` will also\ntrigger the building process. This is useful for automatically\ngenerating and including the artifact as part of the wheel building\nprocess.\n\nA more complete definition that generates both form of the artifacts may\nlook like the following ``setup.py``:\n\n.. code:: Python\n\n setup(\n name='example.package',\n # to enable calmjs artifact generation integration w/ setuptools\n build_calmjs_artifacts=True,\n entry_points=\"\"\"\n # ... other entry points truncated\n [calmjs.module]\n example.package = example.package\n\n [calmjs.artifacts]\n example.bundle.css = calmjs.sassy.artifact:complete_css\n example.bundle.min.css = calmjs.sassy.artifact:complete_compressed_css\n \"\"\",\n # ... other required fields truncated\n )\n\nBuilding the wheel using ``setup.py`` may result in something like this.\n\n.. code::\n\n $ python setup.py bdist_wheel\n automatically picked registries ['calmjs.scss'] for sourcepaths\n ...\n invoking 'sass.compile' on entry point module at '/tmp/tmpwb5bhmd0/build/__calmjs_sassy__/index.scss'\n wrote export css file at '/home/user/example.package/src/example.package.egg-info/calmjs_artifacts/example.bundle.css'\n installing to build/bdist.linux-x86_64/wheel\n ...\n\nWith both ``example.bundle.css`` and ``example.bundle.min.css``\navailable under the ``calmjs_artifacts`` sub-directory inside the\npackage metadata directory inside the Python wheel that was generated.\n\nAlso note that the default builder specifies ``index`` as the default\nentry point. If other ones need to be provided or other options are\nrequired, simply create a new builder function that return a ``Spec``\nobject with the desired values.\n\nThe end result is that end-users of this package will be able to make\nuse of the complete features provided without having to go through a\nseparate build step, while retaining the ability for regenerating all\nthe required artifacts with just the build dependencies installed,\nwithout having to further acquire the original configuration files (or\neven the source files) from the original repository that are required\nfor the production of these artifacts as they are part of the package\n(provided that the original sources are also packaged into the wheel).\n\nUsing registered .scss with other Calmjs Node.js/JavaScript toolchains\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhile the registry system is designed to be as extensible and reuseable\nas much as possible, those specific underlying tools may expect a\ndifferent complete module name as they may require specific loader\nstring prepended to the stylesheet. This topic will require more\nexploration for better overall integration, despite the building blocks\nto acheive this is available in the base/generic form.\n\n\nTroubleshooting\n---------------\n\nUserWarning: Unknown distribution option:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDuring setup and installation using the development method, if this\nwarning message is shown, please ensure the egg metadata is correctly\ngenerated by running ``python setup.py egg_info`` in the source\ndirectory, as the package |calmjs| was not available when the setup\nscript was initially executed.\n\nCalmjsSassyRuntimeError: missing required package 'libsass'\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPlease install the |libsass-python| package; this can be achieved by\nrunning:\n\n.. code:: sh\n\n $ pip install libsass\n\nCalmjsSassyRuntimeError: failed to compile with libsass\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis can be caused by syntax errors within the styling rules, which\nshould be reported as part of the output. Generation using the built-in\n``calmjs scss`` runtime may return more detailed debugging information\nusing the relevant flags as documented by the ``--help`` flag.\n\nInternal Error: Data context created with empty source string\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhile using the libsass interfacing runtime or toolchain (e.g. the\ndefault ``calmjs scss`` runtime), if the provided package does not\ninclude (export) a ``.scss`` file for the specified entry point name\n(the default is ``index``, and so the package must export a\n``index.scss`` file at the location registered in the ``calmjs.scss``\nregistry), nothing will be imported thus the source string will be\nempty, resulting in ``libsass`` aborting the execution.\n\n\nContribute\n----------\n\n.. _issue tracker:\n\n- Issue Tracker: https://github.com/calmjs/calmjs.sassy/issues\n- Source Code: https://github.com/calmjs/calmjs.sassy\n\n\nLegal\n-----\n\nThe |calmjs.sassy| package is part of the calmjs project.\n\nThe calmjs project is copyright (c) 2016 Auckland Bioengineering\nInstitute, University of Auckland. |calmjs.sassy| is licensed under\nthe terms of the GPLv2 or later.\n\nChangelog\n=========\n\n1.0.1 (2018-05-23)\n------------------\n\n- Minor text fixes.\n\n1.0.0 (2018-05-23)\n------------------\n\n- Initial release of the Sassy CSS integration for Calmjs.\n- Provide a base ``calmjs.scss`` registry to allow Python packages to\n export ``.scss`` files for their dependants to utilize.\n- Provide a base ``calmjs scss`` runtime to interface with the default\n ``libsass-python`` toolchain for the production of ``.css`` artifacts\n for any given Python packages.\n- Provide a couple artifact builders that integrates with the calmjs\n artifact production framework.\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.sassy", "keywords": "", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "calmjs.sassy", "package_url": "https://pypi.org/project/calmjs.sassy/", "platform": "", "project_url": "https://pypi.org/project/calmjs.sassy/", "project_urls": { "Homepage": "https://github.com/calmjs/calmjs.sassy" }, "release_url": "https://pypi.org/project/calmjs.sassy/1.0.1/", "requires_dist": [ "calmjs (>=3.2.0)", "libsass (>=0.11.0); extra == 'libsass'" ], "requires_python": "", "summary": "Package for extending the Calmjs framework to support the usage of sass in a manner that crosses Python package boundaries by exposing an import system that mimics the package namespaces available within a given Python environment.", "version": "1.0.1" }, "last_serial": 3890400, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "34e66928779e661d5bde355788b67861", "sha256": "b8550097488d9251da1f1ae67857841c1460eeb690758b7a5371ebb19202399d" }, "downloads": -1, "filename": "calmjs.sassy-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "34e66928779e661d5bde355788b67861", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31450, "upload_time": "2018-05-23T05:35:03", "url": "https://files.pythonhosted.org/packages/0a/71/fa85392a73c4346ef22d2f9e694fd99202541f4500f191eaf013456a9d74/calmjs.sassy-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2f92af9d9967d75474f94cc3ad9e35cb", "sha256": "025f60df433751e56eebf74449fbae5f592f0792e57ae08e2c98e8f918c4e8ca" }, "downloads": -1, "filename": "calmjs.sassy-1.0.0.zip", "has_sig": false, "md5_digest": "2f92af9d9967d75474f94cc3ad9e35cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49178, "upload_time": "2018-05-23T05:35:05", "url": "https://files.pythonhosted.org/packages/94/15/db0a421d70f7f81d43e99fc901c8807bb55a837cae1f0a492ddc449b303b/calmjs.sassy-1.0.0.zip" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "8bcef3740dda78e4ebc20e7bbac9ae98", "sha256": "f47f6d9b7e81d294f073fa9d7ce0bf795e09e8563f016518ad0c7f1a2a2d923e" }, "downloads": -1, "filename": "calmjs.sassy-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8bcef3740dda78e4ebc20e7bbac9ae98", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31466, "upload_time": "2018-05-23T07:46:26", "url": "https://files.pythonhosted.org/packages/a4/22/fbd039bda174422c2e6030b150b4867345bde2199f5af8b348ba7d68f99f/calmjs.sassy-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "64933066337656bc8e6168a7d361348f", "sha256": "b8c1a17ad8533a9568ed68b9f7ccb4fab37976fd467f7700395e5e9c0d37e9f2" }, "downloads": -1, "filename": "calmjs.sassy-1.0.1.zip", "has_sig": false, "md5_digest": "64933066337656bc8e6168a7d361348f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49232, "upload_time": "2018-05-23T07:46:27", "url": "https://files.pythonhosted.org/packages/b1/ea/3b0608d67181a0d59ce2cd106eb81fdc352956f38a9af8dc5aa62ad32477/calmjs.sassy-1.0.1.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8bcef3740dda78e4ebc20e7bbac9ae98", "sha256": "f47f6d9b7e81d294f073fa9d7ce0bf795e09e8563f016518ad0c7f1a2a2d923e" }, "downloads": -1, "filename": "calmjs.sassy-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8bcef3740dda78e4ebc20e7bbac9ae98", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31466, "upload_time": "2018-05-23T07:46:26", "url": "https://files.pythonhosted.org/packages/a4/22/fbd039bda174422c2e6030b150b4867345bde2199f5af8b348ba7d68f99f/calmjs.sassy-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "64933066337656bc8e6168a7d361348f", "sha256": "b8c1a17ad8533a9568ed68b9f7ccb4fab37976fd467f7700395e5e9c0d37e9f2" }, "downloads": -1, "filename": "calmjs.sassy-1.0.1.zip", "has_sig": false, "md5_digest": "64933066337656bc8e6168a7d361348f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49232, "upload_time": "2018-05-23T07:46:27", "url": "https://files.pythonhosted.org/packages/b1/ea/3b0608d67181a0d59ce2cd106eb81fdc352956f38a9af8dc5aa62ad32477/calmjs.sassy-1.0.1.zip" } ] }