diff --git a/.circleci/config.yml b/.circleci/config.yml index 8309568..2d05751 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,67 +6,48 @@ workflows: - test-3.6 - test-3.7 - test-3.8 -environment: &test-environment - PIPENV_IGNORE_VIRTUALENVS: 1 - PYTHONPATH: stilus - PIPENV_VENV_IN_PROJECT: true - PIPENV_QUIET: true jobs: test-3.6: docker: - image: circleci/python:3.6 - environment: - <<: *test-environment steps: - checkout - - run: sudo pip install --upgrade pip - - run: sudo pip install --upgrade pipenv - - run: pipenv --python 3.6 install --dev - - run: pipenv run flake8 --exclude=`pipenv --venv` ~/stilus - - run: pipenv run python setup.py test - - run: pipenv run coveralls - - run: pipenv run codecov - + - run: sudo pip install --upgrade poetry + - run: poetry install -v + - run: poetry run flake8 + - run: poetry run pytest --cov-report html --cov-report term --cov-report term-missing tests + - run: poetry run coveralls + - run: poetry run codecov - store_test_results: path: test-reports - store_artifacts: path: test-reports - test-3.7: docker: - image: circleci/python:3.7 - environment: - <<: *test-environment steps: - checkout - - run: sudo pip install --upgrade pip - - run: sudo pip install --upgrade pipenv - - run: pipenv --python 3.7 install --dev - - run: pipenv run flake8 --exclude=`pipenv --venv` ~/stilus - - run: pipenv run python setup.py test - - run: pipenv run coveralls - - run: pipenv run codecov - + - run: sudo pip install --upgrade poetry + - run: poetry install -v + - run: poetry run flake8 + - run: poetry run pytest --cov-report html --cov-report term --cov-report term-missing tests + - run: poetry run coveralls + - run: poetry run codecov - store_test_results: path: test-reports - store_artifacts: path: test-reports - test-3.8: docker: - image: circleci/python:3.8 - environment: - <<: *test-environment steps: - checkout - - run: sudo pip install --upgrade pip - - run: sudo pip install --upgrade pipenv - - run: pipenv --python 3.8 install --dev - - run: pipenv run flake8 --exclude=`pipenv --venv` ~/stilus - - run: pipenv run python setup.py test - - run: pipenv run coveralls - - run: pipenv run codecov - + - run: sudo pip install --upgrade poetry + - run: poetry install -v + - run: poetry run flake8 + - run: poetry run pytest --cov-report html --cov-report term --cov-report term-missing tests + - run: poetry run coveralls + - run: poetry run codecov - store_test_results: path: test-reports - store_artifacts: diff --git a/.gitignore b/.gitignore index af595f0..fc84bdc 100644 --- a/.gitignore +++ b/.gitignore @@ -18,5 +18,6 @@ stilus.egg-info/ coverage.xml .coverage htmlcov/ +test-reports/ debug.log diff --git a/.travis.yml b/.travis.yml index 39f7fdf..fa3eff2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,19 +5,16 @@ python: - "3.7" - "3.8" -env: - global: - - PIPENV_IGNORE_VIRTUALENVS=1 - - PYTHONPATH=stilus +before_install: + - pip install poetry install: - - pip install pipenv - - pipenv install --dev + - poetry install -v script: - - pipenv run flake8 - - pipenv run python setup.py test + - poetry run flake8 + - poetry run pytest --cov-report html --cov-report term --cov-report term-missing tests after_success: - - pipenv run coveralls - - pipenv run codecov + - poetry run coveralls + - poetry run codecov diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 673b8ad..0000000 --- a/MANIFEST.in +++ /dev/null @@ -1 +0,0 @@ -include README.md LICENSE stilus/functions/index.styl diff --git a/Makefile b/Makefile deleted file mode 100644 index 3c4e5dc..0000000 --- a/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -init: - pip install pipenv - pipenv install --dev diff --git a/Pipfile b/Pipfile deleted file mode 100644 index 8d2efb5..0000000 --- a/Pipfile +++ /dev/null @@ -1,31 +0,0 @@ -[[source]] -url = "https://pypi.python.org/simple" -verify_ssl = true -name = "pypi" - -[packages] -deprecated = "*" -pyyaml = "*" -click = "*" -pillow = "*" -beautifulsoup4 = "*" -lxml = "*" -watchdog = "*" - -[dev-packages] -pytest = "*" -ipython = "*" -twine = "*" -pytest-runner = "*" -"flake8" = "*" -pytest-cov = "*" -sphinx = "*" -codecov = "*" -recommonmark = "*" -commonmark = "*" -pytest-icdiff = "*" -coveralls = "*" -python-coveralls = "*" - -[requires] -python_version = "3.6" diff --git a/Pipfile.lock b/Pipfile.lock deleted file mode 100644 index a79c224..0000000 --- a/Pipfile.lock +++ /dev/null @@ -1,816 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "27d370fb16c19d992cd939032362e195839ca57ba53e3f575facece478a690eb" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3.6" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.python.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "argh": { - "hashes": [ - "sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3", - "sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65" - ], - "version": "==0.26.2" - }, - "beautifulsoup4": { - "hashes": [ - "sha256:5279c36b4b2ec2cb4298d723791467e3000e5384a43ea0cdf5d45207c7e97169", - "sha256:6135db2ba678168c07950f9a16c4031822c6f4aec75a65e0a97bc5ca09789931", - "sha256:dcdef580e18a76d54002088602eba453eec38ebbcafafeaabd8cab12b6155d57" - ], - "index": "pypi", - "version": "==4.8.1" - }, - "click": { - "hashes": [ - "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13", - "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7" - ], - "index": "pypi", - "version": "==7.0" - }, - "deprecated": { - "hashes": [ - "sha256:408038ab5fdeca67554e8f6742d1521cd3cd0ee0ff9d47f29318a4f4da31c308", - "sha256:8b6a5aa50e482d8244a62e5582b96c372e87e3a28e8b49c316e46b95c76a611d" - ], - "index": "pypi", - "version": "==1.2.7" - }, - "lxml": { - "hashes": [ - "sha256:00ac0d64949fef6b3693813fe636a2d56d97a5a49b5bbb86e4cc4cc50ebc9ea2", - "sha256:0571e607558665ed42e450d7bf0e2941d542c18e117b1ebbf0ba72f287ad841c", - "sha256:0e3f04a7615fdac0be5e18b2406529521d6dbdb0167d2a690ee328bef7807487", - "sha256:13cf89be53348d1c17b453867da68704802966c433b2bb4fa1f970daadd2ef70", - "sha256:217262fcf6a4c2e1c7cb1efa08bd9ebc432502abc6c255c4abab611e8be0d14d", - "sha256:223e544828f1955daaf4cefbb4853bc416b2ec3fd56d4f4204a8b17007c21250", - "sha256:277cb61fede2f95b9c61912fefb3d43fbd5f18bf18a14fae4911b67984486f5d", - "sha256:3213f753e8ae86c396e0e066866e64c6b04618e85c723b32ecb0909885211f74", - "sha256:4690984a4dee1033da0af6df0b7a6bde83f74e1c0c870623797cec77964de34d", - "sha256:4fcc472ef87f45c429d3b923b925704aa581f875d65bac80f8ab0c3296a63f78", - "sha256:61409bd745a265a742f2693e4600e4dbd45cc1daebe1d5fad6fcb22912d44145", - "sha256:678f1963f755c5d9f5f6968dded7b245dd1ece8cf53c1aa9d80e6734a8c7f41d", - "sha256:6c6d03549d4e2734133badb9ab1c05d9f0ef4bcd31d83e5d2b4747c85cfa21da", - "sha256:6e74d5f4d6ecd6942375c52ffcd35f4318a61a02328f6f1bd79fcb4ffedf969e", - "sha256:7b4fc7b1ecc987ca7aaf3f4f0e71bbfbd81aaabf87002558f5bc95da3a865bcd", - "sha256:7ed386a40e172ddf44c061ad74881d8622f791d9af0b6f5be20023029129bc85", - "sha256:8f54f0924d12c47a382c600c880770b5ebfc96c9fd94cf6f6bdc21caf6163ea7", - "sha256:ad9b81351fdc236bda538efa6879315448411a81186c836d4b80d6ca8217cdb9", - "sha256:bbd00e21ea17f7bcc58dccd13869d68441b32899e89cf6cfa90d624a9198ce85", - "sha256:c3c289762cc09735e2a8f8a49571d0e8b4f57ea831ea11558247b5bdea0ac4db", - "sha256:cf4650942de5e5685ad308e22bcafbccfe37c54aa7c0e30cd620c2ee5c93d336", - "sha256:cfcbc33c9c59c93776aa41ab02e55c288a042211708b72fdb518221cc803abc8", - "sha256:e301055deadfedbd80cf94f2f65ff23126b232b0d1fea28f332ce58137bcdb18", - "sha256:ebbfe24df7f7b5c6c7620702496b6419f6a9aa2fd7f005eb731cc80d7b4692b9", - "sha256:eff69ddbf3ad86375c344339371168640951c302450c5d3e9936e98d6459db06", - "sha256:f6ed60a62c5f1c44e789d2cf14009423cb1646b44a43e40a9cf6a21f077678a1" - ], - "index": "pypi", - "version": "==4.4.2" - }, - "pathtools": { - "hashes": [ - "sha256:7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0" - ], - "version": "==0.1.2" - }, - "pillow": { - "hashes": [ - "sha256:047d9473cf68af50ac85f8ee5d5f21a60f849bc17d348da7fc85711287a75031", - "sha256:0f66dc6c8a3cc319561a633b6aa82c44107f12594643efa37210d8c924fc1c71", - "sha256:12c9169c4e8fe0a7329e8658c7e488001f6b4c8e88740e76292c2b857af2e94c", - "sha256:248cffc168896982f125f5c13e9317c059f74fffdb4152893339f3be62a01340", - "sha256:27faf0552bf8c260a5cee21a76e031acaea68babb64daf7e8f2e2540745082aa", - "sha256:285edafad9bc60d96978ed24d77cdc0b91dace88e5da8c548ba5937c425bca8b", - "sha256:384b12c9aa8ef95558abdcb50aada56d74bc7cc131dd62d28c2d0e4d3aadd573", - "sha256:38950b3a707f6cef09cd3cbb142474357ad1a985ceb44d921bdf7b4647b3e13e", - "sha256:4aad1b88933fd6dc2846552b89ad0c74ddbba2f0884e2c162aa368374bf5abab", - "sha256:4ac6148008c169603070c092e81f88738f1a0c511e07bd2bb0f9ef542d375da9", - "sha256:4deb1d2a45861ae6f0b12ea0a786a03d19d29edcc7e05775b85ec2877cb54c5e", - "sha256:59aa2c124df72cc75ed72c8d6005c442d4685691a30c55321e00ed915ad1a291", - "sha256:5a47d2123a9ec86660fe0e8d0ebf0aa6bc6a17edc63f338b73ea20ba11713f12", - "sha256:5cc901c2ab9409b4b7ac7b5bcc3e86ac14548627062463da0af3b6b7c555a871", - "sha256:6c1db03e8dff7b9f955a0fb9907eb9ca5da75b5ce056c0c93d33100a35050281", - "sha256:7ce80c0a65a6ea90ef9c1f63c8593fcd2929448613fc8da0adf3e6bfad669d08", - "sha256:809c19241c14433c5d6135e1b6c72da4e3b56d5c865ad5736ab99af8896b8f41", - "sha256:83792cb4e0b5af480588601467c0764242b9a483caea71ef12d22a0d0d6bdce2", - "sha256:846fa202bd7ee0f6215c897a1d33238ef071b50766339186687bd9b7a6d26ac5", - "sha256:9f5529fc02009f96ba95bea48870173426879dc19eec49ca8e08cd63ecd82ddb", - "sha256:a423c2ea001c6265ed28700df056f75e26215fd28c001e93ef4380b0f05f9547", - "sha256:ac4428094b42907aba5879c7c000d01c8278d451a3b7cccd2103e21f6397ea75", - "sha256:b1ae48d87f10d1384e5beecd169c77502fcc04a2c00a4c02b85f0a94b419e5f9", - "sha256:bf4e972a88f8841d8fdc6db1a75e0f8d763e66e3754b03006cbc3854d89f1cb1", - "sha256:c6414f6aad598364aaf81068cabb077894eb88fed99c6a65e6e8217bab62ae7a", - "sha256:c710fcb7ee32f67baf25aa9ffede4795fd5d93b163ce95fdc724383e38c9df96", - "sha256:c7be4b8a09852291c3c48d3c25d1b876d2494a0a674980089ac9d5e0d78bd132", - "sha256:c9e5ffb910b14f090ac9c38599063e354887a5f6d7e6d26795e916b4514f2c1a", - "sha256:e0697b826da6c2472bb6488db4c0a7fa8af0d52fa08833ceb3681358914b14e5", - "sha256:e9a3edd5f714229d41057d56ac0f39ad9bdba6767e8c888c951869f0bdd129b0" - ], - "index": "pypi", - "version": "==6.2.1" - }, - "pyyaml": { - "hashes": [ - "sha256:0113bc0ec2ad727182326b61326afa3d1d8280ae1122493553fd6f4397f33df9", - "sha256:01adf0b6c6f61bd11af6e10ca52b7d4057dd0be0343eb9283c878cf3af56aee4", - "sha256:5124373960b0b3f4aa7df1707e63e9f109b5263eca5976c66e08b1c552d4eaf8", - "sha256:5ca4f10adbddae56d824b2c09668e91219bb178a1eee1faa56af6f99f11bf696", - "sha256:7907be34ffa3c5a32b60b95f4d95ea25361c951383a894fec31be7252b2b6f34", - "sha256:7ec9b2a4ed5cad025c2278a1e6a19c011c80a3caaac804fd2d329e9cc2c287c9", - "sha256:87ae4c829bb25b9fe99cf71fbb2140c448f534e24c998cc60f39ae4f94396a73", - "sha256:9de9919becc9cc2ff03637872a440195ac4241c80536632fffeb6a1e25a74299", - "sha256:a5a85b10e450c66b49f98846937e8cfca1db3127a9d5d1e31ca45c3d0bef4c5b", - "sha256:b0997827b4f6a7c286c01c5f60384d218dca4ed7d9efa945c3e1aa623d5709ae", - "sha256:b631ef96d3222e62861443cc89d6563ba3eeb816eeb96b2629345ab795e53681", - "sha256:bf47c0607522fdbca6c9e817a6e81b08491de50f3766a7a0e6a5be7905961b41", - "sha256:f81025eddd0327c7d4cfe9b62cf33190e1e736cc6e97502b3ec425f574b3e7a8" - ], - "index": "pypi", - "version": "==5.1.2" - }, - "soupsieve": { - "hashes": [ - "sha256:bdb0d917b03a1369ce964056fc195cfdff8819c40de04695a80bc813c3cfa1f5", - "sha256:e2c1c5dee4a1c36bcb790e0fabd5492d874b8ebd4617622c4f6a731701060dda" - ], - "version": "==1.9.5" - }, - "watchdog": { - "hashes": [ - "sha256:965f658d0732de3188211932aeb0bb457587f04f63ab4c1e33eab878e9de961d" - ], - "index": "pypi", - "version": "==0.9.0" - }, - "wrapt": { - "hashes": [ - "sha256:565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1" - ], - "version": "==1.11.2" - } - }, - "develop": { - "alabaster": { - "hashes": [ - "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359", - "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02" - ], - "version": "==0.7.12" - }, - "attrs": { - "hashes": [ - "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", - "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" - ], - "version": "==19.3.0" - }, - "babel": { - "hashes": [ - "sha256:af92e6106cb7c55286b25b38ad7695f8b4efb36a90ba483d7f7a6628c46158ab", - "sha256:e86135ae101e31e2c8ec20a4e0c5220f4eed12487d5cf3f78be7e98d3a57fc28" - ], - "version": "==2.7.0" - }, - "backcall": { - "hashes": [ - "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4", - "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2" - ], - "version": "==0.1.0" - }, - "bleach": { - "hashes": [ - "sha256:213336e49e102af26d9cde77dd2d0397afabc5a6bf2fed985dc35b5d1e285a16", - "sha256:3fdf7f77adcf649c9911387df51254b813185e32b2c6619f690b593a617e19fa" - ], - "version": "==3.1.0" - }, - "certifi": { - "hashes": [ - "sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3", - "sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f" - ], - "version": "==2019.11.28" - }, - "cffi": { - "hashes": [ - "sha256:0b49274afc941c626b605fb59b59c3485c17dc776dc3cc7cc14aca74cc19cc42", - "sha256:0e3ea92942cb1168e38c05c1d56b0527ce31f1a370f6117f1d490b8dcd6b3a04", - "sha256:135f69aecbf4517d5b3d6429207b2dff49c876be724ac0c8bf8e1ea99df3d7e5", - "sha256:19db0cdd6e516f13329cba4903368bff9bb5a9331d3410b1b448daaadc495e54", - "sha256:2781e9ad0e9d47173c0093321bb5435a9dfae0ed6a762aabafa13108f5f7b2ba", - "sha256:291f7c42e21d72144bb1c1b2e825ec60f46d0a7468f5346841860454c7aa8f57", - "sha256:2c5e309ec482556397cb21ede0350c5e82f0eb2621de04b2633588d118da4396", - "sha256:2e9c80a8c3344a92cb04661115898a9129c074f7ab82011ef4b612f645939f12", - "sha256:32a262e2b90ffcfdd97c7a5e24a6012a43c61f1f5a57789ad80af1d26c6acd97", - "sha256:3c9fff570f13480b201e9ab69453108f6d98244a7f495e91b6c654a47486ba43", - "sha256:415bdc7ca8c1c634a6d7163d43fb0ea885a07e9618a64bda407e04b04333b7db", - "sha256:42194f54c11abc8583417a7cf4eaff544ce0de8187abaf5d29029c91b1725ad3", - "sha256:4424e42199e86b21fc4db83bd76909a6fc2a2aefb352cb5414833c030f6ed71b", - "sha256:4a43c91840bda5f55249413037b7a9b79c90b1184ed504883b72c4df70778579", - "sha256:599a1e8ff057ac530c9ad1778293c665cb81a791421f46922d80a86473c13346", - "sha256:5c4fae4e9cdd18c82ba3a134be256e98dc0596af1e7285a3d2602c97dcfa5159", - "sha256:5ecfa867dea6fabe2a58f03ac9186ea64da1386af2159196da51c4904e11d652", - "sha256:62f2578358d3a92e4ab2d830cd1c2049c9c0d0e6d3c58322993cc341bdeac22e", - "sha256:6471a82d5abea994e38d2c2abc77164b4f7fbaaf80261cb98394d5793f11b12a", - "sha256:6d4f18483d040e18546108eb13b1dfa1000a089bcf8529e30346116ea6240506", - "sha256:71a608532ab3bd26223c8d841dde43f3516aa5d2bf37b50ac410bb5e99053e8f", - "sha256:74a1d8c85fb6ff0b30fbfa8ad0ac23cd601a138f7509dc617ebc65ef305bb98d", - "sha256:7b93a885bb13073afb0aa73ad82059a4c41f4b7d8eb8368980448b52d4c7dc2c", - "sha256:7d4751da932caaec419d514eaa4215eaf14b612cff66398dd51129ac22680b20", - "sha256:7f627141a26b551bdebbc4855c1157feeef18241b4b8366ed22a5c7d672ef858", - "sha256:8169cf44dd8f9071b2b9248c35fc35e8677451c52f795daa2bb4643f32a540bc", - "sha256:aa00d66c0fab27373ae44ae26a66a9e43ff2a678bf63a9c7c1a9a4d61172827a", - "sha256:ccb032fda0873254380aa2bfad2582aedc2959186cce61e3a17abc1a55ff89c3", - "sha256:d754f39e0d1603b5b24a7f8484b22d2904fa551fe865fd0d4c3332f078d20d4e", - "sha256:d75c461e20e29afc0aee7172a0950157c704ff0dd51613506bd7d82b718e7410", - "sha256:dcd65317dd15bc0451f3e01c80da2216a31916bdcffd6221ca1202d96584aa25", - "sha256:e570d3ab32e2c2861c4ebe6ffcad6a8abf9347432a37608fe1fbd157b3f0036b", - "sha256:fd43a88e045cf992ed09fa724b5315b790525f2676883a6ea64e3263bae6549d" - ], - "version": "==1.13.2" - }, - "chardet": { - "hashes": [ - "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", - "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" - ], - "version": "==3.0.4" - }, - "codecov": { - "hashes": [ - "sha256:8ed8b7c6791010d359baed66f84f061bba5bd41174bf324c31311e8737602788", - "sha256:ae00d68e18d8a20e9c3288ba3875ae03db3a8e892115bf9b83ef20507732bed4" - ], - "index": "pypi", - "version": "==2.0.15" - }, - "commonmark": { - "hashes": [ - "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60", - "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9" - ], - "index": "pypi", - "version": "==0.9.1" - }, - "coverage": { - "hashes": [ - "sha256:08907593569fe59baca0bf152c43f3863201efb6113ecb38ce7e97ce339805a6", - "sha256:0be0f1ed45fc0c185cfd4ecc19a1d6532d72f86a2bac9de7e24541febad72650", - "sha256:141f08ed3c4b1847015e2cd62ec06d35e67a3ac185c26f7635f4406b90afa9c5", - "sha256:19e4df788a0581238e9390c85a7a09af39c7b539b29f25c89209e6c3e371270d", - "sha256:23cc09ed395b03424d1ae30dcc292615c1372bfba7141eb85e11e50efaa6b351", - "sha256:245388cda02af78276b479f299bbf3783ef0a6a6273037d7c60dc73b8d8d7755", - "sha256:331cb5115673a20fb131dadd22f5bcaf7677ef758741312bee4937d71a14b2ef", - "sha256:386e2e4090f0bc5df274e720105c342263423e77ee8826002dcffe0c9533dbca", - "sha256:3a794ce50daee01c74a494919d5ebdc23d58873747fa0e288318728533a3e1ca", - "sha256:60851187677b24c6085248f0a0b9b98d49cba7ecc7ec60ba6b9d2e5574ac1ee9", - "sha256:63a9a5fc43b58735f65ed63d2cf43508f462dc49857da70b8980ad78d41d52fc", - "sha256:6b62544bb68106e3f00b21c8930e83e584fdca005d4fffd29bb39fb3ffa03cb5", - "sha256:6ba744056423ef8d450cf627289166da65903885272055fb4b5e113137cfa14f", - "sha256:7494b0b0274c5072bddbfd5b4a6c6f18fbbe1ab1d22a41e99cd2d00c8f96ecfe", - "sha256:826f32b9547c8091679ff292a82aca9c7b9650f9fda3e2ca6bf2ac905b7ce888", - "sha256:93715dffbcd0678057f947f496484e906bf9509f5c1c38fc9ba3922893cda5f5", - "sha256:9a334d6c83dfeadae576b4d633a71620d40d1c379129d587faa42ee3e2a85cce", - "sha256:af7ed8a8aa6957aac47b4268631fa1df984643f07ef00acd374e456364b373f5", - "sha256:bf0a7aed7f5521c7ca67febd57db473af4762b9622254291fbcbb8cd0ba5e33e", - "sha256:bf1ef9eb901113a9805287e090452c05547578eaab1b62e4ad456fcc049a9b7e", - "sha256:c0afd27bc0e307a1ffc04ca5ec010a290e49e3afbe841c5cafc5c5a80ecd81c9", - "sha256:dd579709a87092c6dbee09d1b7cfa81831040705ffa12a1b248935274aee0437", - "sha256:df6712284b2e44a065097846488f66840445eb987eb81b3cc6e4149e7b6982e1", - "sha256:e07d9f1a23e9e93ab5c62902833bf3e4b1f65502927379148b6622686223125c", - "sha256:e2ede7c1d45e65e209d6093b762e98e8318ddeff95317d07a27a2140b80cfd24", - "sha256:e4ef9c164eb55123c62411f5936b5c2e521b12356037b6e1c2617cef45523d47", - "sha256:eca2b7343524e7ba246cab8ff00cab47a2d6d54ada3b02772e908a45675722e2", - "sha256:eee64c616adeff7db37cc37da4180a3a5b6177f5c46b187894e633f088fb5b28", - "sha256:ef824cad1f980d27f26166f86856efe11eff9912c4fed97d3804820d43fa550c", - "sha256:efc89291bd5a08855829a3c522df16d856455297cf35ae827a37edac45f466a7", - "sha256:fa964bae817babece5aa2e8c1af841bebb6d0b9add8e637548809d040443fee0", - "sha256:ff37757e068ae606659c28c3bd0d923f9d29a85de79bf25b2b34b148473b5025" - ], - "version": "==4.5.4" - }, - "coveralls": { - "hashes": [ - "sha256:9bc5a1f92682eef59f688a8f280207190d9a6afb84cef8f567fa47631a784060", - "sha256:fb51cddef4bc458de347274116df15d641a735d3f0a580a9472174e2e62f408c" - ], - "index": "pypi", - "version": "==1.8.2" - }, - "cryptography": { - "hashes": [ - "sha256:02079a6addc7b5140ba0825f542c0869ff4df9a69c360e339ecead5baefa843c", - "sha256:1df22371fbf2004c6f64e927668734070a8953362cd8370ddd336774d6743595", - "sha256:369d2346db5934345787451504853ad9d342d7f721ae82d098083e1f49a582ad", - "sha256:3cda1f0ed8747339bbdf71b9f38ca74c7b592f24f65cdb3ab3765e4b02871651", - "sha256:44ff04138935882fef7c686878e1c8fd80a723161ad6a98da31e14b7553170c2", - "sha256:4b1030728872c59687badcca1e225a9103440e467c17d6d1730ab3d2d64bfeff", - "sha256:58363dbd966afb4f89b3b11dfb8ff200058fbc3b947507675c19ceb46104b48d", - "sha256:6ec280fb24d27e3d97aa731e16207d58bd8ae94ef6eab97249a2afe4ba643d42", - "sha256:7270a6c29199adc1297776937a05b59720e8a782531f1f122f2eb8467f9aab4d", - "sha256:73fd30c57fa2d0a1d7a49c561c40c2f79c7d6c374cc7750e9ac7c99176f6428e", - "sha256:7f09806ed4fbea8f51585231ba742b58cbcfbfe823ea197d8c89a5e433c7e912", - "sha256:90df0cc93e1f8d2fba8365fb59a858f51a11a394d64dbf3ef844f783844cc793", - "sha256:971221ed40f058f5662a604bd1ae6e4521d84e6cad0b7b170564cc34169c8f13", - "sha256:a518c153a2b5ed6b8cc03f7ae79d5ffad7315ad4569b2d5333a13c38d64bd8d7", - "sha256:b0de590a8b0979649ebeef8bb9f54394d3a41f66c5584fff4220901739b6b2f0", - "sha256:b43f53f29816ba1db8525f006fa6f49292e9b029554b3eb56a189a70f2a40879", - "sha256:d31402aad60ed889c7e57934a03477b572a03af7794fa8fb1780f21ea8f6551f", - "sha256:de96157ec73458a7f14e3d26f17f8128c959084931e8997b9e655a39c8fde9f9", - "sha256:df6b4dca2e11865e6cfbfb708e800efb18370f5a46fd601d3755bc7f85b3a8a2", - "sha256:ecadccc7ba52193963c0475ac9f6fa28ac01e01349a2ca48509667ef41ffd2cf", - "sha256:fb81c17e0ebe3358486cd8cc3ad78adbae58af12fc2bf2bc0bb84e8090fa5ce8" - ], - "version": "==2.8" - }, - "decorator": { - "hashes": [ - "sha256:54c38050039232e1db4ad7375cfce6748d7b41c29e95a081c8a6d2c30364a2ce", - "sha256:5d19b92a3c8f7f101c8dd86afd86b0f061a8ce4540ab8cd401fa2542756bce6d" - ], - "version": "==4.4.1" - }, - "docopt": { - "hashes": [ - "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" - ], - "version": "==0.6.2" - }, - "docutils": { - "hashes": [ - "sha256:6c4f696463b79f1fb8ba0c594b63840ebd41f059e92b31957c46b74a4599b6d0", - "sha256:9e4d7ecfc600058e07ba661411a2b7de2fd0fafa17d1a7f7361cd47b1175c827", - "sha256:a2aeea129088da402665e92e0b25b04b073c04b2dce4ab65caaa38b7ce2e1a99" - ], - "version": "==0.15.2" - }, - "entrypoints": { - "hashes": [ - "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", - "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" - ], - "version": "==0.3" - }, - "flake8": { - "hashes": [ - "sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb", - "sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca" - ], - "index": "pypi", - "version": "==3.7.9" - }, - "icdiff": { - "hashes": [ - "sha256:66972dd03318da55280991db375d3ef6b66d948c67af96c1ebdb21587e86655e" - ], - "version": "==1.9.1" - }, - "idna": { - "hashes": [ - "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", - "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c" - ], - "version": "==2.8" - }, - "imagesize": { - "hashes": [ - "sha256:3f349de3eb99145973fefb7dbe38554414e5c30abd0c8e4b970a7c9d09f3a1d8", - "sha256:f3832918bc3c66617f92e35f5d70729187676313caa60c187eb0f28b8fe5e3b5" - ], - "version": "==1.1.0" - }, - "importlib-metadata": { - "hashes": [ - "sha256:aa18d7378b00b40847790e7c27e11673d7fed219354109d0e7b9e5b25dc3ad26", - "sha256:d5f18a79777f3aa179c145737780282e27b508fc8fd688cb17c7a813e8bd39af" - ], - "markers": "python_version < '3.8'", - "version": "==0.23" - }, - "ipython": { - "hashes": [ - "sha256:060d19feef09453d3375ab23c7295ed36cb59e5a3904598ab903f93ec45f1f63", - "sha256:e468b8f03a0168a667982b50f0b4e0828cc32721bbea32b23934e55b7970eb7a" - ], - "index": "pypi", - "version": "==7.10.0" - }, - "ipython-genutils": { - "hashes": [ - "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", - "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" - ], - "version": "==0.2.0" - }, - "jedi": { - "hashes": [ - "sha256:786b6c3d80e2f06fd77162a07fed81b8baa22dde5d62896a790a331d6ac21a27", - "sha256:ba859c74fa3c966a22f2aeebe1b74ee27e2a462f56d3f5f7ca4a59af61bfe42e" - ], - "version": "==0.15.1" - }, - "jeepney": { - "hashes": [ - "sha256:13806f91a96e9b2623fd2a81b950d763ee471454aafd9eb6d75dbe7afce428fb", - "sha256:f6a3f93464a0cf052f4e87da3c8b3ed1e27696758fb9739c63d3a74d9a1b6774" - ], - "version": "==0.4.1" - }, - "jinja2": { - "hashes": [ - "sha256:74320bb91f31270f9551d46522e33af46a80c3d619f4a4bf42b3164d30b5911f", - "sha256:9fe95f19286cfefaa917656583d020be14e7859c6b0252588391e47db34527de" - ], - "version": "==2.10.3" - }, - "keyring": { - "hashes": [ - "sha256:91037ccaf0c9a112a76f7740e4a416b9457a69b66c2799421581bee710a974b3", - "sha256:f5bb20ea6c57c2360daf0c591931c9ea0d7660a8d9e32ca84d63273f131ea605" - ], - "version": "==19.2.0" - }, - "markupsafe": { - "hashes": [ - "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", - "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", - "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", - "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", - "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", - "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", - "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", - "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", - "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", - "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", - "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", - "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", - "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", - "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", - "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", - "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", - "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", - "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", - "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", - "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", - "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", - "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", - "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", - "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", - "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", - "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", - "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", - "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7" - ], - "version": "==1.1.1" - }, - "mccabe": { - "hashes": [ - "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", - "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" - ], - "version": "==0.6.1" - }, - "more-itertools": { - "hashes": [ - "sha256:409cd48d4db7052af495b09dec721011634af3753ae1ef92d2b32f73a745f832", - "sha256:92b8c4b06dac4f0611c0729b2f2ede52b2e1bac1ab48f089c7ddc12e26bb60c4" - ], - "version": "==7.2.0" - }, - "packaging": { - "hashes": [ - "sha256:28b924174df7a2fa32c1953825ff29c61e2f5e082343165438812f00d3a7fc47", - "sha256:d9551545c6d761f3def1677baf08ab2a3ca17c56879e70fecba2fc4dde4ed108" - ], - "version": "==19.2" - }, - "parso": { - "hashes": [ - "sha256:63854233e1fadb5da97f2744b6b24346d2750b85965e7e399bec1620232797dc", - "sha256:666b0ee4a7a1220f65d367617f2cd3ffddff3e205f3f16a0284df30e774c2a9c" - ], - "version": "==0.5.1" - }, - "pexpect": { - "hashes": [ - "sha256:2094eefdfcf37a1fdbfb9aa090862c1a4878e5c7e0e7e7088bdb511c558e5cd1", - "sha256:9e2c1fd0e6ee3a49b28f95d4b33bc389c89b20af6a1255906e90ff1262ce62eb" - ], - "markers": "sys_platform != 'win32'", - "version": "==4.7.0" - }, - "pickleshare": { - "hashes": [ - "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", - "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" - ], - "version": "==0.7.5" - }, - "pkginfo": { - "hashes": [ - "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb", - "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32" - ], - "version": "==1.5.0.1" - }, - "pluggy": { - "hashes": [ - "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", - "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" - ], - "version": "==0.13.1" - }, - "pprintpp": { - "hashes": [ - "sha256:b6b4dcdd0c0c0d75e4d7b2f21a9e933e5b2ce62b26e1a54537f9651ae5a5c01d", - "sha256:ea826108e2c7f49dc6d66c752973c3fc9749142a798d6b254e1e301cfdbc6403" - ], - "version": "==0.4.0" - }, - "prompt-toolkit": { - "hashes": [ - "sha256:3f1e4acc78605c25f79992c2e5b3fe9a1c238a6444ae3f4b7d2678cfbd67a8f8", - "sha256:cf1fc1500e9818973c4f92b6015bece88253f0aa599dd61d3fd375c5205cecbb" - ], - "version": "==3.0.0" - }, - "ptyprocess": { - "hashes": [ - "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0", - "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f" - ], - "version": "==0.6.0" - }, - "py": { - "hashes": [ - "sha256:64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa", - "sha256:dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53" - ], - "version": "==1.8.0" - }, - "pycodestyle": { - "hashes": [ - "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", - "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" - ], - "version": "==2.5.0" - }, - "pycparser": { - "hashes": [ - "sha256:a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3" - ], - "version": "==2.19" - }, - "pyflakes": { - "hashes": [ - "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", - "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2" - ], - "version": "==2.1.1" - }, - "pygments": { - "hashes": [ - "sha256:83ec6c6133ca6b529b7ff5aa826328fd14b5bb02a58c37f4f06384e96a0f94ab", - "sha256:b7949de3d396836085fea596998b135a22610bbcc4f2abfe9e448e44cbc58388" - ], - "version": "==2.5.1" - }, - "pyparsing": { - "hashes": [ - "sha256:20f995ecd72f2a1f4bf6b072b63b22e2eb457836601e76d6e5dfcd75436acc1f", - "sha256:4ca62001be367f01bd3e92ecbb79070272a9d4964dce6a48a82ff0b8bc7e683a" - ], - "version": "==2.4.5" - }, - "pytest": { - "hashes": [ - "sha256:63344a2e3bce2e4d522fd62b4fdebb647c019f1f9e4ca075debbd13219db4418", - "sha256:f67403f33b2b1d25a6756184077394167fe5e2f9d8bdaab30707d19ccec35427" - ], - "index": "pypi", - "version": "==5.3.1" - }, - "pytest-cov": { - "hashes": [ - "sha256:cc6742d8bac45070217169f5f72ceee1e0e55b0221f54bcf24845972d3a47f2b", - "sha256:cdbdef4f870408ebdbfeb44e63e07eb18bb4619fae852f6e760645fa36172626" - ], - "index": "pypi", - "version": "==2.8.1" - }, - "pytest-icdiff": { - "hashes": [ - "sha256:9ff97fb493085f8099a8a7f6161fd570fad96699f42dc08ffc66d04e8063862f" - ], - "index": "pypi", - "version": "==0.2" - }, - "pytest-runner": { - "hashes": [ - "sha256:5534b08b133ef9a5e2c22c7886a8f8508c95bb0b0bdc6cc13214f269c3c70d51", - "sha256:96c7e73ead7b93e388c5d614770d2bae6526efd997757d3543fe17b557a0942b" - ], - "index": "pypi", - "version": "==5.2" - }, - "python-coveralls": { - "hashes": [ - "sha256:bfaf7811e7dc5628e83b6b162962a4e2485dbff184b30e49f380374ed1bcee55", - "sha256:fb0ff49bb1551dac10b06bd55e9790287d898a0f1e2c959802235cae08dd0bff" - ], - "index": "pypi", - "version": "==2.9.3" - }, - "pytz": { - "hashes": [ - "sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d", - "sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be" - ], - "version": "==2019.3" - }, - "pyyaml": { - "hashes": [ - "sha256:0113bc0ec2ad727182326b61326afa3d1d8280ae1122493553fd6f4397f33df9", - "sha256:01adf0b6c6f61bd11af6e10ca52b7d4057dd0be0343eb9283c878cf3af56aee4", - "sha256:5124373960b0b3f4aa7df1707e63e9f109b5263eca5976c66e08b1c552d4eaf8", - "sha256:5ca4f10adbddae56d824b2c09668e91219bb178a1eee1faa56af6f99f11bf696", - "sha256:7907be34ffa3c5a32b60b95f4d95ea25361c951383a894fec31be7252b2b6f34", - "sha256:7ec9b2a4ed5cad025c2278a1e6a19c011c80a3caaac804fd2d329e9cc2c287c9", - "sha256:87ae4c829bb25b9fe99cf71fbb2140c448f534e24c998cc60f39ae4f94396a73", - "sha256:9de9919becc9cc2ff03637872a440195ac4241c80536632fffeb6a1e25a74299", - "sha256:a5a85b10e450c66b49f98846937e8cfca1db3127a9d5d1e31ca45c3d0bef4c5b", - "sha256:b0997827b4f6a7c286c01c5f60384d218dca4ed7d9efa945c3e1aa623d5709ae", - "sha256:b631ef96d3222e62861443cc89d6563ba3eeb816eeb96b2629345ab795e53681", - "sha256:bf47c0607522fdbca6c9e817a6e81b08491de50f3766a7a0e6a5be7905961b41", - "sha256:f81025eddd0327c7d4cfe9b62cf33190e1e736cc6e97502b3ec425f574b3e7a8" - ], - "index": "pypi", - "version": "==5.1.2" - }, - "readme-renderer": { - "hashes": [ - "sha256:bb16f55b259f27f75f640acf5e00cf897845a8b3e4731b5c1a436e4b8529202f", - "sha256:c8532b79afc0375a85f10433eca157d6b50f7d6990f337fa498c96cd4bfc203d" - ], - "version": "==24.0" - }, - "recommonmark": { - "hashes": [ - "sha256:29cd4faeb6c5268c633634f2d69aef9431e0f4d347f90659fd0aab20e541efeb", - "sha256:2ec4207a574289355d5b6ae4ae4abb29043346ca12cdd5f07d374dc5987d2852" - ], - "index": "pypi", - "version": "==0.6.0" - }, - "requests": { - "hashes": [ - "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", - "sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31" - ], - "version": "==2.22.0" - }, - "requests-toolbelt": { - "hashes": [ - "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f", - "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0" - ], - "version": "==0.9.1" - }, - "secretstorage": { - "hashes": [ - "sha256:20c797ae48a4419f66f8d28fc221623f11fc45b6828f96bdb1ad9990acb59f92", - "sha256:7a119fb52a88e398dbb22a4b3eb39b779bfbace7e4153b7bc6e5954d86282a8a" - ], - "markers": "sys_platform == 'linux'", - "version": "==3.1.1" - }, - "six": { - "hashes": [ - "sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd", - "sha256:30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66" - ], - "version": "==1.13.0" - }, - "snowballstemmer": { - "hashes": [ - "sha256:209f257d7533fdb3cb73bdbd24f436239ca3b2fa67d56f6ff88e86be08cc5ef0", - "sha256:df3bac3df4c2c01363f3dd2cfa78cce2840a79b9f1c2d2de9ce8d31683992f52" - ], - "version": "==2.0.0" - }, - "sphinx": { - "hashes": [ - "sha256:31088dfb95359384b1005619827eaee3056243798c62724fd3fa4b84ee4d71bd", - "sha256:52286a0b9d7caa31efee301ec4300dbdab23c3b05da1c9024b4e84896fb73d79" - ], - "index": "pypi", - "version": "==2.2.1" - }, - "sphinxcontrib-applehelp": { - "hashes": [ - "sha256:edaa0ab2b2bc74403149cb0209d6775c96de797dfd5b5e2a71981309efab3897", - "sha256:fb8dee85af95e5c30c91f10e7eb3c8967308518e0f7488a2828ef7bc191d0d5d" - ], - "version": "==1.0.1" - }, - "sphinxcontrib-devhelp": { - "hashes": [ - "sha256:6c64b077937330a9128a4da74586e8c2130262f014689b4b89e2d08ee7294a34", - "sha256:9512ecb00a2b0821a146736b39f7aeb90759834b07e81e8cc23a9c70bacb9981" - ], - "version": "==1.0.1" - }, - "sphinxcontrib-htmlhelp": { - "hashes": [ - "sha256:4670f99f8951bd78cd4ad2ab962f798f5618b17675c35c5ac3b2132a14ea8422", - "sha256:d4fd39a65a625c9df86d7fa8a2d9f3cd8299a3a4b15db63b50aac9e161d8eff7" - ], - "version": "==1.0.2" - }, - "sphinxcontrib-jsmath": { - "hashes": [ - "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178", - "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8" - ], - "version": "==1.0.1" - }, - "sphinxcontrib-qthelp": { - "hashes": [ - "sha256:513049b93031beb1f57d4daea74068a4feb77aa5630f856fcff2e50de14e9a20", - "sha256:79465ce11ae5694ff165becda529a600c754f4bc459778778c7017374d4d406f" - ], - "version": "==1.0.2" - }, - "sphinxcontrib-serializinghtml": { - "hashes": [ - "sha256:c0efb33f8052c04fd7a26c0a07f1678e8512e0faec19f4aa8f2473a8b81d5227", - "sha256:db6615af393650bf1151a6cd39120c29abaf93cc60db8c48eb2dddbfdc3a9768" - ], - "version": "==1.1.3" - }, - "tqdm": { - "hashes": [ - "sha256:5a1f3d58f3eb53264387394387fe23df469d2a3fab98c9e7f99d5c146c119873", - "sha256:f1a1613fee07cc30a253051617f2a219a785c58877f9f6bfa129446cbaf8b4c1" - ], - "version": "==4.39.0" - }, - "traitlets": { - "hashes": [ - "sha256:70b4c6a1d9019d7b4f6846832288f86998aa3b9207c6821f3578a6a6a467fe44", - "sha256:d023ee369ddd2763310e4c3eae1ff649689440d4ae59d7485eb4cfbbe3e359f7" - ], - "version": "==4.3.3" - }, - "twine": { - "hashes": [ - "sha256:c1af8ca391e43b0a06bbc155f7f67db0bf0d19d284bfc88d1675da497a946124", - "sha256:d561a5e511f70275e5a485a6275ff61851c16ffcb3a95a602189161112d9f160" - ], - "index": "pypi", - "version": "==3.1.1" - }, - "urllib3": { - "hashes": [ - "sha256:a8a318824cc77d1fd4b2bec2ded92646630d7fe8619497b142c84a9e6f5a7293", - "sha256:f3c5fd51747d450d4dcf6f923c81f78f811aab8205fda64b0aba34a4e48b0745" - ], - "version": "==1.25.7" - }, - "wcwidth": { - "hashes": [ - "sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e", - "sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c" - ], - "version": "==0.1.7" - }, - "webencodings": { - "hashes": [ - "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", - "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" - ], - "version": "==0.5.1" - }, - "zipp": { - "hashes": [ - "sha256:3718b1cbcd963c7d4c5511a8240812904164b7f381b647143a89d3b98f9bcd8e", - "sha256:f06903e9f1f43b12d371004b4ac7b06ab39a44adc747266928ae6debfa7b3335" - ], - "version": "==0.6.0" - } - } -} diff --git a/docs/conf.py b/docs/conf.py index d718dc0..235cb1d 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -18,8 +18,8 @@ sys.path.insert(0, os.path.abspath('../stilus')) -from lexer import Lexer # noqa -from parser import Parser # noqa +from stilus.lexer import Lexer # noqa +from stilus.parser import Parser # noqa from __version__ import __version__ # noqa import recommonmark # noqa diff --git a/docs/plan/current.md b/docs/plan/current.md index e6b9968..37728c8 100644 --- a/docs/plan/current.md +++ b/docs/plan/current.md @@ -2,8 +2,10 @@ The issues release, a.k.a. `issues, issues everywhere!` - - [ ] Check the circle-ci setup. + - [x] Check the circle-ci setup. + - [x] Migrate from pipenv to poetry. + - [ ] Start using black. - [ ] Cleanup of coverall/codecov properties. - - [ ] Update the assertions in the built-in functions. - - [ ] Document using docstrings and Sphinx. - - [ ] Start using github issues. + - [ ] Document using docstrings and Sphinx. + - [x] Start using github issues. + - [ ] Clear all the issues with a 'test' label.]\ diff --git a/docs/plan/future.md b/docs/plan/future.md index 7990aec..fb096a8 100644 --- a/docs/plan/future.md +++ b/docs/plan/future.md @@ -3,14 +3,17 @@ ### 0.10.0 - [ ] Create logo. + - [ ] Update the assertions in the built-in functions. - [ ] Use typing properly. - [ ] Start using github issues. - [ ] Add tests for `to_json()`, `equal()`, `coerce()`, `clone()` and `operate()` in all nodes? - [ ] Other things? - [ ] Update site to promote Stilus! + - [ ] Clean up the logging; improve the output. + - [ ] Extra options (--javascript, --stlus,...) can be added ### 1.0.0 -Last semantic versioning release; Stilus is ready! -From now on calendar versioning will be used. +At last! Stilus is ready! +Add calendar versioning to semantic version. \ No newline at end of file diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..52b6198 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,1552 @@ +[[package]] +category = "dev" +description = "A configurable sidebar-enabled Sphinx theme" +name = "alabaster" +optional = false +python-versions = "*" +version = "0.7.12" + +[[package]] +category = "dev" +description = "Disable App Nap on OS X 10.9" +marker = "sys_platform == \"darwin\"" +name = "appnope" +optional = false +python-versions = "*" +version = "0.1.0" + +[[package]] +category = "main" +description = "An unobtrusive argparse wrapper with natural syntax" +name = "argh" +optional = false +python-versions = "*" +version = "0.26.2" + +[[package]] +category = "dev" +description = "Atomic file writes." +marker = "sys_platform == \"win32\"" +name = "atomicwrites" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.3.0" + +[[package]] +category = "dev" +description = "Classes Without Boilerplate" +name = "attrs" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "19.3.0" + +[package.extras] +azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"] +dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "pre-commit"] +docs = ["sphinx", "zope.interface"] +tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] + +[[package]] +category = "dev" +description = "Internationalization utilities" +name = "babel" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.7.0" + +[package.dependencies] +pytz = ">=2015.7" + +[[package]] +category = "dev" +description = "Specifications for callback functions passed in to an API" +name = "backcall" +optional = false +python-versions = "*" +version = "0.1.0" + +[[package]] +category = "main" +description = "Screen-scraping library" +name = "beautifulsoup4" +optional = false +python-versions = "*" +version = "4.8.2" + +[package.dependencies] +soupsieve = ">=1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +category = "dev" +description = "An easy safelist-based HTML-sanitizing tool." +name = "bleach" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "3.1.0" + +[package.dependencies] +six = ">=1.9.0" +webencodings = "*" + +[[package]] +category = "dev" +description = "Python package for providing Mozilla's CA Bundle." +name = "certifi" +optional = false +python-versions = "*" +version = "2019.11.28" + +[[package]] +category = "dev" +description = "Foreign Function Interface for Python calling C code." +marker = "sys_platform == \"linux\"" +name = "cffi" +optional = false +python-versions = "*" +version = "1.13.2" + +[package.dependencies] +pycparser = "*" + +[[package]] +category = "dev" +description = "Universal encoding detector for Python 2 and 3" +name = "chardet" +optional = false +python-versions = "*" +version = "3.0.4" + +[[package]] +category = "main" +description = "Composable command line interface toolkit" +name = "click" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "7.0" + +[[package]] +category = "dev" +description = "Hosted coverage reports for Github, Bitbucket and Gitlab" +name = "codecov" +optional = false +python-versions = "*" +version = "2.0.15" + +[package.dependencies] +coverage = "*" +requests = ">=2.7.9" + +[[package]] +category = "dev" +description = "Cross-platform colored terminal text." +marker = "sys_platform == \"win32\"" +name = "colorama" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "0.4.3" + +[[package]] +category = "dev" +description = "Python parser for the CommonMark Markdown spec" +name = "commonmark" +optional = false +python-versions = "*" +version = "0.9.1" + +[package.extras] +test = ["flake8 (3.7.8)", "hypothesis (3.55.3)"] + +[[package]] +category = "dev" +description = "Code coverage measurement for Python" +name = "coverage" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4" +version = "4.5.4" + +[[package]] +category = "dev" +description = "Show coverage stats online via coveralls.io" +name = "coveralls" +optional = false +python-versions = "*" +version = "1.9.2" + +[package.dependencies] +coverage = ">=3.6,<5.0" +docopt = ">=0.6.1" +requests = ">=1.0.0" + +[package.extras] +yaml = ["PyYAML (>=3.10)"] + +[[package]] +category = "dev" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +marker = "sys_platform == \"linux\"" +name = "cryptography" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +version = "2.8" + +[package.dependencies] +cffi = ">=1.8,<1.11.3 || >1.11.3" +six = ">=1.4.1" + +[package.extras] +docs = ["sphinx (>=1.6.5,<1.8.0 || >1.8.0)", "sphinx-rtd-theme"] +docstest = ["doc8", "pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"] +idna = ["idna (>=2.1)"] +pep8test = ["flake8", "flake8-import-order", "pep8-naming"] +test = ["pytest (>=3.6.0,<3.9.0 || >3.9.0,<3.9.1 || >3.9.1,<3.9.2 || >3.9.2)", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,<3.79.2 || >3.79.2)"] + +[[package]] +category = "dev" +description = "Decorators for Humans" +name = "decorator" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*" +version = "4.4.1" + +[[package]] +category = "main" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +name = "deprecated" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.2.7" + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["tox", "bumpversion (<1)", "sphinx (<2)", "PyTest (<5)", "PyTest-Cov (<2.6)", "pytest", "pytest-cov"] + +[[package]] +category = "dev" +description = "Pythonic argument parser, that will make you smile" +name = "docopt" +optional = false +python-versions = "*" +version = "0.6.2" + +[[package]] +category = "dev" +description = "Docutils -- Python Documentation Utilities" +name = "docutils" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "0.15.2" + +[[package]] +category = "dev" +description = "Discover and load entry points from installed packages." +name = "entrypoints" +optional = false +python-versions = ">=2.7" +version = "0.3" + +[[package]] +category = "dev" +description = "the modular source code checker: pep8, pyflakes and co" +name = "flake8" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "3.7.9" + +[package.dependencies] +entrypoints = ">=0.3.0,<0.4.0" +mccabe = ">=0.6.0,<0.7.0" +pycodestyle = ">=2.5.0,<2.6.0" +pyflakes = ">=2.1.0,<2.2.0" + +[[package]] +category = "dev" +description = "improved colored diff" +name = "icdiff" +optional = false +python-versions = "*" +version = "1.9.1" + +[[package]] +category = "dev" +description = "Internationalized Domain Names in Applications (IDNA)" +name = "idna" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.8" + +[[package]] +category = "dev" +description = "Getting image size from png/jpeg/jpeg2000/gif file" +name = "imagesize" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.2.0" + +[[package]] +category = "dev" +description = "Read metadata from Python packages" +marker = "python_version < \"3.8\"" +name = "importlib-metadata" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +version = "1.3.0" + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "rst.linker"] +testing = ["packaging", "importlib-resources"] + +[[package]] +category = "dev" +description = "IPython: Productive Interactive Computing" +name = "ipython" +optional = false +python-versions = ">=3.6" +version = "7.11.0" + +[package.dependencies] +appnope = "*" +backcall = "*" +colorama = "*" +decorator = "*" +jedi = ">=0.10" +pexpect = "*" +pickleshare = "*" +prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" +pygments = "*" +setuptools = ">=18.5" +traitlets = ">=4.2" + +[package.extras] +all = ["notebook", "nose (>=0.10.1)", "ipyparallel", "qtconsole", "ipywidgets", "Sphinx (>=1.3)", "requests", "nbconvert", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.14)"] +doc = ["Sphinx (>=1.3)"] +kernel = ["ipykernel"] +nbconvert = ["nbconvert"] +nbformat = ["nbformat"] +notebook = ["notebook", "ipywidgets"] +parallel = ["ipyparallel"] +qtconsole = ["qtconsole"] +test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.14)"] + +[[package]] +category = "dev" +description = "Vestigial utilities from IPython" +name = "ipython-genutils" +optional = false +python-versions = "*" +version = "0.2.0" + +[[package]] +category = "dev" +description = "An autocompletion tool for Python that can be used for text editors." +name = "jedi" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.15.2" + +[package.dependencies] +parso = ">=0.5.2" + +[package.extras] +testing = ["colorama (0.4.1)", "docopt", "pytest (>=3.9.0,<5.0.0)"] + +[[package]] +category = "dev" +description = "Low-level, pure Python DBus protocol wrapper." +marker = "sys_platform == \"linux\"" +name = "jeepney" +optional = false +python-versions = ">=3.5" +version = "0.4.1" + +[package.extras] +dev = ["testpath"] + +[[package]] +category = "dev" +description = "A very fast and expressive template engine." +name = "jinja2" +optional = false +python-versions = "*" +version = "2.10.3" + +[package.dependencies] +MarkupSafe = ">=0.23" + +[package.extras] +i18n = ["Babel (>=0.8)"] + +[[package]] +category = "dev" +description = "Store and access your passwords safely." +name = "keyring" +optional = false +python-versions = ">=3.6" +version = "21.0.0" + +[package.dependencies] +pywin32-ctypes = "<0.1.0 || >0.1.0,<0.1.1 || >0.1.1" +secretstorage = "*" + +[package.dependencies.importlib-metadata] +python = "<3.8" +version = "*" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-black-multipy", "pytest-cov"] + +[[package]] +category = "main" +description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." +name = "lxml" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" +version = "4.4.2" + +[package.extras] +cssselect = ["cssselect (>=0.7)"] +html5 = ["html5lib"] +htmlsoup = ["beautifulsoup4"] +source = ["Cython (>=0.29.7)"] + +[[package]] +category = "dev" +description = "Safely add untrusted strings to HTML/XML markup." +name = "markupsafe" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +version = "1.1.1" + +[[package]] +category = "dev" +description = "McCabe checker, plugin for flake8" +name = "mccabe" +optional = false +python-versions = "*" +version = "0.6.1" + +[[package]] +category = "dev" +description = "More routines for operating on iterables, beyond itertools" +name = "more-itertools" +optional = false +python-versions = ">=3.5" +version = "8.0.2" + +[[package]] +category = "dev" +description = "Core utilities for Python packages" +name = "packaging" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "19.2" + +[package.dependencies] +pyparsing = ">=2.0.2" +six = "*" + +[[package]] +category = "dev" +description = "A Python Parser" +name = "parso" +optional = false +python-versions = "*" +version = "0.5.2" + +[package.extras] +testing = ["docopt", "pytest (>=3.0.7)"] + +[[package]] +category = "main" +description = "File system general utilities" +name = "pathtools" +optional = false +python-versions = "*" +version = "0.1.2" + +[[package]] +category = "dev" +description = "Pexpect allows easy control of interactive console applications." +marker = "sys_platform != \"win32\"" +name = "pexpect" +optional = false +python-versions = "*" +version = "4.7.0" + +[package.dependencies] +ptyprocess = ">=0.5" + +[[package]] +category = "dev" +description = "Tiny 'shelve'-like database with concurrency support" +name = "pickleshare" +optional = false +python-versions = "*" +version = "0.7.5" + +[[package]] +category = "main" +description = "Python Imaging Library (Fork)" +name = "pillow" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "6.2.1" + +[[package]] +category = "dev" +description = "Query metadatdata from sdists / bdists / installed packages." +name = "pkginfo" +optional = false +python-versions = "*" +version = "1.5.0.1" + +[package.extras] +testing = ["nose", "coverage"] + +[[package]] +category = "dev" +description = "plugin and hook calling mechanisms for python" +name = "pluggy" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.13.1" + +[package.dependencies] +[package.dependencies.importlib-metadata] +python = "<3.8" +version = ">=0.12" + +[package.extras] +dev = ["pre-commit", "tox"] + +[[package]] +category = "dev" +description = "A drop-in replacement for pprint that's actually pretty" +name = "pprintpp" +optional = false +python-versions = "*" +version = "0.4.0" + +[[package]] +category = "dev" +description = "Library for building powerful interactive command lines in Python" +name = "prompt-toolkit" +optional = false +python-versions = ">=3.6" +version = "3.0.2" + +[package.dependencies] +wcwidth = "*" + +[[package]] +category = "dev" +description = "Run a subprocess in a pseudo terminal" +marker = "sys_platform != \"win32\"" +name = "ptyprocess" +optional = false +python-versions = "*" +version = "0.6.0" + +[[package]] +category = "dev" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +name = "py" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.8.1" + +[[package]] +category = "dev" +description = "Python style guide checker" +name = "pycodestyle" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.5.0" + +[[package]] +category = "dev" +description = "C parser in Python" +marker = "sys_platform == \"linux\"" +name = "pycparser" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.19" + +[[package]] +category = "dev" +description = "passive checker of Python programs" +name = "pyflakes" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.1.1" + +[[package]] +category = "dev" +description = "Pygments is a syntax highlighting package written in Python." +name = "pygments" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "2.5.2" + +[[package]] +category = "dev" +description = "Python parsing module" +name = "pyparsing" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "2.4.6" + +[[package]] +category = "dev" +description = "pytest: simple powerful testing with Python" +name = "pytest" +optional = false +python-versions = ">=3.5" +version = "5.3.2" + +[package.dependencies] +atomicwrites = ">=1.0" +attrs = ">=17.4.0" +colorama = "*" +more-itertools = ">=4.0.0" +packaging = "*" +pluggy = ">=0.12,<1.0" +py = ">=1.5.0" +wcwidth = "*" + +[package.dependencies.importlib-metadata] +python = "<3.8" +version = ">=0.12" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + +[[package]] +category = "dev" +description = "Pytest plugin for measuring coverage." +name = "pytest-cov" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.8.1" + +[package.dependencies] +coverage = ">=4.4" +pytest = ">=3.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests (2.0.2)", "six", "virtualenv"] + +[[package]] +category = "dev" +description = "use icdiff for better error messages in pytest assertions" +name = "pytest-icdiff" +optional = false +python-versions = ">=3.6" +version = "0.2" + +[package.dependencies] +icdiff = "*" +pprintpp = "*" +pytest = "*" + +[[package]] +category = "dev" +description = "Invoke py.test as distutils command with dependency resolution" +name = "pytest-runner" +optional = false +python-versions = ">=2.7" +version = "5.2" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs", "pytest-flake8", "pytest-black-multipy", "pytest-cov", "pytest-virtualenv"] + +[[package]] +category = "dev" +description = "Python interface to coveralls.io API\n" +name = "python-coveralls" +optional = false +python-versions = "*" +version = "2.9.3" + +[package.dependencies] +PyYAML = "*" +coverage = "*" +requests = "*" +six = "*" + +[[package]] +category = "dev" +description = "World timezone definitions, modern and historical" +name = "pytz" +optional = false +python-versions = "*" +version = "2019.3" + +[[package]] +category = "dev" +description = "" +marker = "sys_platform == \"win32\"" +name = "pywin32-ctypes" +optional = false +python-versions = "*" +version = "0.2.0" + +[[package]] +category = "main" +description = "YAML parser and emitter for Python" +name = "pyyaml" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "5.2" + +[[package]] +category = "dev" +description = "readme_renderer is a library for rendering \"readme\" descriptions for Warehouse" +name = "readme-renderer" +optional = false +python-versions = "*" +version = "24.0" + +[package.dependencies] +Pygments = "*" +bleach = ">=2.1.0" +docutils = ">=0.13.1" +six = "*" + +[package.extras] +md = ["cmarkgfm (>=0.2.0)"] + +[[package]] +category = "dev" +description = "A docutils-compatibility bridge to CommonMark, enabling you to write CommonMark inside of Docutils & Sphinx projects." +name = "recommonmark" +optional = false +python-versions = "*" +version = "0.6.0" + +[package.dependencies] +commonmark = ">=0.8.1" +docutils = ">=0.11" +sphinx = ">=1.3.1" + +[[package]] +category = "dev" +description = "Python HTTP for Humans." +name = "requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "2.22.0" + +[package.dependencies] +certifi = ">=2017.4.17" +chardet = ">=3.0.2,<3.1.0" +idna = ">=2.5,<2.9" +urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" + +[package.extras] +security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] + +[[package]] +category = "dev" +description = "A utility belt for advanced users of python-requests" +name = "requests-toolbelt" +optional = false +python-versions = "*" +version = "0.9.1" + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + +[[package]] +category = "dev" +description = "Python bindings to FreeDesktop.org Secret Service API" +marker = "sys_platform == \"linux\"" +name = "secretstorage" +optional = false +python-versions = ">=3.5" +version = "3.1.1" + +[package.dependencies] +cryptography = "*" +jeepney = "*" + +[[package]] +category = "dev" +description = "Python 2 and 3 compatibility utilities" +name = "six" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*" +version = "1.13.0" + +[[package]] +category = "dev" +description = "This package provides 26 stemmers for 25 languages generated from Snowball algorithms." +name = "snowballstemmer" +optional = false +python-versions = "*" +version = "2.0.0" + +[[package]] +category = "main" +description = "A modern CSS selector implementation for Beautiful Soup." +name = "soupsieve" +optional = false +python-versions = "*" +version = "1.9.5" + +[[package]] +category = "dev" +description = "Python documentation generator" +name = "sphinx" +optional = false +python-versions = ">=3.5" +version = "2.3.1" + +[package.dependencies] +Jinja2 = ">=2.3" +Pygments = ">=2.0" +alabaster = ">=0.7,<0.8" +babel = ">=1.3,<2.0 || >2.0" +colorama = ">=0.3.5" +docutils = ">=0.12" +imagesize = "*" +packaging = "*" +requests = ">=2.5.0" +setuptools = "*" +snowballstemmer = ">=1.1" +sphinxcontrib-applehelp = "*" +sphinxcontrib-devhelp = "*" +sphinxcontrib-htmlhelp = "*" +sphinxcontrib-jsmath = "*" +sphinxcontrib-qthelp = "*" +sphinxcontrib-serializinghtml = "*" + +[package.extras] +docs = ["sphinxcontrib-websupport"] +test = ["pytest", "pytest-cov", "html5lib", "flake8 (>=3.5.0)", "flake8-import-order", "mypy (>=0.761)", "docutils-stubs"] + +[[package]] +category = "dev" +description = "" +name = "sphinxcontrib-applehelp" +optional = false +python-versions = "*" +version = "1.0.1" + +[package.extras] +test = ["pytest", "flake8", "mypy"] + +[[package]] +category = "dev" +description = "" +name = "sphinxcontrib-devhelp" +optional = false +python-versions = "*" +version = "1.0.1" + +[package.extras] +test = ["pytest", "flake8", "mypy"] + +[[package]] +category = "dev" +description = "" +name = "sphinxcontrib-htmlhelp" +optional = false +python-versions = "*" +version = "1.0.2" + +[package.extras] +test = ["pytest", "flake8", "mypy", "html5lib"] + +[[package]] +category = "dev" +description = "A sphinx extension which renders display math in HTML via JavaScript" +name = "sphinxcontrib-jsmath" +optional = false +python-versions = ">=3.5" +version = "1.0.1" + +[package.extras] +test = ["pytest", "flake8", "mypy"] + +[[package]] +category = "dev" +description = "" +name = "sphinxcontrib-qthelp" +optional = false +python-versions = "*" +version = "1.0.2" + +[package.extras] +test = ["pytest", "flake8", "mypy"] + +[[package]] +category = "dev" +description = "" +name = "sphinxcontrib-serializinghtml" +optional = false +python-versions = "*" +version = "1.1.3" + +[package.extras] +test = ["pytest", "flake8", "mypy"] + +[[package]] +category = "dev" +description = "Fast, Extensible Progress Meter" +name = "tqdm" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*" +version = "4.41.0" + +[package.extras] +dev = ["py-make (>=0.1.0)", "twine", "argopt", "pydoc-markdown"] + +[[package]] +category = "dev" +description = "Traitlets Python config system" +name = "traitlets" +optional = false +python-versions = "*" +version = "4.3.3" + +[package.dependencies] +decorator = "*" +ipython-genutils = "*" +six = "*" + +[package.extras] +test = ["pytest", "mock"] + +[[package]] +category = "dev" +description = "Collection of utilities for publishing packages on PyPI" +name = "twine" +optional = false +python-versions = ">=3.6" +version = "3.1.1" + +[package.dependencies] +keyring = ">=15.1" +pkginfo = ">=1.4.2" +readme-renderer = ">=21.0" +requests = ">=2.20" +requests-toolbelt = ">=0.8.0,<0.9.0 || >0.9.0" +setuptools = ">=0.7.0" +tqdm = ">=4.14" + +[package.dependencies.importlib-metadata] +python = "<3.8" +version = "*" + +[[package]] +category = "dev" +description = "HTTP library with thread-safe connection pooling, file post, and more." +name = "urllib3" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" +version = "1.25.7" + +[package.extras] +brotli = ["brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] + +[[package]] +category = "main" +description = "Filesystem events monitoring" +name = "watchdog" +optional = false +python-versions = "*" +version = "0.8.3" + +[package.dependencies] +PyYAML = ">=3.10" +argh = ">=0.24.1" +pathtools = ">=0.1.1" + +[[package]] +category = "dev" +description = "Measures number of Terminal column cells of wide-character codes" +name = "wcwidth" +optional = false +python-versions = "*" +version = "0.1.7" + +[[package]] +category = "dev" +description = "Character encoding aliases for legacy web content" +name = "webencodings" +optional = false +python-versions = "*" +version = "0.5.1" + +[[package]] +category = "main" +description = "A built-package format for Python." +name = "wheel" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.33.6" + +[package.extras] +test = ["pytest (>=3.0.0)", "pytest-cov"] + +[[package]] +category = "main" +description = "Module for decorators, wrappers and monkey patching." +name = "wrapt" +optional = false +python-versions = "*" +version = "1.11.2" + +[[package]] +category = "dev" +description = "Backport of pathlib-compatible object wrapper for zip files" +marker = "python_version < \"3.8\"" +name = "zipp" +optional = false +python-versions = ">=2.7" +version = "0.6.0" + +[package.dependencies] +more-itertools = "*" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] +testing = ["pathlib2", "contextlib2", "unittest2"] + +[metadata] +content-hash = "c00a628642b2c5d9580f28891dcb9716db7a69c0f8f80dc91fa9e04257e7aff3" +python-versions = "^3.6" + +[metadata.files] +alabaster = [ + {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, + {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, +] +appnope = [ + {file = "appnope-0.1.0-py2.py3-none-any.whl", hash = "sha256:5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0"}, + {file = "appnope-0.1.0.tar.gz", hash = "sha256:8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71"}, +] +argh = [ + {file = "argh-0.26.2-py2.py3-none-any.whl", hash = "sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3"}, + {file = "argh-0.26.2.tar.gz", hash = "sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65"}, +] +atomicwrites = [ + {file = "atomicwrites-1.3.0-py2.py3-none-any.whl", hash = "sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4"}, + {file = "atomicwrites-1.3.0.tar.gz", hash = "sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6"}, +] +attrs = [ + {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"}, + {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"}, +] +babel = [ + {file = "Babel-2.7.0-py2.py3-none-any.whl", hash = "sha256:af92e6106cb7c55286b25b38ad7695f8b4efb36a90ba483d7f7a6628c46158ab"}, + {file = "Babel-2.7.0.tar.gz", hash = "sha256:e86135ae101e31e2c8ec20a4e0c5220f4eed12487d5cf3f78be7e98d3a57fc28"}, +] +backcall = [ + {file = "backcall-0.1.0.tar.gz", hash = "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4"}, + {file = "backcall-0.1.0.zip", hash = "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2"}, +] +beautifulsoup4 = [ + {file = "beautifulsoup4-4.8.2-py2-none-any.whl", hash = "sha256:e1505eeed31b0f4ce2dbb3bc8eb256c04cc2b3b72af7d551a4ab6efd5cbe5dae"}, + {file = "beautifulsoup4-4.8.2-py3-none-any.whl", hash = "sha256:9fbb4d6e48ecd30bcacc5b63b94088192dcda178513b2ae3c394229f8911b887"}, + {file = "beautifulsoup4-4.8.2.tar.gz", hash = "sha256:05fd825eb01c290877657a56df4c6e4c311b3965bda790c613a3d6fb01a5462a"}, +] +bleach = [ + {file = "bleach-3.1.0-py2.py3-none-any.whl", hash = "sha256:213336e49e102af26d9cde77dd2d0397afabc5a6bf2fed985dc35b5d1e285a16"}, + {file = "bleach-3.1.0.tar.gz", hash = "sha256:3fdf7f77adcf649c9911387df51254b813185e32b2c6619f690b593a617e19fa"}, +] +certifi = [ + {file = "certifi-2019.11.28-py2.py3-none-any.whl", hash = "sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3"}, + {file = "certifi-2019.11.28.tar.gz", hash = "sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f"}, +] +cffi = [ + {file = "cffi-1.13.2-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:3c9fff570f13480b201e9ab69453108f6d98244a7f495e91b6c654a47486ba43"}, + {file = "cffi-1.13.2-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2c5e309ec482556397cb21ede0350c5e82f0eb2621de04b2633588d118da4396"}, + {file = "cffi-1.13.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:19db0cdd6e516f13329cba4903368bff9bb5a9331d3410b1b448daaadc495e54"}, + {file = "cffi-1.13.2-cp27-cp27m-win32.whl", hash = "sha256:5c4fae4e9cdd18c82ba3a134be256e98dc0596af1e7285a3d2602c97dcfa5159"}, + {file = "cffi-1.13.2-cp27-cp27m-win_amd64.whl", hash = "sha256:32a262e2b90ffcfdd97c7a5e24a6012a43c61f1f5a57789ad80af1d26c6acd97"}, + {file = "cffi-1.13.2-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:4a43c91840bda5f55249413037b7a9b79c90b1184ed504883b72c4df70778579"}, + {file = "cffi-1.13.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:8169cf44dd8f9071b2b9248c35fc35e8677451c52f795daa2bb4643f32a540bc"}, + {file = "cffi-1.13.2-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:71a608532ab3bd26223c8d841dde43f3516aa5d2bf37b50ac410bb5e99053e8f"}, + {file = "cffi-1.13.2-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:7f627141a26b551bdebbc4855c1157feeef18241b4b8366ed22a5c7d672ef858"}, + {file = "cffi-1.13.2-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:0b49274afc941c626b605fb59b59c3485c17dc776dc3cc7cc14aca74cc19cc42"}, + {file = "cffi-1.13.2-cp34-cp34m-win32.whl", hash = "sha256:4424e42199e86b21fc4db83bd76909a6fc2a2aefb352cb5414833c030f6ed71b"}, + {file = "cffi-1.13.2-cp34-cp34m-win_amd64.whl", hash = "sha256:7d4751da932caaec419d514eaa4215eaf14b612cff66398dd51129ac22680b20"}, + {file = "cffi-1.13.2-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:ccb032fda0873254380aa2bfad2582aedc2959186cce61e3a17abc1a55ff89c3"}, + {file = "cffi-1.13.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:dcd65317dd15bc0451f3e01c80da2216a31916bdcffd6221ca1202d96584aa25"}, + {file = "cffi-1.13.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:135f69aecbf4517d5b3d6429207b2dff49c876be724ac0c8bf8e1ea99df3d7e5"}, + {file = "cffi-1.13.2-cp35-cp35m-win32.whl", hash = "sha256:7b93a885bb13073afb0aa73ad82059a4c41f4b7d8eb8368980448b52d4c7dc2c"}, + {file = "cffi-1.13.2-cp35-cp35m-win_amd64.whl", hash = "sha256:e570d3ab32e2c2861c4ebe6ffcad6a8abf9347432a37608fe1fbd157b3f0036b"}, + {file = "cffi-1.13.2-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:0e3ea92942cb1168e38c05c1d56b0527ce31f1a370f6117f1d490b8dcd6b3a04"}, + {file = "cffi-1.13.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5ecfa867dea6fabe2a58f03ac9186ea64da1386af2159196da51c4904e11d652"}, + {file = "cffi-1.13.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:291f7c42e21d72144bb1c1b2e825ec60f46d0a7468f5346841860454c7aa8f57"}, + {file = "cffi-1.13.2-cp36-cp36m-win32.whl", hash = "sha256:62f2578358d3a92e4ab2d830cd1c2049c9c0d0e6d3c58322993cc341bdeac22e"}, + {file = "cffi-1.13.2-cp36-cp36m-win_amd64.whl", hash = "sha256:fd43a88e045cf992ed09fa724b5315b790525f2676883a6ea64e3263bae6549d"}, + {file = "cffi-1.13.2-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:d75c461e20e29afc0aee7172a0950157c704ff0dd51613506bd7d82b718e7410"}, + {file = "cffi-1.13.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:aa00d66c0fab27373ae44ae26a66a9e43ff2a678bf63a9c7c1a9a4d61172827a"}, + {file = "cffi-1.13.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:2e9c80a8c3344a92cb04661115898a9129c074f7ab82011ef4b612f645939f12"}, + {file = "cffi-1.13.2-cp37-cp37m-win32.whl", hash = "sha256:d754f39e0d1603b5b24a7f8484b22d2904fa551fe865fd0d4c3332f078d20d4e"}, + {file = "cffi-1.13.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6471a82d5abea994e38d2c2abc77164b4f7fbaaf80261cb98394d5793f11b12a"}, + {file = "cffi-1.13.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:74a1d8c85fb6ff0b30fbfa8ad0ac23cd601a138f7509dc617ebc65ef305bb98d"}, + {file = "cffi-1.13.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:42194f54c11abc8583417a7cf4eaff544ce0de8187abaf5d29029c91b1725ad3"}, + {file = "cffi-1.13.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:415bdc7ca8c1c634a6d7163d43fb0ea885a07e9618a64bda407e04b04333b7db"}, + {file = "cffi-1.13.2-cp38-cp38-win32.whl", hash = "sha256:6d4f18483d040e18546108eb13b1dfa1000a089bcf8529e30346116ea6240506"}, + {file = "cffi-1.13.2-cp38-cp38-win_amd64.whl", hash = "sha256:2781e9ad0e9d47173c0093321bb5435a9dfae0ed6a762aabafa13108f5f7b2ba"}, + {file = "cffi-1.13.2.tar.gz", hash = "sha256:599a1e8ff057ac530c9ad1778293c665cb81a791421f46922d80a86473c13346"}, +] +chardet = [ + {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, + {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, +] +click = [ + {file = "Click-7.0-py2.py3-none-any.whl", hash = "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13"}, + {file = "Click-7.0.tar.gz", hash = "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"}, +] +codecov = [ + {file = "codecov-2.0.15-py2.py3-none-any.whl", hash = "sha256:ae00d68e18d8a20e9c3288ba3875ae03db3a8e892115bf9b83ef20507732bed4"}, + {file = "codecov-2.0.15.tar.gz", hash = "sha256:8ed8b7c6791010d359baed66f84f061bba5bd41174bf324c31311e8737602788"}, +] +colorama = [ + {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, + {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, +] +commonmark = [ + {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, + {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, +] +coverage = [ + {file = "coverage-4.5.4-cp26-cp26m-macosx_10_12_x86_64.whl", hash = "sha256:eee64c616adeff7db37cc37da4180a3a5b6177f5c46b187894e633f088fb5b28"}, + {file = "coverage-4.5.4-cp27-cp27m-macosx_10_12_x86_64.whl", hash = "sha256:ef824cad1f980d27f26166f86856efe11eff9912c4fed97d3804820d43fa550c"}, + {file = "coverage-4.5.4-cp27-cp27m-macosx_10_13_intel.whl", hash = "sha256:9a334d6c83dfeadae576b4d633a71620d40d1c379129d587faa42ee3e2a85cce"}, + {file = "coverage-4.5.4-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:7494b0b0274c5072bddbfd5b4a6c6f18fbbe1ab1d22a41e99cd2d00c8f96ecfe"}, + {file = "coverage-4.5.4-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:826f32b9547c8091679ff292a82aca9c7b9650f9fda3e2ca6bf2ac905b7ce888"}, + {file = "coverage-4.5.4-cp27-cp27m-win32.whl", hash = "sha256:63a9a5fc43b58735f65ed63d2cf43508f462dc49857da70b8980ad78d41d52fc"}, + {file = "coverage-4.5.4-cp27-cp27m-win_amd64.whl", hash = "sha256:e2ede7c1d45e65e209d6093b762e98e8318ddeff95317d07a27a2140b80cfd24"}, + {file = "coverage-4.5.4-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:dd579709a87092c6dbee09d1b7cfa81831040705ffa12a1b248935274aee0437"}, + {file = "coverage-4.5.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:08907593569fe59baca0bf152c43f3863201efb6113ecb38ce7e97ce339805a6"}, + {file = "coverage-4.5.4-cp33-cp33m-macosx_10_10_x86_64.whl", hash = "sha256:6b62544bb68106e3f00b21c8930e83e584fdca005d4fffd29bb39fb3ffa03cb5"}, + {file = "coverage-4.5.4-cp34-cp34m-macosx_10_12_x86_64.whl", hash = "sha256:331cb5115673a20fb131dadd22f5bcaf7677ef758741312bee4937d71a14b2ef"}, + {file = "coverage-4.5.4-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:bf1ef9eb901113a9805287e090452c05547578eaab1b62e4ad456fcc049a9b7e"}, + {file = "coverage-4.5.4-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:386e2e4090f0bc5df274e720105c342263423e77ee8826002dcffe0c9533dbca"}, + {file = "coverage-4.5.4-cp34-cp34m-win32.whl", hash = "sha256:fa964bae817babece5aa2e8c1af841bebb6d0b9add8e637548809d040443fee0"}, + {file = "coverage-4.5.4-cp34-cp34m-win_amd64.whl", hash = "sha256:df6712284b2e44a065097846488f66840445eb987eb81b3cc6e4149e7b6982e1"}, + {file = "coverage-4.5.4-cp35-cp35m-macosx_10_12_x86_64.whl", hash = "sha256:efc89291bd5a08855829a3c522df16d856455297cf35ae827a37edac45f466a7"}, + {file = "coverage-4.5.4-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:e4ef9c164eb55123c62411f5936b5c2e521b12356037b6e1c2617cef45523d47"}, + {file = "coverage-4.5.4-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:ff37757e068ae606659c28c3bd0d923f9d29a85de79bf25b2b34b148473b5025"}, + {file = "coverage-4.5.4-cp35-cp35m-win32.whl", hash = "sha256:bf0a7aed7f5521c7ca67febd57db473af4762b9622254291fbcbb8cd0ba5e33e"}, + {file = "coverage-4.5.4-cp35-cp35m-win_amd64.whl", hash = "sha256:19e4df788a0581238e9390c85a7a09af39c7b539b29f25c89209e6c3e371270d"}, + {file = "coverage-4.5.4-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:60851187677b24c6085248f0a0b9b98d49cba7ecc7ec60ba6b9d2e5574ac1ee9"}, + {file = "coverage-4.5.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:245388cda02af78276b479f299bbf3783ef0a6a6273037d7c60dc73b8d8d7755"}, + {file = "coverage-4.5.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:c0afd27bc0e307a1ffc04ca5ec010a290e49e3afbe841c5cafc5c5a80ecd81c9"}, + {file = "coverage-4.5.4-cp36-cp36m-win32.whl", hash = "sha256:6ba744056423ef8d450cf627289166da65903885272055fb4b5e113137cfa14f"}, + {file = "coverage-4.5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:af7ed8a8aa6957aac47b4268631fa1df984643f07ef00acd374e456364b373f5"}, + {file = "coverage-4.5.4-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:3a794ce50daee01c74a494919d5ebdc23d58873747fa0e288318728533a3e1ca"}, + {file = "coverage-4.5.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:0be0f1ed45fc0c185cfd4ecc19a1d6532d72f86a2bac9de7e24541febad72650"}, + {file = "coverage-4.5.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:eca2b7343524e7ba246cab8ff00cab47a2d6d54ada3b02772e908a45675722e2"}, + {file = "coverage-4.5.4-cp37-cp37m-win32.whl", hash = "sha256:93715dffbcd0678057f947f496484e906bf9509f5c1c38fc9ba3922893cda5f5"}, + {file = "coverage-4.5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:23cc09ed395b03424d1ae30dcc292615c1372bfba7141eb85e11e50efaa6b351"}, + {file = "coverage-4.5.4-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:141f08ed3c4b1847015e2cd62ec06d35e67a3ac185c26f7635f4406b90afa9c5"}, + {file = "coverage-4.5.4.tar.gz", hash = "sha256:e07d9f1a23e9e93ab5c62902833bf3e4b1f65502927379148b6622686223125c"}, +] +coveralls = [ + {file = "coveralls-1.9.2-py2.py3-none-any.whl", hash = "sha256:25522a50cdf720d956601ca6ef480786e655ae2f0c94270c77e1a23d742de558"}, + {file = "coveralls-1.9.2.tar.gz", hash = "sha256:8e3315e8620bb6b3c6f3179a75f498e7179c93b3ddc440352404f941b1f70524"}, +] +cryptography = [ + {file = "cryptography-2.8-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:fb81c17e0ebe3358486cd8cc3ad78adbae58af12fc2bf2bc0bb84e8090fa5ce8"}, + {file = "cryptography-2.8-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:44ff04138935882fef7c686878e1c8fd80a723161ad6a98da31e14b7553170c2"}, + {file = "cryptography-2.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:369d2346db5934345787451504853ad9d342d7f721ae82d098083e1f49a582ad"}, + {file = "cryptography-2.8-cp27-cp27m-win32.whl", hash = "sha256:df6b4dca2e11865e6cfbfb708e800efb18370f5a46fd601d3755bc7f85b3a8a2"}, + {file = "cryptography-2.8-cp27-cp27m-win_amd64.whl", hash = "sha256:7f09806ed4fbea8f51585231ba742b58cbcfbfe823ea197d8c89a5e433c7e912"}, + {file = "cryptography-2.8-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:58363dbd966afb4f89b3b11dfb8ff200058fbc3b947507675c19ceb46104b48d"}, + {file = "cryptography-2.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6ec280fb24d27e3d97aa731e16207d58bd8ae94ef6eab97249a2afe4ba643d42"}, + {file = "cryptography-2.8-cp34-abi3-macosx_10_6_intel.whl", hash = "sha256:b43f53f29816ba1db8525f006fa6f49292e9b029554b3eb56a189a70f2a40879"}, + {file = "cryptography-2.8-cp34-abi3-manylinux1_x86_64.whl", hash = "sha256:7270a6c29199adc1297776937a05b59720e8a782531f1f122f2eb8467f9aab4d"}, + {file = "cryptography-2.8-cp34-abi3-manylinux2010_x86_64.whl", hash = "sha256:de96157ec73458a7f14e3d26f17f8128c959084931e8997b9e655a39c8fde9f9"}, + {file = "cryptography-2.8-cp34-cp34m-win32.whl", hash = "sha256:02079a6addc7b5140ba0825f542c0869ff4df9a69c360e339ecead5baefa843c"}, + {file = "cryptography-2.8-cp34-cp34m-win_amd64.whl", hash = "sha256:b0de590a8b0979649ebeef8bb9f54394d3a41f66c5584fff4220901739b6b2f0"}, + {file = "cryptography-2.8-cp35-cp35m-win32.whl", hash = "sha256:ecadccc7ba52193963c0475ac9f6fa28ac01e01349a2ca48509667ef41ffd2cf"}, + {file = "cryptography-2.8-cp35-cp35m-win_amd64.whl", hash = "sha256:90df0cc93e1f8d2fba8365fb59a858f51a11a394d64dbf3ef844f783844cc793"}, + {file = "cryptography-2.8-cp36-cp36m-win32.whl", hash = "sha256:1df22371fbf2004c6f64e927668734070a8953362cd8370ddd336774d6743595"}, + {file = "cryptography-2.8-cp36-cp36m-win_amd64.whl", hash = "sha256:a518c153a2b5ed6b8cc03f7ae79d5ffad7315ad4569b2d5333a13c38d64bd8d7"}, + {file = "cryptography-2.8-cp37-cp37m-win32.whl", hash = "sha256:4b1030728872c59687badcca1e225a9103440e467c17d6d1730ab3d2d64bfeff"}, + {file = "cryptography-2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:d31402aad60ed889c7e57934a03477b572a03af7794fa8fb1780f21ea8f6551f"}, + {file = "cryptography-2.8-cp38-cp38-win32.whl", hash = "sha256:73fd30c57fa2d0a1d7a49c561c40c2f79c7d6c374cc7750e9ac7c99176f6428e"}, + {file = "cryptography-2.8-cp38-cp38-win_amd64.whl", hash = "sha256:971221ed40f058f5662a604bd1ae6e4521d84e6cad0b7b170564cc34169c8f13"}, + {file = "cryptography-2.8.tar.gz", hash = "sha256:3cda1f0ed8747339bbdf71b9f38ca74c7b592f24f65cdb3ab3765e4b02871651"}, +] +decorator = [ + {file = "decorator-4.4.1-py2.py3-none-any.whl", hash = "sha256:5d19b92a3c8f7f101c8dd86afd86b0f061a8ce4540ab8cd401fa2542756bce6d"}, + {file = "decorator-4.4.1.tar.gz", hash = "sha256:54c38050039232e1db4ad7375cfce6748d7b41c29e95a081c8a6d2c30364a2ce"}, +] +deprecated = [ + {file = "Deprecated-1.2.7-py2.py3-none-any.whl", hash = "sha256:8b6a5aa50e482d8244a62e5582b96c372e87e3a28e8b49c316e46b95c76a611d"}, + {file = "Deprecated-1.2.7.tar.gz", hash = "sha256:408038ab5fdeca67554e8f6742d1521cd3cd0ee0ff9d47f29318a4f4da31c308"}, +] +docopt = [ + {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, +] +docutils = [ + {file = "docutils-0.15.2-py2-none-any.whl", hash = "sha256:9e4d7ecfc600058e07ba661411a2b7de2fd0fafa17d1a7f7361cd47b1175c827"}, + {file = "docutils-0.15.2-py3-none-any.whl", hash = "sha256:6c4f696463b79f1fb8ba0c594b63840ebd41f059e92b31957c46b74a4599b6d0"}, + {file = "docutils-0.15.2.tar.gz", hash = "sha256:a2aeea129088da402665e92e0b25b04b073c04b2dce4ab65caaa38b7ce2e1a99"}, +] +entrypoints = [ + {file = "entrypoints-0.3-py2.py3-none-any.whl", hash = "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19"}, + {file = "entrypoints-0.3.tar.gz", hash = "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451"}, +] +flake8 = [ + {file = "flake8-3.7.9-py2.py3-none-any.whl", hash = "sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca"}, + {file = "flake8-3.7.9.tar.gz", hash = "sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb"}, +] +icdiff = [ + {file = "icdiff-1.9.1.tar.gz", hash = "sha256:66972dd03318da55280991db375d3ef6b66d948c67af96c1ebdb21587e86655e"}, +] +idna = [ + {file = "idna-2.8-py2.py3-none-any.whl", hash = "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"}, + {file = "idna-2.8.tar.gz", hash = "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407"}, +] +imagesize = [ + {file = "imagesize-1.2.0-py2.py3-none-any.whl", hash = "sha256:6965f19a6a2039c7d48bca7dba2473069ff854c36ae6f19d2cde309d998228a1"}, + {file = "imagesize-1.2.0.tar.gz", hash = "sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1"}, +] +importlib-metadata = [ + {file = "importlib_metadata-1.3.0-py2.py3-none-any.whl", hash = "sha256:d95141fbfa7ef2ec65cfd945e2af7e5a6ddbd7c8d9a25e66ff3be8e3daf9f60f"}, + {file = "importlib_metadata-1.3.0.tar.gz", hash = "sha256:073a852570f92da5f744a3472af1b61e28e9f78ccf0c9117658dc32b15de7b45"}, +] +ipython = [ + {file = "ipython-7.11.0-py3-none-any.whl", hash = "sha256:cc70e2111d1629e31ef9ff445529f8bb2b4fc4f93bfe140c33fe18cf36fde072"}, + {file = "ipython-7.11.0.tar.gz", hash = "sha256:0b67031a659fd7046cbf8c4efc2a0d514ee050434dfede76f540cfa6f806f65e"}, +] +ipython-genutils = [ + {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, + {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, +] +jedi = [ + {file = "jedi-0.15.2-py2.py3-none-any.whl", hash = "sha256:1349c1e8c107095a55386628bb3b2a79422f3a2cab8381e34ce19909e0cf5064"}, + {file = "jedi-0.15.2.tar.gz", hash = "sha256:e909527104a903606dd63bea6e8e888833f0ef087057829b89a18364a856f807"}, +] +jeepney = [ + {file = "jeepney-0.4.1-py3-none-any.whl", hash = "sha256:f6a3f93464a0cf052f4e87da3c8b3ed1e27696758fb9739c63d3a74d9a1b6774"}, + {file = "jeepney-0.4.1.tar.gz", hash = "sha256:13806f91a96e9b2623fd2a81b950d763ee471454aafd9eb6d75dbe7afce428fb"}, +] +jinja2 = [ + {file = "Jinja2-2.10.3-py2.py3-none-any.whl", hash = "sha256:74320bb91f31270f9551d46522e33af46a80c3d619f4a4bf42b3164d30b5911f"}, + {file = "Jinja2-2.10.3.tar.gz", hash = "sha256:9fe95f19286cfefaa917656583d020be14e7859c6b0252588391e47db34527de"}, +] +keyring = [ + {file = "keyring-21.0.0-py2.py3-none-any.whl", hash = "sha256:ad84f7fe26ab51731f089eaf1c44ebf4c5fae323653c908888a3a6212ad0bbe7"}, + {file = "keyring-21.0.0.tar.gz", hash = "sha256:5f5f92327b6c7432bebc18a1b60cb3797d99b08db1f5b919b8187c37a01f1ccc"}, +] +lxml = [ + {file = "lxml-4.4.2-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:7b4fc7b1ecc987ca7aaf3f4f0e71bbfbd81aaabf87002558f5bc95da3a865bcd"}, + {file = "lxml-4.4.2-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:f6ed60a62c5f1c44e789d2cf14009423cb1646b44a43e40a9cf6a21f077678a1"}, + {file = "lxml-4.4.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:4fcc472ef87f45c429d3b923b925704aa581f875d65bac80f8ab0c3296a63f78"}, + {file = "lxml-4.4.2-cp27-cp27m-win32.whl", hash = "sha256:ad9b81351fdc236bda538efa6879315448411a81186c836d4b80d6ca8217cdb9"}, + {file = "lxml-4.4.2-cp27-cp27m-win_amd64.whl", hash = "sha256:8f54f0924d12c47a382c600c880770b5ebfc96c9fd94cf6f6bdc21caf6163ea7"}, + {file = "lxml-4.4.2-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:217262fcf6a4c2e1c7cb1efa08bd9ebc432502abc6c255c4abab611e8be0d14d"}, + {file = "lxml-4.4.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:6e74d5f4d6ecd6942375c52ffcd35f4318a61a02328f6f1bd79fcb4ffedf969e"}, + {file = "lxml-4.4.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:13cf89be53348d1c17b453867da68704802966c433b2bb4fa1f970daadd2ef70"}, + {file = "lxml-4.4.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:cf4650942de5e5685ad308e22bcafbccfe37c54aa7c0e30cd620c2ee5c93d336"}, + {file = "lxml-4.4.2-cp35-cp35m-win32.whl", hash = "sha256:0571e607558665ed42e450d7bf0e2941d542c18e117b1ebbf0ba72f287ad841c"}, + {file = "lxml-4.4.2-cp35-cp35m-win_amd64.whl", hash = "sha256:3213f753e8ae86c396e0e066866e64c6b04618e85c723b32ecb0909885211f74"}, + {file = "lxml-4.4.2-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:4690984a4dee1033da0af6df0b7a6bde83f74e1c0c870623797cec77964de34d"}, + {file = "lxml-4.4.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0e3f04a7615fdac0be5e18b2406529521d6dbdb0167d2a690ee328bef7807487"}, + {file = "lxml-4.4.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e301055deadfedbd80cf94f2f65ff23126b232b0d1fea28f332ce58137bcdb18"}, + {file = "lxml-4.4.2-cp36-cp36m-win32.whl", hash = "sha256:223e544828f1955daaf4cefbb4853bc416b2ec3fd56d4f4204a8b17007c21250"}, + {file = "lxml-4.4.2-cp36-cp36m-win_amd64.whl", hash = "sha256:c3c289762cc09735e2a8f8a49571d0e8b4f57ea831ea11558247b5bdea0ac4db"}, + {file = "lxml-4.4.2-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:00ac0d64949fef6b3693813fe636a2d56d97a5a49b5bbb86e4cc4cc50ebc9ea2"}, + {file = "lxml-4.4.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:cfcbc33c9c59c93776aa41ab02e55c288a042211708b72fdb518221cc803abc8"}, + {file = "lxml-4.4.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:61409bd745a265a742f2693e4600e4dbd45cc1daebe1d5fad6fcb22912d44145"}, + {file = "lxml-4.4.2-cp37-cp37m-win32.whl", hash = "sha256:678f1963f755c5d9f5f6968dded7b245dd1ece8cf53c1aa9d80e6734a8c7f41d"}, + {file = "lxml-4.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6c6d03549d4e2734133badb9ab1c05d9f0ef4bcd31d83e5d2b4747c85cfa21da"}, + {file = "lxml-4.4.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:ebbfe24df7f7b5c6c7620702496b6419f6a9aa2fd7f005eb731cc80d7b4692b9"}, + {file = "lxml-4.4.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:277cb61fede2f95b9c61912fefb3d43fbd5f18bf18a14fae4911b67984486f5d"}, + {file = "lxml-4.4.2-cp38-cp38-win32.whl", hash = "sha256:bbd00e21ea17f7bcc58dccd13869d68441b32899e89cf6cfa90d624a9198ce85"}, + {file = "lxml-4.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:7ed386a40e172ddf44c061ad74881d8622f791d9af0b6f5be20023029129bc85"}, + {file = "lxml-4.4.2.tar.gz", hash = "sha256:eff69ddbf3ad86375c344339371168640951c302450c5d3e9936e98d6459db06"}, +] +markupsafe = [ + {file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-win32.whl", hash = "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-win_amd64.whl", hash = "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e"}, + {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f"}, + {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-win32.whl", hash = "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-win_amd64.whl", hash = "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"}, + {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"}, +] +mccabe = [ + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, +] +more-itertools = [ + {file = "more-itertools-8.0.2.tar.gz", hash = "sha256:b84b238cce0d9adad5ed87e745778d20a3f8487d0f0cb8b8a586816c7496458d"}, + {file = "more_itertools-8.0.2-py3-none-any.whl", hash = "sha256:c833ef592a0324bcc6a60e48440da07645063c453880c9477ceb22490aec1564"}, +] +packaging = [ + {file = "packaging-19.2-py2.py3-none-any.whl", hash = "sha256:d9551545c6d761f3def1677baf08ab2a3ca17c56879e70fecba2fc4dde4ed108"}, + {file = "packaging-19.2.tar.gz", hash = "sha256:28b924174df7a2fa32c1953825ff29c61e2f5e082343165438812f00d3a7fc47"}, +] +parso = [ + {file = "parso-0.5.2-py2.py3-none-any.whl", hash = "sha256:5c1f7791de6bd5dbbeac8db0ef5594b36799de198b3f7f7014643b0c5536b9d3"}, + {file = "parso-0.5.2.tar.gz", hash = "sha256:55cf25df1a35fd88b878715874d2c4dc1ad3f0eebd1e0266a67e1f55efccfbe1"}, +] +pathtools = [ + {file = "pathtools-0.1.2.tar.gz", hash = "sha256:7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0"}, +] +pexpect = [ + {file = "pexpect-4.7.0-py2.py3-none-any.whl", hash = "sha256:2094eefdfcf37a1fdbfb9aa090862c1a4878e5c7e0e7e7088bdb511c558e5cd1"}, + {file = "pexpect-4.7.0.tar.gz", hash = "sha256:9e2c1fd0e6ee3a49b28f95d4b33bc389c89b20af6a1255906e90ff1262ce62eb"}, +] +pickleshare = [ + {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, + {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, +] +pillow = [ + {file = "Pillow-6.2.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:4ac6148008c169603070c092e81f88738f1a0c511e07bd2bb0f9ef542d375da9"}, + {file = "Pillow-6.2.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:4aad1b88933fd6dc2846552b89ad0c74ddbba2f0884e2c162aa368374bf5abab"}, + {file = "Pillow-6.2.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:c710fcb7ee32f67baf25aa9ffede4795fd5d93b163ce95fdc724383e38c9df96"}, + {file = "Pillow-6.2.1-cp27-cp27m-win32.whl", hash = "sha256:e9a3edd5f714229d41057d56ac0f39ad9bdba6767e8c888c951869f0bdd129b0"}, + {file = "Pillow-6.2.1-cp27-cp27m-win_amd64.whl", hash = "sha256:b1ae48d87f10d1384e5beecd169c77502fcc04a2c00a4c02b85f0a94b419e5f9"}, + {file = "Pillow-6.2.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:a423c2ea001c6265ed28700df056f75e26215fd28c001e93ef4380b0f05f9547"}, + {file = "Pillow-6.2.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:9f5529fc02009f96ba95bea48870173426879dc19eec49ca8e08cd63ecd82ddb"}, + {file = "Pillow-6.2.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:5cc901c2ab9409b4b7ac7b5bcc3e86ac14548627062463da0af3b6b7c555a871"}, + {file = "Pillow-6.2.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c6414f6aad598364aaf81068cabb077894eb88fed99c6a65e6e8217bab62ae7a"}, + {file = "Pillow-6.2.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:384b12c9aa8ef95558abdcb50aada56d74bc7cc131dd62d28c2d0e4d3aadd573"}, + {file = "Pillow-6.2.1-cp35-cp35m-win32.whl", hash = "sha256:248cffc168896982f125f5c13e9317c059f74fffdb4152893339f3be62a01340"}, + {file = "Pillow-6.2.1-cp35-cp35m-win_amd64.whl", hash = "sha256:285edafad9bc60d96978ed24d77cdc0b91dace88e5da8c548ba5937c425bca8b"}, + {file = "Pillow-6.2.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:846fa202bd7ee0f6215c897a1d33238ef071b50766339186687bd9b7a6d26ac5"}, + {file = "Pillow-6.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:7ce80c0a65a6ea90ef9c1f63c8593fcd2929448613fc8da0adf3e6bfad669d08"}, + {file = "Pillow-6.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e0697b826da6c2472bb6488db4c0a7fa8af0d52fa08833ceb3681358914b14e5"}, + {file = "Pillow-6.2.1-cp36-cp36m-win32.whl", hash = "sha256:047d9473cf68af50ac85f8ee5d5f21a60f849bc17d348da7fc85711287a75031"}, + {file = "Pillow-6.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:83792cb4e0b5af480588601467c0764242b9a483caea71ef12d22a0d0d6bdce2"}, + {file = "Pillow-6.2.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:c9e5ffb910b14f090ac9c38599063e354887a5f6d7e6d26795e916b4514f2c1a"}, + {file = "Pillow-6.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4deb1d2a45861ae6f0b12ea0a786a03d19d29edcc7e05775b85ec2877cb54c5e"}, + {file = "Pillow-6.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:0f66dc6c8a3cc319561a633b6aa82c44107f12594643efa37210d8c924fc1c71"}, + {file = "Pillow-6.2.1-cp37-cp37m-win32.whl", hash = "sha256:59aa2c124df72cc75ed72c8d6005c442d4685691a30c55321e00ed915ad1a291"}, + {file = "Pillow-6.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6c1db03e8dff7b9f955a0fb9907eb9ca5da75b5ce056c0c93d33100a35050281"}, + {file = "Pillow-6.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:12c9169c4e8fe0a7329e8658c7e488001f6b4c8e88740e76292c2b857af2e94c"}, + {file = "Pillow-6.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:27faf0552bf8c260a5cee21a76e031acaea68babb64daf7e8f2e2540745082aa"}, + {file = "Pillow-6.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:809c19241c14433c5d6135e1b6c72da4e3b56d5c865ad5736ab99af8896b8f41"}, + {file = "Pillow-6.2.1-cp38-cp38-win32.whl", hash = "sha256:ac4428094b42907aba5879c7c000d01c8278d451a3b7cccd2103e21f6397ea75"}, + {file = "Pillow-6.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:38950b3a707f6cef09cd3cbb142474357ad1a985ceb44d921bdf7b4647b3e13e"}, + {file = "Pillow-6.2.1-pp272-pypy_41-win32.whl", hash = "sha256:5a47d2123a9ec86660fe0e8d0ebf0aa6bc6a17edc63f338b73ea20ba11713f12"}, + {file = "Pillow-6.2.1-pp372-pp372-win32.whl", hash = "sha256:c7be4b8a09852291c3c48d3c25d1b876d2494a0a674980089ac9d5e0d78bd132"}, + {file = "Pillow-6.2.1.tar.gz", hash = "sha256:bf4e972a88f8841d8fdc6db1a75e0f8d763e66e3754b03006cbc3854d89f1cb1"}, +] +pkginfo = [ + {file = "pkginfo-1.5.0.1-py2.py3-none-any.whl", hash = "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32"}, + {file = "pkginfo-1.5.0.1.tar.gz", hash = "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb"}, +] +pluggy = [ + {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, + {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, +] +pprintpp = [ + {file = "pprintpp-0.4.0-py2.py3-none-any.whl", hash = "sha256:b6b4dcdd0c0c0d75e4d7b2f21a9e933e5b2ce62b26e1a54537f9651ae5a5c01d"}, + {file = "pprintpp-0.4.0.tar.gz", hash = "sha256:ea826108e2c7f49dc6d66c752973c3fc9749142a798d6b254e1e301cfdbc6403"}, +] +prompt-toolkit = [ + {file = "prompt_toolkit-3.0.2-py3-none-any.whl", hash = "sha256:0278d2f51b5ceba6ea8da39f76d15684e84c996b325475f6e5720edc584326a7"}, + {file = "prompt_toolkit-3.0.2.tar.gz", hash = "sha256:63daee79aa8366c8f1c637f1a4876b890da5fc92a19ebd2f7080ebacb901e990"}, +] +ptyprocess = [ + {file = "ptyprocess-0.6.0-py2.py3-none-any.whl", hash = "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f"}, + {file = "ptyprocess-0.6.0.tar.gz", hash = "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0"}, +] +py = [ + {file = "py-1.8.1-py2.py3-none-any.whl", hash = "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0"}, + {file = "py-1.8.1.tar.gz", hash = "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa"}, +] +pycodestyle = [ + {file = "pycodestyle-2.5.0-py2.py3-none-any.whl", hash = "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56"}, + {file = "pycodestyle-2.5.0.tar.gz", hash = "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c"}, +] +pycparser = [ + {file = "pycparser-2.19.tar.gz", hash = "sha256:a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3"}, +] +pyflakes = [ + {file = "pyflakes-2.1.1-py2.py3-none-any.whl", hash = "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0"}, + {file = "pyflakes-2.1.1.tar.gz", hash = "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2"}, +] +pygments = [ + {file = "Pygments-2.5.2-py2.py3-none-any.whl", hash = "sha256:2a3fe295e54a20164a9df49c75fa58526d3be48e14aceba6d6b1e8ac0bfd6f1b"}, + {file = "Pygments-2.5.2.tar.gz", hash = "sha256:98c8aa5a9f778fcd1026a17361ddaf7330d1b7c62ae97c3bb0ae73e0b9b6b0fe"}, +] +pyparsing = [ + {file = "pyparsing-2.4.6-py2.py3-none-any.whl", hash = "sha256:c342dccb5250c08d45fd6f8b4a559613ca603b57498511740e65cd11a2e7dcec"}, + {file = "pyparsing-2.4.6.tar.gz", hash = "sha256:4c830582a84fb022400b85429791bc551f1f4871c33f23e44f353119e92f969f"}, +] +pytest = [ + {file = "pytest-5.3.2-py3-none-any.whl", hash = "sha256:e41d489ff43948babd0fad7ad5e49b8735d5d55e26628a58673c39ff61d95de4"}, + {file = "pytest-5.3.2.tar.gz", hash = "sha256:6b571215b5a790f9b41f19f3531c53a45cf6bb8ef2988bc1ff9afb38270b25fa"}, +] +pytest-cov = [ + {file = "pytest-cov-2.8.1.tar.gz", hash = "sha256:cc6742d8bac45070217169f5f72ceee1e0e55b0221f54bcf24845972d3a47f2b"}, + {file = "pytest_cov-2.8.1-py2.py3-none-any.whl", hash = "sha256:cdbdef4f870408ebdbfeb44e63e07eb18bb4619fae852f6e760645fa36172626"}, +] +pytest-icdiff = [ + {file = "pytest-icdiff-0.2.tar.gz", hash = "sha256:9ff97fb493085f8099a8a7f6161fd570fad96699f42dc08ffc66d04e8063862f"}, +] +pytest-runner = [ + {file = "pytest-runner-5.2.tar.gz", hash = "sha256:96c7e73ead7b93e388c5d614770d2bae6526efd997757d3543fe17b557a0942b"}, + {file = "pytest_runner-5.2-py2.py3-none-any.whl", hash = "sha256:5534b08b133ef9a5e2c22c7886a8f8508c95bb0b0bdc6cc13214f269c3c70d51"}, +] +python-coveralls = [ + {file = "python-coveralls-2.9.3.tar.gz", hash = "sha256:bfaf7811e7dc5628e83b6b162962a4e2485dbff184b30e49f380374ed1bcee55"}, + {file = "python_coveralls-2.9.3-py2.py3-none-any.whl", hash = "sha256:fb0ff49bb1551dac10b06bd55e9790287d898a0f1e2c959802235cae08dd0bff"}, +] +pytz = [ + {file = "pytz-2019.3-py2.py3-none-any.whl", hash = "sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d"}, + {file = "pytz-2019.3.tar.gz", hash = "sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be"}, +] +pywin32-ctypes = [ + {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, + {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, +] +pyyaml = [ + {file = "PyYAML-5.2-cp27-cp27m-win32.whl", hash = "sha256:35ace9b4147848cafac3db142795ee42deebe9d0dad885ce643928e88daebdcc"}, + {file = "PyYAML-5.2-cp27-cp27m-win_amd64.whl", hash = "sha256:ebc4ed52dcc93eeebeae5cf5deb2ae4347b3a81c3fa12b0b8c976544829396a4"}, + {file = "PyYAML-5.2-cp35-cp35m-win32.whl", hash = "sha256:38a4f0d114101c58c0f3a88aeaa44d63efd588845c5a2df5290b73db8f246d15"}, + {file = "PyYAML-5.2-cp35-cp35m-win_amd64.whl", hash = "sha256:483eb6a33b671408c8529106df3707270bfacb2447bf8ad856a4b4f57f6e3075"}, + {file = "PyYAML-5.2-cp36-cp36m-win32.whl", hash = "sha256:7f38e35c00e160db592091751d385cd7b3046d6d51f578b29943225178257b31"}, + {file = "PyYAML-5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:0e7f69397d53155e55d10ff68fdfb2cf630a35e6daf65cf0bdeaf04f127c09dc"}, + {file = "PyYAML-5.2-cp37-cp37m-win32.whl", hash = "sha256:e4c015484ff0ff197564917b4b4246ca03f411b9bd7f16e02a2f586eb48b6d04"}, + {file = "PyYAML-5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:4b6be5edb9f6bb73680f5bf4ee08ff25416d1400fbd4535fe0069b2994da07cd"}, + {file = "PyYAML-5.2-cp38-cp38-win32.whl", hash = "sha256:8100c896ecb361794d8bfdb9c11fce618c7cf83d624d73d5ab38aef3bc82d43f"}, + {file = "PyYAML-5.2-cp38-cp38-win_amd64.whl", hash = "sha256:2e9f0b7c5914367b0916c3c104a024bb68f269a486b9d04a2e8ac6f6597b7803"}, + {file = "PyYAML-5.2.tar.gz", hash = "sha256:c0ee8eca2c582d29c3c2ec6e2c4f703d1b7f1fb10bc72317355a746057e7346c"}, +] +readme-renderer = [ + {file = "readme_renderer-24.0-py2.py3-none-any.whl", hash = "sha256:c8532b79afc0375a85f10433eca157d6b50f7d6990f337fa498c96cd4bfc203d"}, + {file = "readme_renderer-24.0.tar.gz", hash = "sha256:bb16f55b259f27f75f640acf5e00cf897845a8b3e4731b5c1a436e4b8529202f"}, +] +recommonmark = [ + {file = "recommonmark-0.6.0-py2.py3-none-any.whl", hash = "sha256:2ec4207a574289355d5b6ae4ae4abb29043346ca12cdd5f07d374dc5987d2852"}, + {file = "recommonmark-0.6.0.tar.gz", hash = "sha256:29cd4faeb6c5268c633634f2d69aef9431e0f4d347f90659fd0aab20e541efeb"}, +] +requests = [ + {file = "requests-2.22.0-py2.py3-none-any.whl", hash = "sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31"}, + {file = "requests-2.22.0.tar.gz", hash = "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4"}, +] +requests-toolbelt = [ + {file = "requests-toolbelt-0.9.1.tar.gz", hash = "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0"}, + {file = "requests_toolbelt-0.9.1-py2.py3-none-any.whl", hash = "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f"}, +] +secretstorage = [ + {file = "SecretStorage-3.1.1-py3-none-any.whl", hash = "sha256:7a119fb52a88e398dbb22a4b3eb39b779bfbace7e4153b7bc6e5954d86282a8a"}, + {file = "SecretStorage-3.1.1.tar.gz", hash = "sha256:20c797ae48a4419f66f8d28fc221623f11fc45b6828f96bdb1ad9990acb59f92"}, +] +six = [ + {file = "six-1.13.0-py2.py3-none-any.whl", hash = "sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd"}, + {file = "six-1.13.0.tar.gz", hash = "sha256:30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66"}, +] +snowballstemmer = [ + {file = "snowballstemmer-2.0.0-py2.py3-none-any.whl", hash = "sha256:209f257d7533fdb3cb73bdbd24f436239ca3b2fa67d56f6ff88e86be08cc5ef0"}, + {file = "snowballstemmer-2.0.0.tar.gz", hash = "sha256:df3bac3df4c2c01363f3dd2cfa78cce2840a79b9f1c2d2de9ce8d31683992f52"}, +] +soupsieve = [ + {file = "soupsieve-1.9.5-py2.py3-none-any.whl", hash = "sha256:bdb0d917b03a1369ce964056fc195cfdff8819c40de04695a80bc813c3cfa1f5"}, + {file = "soupsieve-1.9.5.tar.gz", hash = "sha256:e2c1c5dee4a1c36bcb790e0fabd5492d874b8ebd4617622c4f6a731701060dda"}, +] +sphinx = [ + {file = "Sphinx-2.3.1-py3-none-any.whl", hash = "sha256:298537cb3234578b2d954ff18c5608468229e116a9757af3b831c2b2b4819159"}, + {file = "Sphinx-2.3.1.tar.gz", hash = "sha256:e6e766b74f85f37a5f3e0773a1e1be8db3fcb799deb58ca6d18b70b0b44542a5"}, +] +sphinxcontrib-applehelp = [ + {file = "sphinxcontrib-applehelp-1.0.1.tar.gz", hash = "sha256:edaa0ab2b2bc74403149cb0209d6775c96de797dfd5b5e2a71981309efab3897"}, + {file = "sphinxcontrib_applehelp-1.0.1-py2.py3-none-any.whl", hash = "sha256:fb8dee85af95e5c30c91f10e7eb3c8967308518e0f7488a2828ef7bc191d0d5d"}, +] +sphinxcontrib-devhelp = [ + {file = "sphinxcontrib-devhelp-1.0.1.tar.gz", hash = "sha256:6c64b077937330a9128a4da74586e8c2130262f014689b4b89e2d08ee7294a34"}, + {file = "sphinxcontrib_devhelp-1.0.1-py2.py3-none-any.whl", hash = "sha256:9512ecb00a2b0821a146736b39f7aeb90759834b07e81e8cc23a9c70bacb9981"}, +] +sphinxcontrib-htmlhelp = [ + {file = "sphinxcontrib-htmlhelp-1.0.2.tar.gz", hash = "sha256:4670f99f8951bd78cd4ad2ab962f798f5618b17675c35c5ac3b2132a14ea8422"}, + {file = "sphinxcontrib_htmlhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:d4fd39a65a625c9df86d7fa8a2d9f3cd8299a3a4b15db63b50aac9e161d8eff7"}, +] +sphinxcontrib-jsmath = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] +sphinxcontrib-qthelp = [ + {file = "sphinxcontrib-qthelp-1.0.2.tar.gz", hash = "sha256:79465ce11ae5694ff165becda529a600c754f4bc459778778c7017374d4d406f"}, + {file = "sphinxcontrib_qthelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:513049b93031beb1f57d4daea74068a4feb77aa5630f856fcff2e50de14e9a20"}, +] +sphinxcontrib-serializinghtml = [ + {file = "sphinxcontrib-serializinghtml-1.1.3.tar.gz", hash = "sha256:c0efb33f8052c04fd7a26c0a07f1678e8512e0faec19f4aa8f2473a8b81d5227"}, + {file = "sphinxcontrib_serializinghtml-1.1.3-py2.py3-none-any.whl", hash = "sha256:db6615af393650bf1151a6cd39120c29abaf93cc60db8c48eb2dddbfdc3a9768"}, +] +tqdm = [ + {file = "tqdm-4.41.0-py2.py3-none-any.whl", hash = "sha256:9036904496bd2afacf836a6f206c5a766ce11d3e9319d54a4e794c0f34b111dc"}, + {file = "tqdm-4.41.0.tar.gz", hash = "sha256:166a82cdea964ae45528e0cc89436255ff2be73dc848bdf239f13c501cae5dc7"}, +] +traitlets = [ + {file = "traitlets-4.3.3-py2.py3-none-any.whl", hash = "sha256:70b4c6a1d9019d7b4f6846832288f86998aa3b9207c6821f3578a6a6a467fe44"}, + {file = "traitlets-4.3.3.tar.gz", hash = "sha256:d023ee369ddd2763310e4c3eae1ff649689440d4ae59d7485eb4cfbbe3e359f7"}, +] +twine = [ + {file = "twine-3.1.1-py3-none-any.whl", hash = "sha256:c1af8ca391e43b0a06bbc155f7f67db0bf0d19d284bfc88d1675da497a946124"}, + {file = "twine-3.1.1.tar.gz", hash = "sha256:d561a5e511f70275e5a485a6275ff61851c16ffcb3a95a602189161112d9f160"}, +] +urllib3 = [ + {file = "urllib3-1.25.7-py2.py3-none-any.whl", hash = "sha256:a8a318824cc77d1fd4b2bec2ded92646630d7fe8619497b142c84a9e6f5a7293"}, + {file = "urllib3-1.25.7.tar.gz", hash = "sha256:f3c5fd51747d450d4dcf6f923c81f78f811aab8205fda64b0aba34a4e48b0745"}, +] +watchdog = [ + {file = "watchdog-0.8.3.tar.gz", hash = "sha256:7e65882adb7746039b6f3876ee174952f8eaaa34491ba34333ddf1fe35de4162"}, +] +wcwidth = [ + {file = "wcwidth-0.1.7-py2.py3-none-any.whl", hash = "sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c"}, + {file = "wcwidth-0.1.7.tar.gz", hash = "sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e"}, +] +webencodings = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] +wheel = [ + {file = "wheel-0.33.6-py2.py3-none-any.whl", hash = "sha256:f4da1763d3becf2e2cd92a14a7c920f0f00eca30fdde9ea992c836685b9faf28"}, + {file = "wheel-0.33.6.tar.gz", hash = "sha256:10c9da68765315ed98850f8e048347c3eb06dd81822dc2ab1d4fde9dc9702646"}, +] +wrapt = [ + {file = "wrapt-1.11.2.tar.gz", hash = "sha256:565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1"}, +] +zipp = [ + {file = "zipp-0.6.0-py2.py3-none-any.whl", hash = "sha256:f06903e9f1f43b12d371004b4ac7b06ab39a44adc747266928ae6debfa7b3335"}, + {file = "zipp-0.6.0.tar.gz", hash = "sha256:3718b1cbcd963c7d4c5511a8240812904164b7f381b647143a89d3b98f9bcd8e"}, +] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..f0dd029 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,56 @@ +[tool.poetry] +name = "stilus" +version = "0.8.3" +description = "A Stylus css compiler in Python." +license = "GPL-3.0-or-later" +authors = ["Jan Willems "] +maintainers = ["Jan Willems "] +readme = "README.md" +homepage = "https://github.com/jw/stilus" +repository = "https://github.com/jw/stilus" +documentation = "https://stilus.readthedocs.io/en/latest/" +keywords = ["compiler", "stylus", "css"] +classifiers = [ + 'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)', + 'Programming Language :: Python', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: Implementation :: CPython' + # 'Programming Language :: Python :: Implementation :: PyPy' +] +include = ['README.md', 'LICENSE', 'stilus/functions/index.styl'] + +[tool.poetry.dependencies] +python = "^3.6" +deprecated = "*" +pyyaml = "*" +click = "*" +pillow = "*" +wheel = "*" +watchdog = "^0.8.3" +beautifulsoup4 = "*" +lxml = "*" + +[tool.poetry.dev-dependencies] +pytest = "*" +ipython = "*" +twine = "*" +pytest-runner = "*" +"flake8" = "*" +pytest-cov = "*" +sphinx = "*" +codecov = "*" +recommonmark = "*" +commonmark = "*" +pytest-icdiff = "*" +coveralls = "*" +python-coveralls = "*" + +[tool.poetry.scripts] +stilus = "stilus.cli:stilus" + +[build-system] +requires = ["poetry>=1.0.0"] +build-backend = "poetry.masonry.api" diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 1a8b98b..0000000 --- a/setup.cfg +++ /dev/null @@ -1,6 +0,0 @@ -[aliases] -test=pytest - -[tool:pytest] -addopts = --cov=stilus --cov-report html --cov-report term --cov-report term-missing --junitxml=test-reports/junit.xml -python_files = tests/*.py diff --git a/setup.py b/setup.py deleted file mode 100644 index 7020f39..0000000 --- a/setup.py +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/env python - -import io -import os -import sys -from shutil import rmtree - -from setuptools import find_packages, setup, Command - -# Package meta-data. -NAME = 'stilus' -DESCRIPTION = 'A Stylus css compiler in Python.' -URL = 'https://github.com/jw/stilus' -EMAIL = 'jw@elevenbits.com' -AUTHOR = 'Jan Willems' -REQUIRES_PYTHON = '>=3.6.0' -VERSION = None - -# todo: add this automatically from pipenv -REQUIRED = [ - 'deprecated', 'pyyaml', 'click', 'pillow', 'beautifulsoup4', 'lxml' -] - -# What packages are optional? -EXTRAS = { - # 'fancy feature': ['django'], -} - -here = os.path.abspath(os.path.dirname(__file__)) - -# Import the README and use it as the long-description. -# Note: this will only work if 'README.md' is present in your MANIFEST.in file! -try: - with io.open(os.path.join(here, 'README.md'), encoding='utf-8') as f: - long_description = '\n' + f.read() -except FileNotFoundError: - long_description = DESCRIPTION - -# Load the package's __version__.py module as a dictionary. -about = {} -if not VERSION: - with open(os.path.join(here, NAME, '__version__.py')) as f: - exec(f.read(), about) -else: - about['__version__'] = VERSION - - -class UploadCommand(Command): - """Support setup.py upload.""" - - description = 'Build and publish the package.' - user_options = [] - - @staticmethod - def status(s): - """Prints things in bold.""" - print(f'\033[1m{s}\033[0m') - - def initialize_options(self): - pass - - def finalize_options(self): - pass - - def run(self): - try: - self.status('Removing previous builds...') - rmtree(os.path.join(here, 'dist')) - except OSError: - pass - - self.status('Building Source and Wheel (universal) distribution…') - os.system('{0} setup.py sdist bdist_wheel --universal'.format( - sys.executable)) - - self.status('Uploading the package to PyPI via Twine…') - os.system('twine upload dist/*') - - self.status('Pushing git tags…') - os.system('git tag {0}'.format(about['__version__'])) - os.system('git push --tags') - - sys.exit() - - -# Where the magic happens: -setup( - name=NAME, - version=about['__version__'], - description=DESCRIPTION, - long_description=long_description, - long_description_content_type='text/markdown', - author=AUTHOR, - author_email=EMAIL, - python_requires=REQUIRES_PYTHON, - url=URL, - packages=find_packages(exclude=('tests',)), - # If your package is a single module, use this instead of 'packages': - # py_modules=['mypackage'], - entry_points={ - 'console_scripts': ['stilus=stilus.cli:stilus'], - }, - install_requires=REQUIRED, - extras_require=EXTRAS, - include_package_data=True, - license='GPLv3+', - setup_requires=['pytest-runner'], - tests_require=['pytest'], - classifiers=[ - # Trove classifiers - # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers - 'License :: OSI Approved :: GNU General Public License v3 or ' - 'later (GPLv3+)', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: Implementation :: CPython' - # 'Programming Language :: Python :: Implementation :: PyPy' - ], - # $ setup.py publish support. - cmdclass={ - 'upload': UploadCommand, - }, -) diff --git a/stilus/__version__.py b/stilus/__version__.py index 3ce84f1..e845cbe 100644 --- a/stilus/__version__.py +++ b/stilus/__version__.py @@ -1,3 +1,3 @@ -VERSION = (0, 8, 0) +VERSION = (0, 8, 3) __version__ = '.'.join(map(str, VERSION)) diff --git a/stilus/cli.py b/stilus/cli.py index 6370a3d..7cc9442 100644 --- a/stilus/cli.py +++ b/stilus/cli.py @@ -11,8 +11,8 @@ from watchdog.events import FileSystemEventHandler from watchdog.observers import Observer -from __version__ import __version__ -from renderer import Renderer +from .__version__ import __version__ +from .renderer import Renderer CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help']) @@ -34,8 +34,12 @@ def setup_logging(default_path='logging.yaml', logging.config.dictConfig(config) logging.debug(f'Using {p.resolve()} as logging configuration file.') else: - logging.basicConfig(level=default_level) - logging.warning('Using default logging configuration.') + # todo: handle these differently to comply with Stylus + logging.basicConfig(format='%(message)s', level=default_level) + logging.warning(f'Using default logging configuration (level' + f' is {logging.getLevelName(default_level)}).') + logging.warning(f'Note: use STILUS_LOGGING_CONFIG to configure' + f' the logging; or create a logging.yaml file.') setup_logging('bin/logging.yaml') @@ -228,13 +232,13 @@ def on_modified(self, event): else: if not input: input = click.get_text_stream('stdin') - logging.info('Reading from stdin...') + logging.debug('Reading from stdin...') if not output: output = click.get_text_stream('stdout') - logging.info('Writing to stdout...') + logging.debug('Writing to stdout...') elif out: output = (Path(out) / Path(output.name)).open('w') - logging.info(f'Writing to {output}.') + logging.debug(f'Writing to {output}.') css = render(input.read(), include, compress, prefix, ha) if print_: click.echo(css, nl='\n' if compress else '') diff --git a/stilus/functions/addProperty.py b/stilus/functions/addProperty.py index 9bcd8a2..2946533 100644 --- a/stilus/functions/addProperty.py +++ b/stilus/functions/addProperty.py @@ -1,5 +1,5 @@ -from nodes.property import Property -from utils import assert_type, unwrap, assert_string +from stilus.nodes.property import Property +from stilus.utils import assert_type, unwrap, assert_string def add_property(name, expr, evaluator=None): diff --git a/stilus/functions/adjust.py b/stilus/functions/adjust.py index b05bcd6..4a4f8ab 100644 --- a/stilus/functions/adjust.py +++ b/stilus/functions/adjust.py @@ -1,5 +1,5 @@ -from exceptions import StilusError -from utils import assert_color, assert_string, assert_type +from stilus.exceptions import StilusError +from stilus.utils import assert_color, assert_string, assert_type def adjust(color, prop, amount, evaluator=None): diff --git a/stilus/functions/alpha.py b/stilus/functions/alpha.py index 7b24faf..fb6bec3 100644 --- a/stilus/functions/alpha.py +++ b/stilus/functions/alpha.py @@ -1,8 +1,8 @@ from typing import Type -from functions.rgba import rgba -from nodes.color import Color, HSLA -from nodes.unit import Unit +from stilus.functions.rgba import rgba +from stilus.nodes.color import Color, HSLA +from stilus.nodes.unit import Unit def alpha(color: Type[Color], value=None, evaluator=None): diff --git a/stilus/functions/baseConvert.py b/stilus/functions/baseConvert.py index 7bb93bb..e29802c 100644 --- a/stilus/functions/baseConvert.py +++ b/stilus/functions/baseConvert.py @@ -1,6 +1,6 @@ -from nodes.expression import Expression -from nodes.literal import Literal -from utils import unwrap, assert_type +from stilus.nodes.expression import Expression +from stilus.nodes.literal import Literal +from stilus.utils import unwrap, assert_type def _convert(num, base): diff --git a/stilus/functions/basename.py b/stilus/functions/basename.py index 8746f75..5540598 100644 --- a/stilus/functions/basename.py +++ b/stilus/functions/basename.py @@ -1,6 +1,6 @@ from pathlib import Path -from utils import assert_string +from stilus.utils import assert_string def basename(p, ext=None, evaluator=None): diff --git a/stilus/functions/bifs.py b/stilus/functions/bifs.py index ededa05..21cd39c 100644 --- a/stilus/functions/bifs.py +++ b/stilus/functions/bifs.py @@ -1,6 +1,6 @@ -from functions import addProperty, adjust, alpha, baseConvert, basename, \ - blend, blue, clone, contrast, convert, currentMedia, define, dirname, \ - error, extname, green, hsl, hsla, hue, imageSize, json, length, \ +from stilus.functions import addProperty, adjust, alpha, baseConvert, \ + basename, blend, blue, clone, contrast, convert, currentMedia, define, \ + dirname, error, extname, green, hsl, hsla, hue, imageSize, json, length, \ lightness, listSeparator, lookup, luminosity, match, math, math_prop, \ merge, operate, oppositePosition, p, pathjoin, pop, prefixClasses, push, \ range, red, remove, replace, rgb, rgba, s, saturation, \ diff --git a/stilus/functions/blend.py b/stilus/functions/blend.py index 256241f..0dcd37a 100644 --- a/stilus/functions/blend.py +++ b/stilus/functions/blend.py @@ -1,5 +1,5 @@ -from nodes.color import RGBA -from utils import assert_color +from stilus.nodes.color import RGBA +from stilus.utils import assert_color def blend(top, bottom=None, evaluator=None): diff --git a/stilus/functions/blue.py b/stilus/functions/blue.py index 3b97a61..3f50ff4 100644 --- a/stilus/functions/blue.py +++ b/stilus/functions/blue.py @@ -1,6 +1,6 @@ -from functions.rgba import rgba -from nodes.color import Color, HSLA -from nodes.unit import Unit +from stilus.functions.rgba import rgba +from stilus.nodes.color import Color, HSLA +from stilus.nodes.unit import Unit def blue(color: Color, value: Unit = None, evaluator=None): diff --git a/stilus/functions/clone.py b/stilus/functions/clone.py index a9520a1..f1ca1e8 100644 --- a/stilus/functions/clone.py +++ b/stilus/functions/clone.py @@ -1,4 +1,4 @@ -from utils import assert_present +from stilus.utils import assert_present def clone(expr, evaluator=None): diff --git a/stilus/functions/component.py b/stilus/functions/component.py index d9f9f4d..6c5ab7d 100644 --- a/stilus/functions/component.py +++ b/stilus/functions/component.py @@ -1,6 +1,6 @@ -from nodes.color import Color -from utils import assert_color, assert_string -from nodes.unit import Unit +from stilus.nodes.color import Color +from stilus.utils import assert_color, assert_string +from stilus.nodes.unit import Unit component_map = { 'red': 'r', diff --git a/stilus/functions/contrast.py b/stilus/functions/contrast.py index 898cbf2..1ce6e42 100644 --- a/stilus/functions/contrast.py +++ b/stilus/functions/contrast.py @@ -1,11 +1,11 @@ -from functions.blend import blend -from functions.luminosity import luminosity -from nodes.color import RGBA, Color -from nodes.literal import Literal -from nodes.null import Null -from nodes.object_node import ObjectNode -from nodes.unit import Unit -from utils import assert_color, stilus_round +from stilus.functions.blend import blend +from stilus.functions.luminosity import luminosity +from stilus.nodes.color import RGBA, Color +from stilus.nodes.literal import Literal +from stilus.nodes.null import Null +from stilus.nodes.object_node import ObjectNode +from stilus.nodes.unit import Unit +from stilus.utils import assert_color, stilus_round def contrast(top: Color = None, bottom: Color = None, evaluator=None): diff --git a/stilus/functions/convert.py b/stilus/functions/convert.py index 7210492..57687d9 100644 --- a/stilus/functions/convert.py +++ b/stilus/functions/convert.py @@ -1,4 +1,4 @@ -from utils import assert_string, parse_string +from stilus.utils import assert_string, parse_string def convert(str, evaluator=None): diff --git a/stilus/functions/currentMedia.py b/stilus/functions/currentMedia.py index 80a5617..2cf5100 100644 --- a/stilus/functions/currentMedia.py +++ b/stilus/functions/currentMedia.py @@ -1,4 +1,4 @@ -from nodes.string import String +from stilus.nodes.string import String def current_media(*args, evaluator=None): diff --git a/stilus/functions/define.py b/stilus/functions/define.py index 6f1215f..180a9f4 100644 --- a/stilus/functions/define.py +++ b/stilus/functions/define.py @@ -1,6 +1,6 @@ -from nodes.ident import Ident -from nodes.null import null -from utils import assert_type, unwrap +from stilus.nodes.ident import Ident +from stilus.nodes.null import null +from stilus.utils import assert_type, unwrap def define(name, expr, common=None, evaluator=None): diff --git a/stilus/functions/dirname.py b/stilus/functions/dirname.py index 0025fce..bf46a4a 100644 --- a/stilus/functions/dirname.py +++ b/stilus/functions/dirname.py @@ -1,6 +1,6 @@ from pathlib import Path -from utils import assert_string +from stilus.utils import assert_string def dirname(p, evaluator=None): diff --git a/stilus/functions/error.py b/stilus/functions/error.py index f5959d6..6c5dc93 100644 --- a/stilus/functions/error.py +++ b/stilus/functions/error.py @@ -1,5 +1,5 @@ -from exceptions import StilusError -from utils import assert_type +from stilus.exceptions import StilusError +from stilus.utils import assert_type def error(msg, evaluator=None): diff --git a/stilus/functions/extname.py b/stilus/functions/extname.py index a5fef0c..25f41c9 100644 --- a/stilus/functions/extname.py +++ b/stilus/functions/extname.py @@ -1,6 +1,6 @@ from pathlib import Path -from utils import assert_string +from stilus.utils import assert_string def extname(p, evaluator=None): diff --git a/stilus/functions/green.py b/stilus/functions/green.py index 1fd6081..6afdf09 100644 --- a/stilus/functions/green.py +++ b/stilus/functions/green.py @@ -1,8 +1,8 @@ from typing import Type -from functions.rgba import rgba -from nodes.color import Color, HSLA -from nodes.unit import Unit +from stilus.functions.rgba import rgba +from stilus.nodes.color import Color, HSLA +from stilus.nodes.unit import Unit def green(color: Type[Color], value=None, evaluator=None): diff --git a/stilus/functions/hsl.py b/stilus/functions/hsl.py index 999c937..1d8beab 100644 --- a/stilus/functions/hsl.py +++ b/stilus/functions/hsl.py @@ -1,6 +1,6 @@ -from nodes.unit import Unit -from functions.hsla import hsla -from utils import assert_color +from stilus.nodes.unit import Unit +from stilus.functions.hsla import hsla +from stilus.utils import assert_color def hsl(hue, saturation=None, lightness=None, evaluator=None): diff --git a/stilus/functions/hsla.py b/stilus/functions/hsla.py index 10ab039..2b1d412 100644 --- a/stilus/functions/hsla.py +++ b/stilus/functions/hsla.py @@ -1,5 +1,5 @@ -from nodes.color import HSLA -from utils import assert_color, assert_type +from stilus.nodes.color import HSLA +from stilus.utils import assert_color, assert_type def hsla(hue, saturation=None, lightness=None, alpha=None, evaluator=None): diff --git a/stilus/functions/hue.py b/stilus/functions/hue.py index 411b0e0..5f0f9a5 100644 --- a/stilus/functions/hue.py +++ b/stilus/functions/hue.py @@ -1,8 +1,8 @@ -from functions.component import component -from functions.hsla import hsla -from nodes.color import Color -from nodes.string import String -from nodes.unit import Unit +from stilus.functions.component import component +from stilus.functions.hsla import hsla +from stilus.nodes.color import Color +from stilus.nodes.string import String +from stilus.nodes.unit import Unit def hue(color: Color, value=None, evaluator=None): diff --git a/stilus/functions/imageSize.py b/stilus/functions/imageSize.py index e009203..10dc6c3 100644 --- a/stilus/functions/imageSize.py +++ b/stilus/functions/imageSize.py @@ -3,10 +3,10 @@ from PIL import Image from bs4 import BeautifulSoup -from exceptions import StilusError -from nodes.expression import Expression -from nodes.unit import Unit -from utils import assert_type, lookup +from stilus.exceptions import StilusError +from stilus.nodes.expression import Expression +from stilus.nodes.unit import Unit +from stilus.utils import assert_type, lookup def _x_and_y_from_svg(path): diff --git a/stilus/functions/json.py b/stilus/functions/json.py index 8acece8..7ae74ea 100644 --- a/stilus/functions/json.py +++ b/stilus/functions/json.py @@ -1,11 +1,11 @@ import json -from exceptions import StilusError -from nodes.boolean import Boolean -from nodes.ident import Ident -from nodes.null import null -from nodes.object_node import ObjectNode -from utils import assert_string, coerce, lookup, parse_string +from stilus.exceptions import StilusError +from stilus.nodes.boolean import Boolean +from stilus.nodes.ident import Ident +from stilus.nodes.null import null +from stilus.nodes.object_node import ObjectNode +from stilus.utils import assert_string, coerce, lookup, parse_string # todo: this needs a cleaning diff --git a/stilus/functions/length.py b/stilus/functions/length.py index e6cb0e9..35dc500 100644 --- a/stilus/functions/length.py +++ b/stilus/functions/length.py @@ -1,4 +1,4 @@ -import utils +from stilus import utils # todo: the *args is there due to javascript weirdness. diff --git a/stilus/functions/lightness.py b/stilus/functions/lightness.py index 76acff6..c4ba9a9 100644 --- a/stilus/functions/lightness.py +++ b/stilus/functions/lightness.py @@ -1,8 +1,8 @@ -from functions.component import component -from functions.hsla import hsla -from nodes.color import Color -from nodes.string import String -from nodes.unit import Unit +from stilus.functions.component import component +from stilus.functions.hsla import hsla +from stilus.nodes.color import Color +from stilus.nodes.string import String +from stilus.nodes.unit import Unit def lightness(color: Color, value=None, evaluator=None): diff --git a/stilus/functions/listSeparator.py b/stilus/functions/listSeparator.py index 1630291..60d0955 100644 --- a/stilus/functions/listSeparator.py +++ b/stilus/functions/listSeparator.py @@ -1,5 +1,5 @@ -from nodes.string import String -from utils import unwrap +from stilus.nodes.string import String +from stilus.utils import unwrap def list_separator(list, evaluator=None): diff --git a/stilus/functions/lookup.py b/stilus/functions/lookup.py index 561f40d..e26a40d 100644 --- a/stilus/functions/lookup.py +++ b/stilus/functions/lookup.py @@ -1,5 +1,5 @@ -from nodes.null import null -from utils import assert_type +from stilus.nodes.null import null +from stilus.utils import assert_type def lookup(name, evaluator=None): diff --git a/stilus/functions/luminosity.py b/stilus/functions/luminosity.py index 6d71535..51149c7 100644 --- a/stilus/functions/luminosity.py +++ b/stilus/functions/luminosity.py @@ -1,6 +1,6 @@ -from nodes.color import Color -from nodes.unit import Unit -from utils import assert_color +from stilus.nodes.color import Color +from stilus.nodes.unit import Unit +from stilus.utils import assert_color def luminosity(color: Color, evaluator=None): diff --git a/stilus/functions/match.py b/stilus/functions/match.py index d4c6ab6..b08f932 100644 --- a/stilus/functions/match.py +++ b/stilus/functions/match.py @@ -1,7 +1,7 @@ import re -import utils -from utils import assert_type +from stilus import utils +from stilus.utils import assert_type def get_flags(flags=None): @@ -23,7 +23,7 @@ def stilus_findall(pattern, string, flags=None): m = p.search(string) if m: return [m.group(0)] + list(m.groups()) - from nodes.null import null + from stilus.nodes.null import null return null diff --git a/stilus/functions/math.py b/stilus/functions/math.py index ab11454..9a20cb1 100644 --- a/stilus/functions/math.py +++ b/stilus/functions/math.py @@ -1,8 +1,8 @@ import math as m -from nodes.string import String -from nodes.unit import Unit -from utils import assert_type, assert_string, stilus_round +from stilus.nodes.string import String +from stilus.nodes.unit import Unit +from stilus.utils import assert_type, assert_string, stilus_round def math(n: Unit, fn: String, evaluator=None): diff --git a/stilus/functions/math_prop.py b/stilus/functions/math_prop.py index 1a260c2..1e9d7ee 100644 --- a/stilus/functions/math_prop.py +++ b/stilus/functions/math_prop.py @@ -1,7 +1,7 @@ import math as m -from nodes.string import String -from nodes.unit import Unit +from stilus.nodes.string import String +from stilus.nodes.unit import Unit # todo: convert all javascript math functions to python and vice versa diff --git a/stilus/functions/merge.py b/stilus/functions/merge.py index 65e7ee7..002316a 100644 --- a/stilus/functions/merge.py +++ b/stilus/functions/merge.py @@ -1,5 +1,5 @@ -import utils -from utils import assert_present, assert_type, unwrap +from stilus import utils +from stilus.utils import assert_present, assert_type, unwrap def merge(dest, *args, evaluator=None): diff --git a/stilus/functions/operate.py b/stilus/functions/operate.py index abe8349..467f261 100644 --- a/stilus/functions/operate.py +++ b/stilus/functions/operate.py @@ -1,4 +1,4 @@ -from utils import assert_present, assert_type +from stilus.utils import assert_present, assert_type def operate(op=None, left=None, right=None, evaluator=None): diff --git a/stilus/functions/oppositePosition.py b/stilus/functions/oppositePosition.py index 1898b5f..1390079 100644 --- a/stilus/functions/oppositePosition.py +++ b/stilus/functions/oppositePosition.py @@ -1,8 +1,6 @@ -from nodes.literal import Literal - - -import utils -from exceptions import StilusError +from stilus import utils +from stilus.exceptions import StilusError +from stilus.nodes.literal import Literal def opposite_position(positions, evaluator=None): diff --git a/stilus/functions/p.py b/stilus/functions/p.py index 8ec91ea..4a7ea50 100644 --- a/stilus/functions/p.py +++ b/stilus/functions/p.py @@ -1,5 +1,5 @@ -from nodes.null import null -from utils import unwrap +from stilus.nodes.null import null +from stilus.utils import unwrap def p(*args, evaluator=None): diff --git a/stilus/functions/pop.py b/stilus/functions/pop.py index 853f4a2..5032ed1 100644 --- a/stilus/functions/pop.py +++ b/stilus/functions/pop.py @@ -1,5 +1,5 @@ -from nodes.null import null -from utils import unwrap +from stilus.nodes.null import null +from stilus.utils import unwrap def pop(expr, *args, evaluator=None): diff --git a/stilus/functions/prefixClasses.py b/stilus/functions/prefixClasses.py index 3a9ce5e..2a65741 100644 --- a/stilus/functions/prefixClasses.py +++ b/stilus/functions/prefixClasses.py @@ -1,4 +1,4 @@ -from utils import assert_string, assert_type +from stilus.utils import assert_string, assert_type def prefix_classes(prefix, block=None, evaluator=None): diff --git a/stilus/functions/push.py b/stilus/functions/push.py index ee88e08..1251d10 100644 --- a/stilus/functions/push.py +++ b/stilus/functions/push.py @@ -1,4 +1,4 @@ -from utils import unwrap +from stilus.utils import unwrap def push(expr, *args, evaluator=None): diff --git a/stilus/functions/range.py b/stilus/functions/range.py index 60e0e19..e4c4581 100644 --- a/stilus/functions/range.py +++ b/stilus/functions/range.py @@ -1,7 +1,7 @@ -from exceptions import StilusError -from nodes.expression import Expression -from nodes.unit import Unit -from utils import assert_type +from stilus.exceptions import StilusError +from stilus.nodes.expression import Expression +from stilus.nodes.unit import Unit +from stilus.utils import assert_type def range_function(start, stop, step=None, evaluator=None): diff --git a/stilus/functions/red.py b/stilus/functions/red.py index b31e679..46bb721 100644 --- a/stilus/functions/red.py +++ b/stilus/functions/red.py @@ -1,8 +1,8 @@ from typing import Type -from functions.rgba import rgba -from nodes.color import Color, HSLA -from nodes.unit import Unit +from stilus.functions.rgba import rgba +from stilus.nodes.color import Color, HSLA +from stilus.nodes.unit import Unit def red(color: Type[Color], value=None, evaluator=None): diff --git a/stilus/functions/remove.py b/stilus/functions/remove.py index e80017f..f53da59 100644 --- a/stilus/functions/remove.py +++ b/stilus/functions/remove.py @@ -1,4 +1,4 @@ -from utils import assert_string, assert_type +from stilus.utils import assert_string, assert_type def remove(object, key, evaluator=None): diff --git a/stilus/functions/replace.py b/stilus/functions/replace.py index 4bc227d..bf8694b 100644 --- a/stilus/functions/replace.py +++ b/stilus/functions/replace.py @@ -1,6 +1,6 @@ -from nodes.string import String -from nodes.ident import Ident -from utils import assert_string +from stilus.nodes.string import String +from stilus.nodes.ident import Ident +from stilus.utils import assert_string def replace(pattern, replacement, value, evaluator=None): diff --git a/stilus/functions/resolver.py b/stilus/functions/resolver.py index e54bc56..4c055aa 100644 --- a/stilus/functions/resolver.py +++ b/stilus/functions/resolver.py @@ -1,12 +1,12 @@ import inspect import logging from pathlib import Path - -import utils -from nodes.literal import Literal -from visitor.compiler import Compiler from urllib.parse import urlparse +from stilus import utils +from stilus.nodes.literal import Literal +from stilus.visitor.compiler import Compiler + log = logging.getLogger(__name__) diff --git a/stilus/functions/rgb.py b/stilus/functions/rgb.py index e873fc1..b395af3 100644 --- a/stilus/functions/rgb.py +++ b/stilus/functions/rgb.py @@ -1,7 +1,7 @@ -from functions.rgba import rgba -from nodes.color import RGBA -from nodes.unit import Unit -from utils import assert_color +from stilus.functions.rgba import rgba +from stilus.nodes.color import RGBA +from stilus.nodes.unit import Unit +from stilus.utils import assert_color def rgb(red, green, blue, evaluator=None): diff --git a/stilus/functions/rgba.py b/stilus/functions/rgba.py index 4218400..f7fa7b1 100644 --- a/stilus/functions/rgba.py +++ b/stilus/functions/rgba.py @@ -1,5 +1,5 @@ -from nodes.color import RGBA -from utils import assert_color, assert_type +from stilus.nodes.color import RGBA +from stilus.utils import assert_color, assert_type def rgba(red, green=None, blue=None, alpha=None, evaluator=None): diff --git a/stilus/functions/s.py b/stilus/functions/s.py index fa86b78..c686ed6 100644 --- a/stilus/functions/s.py +++ b/stilus/functions/s.py @@ -1,7 +1,7 @@ -from nodes.null import null -from nodes.literal import Literal -from utils import unwrap, assert_string -from visitor.compiler import Compiler +from stilus.nodes.literal import Literal +from stilus.nodes.null import null +from stilus.utils import assert_string, unwrap +from stilus.visitor.compiler import Compiler def s(fmt, *args, evaluator=None): @@ -11,7 +11,7 @@ def s(fmt, *args, evaluator=None): result = fmt.string results = [] for arg in args: - from visitor.evaluator import Evaluator + from stilus.visitor.evaluator import Evaluator if not isinstance(arg, Evaluator): results.append(Compiler(arg, options).compile()) for r in results: diff --git a/stilus/functions/saturation.py b/stilus/functions/saturation.py index f7d1ce2..8749ea3 100644 --- a/stilus/functions/saturation.py +++ b/stilus/functions/saturation.py @@ -1,8 +1,8 @@ -from functions.component import component -from functions.hsla import hsla -from nodes.color import Color -from nodes.string import String -from nodes.unit import Unit +from stilus.functions.component import component +from stilus.functions.hsla import hsla +from stilus.nodes.color import Color +from stilus.nodes.string import String +from stilus.nodes.unit import Unit def saturation(color: Color, value=None, evaluator=None): diff --git a/stilus/functions/selector.py b/stilus/functions/selector.py index 39f6c08..69bf615 100644 --- a/stilus/functions/selector.py +++ b/stilus/functions/selector.py @@ -1,10 +1,9 @@ - -from selector_parser import SelectorParser -from utils import assert_string, compile_selectors, unwrap +from stilus.selector_parser import SelectorParser +from stilus.utils import assert_string, compile_selectors, unwrap def parse(selector): - from parser import Parser + from stilus.parser import Parser parser = Parser(selector, {}) parser.state.append('selector-parts') nodes = parser.stmt_selector() diff --git a/stilus/functions/selectorExists.py b/stilus/functions/selectorExists.py index b3bfec8..534a401 100644 --- a/stilus/functions/selectorExists.py +++ b/stilus/functions/selectorExists.py @@ -1,5 +1,5 @@ -from utils import assert_string -from visitor.normalizer import Normalizer +from stilus.utils import assert_string +from stilus.visitor.normalizer import Normalizer def selector_exists(selector, evaluator=None): diff --git a/stilus/functions/selectors.py b/stilus/functions/selectors.py index 506f30e..5aa185d 100644 --- a/stilus/functions/selectors.py +++ b/stilus/functions/selectors.py @@ -1,6 +1,6 @@ -from nodes.expression import Expression -from nodes.string import String -from selector_parser import SelectorParser +from stilus.nodes.expression import Expression +from stilus.nodes.string import String +from stilus.selector_parser import SelectorParser def selectors(evaluator=None): diff --git a/stilus/functions/shift.py b/stilus/functions/shift.py index ac284ce..2dfc94c 100644 --- a/stilus/functions/shift.py +++ b/stilus/functions/shift.py @@ -1,5 +1,5 @@ -from nodes.null import null -from utils import unwrap +from stilus.nodes.null import null +from stilus.utils import unwrap def shift(expr, *args, evaluator=None): diff --git a/stilus/functions/stilus_slice.py b/stilus/functions/stilus_slice.py index 48e527f..f06832a 100644 --- a/stilus/functions/stilus_slice.py +++ b/stilus/functions/stilus_slice.py @@ -1,7 +1,6 @@ - -import utils -from nodes.ident import Ident -from nodes.string import String +from stilus import utils +from stilus.nodes.ident import Ident +from stilus.nodes.string import String def slice(values, start, end=None, evaluator=None): diff --git a/stilus/functions/stilus_split.py b/stilus/functions/stilus_split.py index b402a6f..3580af7 100644 --- a/stilus/functions/stilus_split.py +++ b/stilus/functions/stilus_split.py @@ -1,7 +1,7 @@ -from nodes.expression import Expression -from nodes.ident import Ident -from nodes.string import String -from utils import assert_string +from stilus.nodes.expression import Expression +from stilus.nodes.ident import Ident +from stilus.nodes.string import String +from stilus.utils import assert_string def split(delim, value, evaluator=None): diff --git a/stilus/functions/substr.py b/stilus/functions/substr.py index e893a1c..0e52063 100644 --- a/stilus/functions/substr.py +++ b/stilus/functions/substr.py @@ -1,6 +1,6 @@ -from nodes.ident import Ident -from nodes.string import String -from utils import assert_string, assert_type +from stilus.nodes.ident import Ident +from stilus.nodes.string import String +from stilus.utils import assert_string, assert_type def substr(value, start, length=None, evaluator=None): diff --git a/stilus/functions/tan.py b/stilus/functions/tan.py index 2ea7fbf..d2f380e 100644 --- a/stilus/functions/tan.py +++ b/stilus/functions/tan.py @@ -1,6 +1,6 @@ import math as m -from nodes.unit import Unit -from utils import assert_type, stilus_round +from stilus.nodes.unit import Unit +from stilus.utils import assert_type, stilus_round def tan(angle, evaluator=None): diff --git a/stilus/functions/trace.py b/stilus/functions/trace.py index 74890c6..2b5b3ec 100644 --- a/stilus/functions/trace.py +++ b/stilus/functions/trace.py @@ -1,6 +1,6 @@ import logging -from nodes.null import null +from stilus.nodes.null import null log = logging.getLogger(__name__) diff --git a/stilus/functions/transparentify.py b/stilus/functions/transparentify.py index 14dab43..5dea524 100644 --- a/stilus/functions/transparentify.py +++ b/stilus/functions/transparentify.py @@ -1,6 +1,6 @@ -from nodes.color import RGBA -from nodes.unit import Unit -from utils import assert_color, assert_type +from stilus.nodes.color import RGBA +from stilus.nodes.unit import Unit +from stilus.utils import assert_color, assert_type def best(top, bottom): diff --git a/stilus/functions/unit.py b/stilus/functions/unit.py index bd2ba5a..e9340d2 100644 --- a/stilus/functions/unit.py +++ b/stilus/functions/unit.py @@ -1,5 +1,5 @@ -from nodes.unit import Unit -from utils import assert_string +from stilus.nodes.unit import Unit +from stilus.utils import assert_string def unit(unit, type=None, evaluator=None): diff --git a/stilus/functions/unquote.py b/stilus/functions/unquote.py index d3109dd..ec7f661 100644 --- a/stilus/functions/unquote.py +++ b/stilus/functions/unquote.py @@ -1,5 +1,5 @@ -from nodes.literal import Literal -from utils import assert_string +from stilus.nodes.literal import Literal +from stilus.utils import assert_string def unquote(string, evaluator=None): diff --git a/stilus/functions/unshift.py b/stilus/functions/unshift.py index 2f168fd..b5ee78b 100644 --- a/stilus/functions/unshift.py +++ b/stilus/functions/unshift.py @@ -1,4 +1,4 @@ -from utils import unwrap +from stilus.utils import unwrap def unshift(expr, *args, evaluator=None): diff --git a/stilus/functions/url.py b/stilus/functions/url.py index 1778278..ddc3a97 100644 --- a/stilus/functions/url.py +++ b/stilus/functions/url.py @@ -5,9 +5,9 @@ from pathlib import Path from urllib.parse import urlparse -import utils -from nodes.literal import Literal -from visitor.compiler import Compiler +from stilus import utils +from stilus.nodes.literal import Literal +from stilus.visitor.compiler import Compiler default_mimes = { '.gif': 'image/gif', diff --git a/stilus/functions/warn.py b/stilus/functions/warn.py index 856531a..3662506 100644 --- a/stilus/functions/warn.py +++ b/stilus/functions/warn.py @@ -1,5 +1,5 @@ -from nodes import null -from utils import assert_type +from stilus.nodes import null +from stilus.utils import assert_type import logging log = logging.getLogger(__name__) diff --git a/stilus/lexer.py b/stilus/lexer.py index df6f350..24bebad 100644 --- a/stilus/lexer.py +++ b/stilus/lexer.py @@ -1,14 +1,14 @@ import re from collections import deque -from nodes.boolean import Boolean -from nodes.color import RGBA -from nodes.null import null -from nodes.string import String -from nodes.unit import Unit -from nodes.comment import Comment -from nodes.ident import Ident -from nodes.literal import Literal +from .nodes.boolean import Boolean +from .nodes.color import RGBA +from .nodes.null import null +from .nodes.string import String +from .nodes.unit import Unit +from .nodes.comment import Comment +from .nodes.ident import Ident +from .nodes.literal import Literal class Token: diff --git a/stilus/nodes/arguments.py b/stilus/nodes/arguments.py index ebe8682..e230a74 100644 --- a/stilus/nodes/arguments.py +++ b/stilus/nodes/arguments.py @@ -1,6 +1,6 @@ import json -from nodes.expression import Expression +from .expression import Expression class Arguments(Expression): diff --git a/stilus/nodes/atblock.py b/stilus/nodes/atblock.py index 05f8e4d..60cdc99 100644 --- a/stilus/nodes/atblock.py +++ b/stilus/nodes/atblock.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Atblock(Node): diff --git a/stilus/nodes/atrule.py b/stilus/nodes/atrule.py index 6e7f064..7b91a27 100644 --- a/stilus/nodes/atrule.py +++ b/stilus/nodes/atrule.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Atrule(Node): diff --git a/stilus/nodes/binop.py b/stilus/nodes/binop.py index 6032381..997224b 100644 --- a/stilus/nodes/binop.py +++ b/stilus/nodes/binop.py @@ -1,7 +1,7 @@ import json -from nodes.node import Node -from nodes.null import Null +from .node import Node +from .null import Null class BinOp(Node): diff --git a/stilus/nodes/block.py b/stilus/nodes/block.py index 1f7c2c2..d9b3f1a 100644 --- a/stilus/nodes/block.py +++ b/stilus/nodes/block.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Block(Node): diff --git a/stilus/nodes/boolean.py b/stilus/nodes/boolean.py index 71b3236..cd86c26 100644 --- a/stilus/nodes/boolean.py +++ b/stilus/nodes/boolean.py @@ -1,12 +1,12 @@ import json -from nodes.node import Node +from .node import Node class Boolean(Node): def __init__(self, value: bool, lineno=1, column=1): - from nodes.null import null + from .null import null if value == null: value = False super().__init__(bool(value), lineno=lineno, column=column) diff --git a/stilus/nodes/call.py b/stilus/nodes/call.py index 672e067..ae46f73 100644 --- a/stilus/nodes/call.py +++ b/stilus/nodes/call.py @@ -1,7 +1,7 @@ import json -from nodes.arguments import Arguments -from nodes.node import Node +from .arguments import Arguments +from .node import Node class Call(Node): diff --git a/stilus/nodes/chartset.py b/stilus/nodes/chartset.py index 3f5b829..83568c2 100644 --- a/stilus/nodes/chartset.py +++ b/stilus/nodes/chartset.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Charset(Node): diff --git a/stilus/nodes/color.py b/stilus/nodes/color.py index 42586d0..ff49f06 100644 --- a/stilus/nodes/color.py +++ b/stilus/nodes/color.py @@ -1,12 +1,12 @@ import colorsys import json -from functions.adjust import adjust -from nodes.string import String -from nodes.unit import Unit -from nodes.boolean import true, Boolean -from nodes.node import Node -from utils import clamp, clamp_alpha, clamp_degrees, clamp_percentage +from stilus.functions.adjust import adjust +from stilus.utils import clamp, clamp_alpha, clamp_degrees, clamp_percentage +from .boolean import Boolean, true +from .node import Node +from .string import String +from .unit import Unit class Color(Node): diff --git a/stilus/nodes/comment.py b/stilus/nodes/comment.py index b7e67ab..0d8ccad 100644 --- a/stilus/nodes/comment.py +++ b/stilus/nodes/comment.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Comment(Node): diff --git a/stilus/nodes/each.py b/stilus/nodes/each.py index b11e17d..2b20fa4 100644 --- a/stilus/nodes/each.py +++ b/stilus/nodes/each.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Each(Node): diff --git a/stilus/nodes/expression.py b/stilus/nodes/expression.py index a9af7d2..c0488fb 100644 --- a/stilus/nodes/expression.py +++ b/stilus/nodes/expression.py @@ -1,8 +1,8 @@ import json -import utils -from nodes.boolean import Boolean -from nodes.node import Node +from stilus import utils +from .boolean import Boolean +from .node import Node class Expression(Node): @@ -55,7 +55,7 @@ def first(self): if not self.is_empty(): return self.nodes[0].first() else: - from nodes.null import null + from .null import null return null def clone(self, parent=None, node=None): @@ -91,7 +91,7 @@ def operate(self, op, right, value=None): index = utils.get_value(node) last = len(self.nodes) - 1 for i in range(last, index): - from nodes.null import null + from stilus.nodes.null import null self.nodes.append(null) self.nodes[index] = value elif node.string: @@ -115,7 +115,7 @@ def operate(self, op, right, value=None): n = values[0].get(node.string) if n: expression.append(n) - from nodes.null import null + from .null import null return null if expression.is_empty() else utils.unwrap(expression) elif op == '||': return self if self.to_boolean().value is True else right diff --git a/stilus/nodes/extend.py b/stilus/nodes/extend.py index 2125a47..1e0455e 100644 --- a/stilus/nodes/extend.py +++ b/stilus/nodes/extend.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Extend(Node): diff --git a/stilus/nodes/feature.py b/stilus/nodes/feature.py index 72e4e9b..4db9cfa 100644 --- a/stilus/nodes/feature.py +++ b/stilus/nodes/feature.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Feature(Node): diff --git a/stilus/nodes/function.py b/stilus/nodes/function.py index 3f723da..09f308c 100644 --- a/stilus/nodes/function.py +++ b/stilus/nodes/function.py @@ -1,7 +1,7 @@ import json -from functions.bifs import bifs -from nodes.node import Node +from stilus.functions.bifs import bifs +from .node import Node class Function(Node): diff --git a/stilus/nodes/group.py b/stilus/nodes/group.py index 216d594..0b3f63a 100644 --- a/stilus/nodes/group.py +++ b/stilus/nodes/group.py @@ -1,8 +1,8 @@ import json -from nodes.block import Block -from nodes.node import Node -from nodes.selector import Selector +from .block import Block +from .node import Node +from .selector import Selector class Group(Node): diff --git a/stilus/nodes/ident.py b/stilus/nodes/ident.py index 92f1784..1b69ead 100644 --- a/stilus/nodes/ident.py +++ b/stilus/nodes/ident.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Ident(Node): @@ -11,7 +11,7 @@ def __init__(self, name, value=None, mixin=False, self.name = name self.string = name # todo: clean this up - from nodes.null import null + from stilus.nodes.null import null self.value = null if value is None else value self.mixin = mixin self.property = None @@ -75,7 +75,7 @@ def operate(self, op, right, value=None): value = right.first() if op == '-': if value.node_name == 'unit': - from nodes.expression import Expression + from stilus.nodes.expression import Expression expression = Expression() value = value.clone() value.value = -value.value diff --git a/stilus/nodes/ifnode.py b/stilus/nodes/ifnode.py index 5e8e132..e1f958d 100644 --- a/stilus/nodes/ifnode.py +++ b/stilus/nodes/ifnode.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class If(Node): diff --git a/stilus/nodes/import_node.py b/stilus/nodes/import_node.py index 22f1541..e6678f8 100644 --- a/stilus/nodes/import_node.py +++ b/stilus/nodes/import_node.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Import(Node): diff --git a/stilus/nodes/keyframes.py b/stilus/nodes/keyframes.py index 6397e19..b56432b 100644 --- a/stilus/nodes/keyframes.py +++ b/stilus/nodes/keyframes.py @@ -1,6 +1,6 @@ import json -from nodes.atrule import Atrule +from .atrule import Atrule class Keyframes(Atrule): diff --git a/stilus/nodes/literal.py b/stilus/nodes/literal.py index 5a313d6..f73d98c 100644 --- a/stilus/nodes/literal.py +++ b/stilus/nodes/literal.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Literal(Node): diff --git a/stilus/nodes/media.py b/stilus/nodes/media.py index cf3978d..23ebe3d 100644 --- a/stilus/nodes/media.py +++ b/stilus/nodes/media.py @@ -1,6 +1,6 @@ import json -from nodes.atrule import Atrule +from .atrule import Atrule class Media(Atrule): diff --git a/stilus/nodes/member.py b/stilus/nodes/member.py index 6839785..283acfa 100644 --- a/stilus/nodes/member.py +++ b/stilus/nodes/member.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Member(Node): diff --git a/stilus/nodes/namespace.py b/stilus/nodes/namespace.py index c22a2ee..dbec6bf 100644 --- a/stilus/nodes/namespace.py +++ b/stilus/nodes/namespace.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Namespace(Node): diff --git a/stilus/nodes/node.py b/stilus/nodes/node.py index d69dd33..42f432e 100644 --- a/stilus/nodes/node.py +++ b/stilus/nodes/node.py @@ -1,6 +1,6 @@ import json from typing import Type -from exceptions import StilusError +from stilus.exceptions import StilusError # todo: move this one to the stilus exceptions @@ -48,14 +48,14 @@ def to_boolean(self): """Return True. :return: True """ - from nodes.boolean import Boolean + from .boolean import Boolean return Boolean(True) def to_expression(self): """Return expression or wrap this node in an expression :return: """ - from nodes.expression import Expression + from stilus.nodes.expression import Expression if self.node_name == 'expression': return self expression = Expression() @@ -74,7 +74,7 @@ def one_is_unit(self, other): def operate(self, op: str, right: Type['Node'], value=None) -> 'Node': """Operate on ``right`` with the given ``op``.""" - from nodes.boolean import Boolean + from .boolean import Boolean if op == 'is a': if 'string' == right.first().node_name: return Boolean(self.node_name == right.value) @@ -82,7 +82,7 @@ def operate(self, op: str, right: Type['Node'], value=None) -> 'Node': raise Exception(f'"is a" expects a string, ' f'got {right.toString}') elif op == '==': - import utils + from stilus import utils if utils.is_number(self) and utils.is_number(right): return Boolean(utils.get_value(self) == utils.get_value(right)) @@ -102,7 +102,7 @@ def operate(self, op: str, right: Type['Node'], value=None) -> 'Node': elif op == '||': return self if self.to_boolean().value is True else right elif op == 'in': - import utils + from stilus import utils values = utils.unwrap(right).nodes if not values: raise StilusError('"in" given invalid right-hand operand, ' diff --git a/stilus/nodes/nothing.py b/stilus/nodes/nothing.py index 53038a1..fa574e1 100644 --- a/stilus/nodes/nothing.py +++ b/stilus/nodes/nothing.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Nothing(Node): diff --git a/stilus/nodes/null.py b/stilus/nodes/null.py index 594d3cb..031ddb1 100644 --- a/stilus/nodes/null.py +++ b/stilus/nodes/null.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Null(Node): @@ -40,7 +40,7 @@ def to_expression(self): return super().to_expression() def to_boolean(self): - from nodes.boolean import false + from .boolean import false return false def to_json(self): diff --git a/stilus/nodes/object_node.py b/stilus/nodes/object_node.py index de29407..7c8ebbd 100644 --- a/stilus/nodes/object_node.py +++ b/stilus/nodes/object_node.py @@ -1,8 +1,8 @@ import json -from nodes.boolean import Boolean, false -from nodes.node import Node -from nodes.null import null +from .boolean import Boolean, false +from .node import Node +from .null import null class ObjectNode(Node): diff --git a/stilus/nodes/params.py b/stilus/nodes/params.py index 43965f7..238baa5 100644 --- a/stilus/nodes/params.py +++ b/stilus/nodes/params.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Params(Node): diff --git a/stilus/nodes/property.py b/stilus/nodes/property.py index 4c9b9ae..8e3aa9a 100644 --- a/stilus/nodes/property.py +++ b/stilus/nodes/property.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Property(Node): diff --git a/stilus/nodes/query.py b/stilus/nodes/query.py index 261b259..ddcb44f 100644 --- a/stilus/nodes/query.py +++ b/stilus/nodes/query.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Query(Node): diff --git a/stilus/nodes/query_list.py b/stilus/nodes/query_list.py index d33b40f..272d07e 100644 --- a/stilus/nodes/query_list.py +++ b/stilus/nodes/query_list.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class QueryList(Node): diff --git a/stilus/nodes/return_node.py b/stilus/nodes/return_node.py index b5ed9f6..5c4bb54 100644 --- a/stilus/nodes/return_node.py +++ b/stilus/nodes/return_node.py @@ -1,7 +1,7 @@ import json -from nodes.expression import Expression -from nodes.node import Node +from .expression import Expression +from .node import Node class ReturnNode(Node, Exception): diff --git a/stilus/nodes/root.py b/stilus/nodes/root.py index 075975b..ad472f0 100644 --- a/stilus/nodes/root.py +++ b/stilus/nodes/root.py @@ -1,7 +1,7 @@ import json -from nodes.block import Block -from nodes.node import Node +from .block import Block +from .node import Node class Root(Node): diff --git a/stilus/nodes/selector.py b/stilus/nodes/selector.py index c13fd7c..455ee64 100644 --- a/stilus/nodes/selector.py +++ b/stilus/nodes/selector.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Selector(Node): diff --git a/stilus/nodes/string.py b/stilus/nodes/string.py index 5c0745e..a1cbd09 100644 --- a/stilus/nodes/string.py +++ b/stilus/nodes/string.py @@ -1,9 +1,9 @@ import json -import utils -from nodes.boolean import Boolean -from nodes.expression import Expression -from nodes.node import Node +from stilus import utils +from .boolean import Boolean +from .expression import Expression +from .node import Node class String(Node): @@ -62,7 +62,7 @@ def operate(self, op, right, value=None): else: args = [right] # apply - from functions.s import s + from stilus.functions.s import s if hasattr(args, 'nodes'): return s(expr, *args.nodes) else: diff --git a/stilus/nodes/supports.py b/stilus/nodes/supports.py index 1945c75..20401f6 100644 --- a/stilus/nodes/supports.py +++ b/stilus/nodes/supports.py @@ -1,6 +1,6 @@ import json -from nodes.atrule import Atrule +from .atrule import Atrule class Supports(Atrule): diff --git a/stilus/nodes/ternary.py b/stilus/nodes/ternary.py index dd6956f..98c40cb 100644 --- a/stilus/nodes/ternary.py +++ b/stilus/nodes/ternary.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class Ternary(Node): diff --git a/stilus/nodes/unaryop.py b/stilus/nodes/unaryop.py index 963a18c..9a0e967 100644 --- a/stilus/nodes/unaryop.py +++ b/stilus/nodes/unaryop.py @@ -1,6 +1,6 @@ import json -from nodes.node import Node +from .node import Node class UnaryOp(Node): diff --git a/stilus/nodes/unit.py b/stilus/nodes/unit.py index bff0345..1412a36 100644 --- a/stilus/nodes/unit.py +++ b/stilus/nodes/unit.py @@ -1,8 +1,8 @@ import json -from nodes.boolean import Boolean -from nodes.expression import Expression -from nodes.node import Node +from .boolean import Boolean +from .expression import Expression +from .node import Node FACTOR_TABLE = {'mm': {'value': 1, 'label': 'mm'}, 'cm': {'value': 10, 'label': 'mm'}, diff --git a/stilus/parser.py b/stilus/parser.py index dda9496..dc81c20 100644 --- a/stilus/parser.py +++ b/stilus/parser.py @@ -1,45 +1,45 @@ import logging from collections import deque -from exceptions import ParseError -from lexer import Lexer, Token -from nodes.arguments import Arguments -from nodes.atblock import Atblock -from nodes.atrule import Atrule -from nodes.binop import BinOp -from nodes.block import Block -from nodes.boolean import true -from nodes.call import Call -from nodes.chartset import Charset -from nodes.each import Each -from nodes.expression import Expression -from nodes.extend import Extend -from nodes.feature import Feature -from nodes.function import Function -from nodes.group import Group -from nodes.ident import Ident -from nodes.ifnode import If -from nodes.import_node import Import -from nodes.keyframes import Keyframes -from nodes.literal import Literal -from nodes.media import Media -from nodes.member import Member -from nodes.namespace import Namespace -from nodes.node import Node -from nodes.nothing import Nothing -from nodes.null import null -from nodes.object_node import ObjectNode -from nodes.params import Params -from nodes.property import Property -from nodes.query import Query -from nodes.query_list import QueryList -from nodes.return_node import ReturnNode -from nodes.root import Root -from nodes.selector import Selector -from nodes.supports import Supports -from nodes.ternary import Ternary -from nodes.unaryop import UnaryOp -from units import units +from .exceptions import ParseError +from .lexer import Lexer, Token +from .nodes.arguments import Arguments +from .nodes.atblock import Atblock +from .nodes.atrule import Atrule +from .nodes.binop import BinOp +from .nodes.block import Block +from .nodes.boolean import true +from .nodes.call import Call +from .nodes.chartset import Charset +from .nodes.each import Each +from .nodes.expression import Expression +from .nodes.extend import Extend +from .nodes.feature import Feature +from .nodes.function import Function +from .nodes.group import Group +from .nodes.ident import Ident +from .nodes.ifnode import If +from .nodes.import_node import Import +from .nodes.keyframes import Keyframes +from .nodes.literal import Literal +from .nodes.media import Media +from .nodes.member import Member +from .nodes.namespace import Namespace +from .nodes.node import Node +from .nodes.nothing import Nothing +from .nodes.null import null +from .nodes.object_node import ObjectNode +from .nodes.params import Params +from .nodes.property import Property +from .nodes.query import Query +from .nodes.query_list import QueryList +from .nodes.return_node import ReturnNode +from .nodes.root import Root +from .nodes.selector import Selector +from .nodes.supports import Supports +from .nodes.ternary import Ternary +from .nodes.unaryop import UnaryOp +from .units import units log = logging.getLogger(__name__) diff --git a/stilus/renderer.py b/stilus/renderer.py index 55f5ee0..4b4a73f 100644 --- a/stilus/renderer.py +++ b/stilus/renderer.py @@ -1,8 +1,8 @@ -from parser import Parser -from utils import coerce -from visitor.compiler import Compiler -from visitor.evaluator import Evaluator -from visitor.normalizer import Normalizer +from .parser import Parser +from .utils import coerce +from .visitor.compiler import Compiler +from .visitor.evaluator import Evaluator +from .visitor.normalizer import Normalizer class Renderer: diff --git a/stilus/stack/frame.py b/stilus/stack/frame.py index adc5329..894b413 100644 --- a/stilus/stack/frame.py +++ b/stilus/stack/frame.py @@ -1,7 +1,7 @@ from deprecated import deprecated -from nodes.block import Block -from stack.scope import Scope +from stilus.nodes.block import Block +from stilus.stack.scope import Scope # todo: create getter and setter for scope or at least clean this up! diff --git a/stilus/stack/scope.py b/stilus/stack/scope.py index 11fdec9..c7e695a 100644 --- a/stilus/stack/scope.py +++ b/stilus/stack/scope.py @@ -1,7 +1,7 @@ from typing import Type -from nodes.ident import Ident -from nodes.node import Node +from stilus.nodes.ident import Ident +from stilus.nodes.node import Node class Scope: diff --git a/stilus/stack/stack.py b/stilus/stack/stack.py index 1b40625..8c68cad 100644 --- a/stilus/stack/stack.py +++ b/stilus/stack/stack.py @@ -1,8 +1,8 @@ from typing import Type -from nodes.block import Block -from nodes.node import Node -from stack.frame import Frame +from stilus.nodes.block import Block +from stilus.nodes.node import Node +from stilus.stack.frame import Frame class Stack(list): diff --git a/stilus/utils.py b/stilus/utils.py index bc13c83..2a6d140 100644 --- a/stilus/utils.py +++ b/stilus/utils.py @@ -7,15 +7,15 @@ from pathlib import Path from typing import List -from nodes.boolean import Boolean -from nodes.expression import Expression -from nodes.literal import Literal -from nodes.node import Node -from nodes.null import null, Null -from nodes.object_node import ObjectNode -from nodes.string import String -from nodes.unit import Unit -from selector_parser import SelectorParser +from .nodes.boolean import Boolean +from .nodes.expression import Expression +from .nodes.literal import Literal +from .nodes.node import Node +from .nodes.null import null, Null +from .nodes.object_node import ObjectNode +from .nodes.string import String +from .nodes.unit import Unit +from .selector_parser import SelectorParser def unwrap(expression: Expression) -> Node: @@ -294,7 +294,7 @@ def coerce(value, raw: bool, lineno=1, column=1): def parse_string(str: String): - from parser import Parser + from stilus.parser import Parser try: parser = Parser(str, {}) result = parser.list() diff --git a/stilus/visitor/compiler.py b/stilus/visitor/compiler.py index 306bdbe..d988588 100644 --- a/stilus/visitor/compiler.py +++ b/stilus/visitor/compiler.py @@ -1,23 +1,21 @@ import re -from os.path import dirname, abspath - -from exceptions import StilusError - -import utils - -from nodes.block import Block -from nodes.boolean import Boolean -from nodes.call import Call -from nodes.expression import Expression -from nodes.group import Group -from nodes.ident import Ident -from nodes.media import Media -from nodes.node import Node -from nodes.property import Property -from nodes.root import Root -from nodes.string import String -from nodes.unit import Unit, has_many_zeros_and_a_number -from visitor.visitor import Visitor +from os.path import abspath, dirname + +from stilus import utils +from stilus.exceptions import StilusError +from stilus.nodes.block import Block +from stilus.nodes.boolean import Boolean +from stilus.nodes.call import Call +from stilus.nodes.expression import Expression +from stilus.nodes.group import Group +from stilus.nodes.ident import Ident +from stilus.nodes.media import Media +from stilus.nodes.node import Node +from stilus.nodes.property import Property +from stilus.nodes.root import Root +from stilus.nodes.string import String +from stilus.nodes.unit import Unit, has_many_zeros_and_a_number +from stilus.visitor.visitor import Visitor # fixme: this method should not be called diff --git a/stilus/visitor/evaluator.py b/stilus/visitor/evaluator.py index 8556c11..2ab8690 100644 --- a/stilus/visitor/evaluator.py +++ b/stilus/visitor/evaluator.py @@ -4,36 +4,36 @@ import re from pathlib import Path -import utils -from colors import colors -from exceptions import ParseError, StilusError -from functions.bifs import bifs, raw_bifs -from nodes import node as filename_node -from nodes.arguments import Arguments -from nodes.block import Block -from nodes.boolean import Boolean, false -from nodes.call import Call -from nodes.color import RGBA -from nodes.expression import Expression -from nodes.function import Function -from nodes.group import Group -from nodes.ident import Ident -from nodes.import_node import Import -from nodes.literal import Literal -from nodes.node import CoercionError -from nodes.null import null -from nodes.object_node import ObjectNode -from nodes.return_node import ReturnNode -from nodes.root import Root -from nodes.string import String -from nodes.unit import Unit -from parser import Parser -from stack.frame import Frame -from stack.scope import Scope -from stack.stack import Stack -from units import units -from utils import unwrap -from visitor.visitor import Visitor +from stilus import utils +from stilus.colors import colors +from stilus.exceptions import ParseError, StilusError +from stilus.functions.bifs import bifs, raw_bifs +from stilus.nodes import node as filename_node +from stilus.nodes.arguments import Arguments +from stilus.nodes.block import Block +from stilus.nodes.boolean import Boolean, false +from stilus.nodes.call import Call +from stilus.nodes.color import RGBA +from stilus.nodes.expression import Expression +from stilus.nodes.function import Function +from stilus.nodes.group import Group +from stilus.nodes.ident import Ident +from stilus.nodes.import_node import Import +from stilus.nodes.literal import Literal +from stilus.nodes.node import CoercionError +from stilus.nodes.null import null +from stilus.nodes.object_node import ObjectNode +from stilus.nodes.return_node import ReturnNode +from stilus.nodes.root import Root +from stilus.nodes.string import String +from stilus.nodes.unit import Unit +from stilus.parser import Parser +from stilus.stack.frame import Frame +from stilus.stack.scope import Scope +from stilus.stack.stack import Stack +from stilus.units import units +from stilus.utils import unwrap +from stilus.visitor.visitor import Visitor log = logging.getLogger(__name__) diff --git a/stilus/visitor/normalizer.py b/stilus/visitor/normalizer.py index a0e0ace..45d9b6b 100644 --- a/stilus/visitor/normalizer.py +++ b/stilus/visitor/normalizer.py @@ -1,15 +1,15 @@ import re from collections import defaultdict -import utils -from nodes.block import Block -from nodes.group import Group -from nodes.literal import Literal -from nodes.node import Node -from nodes.null import null -from nodes.root import Root -from nodes.selector import Selector -from visitor.visitor import Visitor +from stilus import utils +from stilus.nodes.block import Block +from stilus.nodes.group import Group +from stilus.nodes.literal import Literal +from stilus.nodes.node import Node +from stilus.nodes.null import null +from stilus.nodes.root import Root +from stilus.nodes.selector import Selector +from stilus.visitor.visitor import Visitor import logging log = logging.getLogger(__name__) diff --git a/stilus/visitor/visitor.py b/stilus/visitor/visitor.py index 1fc18fd..8954ca1 100644 --- a/stilus/visitor/visitor.py +++ b/stilus/visitor/visitor.py @@ -1,4 +1,4 @@ -from nodes.node import Node +from stilus.nodes.node import Node import logging log = logging.getLogger(__name__) diff --git a/tests/functions/test_component.py b/tests/functions/test_component.py index 35d060d..e832344 100644 --- a/tests/functions/test_component.py +++ b/tests/functions/test_component.py @@ -1,7 +1,7 @@ -from functions.component import component -from nodes.color import RGBA, HSLA -from nodes.string import String -from nodes.unit import Unit +from stilus.functions.component import component +from stilus.nodes.color import RGBA, HSLA +from stilus.nodes.string import String +from stilus.nodes.unit import Unit def test_component_hsla_hue(): diff --git a/tests/functions/test_hsla.py b/tests/functions/test_hsla.py index 1aeb4e6..af65473 100644 --- a/tests/functions/test_hsla.py +++ b/tests/functions/test_hsla.py @@ -1,6 +1,6 @@ -from functions.hsla import hsla -from nodes.color import HSLA -from nodes.unit import Unit +from stilus.functions.hsla import hsla +from stilus.nodes.color import HSLA +from stilus.nodes.unit import Unit def test_hsla_color(): diff --git a/tests/functions/test_hue.py b/tests/functions/test_hue.py index 35a261b..06f82f6 100644 --- a/tests/functions/test_hue.py +++ b/tests/functions/test_hue.py @@ -1,6 +1,6 @@ -from functions.hue import hue -from nodes.color import HSLA -from nodes.unit import Unit +from stilus.functions.hue import hue +from stilus.nodes.color import HSLA +from stilus.nodes.unit import Unit def test_hue(): diff --git a/tests/functions/test_lightness.py b/tests/functions/test_lightness.py index 408f40c..b5ca547 100644 --- a/tests/functions/test_lightness.py +++ b/tests/functions/test_lightness.py @@ -1,6 +1,6 @@ -from functions.lightness import lightness -from nodes.color import HSLA -from nodes.unit import Unit +from stilus.functions.lightness import lightness +from stilus.nodes.color import HSLA +from stilus.nodes.unit import Unit def test_lightness(): diff --git a/tests/functions/test_match.py b/tests/functions/test_match.py index 7f8b3fe..546ae52 100644 --- a/tests/functions/test_match.py +++ b/tests/functions/test_match.py @@ -1,6 +1,6 @@ -from functions.match import match -from nodes.null import null -from nodes.string import String +from stilus.functions.match import match +from stilus.nodes.null import null +from stilus.nodes.string import String def test_match(): diff --git a/tests/functions/test_saturation.py b/tests/functions/test_saturation.py index b589214..a697f4c 100644 --- a/tests/functions/test_saturation.py +++ b/tests/functions/test_saturation.py @@ -1,6 +1,6 @@ -from functions.saturation import saturation -from nodes.color import HSLA -from nodes.unit import Unit +from stilus.functions.saturation import saturation +from stilus.nodes.color import HSLA +from stilus.nodes.unit import Unit def test_saturation(): diff --git a/tests/nodes/test_arguments.py b/tests/nodes/test_arguments.py index fc488ac..558d7fb 100644 --- a/tests/nodes/test_arguments.py +++ b/tests/nodes/test_arguments.py @@ -1,7 +1,7 @@ -from nodes.arguments import Arguments -from nodes.boolean import true -from nodes.expression import Expression -from nodes.unit import Unit +from stilus.nodes.arguments import Arguments +from stilus.nodes.boolean import true +from stilus.nodes.expression import Expression +from stilus.nodes.unit import Unit def test_arguments(): diff --git a/tests/nodes/test_atblock.py b/tests/nodes/test_atblock.py index eb12cd9..ead21b8 100644 --- a/tests/nodes/test_atblock.py +++ b/tests/nodes/test_atblock.py @@ -1,8 +1,8 @@ -from nodes.atblock import Atblock -from nodes.block import Block -from nodes.boolean import true -from nodes.node import Node -from nodes.null import null +from stilus.nodes.atblock import Atblock +from stilus.nodes.block import Block +from stilus.nodes.boolean import true +from stilus.nodes.node import Node +from stilus.nodes.null import null def test_atblock(): diff --git a/tests/nodes/test_atrule.py b/tests/nodes/test_atrule.py index f33c450..e22d60d 100644 --- a/tests/nodes/test_atrule.py +++ b/tests/nodes/test_atrule.py @@ -1,4 +1,4 @@ -from nodes.atrule import Atrule +from stilus.nodes.atrule import Atrule def test_atrule(): diff --git a/tests/nodes/test_binop.py b/tests/nodes/test_binop.py index d243613..bb178c5 100644 --- a/tests/nodes/test_binop.py +++ b/tests/nodes/test_binop.py @@ -1,5 +1,5 @@ -from nodes.binop import BinOp -from nodes.expression import Expression +from stilus.nodes.binop import BinOp +from stilus.nodes.expression import Expression def test_binop(): diff --git a/tests/nodes/test_block.py b/tests/nodes/test_block.py index d8b85ae..ec69946 100644 --- a/tests/nodes/test_block.py +++ b/tests/nodes/test_block.py @@ -1,12 +1,12 @@ -from nodes.block import Block -from nodes.boolean import true -from nodes.comment import Comment -from nodes.expression import Expression -from nodes.literal import Literal -from nodes.media import Media -from nodes.null import null -from nodes.property import Property -from nodes.string import String +from stilus.nodes.block import Block +from stilus.nodes.boolean import true +from stilus.nodes.comment import Comment +from stilus.nodes.expression import Expression +from stilus.nodes.literal import Literal +from stilus.nodes.media import Media +from stilus.nodes.null import null +from stilus.nodes.property import Property +from stilus.nodes.string import String def test_block(): diff --git a/tests/nodes/test_boolean.py b/tests/nodes/test_boolean.py index b1da638..ffc9085 100644 --- a/tests/nodes/test_boolean.py +++ b/tests/nodes/test_boolean.py @@ -1,4 +1,4 @@ -from nodes.boolean import Boolean, true, false +from stilus.nodes.boolean import Boolean, true, false def test_is_true(): diff --git a/tests/nodes/test_call.py b/tests/nodes/test_call.py index bd4949d..ec09a92 100644 --- a/tests/nodes/test_call.py +++ b/tests/nodes/test_call.py @@ -1,4 +1,4 @@ -from nodes.call import Call +from stilus.nodes.call import Call def test_call(): diff --git a/tests/nodes/test_color.py b/tests/nodes/test_color.py index 0e649e2..017a9fa 100644 --- a/tests/nodes/test_color.py +++ b/tests/nodes/test_color.py @@ -1,4 +1,4 @@ -from nodes.color import HSLA, RGBA +from stilus.nodes.color import HSLA, RGBA def test_hsla(): diff --git a/tests/nodes/test_comment.py b/tests/nodes/test_comment.py index 9cd889d..c5604e7 100644 --- a/tests/nodes/test_comment.py +++ b/tests/nodes/test_comment.py @@ -1,4 +1,4 @@ -from nodes.comment import Comment +from stilus.nodes.comment import Comment def test_comment(): diff --git a/tests/nodes/test_each.py b/tests/nodes/test_each.py index bfb2972..10f16d9 100644 --- a/tests/nodes/test_each.py +++ b/tests/nodes/test_each.py @@ -1,7 +1,7 @@ -from nodes.block import Block -from nodes.each import Each -from nodes.expression import Expression -from nodes.node import Node +from stilus.nodes.block import Block +from stilus.nodes.each import Each +from stilus.nodes.expression import Expression +from stilus.nodes.node import Node def test_property(): diff --git a/tests/nodes/test_expression.py b/tests/nodes/test_expression.py index ecedafe..c33be4a 100644 --- a/tests/nodes/test_expression.py +++ b/tests/nodes/test_expression.py @@ -1,14 +1,14 @@ import pytest -from exceptions import StilusError -from nodes.boolean import Boolean -from nodes.expression import Expression -from nodes.ident import Ident +from stilus.exceptions import StilusError +from stilus.nodes.boolean import Boolean +from stilus.nodes.expression import Expression +from stilus.nodes.ident import Ident def test_empty_expression(): - from nodes.null import null - from nodes.boolean import false + from stilus.nodes.null import null + from stilus.nodes.boolean import false expression = Expression() assert len(expression) == 0 assert expression.is_empty() @@ -38,9 +38,9 @@ def test_expression_make_is_list_and_preserve(): def test_expression_append(): - from nodes.null import null - from nodes.boolean import true - from nodes.boolean import false + from stilus.nodes.null import null + from stilus.nodes.boolean import true + from stilus.nodes.boolean import false expression = Expression() expression.append(null) expression.append(true) @@ -49,9 +49,9 @@ def test_expression_append(): def test_expression_string_first_boolean(): - from nodes.boolean import true - from nodes.boolean import false - from nodes.null import null + from stilus.nodes.boolean import true + from stilus.nodes.boolean import false + from stilus.nodes.null import null expression = Expression() expression.append(true) expression.append(false) @@ -98,9 +98,9 @@ def test_expression_hash(): other_expression.append(Ident('foo')) other_expression.append(Ident('bar')) assert other_expression.hash() == 'foo::bar' - from nodes.null import null - from nodes.boolean import true - from nodes.boolean import false + from stilus.nodes.null import null + from stilus.nodes.boolean import true + from stilus.nodes.boolean import false expression = Expression() expression.append(null) expression.append(true) diff --git a/tests/nodes/test_feature.py b/tests/nodes/test_feature.py index 537d140..959e234 100644 --- a/tests/nodes/test_feature.py +++ b/tests/nodes/test_feature.py @@ -1,6 +1,6 @@ -from nodes.expression import Expression -from nodes.feature import Feature -from nodes.ident import Ident +from stilus.nodes.expression import Expression +from stilus.nodes.feature import Feature +from stilus.nodes.ident import Ident def test_feature(): diff --git a/tests/nodes/test_function.py b/tests/nodes/test_function.py index 95144a7..7a186c7 100644 --- a/tests/nodes/test_function.py +++ b/tests/nodes/test_function.py @@ -1,4 +1,4 @@ -from nodes.function import Function +from stilus.nodes.function import Function def test_function(): diff --git a/tests/nodes/test_group.py b/tests/nodes/test_group.py index 0ed5ec7..60abef2 100644 --- a/tests/nodes/test_group.py +++ b/tests/nodes/test_group.py @@ -1,6 +1,6 @@ -from nodes.block import Block -from nodes.group import Group -from nodes.selector import Selector +from stilus.nodes.block import Block +from stilus.nodes.group import Group +from stilus.nodes.selector import Selector def test_group(): diff --git a/tests/nodes/test_ifnode.py b/tests/nodes/test_ifnode.py index 96a7410..0286958 100644 --- a/tests/nodes/test_ifnode.py +++ b/tests/nodes/test_ifnode.py @@ -1,4 +1,4 @@ -from nodes.ifnode import If +from stilus.nodes.ifnode import If # TODO: implement complete test diff --git a/tests/nodes/test_indent.py b/tests/nodes/test_indent.py index 42ba8ff..6957f2b 100644 --- a/tests/nodes/test_indent.py +++ b/tests/nodes/test_indent.py @@ -1,5 +1,5 @@ -from nodes.ident import Ident -from nodes.null import null +from stilus.nodes.ident import Ident +from stilus.nodes.null import null def test_ident(): diff --git a/tests/nodes/test_keyframes.py b/tests/nodes/test_keyframes.py index 2ad4da6..454faf8 100644 --- a/tests/nodes/test_keyframes.py +++ b/tests/nodes/test_keyframes.py @@ -1,4 +1,4 @@ -from nodes.keyframes import Keyframes +from stilus.nodes.keyframes import Keyframes def test_keyframes(): diff --git a/tests/nodes/test_literal.py b/tests/nodes/test_literal.py index 3d755c6..f884e75 100644 --- a/tests/nodes/test_literal.py +++ b/tests/nodes/test_literal.py @@ -1,4 +1,4 @@ -from nodes.literal import Literal +from stilus.nodes.literal import Literal def test_literal(): diff --git a/tests/nodes/test_media.py b/tests/nodes/test_media.py index ff87e7d..49b0950 100644 --- a/tests/nodes/test_media.py +++ b/tests/nodes/test_media.py @@ -1,4 +1,4 @@ -from nodes.media import Media +from stilus.nodes.media import Media def test_property(): diff --git a/tests/nodes/test_member.py b/tests/nodes/test_member.py index a50d7de..87532b7 100644 --- a/tests/nodes/test_member.py +++ b/tests/nodes/test_member.py @@ -1,4 +1,4 @@ -from nodes.member import Member +from stilus.nodes.member import Member def test_member(): diff --git a/tests/nodes/test_node.py b/tests/nodes/test_node.py index 75558fb..b8110a9 100644 --- a/tests/nodes/test_node.py +++ b/tests/nodes/test_node.py @@ -1,6 +1,6 @@ import pytest -from nodes.node import Node, CoercionError +from stilus.nodes.node import Node, CoercionError def test_node(): @@ -43,7 +43,7 @@ def test_name(): def test_to_boolean(): node = Node() - from nodes.boolean import true + from stilus.nodes.boolean import true assert node.to_boolean() == true @@ -59,7 +59,7 @@ def test_valid_coerce(): def test_invalid_coerce(): - from nodes.null import null + from stilus.nodes.null import null node_1 = Node() node_2 = null with pytest.raises(CoercionError) as excinfo: diff --git a/tests/nodes/test_null.py b/tests/nodes/test_null.py index cc4fa16..d392786 100644 --- a/tests/nodes/test_null.py +++ b/tests/nodes/test_null.py @@ -1,11 +1,11 @@ -from nodes.null import Null, null +from stilus.nodes.null import Null, null def test_null(): assert Null().node_name == 'null' assert Null().is_null() is True assert hash(Null()) == hash(None) - from nodes.boolean import false + from stilus.nodes.boolean import false assert Null().to_boolean() == false assert Null() == null diff --git a/tests/nodes/test_property.py b/tests/nodes/test_property.py index 067c771..2f0320c 100644 --- a/tests/nodes/test_property.py +++ b/tests/nodes/test_property.py @@ -1,6 +1,6 @@ -from nodes.expression import Expression -from nodes.ident import Ident -from nodes.property import Property +from stilus.nodes.expression import Expression +from stilus.nodes.ident import Ident +from stilus.nodes.property import Property def test_property(): @@ -12,9 +12,9 @@ def test_property(): def test_property_expression(): - from nodes.boolean import true - from nodes.boolean import false - from nodes.null import null + from stilus.nodes.boolean import true + from stilus.nodes.boolean import false + from stilus.nodes.null import null expression = Expression() expression.append(true) expression.append(false) diff --git a/tests/nodes/test_root.py b/tests/nodes/test_root.py index 26b3499..41ab72a 100644 --- a/tests/nodes/test_root.py +++ b/tests/nodes/test_root.py @@ -1,6 +1,6 @@ -from nodes.boolean import true, false -from nodes.null import null -from nodes.root import Root +from stilus.nodes.boolean import true, false +from stilus.nodes.null import null +from stilus.nodes.root import Root def test_root(): diff --git a/tests/nodes/test_selector.py b/tests/nodes/test_selector.py index fa2e12e..7807604 100644 --- a/tests/nodes/test_selector.py +++ b/tests/nodes/test_selector.py @@ -1,4 +1,4 @@ -from nodes.selector import Selector +from stilus.nodes.selector import Selector def test_selector(): diff --git a/tests/nodes/test_string.py b/tests/nodes/test_string.py index 6345209..df1f5f8 100644 --- a/tests/nodes/test_string.py +++ b/tests/nodes/test_string.py @@ -1,9 +1,9 @@ -from nodes.ident import Ident -from nodes.null import null -from nodes.string import String -from nodes.expression import Expression -from nodes.boolean import false, true -from nodes.boolean import Boolean +from stilus.nodes.ident import Ident +from stilus.nodes.null import null +from stilus.nodes.string import String +from stilus.nodes.expression import Expression +from stilus.nodes.boolean import false, true +from stilus.nodes.boolean import Boolean def test_string(): diff --git a/tests/nodes/test_ternary.py b/tests/nodes/test_ternary.py index a3b02d5..7ad8600 100644 --- a/tests/nodes/test_ternary.py +++ b/tests/nodes/test_ternary.py @@ -1,5 +1,5 @@ -from nodes.ternary import Ternary -from nodes.expression import Expression +from stilus.nodes.ternary import Ternary +from stilus.nodes.expression import Expression def test_ternary(): diff --git a/tests/nodes/test_unaryop.py b/tests/nodes/test_unaryop.py index 7e4c7c2..9bad6a6 100644 --- a/tests/nodes/test_unaryop.py +++ b/tests/nodes/test_unaryop.py @@ -1,5 +1,5 @@ -from nodes.unaryop import UnaryOp -from nodes.expression import Expression +from stilus.nodes.unaryop import UnaryOp +from stilus.nodes.expression import Expression def test_binop(): diff --git a/tests/nodes/test_unit.py b/tests/nodes/test_unit.py index 02c3022..2c73d86 100644 --- a/tests/nodes/test_unit.py +++ b/tests/nodes/test_unit.py @@ -1,4 +1,4 @@ -from nodes.unit import Unit +from stilus.nodes.unit import Unit def test_unit(): @@ -10,10 +10,10 @@ def test_unit(): def test_boolean(): unit = Unit(1, 'Hz') - from nodes.boolean import true + from stilus.nodes.boolean import true assert unit.to_boolean() == true unit = Unit(10) - from nodes.boolean import Boolean + from stilus.nodes.boolean import Boolean assert unit.to_boolean() == Boolean(10) diff --git a/tests/stack/test_frame.py b/tests/stack/test_frame.py index 2d5c975..6647051 100644 --- a/tests/stack/test_frame.py +++ b/tests/stack/test_frame.py @@ -1,9 +1,9 @@ from pytest import raises -from nodes.block import Block -from nodes.ident import Ident -from stack.frame import Frame -from stack.scope import Scope +from stilus.nodes.block import Block +from stilus.nodes.ident import Ident +from stilus.stack.frame import Frame +from stilus.stack.scope import Scope def test_frame_creation(): diff --git a/tests/stack/test_scope.py b/tests/stack/test_scope.py index ebb716a..b3e2620 100644 --- a/tests/stack/test_scope.py +++ b/tests/stack/test_scope.py @@ -1,7 +1,7 @@ -from nodes.null import null -from nodes.boolean import true -from nodes.ident import Ident -from stack.scope import Scope +from stilus.nodes.null import null +from stilus.nodes.boolean import true +from stilus.nodes.ident import Ident +from stilus.stack.scope import Scope def test_scope(): diff --git a/tests/stack/test_stack.py b/tests/stack/test_stack.py index 9134ef7..a9cbab6 100644 --- a/tests/stack/test_stack.py +++ b/tests/stack/test_stack.py @@ -1,7 +1,7 @@ -from nodes.block import Block -from nodes.ident import Ident -from stack.frame import Frame -from stack.stack import Stack +from stilus.nodes.block import Block +from stilus.nodes.ident import Ident +from stilus.stack.frame import Frame +from stilus.stack.stack import Stack def test_stack(): diff --git a/tests/stylus/test_cases.py b/tests/stylus/test_cases.py index 3268294..4cb5ccc 100644 --- a/tests/stylus/test_cases.py +++ b/tests/stylus/test_cases.py @@ -3,8 +3,8 @@ import pytest import logging -from functions.resolver import get_resolver -from renderer import Renderer +from stilus.functions.resolver import get_resolver +from stilus.renderer import Renderer log = logging.getLogger(__name__) diff --git a/tests/test_cli.py b/tests/test_cli.py index 8a7d8c3..038161c 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -4,8 +4,8 @@ import pytest from click.testing import CliRunner -import __version__ -import cli +from stilus import __version__ +from stilus import cli def test_cli_help(): diff --git a/tests/test_lexer.py b/tests/test_lexer.py index 77c0ceb..796793b 100644 --- a/tests/test_lexer.py +++ b/tests/test_lexer.py @@ -1,13 +1,13 @@ from collections import deque -from lexer import Lexer, Token -from nodes.boolean import true -from nodes.color import RGBA -from nodes.ident import Ident -from nodes.literal import Literal -from nodes.null import null -from nodes.string import String -from nodes.unit import Unit +from stilus.lexer import Lexer, Token +from stilus.nodes.boolean import true +from stilus.nodes.color import RGBA +from stilus.nodes.ident import Ident +from stilus.nodes.literal import Literal +from stilus.nodes.null import null +from stilus.nodes.string import String +from stilus.nodes.unit import Unit def test_lexer_token(): @@ -144,7 +144,7 @@ def test_lexer_indent_outdent(): def test_lexer_ident_colon_null_newline_eos(): lexer = Lexer('abc:\n color: null\n', {}) tokens = [token for token in lexer] - from nodes.null import null + from stilus.nodes.null import null assert tokens[0] == Token('ident', Ident('abc', null), lineno=1, column=1) assert tokens[1] == Token(':', ':', '', lineno=1, column=4) assert tokens[2] == Token('ident', Ident('color', null), @@ -158,7 +158,7 @@ def test_lexer_ident_colon_null_newline_eos(): def test_lexer_ident_colon_colors(): lexer = Lexer('abc: #11223311, #aabbcc, #abc1, #fff, #dd, #e', {}) tokens = [token for token in lexer] - from nodes.null import null + from stilus.nodes.null import null assert tokens[0] == Token('ident', Ident('abc', null), lineno=1, column=1) assert tokens[1] == Token(':', ':', ' ', lineno=1, column=4) assert tokens[2] == Token('color', RGBA(17, 34, 51, 0.67), @@ -178,7 +178,7 @@ def test_lexer_ident_colon_colors(): def test_lexer_ident_space(): lexer = Lexer('abc def klm:\n xyz abc\n', {}) tokens = [token for token in lexer] - from nodes.null import null + from stilus.nodes.null import null assert tokens[0] == Token('ident', Ident('abc', null), lineno=1, column=1) assert tokens[1] == Token('space', lineno=1, column=4) assert tokens[2] == Token('ident', Ident('def', null), lineno=1, column=5) @@ -195,7 +195,7 @@ def test_lexer_function_paren_braces_sep_unit(): '}\n', {}) tokens = [token for token in lexer] - from nodes.null import null + from stilus.nodes.null import null assert tokens[0] == Token('function', Ident('bg', null), '', lineno=1, column=1) assert tokens[1] == Token(')', ')', '', lineno=1, column=4) diff --git a/tests/test_parser_core.py b/tests/test_parser_core.py index 5702258..61a7dcd 100644 --- a/tests/test_parser_core.py +++ b/tests/test_parser_core.py @@ -1,8 +1,8 @@ import pytest -from exceptions import ParseError -from nodes.ident import Ident -from parser import Parser +from stilus.exceptions import ParseError +from stilus.nodes.ident import Ident +from stilus.parser import Parser def test_parser_construct(): diff --git a/tests/test_parser_parse.py b/tests/test_parser_parse.py index f128f3b..ac47114 100644 --- a/tests/test_parser_parse.py +++ b/tests/test_parser_parse.py @@ -1,7 +1,7 @@ -from nodes.ident import Ident -from nodes.literal import Literal -from nodes.null import null -from parser import Parser +from stilus.nodes.ident import Ident +from stilus.nodes.literal import Literal +from stilus.nodes.null import null +from stilus.parser import Parser def test_parser_parse_basic(): diff --git a/tests/test_parser_skip.py b/tests/test_parser_skip.py index 100cf9e..d2657f0 100644 --- a/tests/test_parser_skip.py +++ b/tests/test_parser_skip.py @@ -1,7 +1,7 @@ from unittest.mock import Mock -from lexer import Token -from parser import Parser +from stilus.lexer import Token +from stilus.parser import Parser def test_parser_skip(): diff --git a/tests/test_parser_stmt.py b/tests/test_parser_stmt.py index a56af54..1dfee41 100644 --- a/tests/test_parser_stmt.py +++ b/tests/test_parser_stmt.py @@ -1,12 +1,12 @@ from collections import deque from unittest.mock import MagicMock -from lexer import Token -from nodes.group import Group -from nodes.ident import Ident -from nodes.literal import Literal -from nodes.null import null -from parser import Parser +from stilus.lexer import Token +from stilus.nodes.group import Group +from stilus.nodes.ident import Ident +from stilus.nodes.literal import Literal +from stilus.nodes.null import null +from stilus.parser import Parser def test_parser_selector_parts(): diff --git a/tests/test_stilus.py b/tests/test_stilus.py index a6ec285..d2f008f 100644 --- a/tests/test_stilus.py +++ b/tests/test_stilus.py @@ -1,5 +1,5 @@ -from functions.resolver import get_resolver -from renderer import Renderer +from stilus.functions.resolver import get_resolver +from stilus.renderer import Renderer from stilus import renderer diff --git a/tests/test_utils.py b/tests/test_utils.py index 6e19dcb..80c892a 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,7 +1,7 @@ -import utils -from nodes.boolean import true -from nodes.expression import Expression -from nodes.unit import Unit +from stilus import utils +from stilus.nodes.boolean import true +from stilus.nodes.expression import Expression +from stilus.nodes.unit import Unit def test_unwrap(): diff --git a/tests/test_version.py b/tests/test_version.py index 01b8393..92de68a 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -1,5 +1,5 @@ from stilus import __version__ -from __version__ import VERSION +from stilus.__version__ import VERSION def test_version(): diff --git a/tests/visitor/test_compiler.py b/tests/visitor/test_compiler.py index 98b3c6f..815812d 100644 --- a/tests/visitor/test_compiler.py +++ b/tests/visitor/test_compiler.py @@ -1,7 +1,7 @@ -from parser import Parser -from visitor.compiler import Compiler -from visitor.evaluator import Evaluator -from visitor.normalizer import Normalizer +from stilus.parser import Parser +from stilus.visitor.compiler import Compiler +from stilus.visitor.evaluator import Evaluator +from stilus.visitor.normalizer import Normalizer def test_compiler_create(): diff --git a/tests/visitor/test_evaluator.py b/tests/visitor/test_evaluator.py index c33a08a..bdde194 100644 --- a/tests/visitor/test_evaluator.py +++ b/tests/visitor/test_evaluator.py @@ -1,5 +1,5 @@ -from parser import Parser -from visitor.evaluator import Evaluator +from stilus.parser import Parser +from stilus.visitor.evaluator import Evaluator def test_evaluator_create(): diff --git a/tests/visitor/test_normalizer.py b/tests/visitor/test_normalizer.py index d6fa18d..ed8b516 100644 --- a/tests/visitor/test_normalizer.py +++ b/tests/visitor/test_normalizer.py @@ -1,6 +1,6 @@ -from parser import Parser -from visitor.evaluator import Evaluator -from visitor.normalizer import Normalizer +from stilus.parser import Parser +from stilus.visitor.evaluator import Evaluator +from stilus.visitor.normalizer import Normalizer def test_evaluator_create():