diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 0000000..dda40c2 --- /dev/null +++ b/.coveragerc @@ -0,0 +1,3 @@ +[run] +branch = True +omit = maven_lambda/test/* diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c1dc00 --- /dev/null +++ b/.gitignore @@ -0,0 +1,62 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ +_build/ + +# PyBuilder +target/ + +# vim +*.swp diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..f24d4f3 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,22 @@ +dist: trusty +sudo: false + +language: python + +matrix: + fast_finish: true + include: + - python: 3.6 + env: TOXENV=py36 + + - python: 3.7 + # from https://github.com/travis-ci/travis-ci/issues/9815#issuecomment-401756442 + dist: xenial + sudo: true + env: TOXENV=py37 + +install: + - travis_retry pip install tox +script: + - tox -e "$TOXENV" + - if [[ $TOXENV == 'py37' ]] ; then tox -e coveralls; else echo "No coverage to do"; fi diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..4a6e7b2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,6 @@ +# Change Log +All notable changes to this project will be documented in this file. +This project adheres to [Semantic Versioning](http://semver.org/). + + +## [0.1.0] - TBD diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e87a115 --- /dev/null +++ b/LICENSE @@ -0,0 +1,363 @@ +Mozilla Public License, version 2.0 + +1. Definitions + +1.1. "Contributor" + + means each individual or legal entity that creates, contributes to the + creation of, or owns Covered Software. + +1.2. "Contributor Version" + + means the combination of the Contributions of others (if any) used by a + Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + + means Source Code Form to which the initial Contributor has attached the + notice in Exhibit A, the Executable Form of such Source Code Form, and + Modifications of such Source Code Form, in each case including portions + thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + a. that the initial Contributor has attached the notice described in + Exhibit B to the Covered Software; or + + b. that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the terms of + a Secondary License. + +1.6. "Executable Form" + + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + + means a work that combines Covered Software with other material, in a + separate file or files, that is not Covered Software. + +1.8. "License" + + means this document. + +1.9. "Licensable" + + means having the right to grant, to the maximum extent possible, whether + at the time of the initial grant or subsequently, any and all of the + rights conveyed by this License. + +1.10. "Modifications" + + means any of the following: + + a. any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered Software; or + + b. any new file in Source Code Form that contains any Covered Software. + +1.11. "Patent Claims" of a Contributor + + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the License, + by the making, using, selling, offering for sale, having made, import, + or transfer of either its Contributions or its Contributor Version. + +1.12. "Secondary License" + + means either the GNU General Public License, Version 2.0, the GNU Lesser + General Public License, Version 2.1, the GNU Affero General Public + License, Version 3.0, or any later versions of those licenses. + +1.13. "Source Code Form" + + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that controls, is + controlled by, or is under common control with You. For purposes of this + definition, "control" means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by contract or + otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + + +2. License Grants and Conditions + +2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + + a. under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + + b. under Patent Claims of such Contributor to make, use, sell, offer for + sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution + become effective for each Contribution on the date the Contributor first + distributes such Contribution. + +2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under + this License. No additional rights or licenses will be implied from the + distribution or licensing of Covered Software under this License. + Notwithstanding Section 2.1(b) above, no patent license is granted by a + Contributor: + + a. for any code that a Contributor has removed from Covered Software; or + + b. for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + + c. under Patent Claims infringed by Covered Software in the absence of + its Contributions. + + This License does not grant any rights in the trademarks, service marks, + or logos of any Contributor (except as may be necessary to comply with + the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to + distribute the Covered Software under a subsequent version of this + License (see Section 10.2) or under the terms of a Secondary License (if + permitted under the terms of Section 3.3). + +2.5. Representation + + Each Contributor represents that the Contributor believes its + Contributions are its original creation(s) or it has sufficient rights to + grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + + This License is not intended to limit any rights You have under + applicable copyright doctrines of fair use, fair dealing, or other + equivalents. + +2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in + Section 2.1. + + +3. Responsibilities + +3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any + Modifications that You create or to which You contribute, must be under + the terms of this License. You must inform recipients that the Source + Code Form of the Covered Software is governed by the terms of this + License, and how they can obtain a copy of this License. You may not + attempt to alter or restrict the recipients' rights in the Source Code + Form. + +3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + + a. such Covered Software must also be made available in Source Code Form, + as described in Section 3.1, and You must inform recipients of the + Executable Form how they can obtain a copy of such Source Code Form by + reasonable means in a timely manner, at a charge no more than the cost + of distribution to the recipient; and + + b. You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter the + recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, + provided that You also comply with the requirements of this License for + the Covered Software. If the Larger Work is a combination of Covered + Software with a work governed by one or more Secondary Licenses, and the + Covered Software is not Incompatible With Secondary Licenses, this + License permits You to additionally distribute such Covered Software + under the terms of such Secondary License(s), so that the recipient of + the Larger Work may, at their option, further distribute the Covered + Software under the terms of either this License or such Secondary + License(s). + +3.4. Notices + + You may not remove or alter the substance of any license notices + (including copyright notices, patent notices, disclaimers of warranty, or + limitations of liability) contained within the Source Code Form of the + Covered Software, except that You may alter any license notices to the + extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, + indemnity or liability obligations to one or more recipients of Covered + Software. However, You may do so only on Your own behalf, and not on + behalf of any Contributor. You must make it absolutely clear that any + such warranty, support, indemnity, or liability obligation is offered by + You alone, and You hereby agree to indemnify every Contributor for any + liability incurred by such Contributor as a result of warranty, support, + indemnity or liability terms You offer. You may include additional + disclaimers of warranty and limitations of liability specific to any + jurisdiction. + +4. Inability to Comply Due to Statute or Regulation + + If it is impossible for You to comply with any of the terms of this License + with respect to some or all of the Covered Software due to statute, + judicial order, or regulation then You must: (a) comply with the terms of + this License to the maximum extent possible; and (b) describe the + limitations and the code they affect. Such description must be placed in a + text file included with all distributions of the Covered Software under + this License. Except to the extent prohibited by statute or regulation, + such description must be sufficiently detailed for a recipient of ordinary + skill to be able to understand it. + +5. Termination + +5.1. The rights granted under this License will terminate automatically if You + fail to comply with any of its terms. However, if You become compliant, + then the rights granted under this License from a particular Contributor + are reinstated (a) provisionally, unless and until such Contributor + explicitly and finally terminates Your grants, and (b) on an ongoing + basis, if such Contributor fails to notify You of the non-compliance by + some reasonable means prior to 60 days after You have come back into + compliance. Moreover, Your grants from a particular Contributor are + reinstated on an ongoing basis if such Contributor notifies You of the + non-compliance by some reasonable means, this is the first time You have + received notice of non-compliance with this License from such + Contributor, and You become compliant prior to 30 days after Your receipt + of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent + infringement claim (excluding declaratory judgment actions, + counter-claims, and cross-claims) alleging that a Contributor Version + directly or indirectly infringes any patent, then the rights granted to + You by any and all Contributors for the Covered Software under Section + 2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user + license agreements (excluding distributors and resellers) which have been + validly granted by You or Your distributors under this License prior to + termination shall survive termination. + +6. Disclaimer of Warranty + + Covered Software is provided under this License on an "as is" basis, + without warranty of any kind, either expressed, implied, or statutory, + including, without limitation, warranties that the Covered Software is free + of defects, merchantable, fit for a particular purpose or non-infringing. + The entire risk as to the quality and performance of the Covered Software + is with You. Should any Covered Software prove defective in any respect, + You (not any Contributor) assume the cost of any necessary servicing, + repair, or correction. This disclaimer of warranty constitutes an essential + part of this License. No use of any Covered Software is authorized under + this License except under this disclaimer. + +7. Limitation of Liability + + Under no circumstances and under no legal theory, whether tort (including + negligence), contract, or otherwise, shall any Contributor, or anyone who + distributes Covered Software as permitted above, be liable to You for any + direct, indirect, special, incidental, or consequential damages of any + character including, without limitation, damages for lost profits, loss of + goodwill, work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses, even if such party shall have been + informed of the possibility of such damages. This limitation of liability + shall not apply to liability for death or personal injury resulting from + such party's negligence to the extent applicable law prohibits such + limitation. Some jurisdictions do not allow the exclusion or limitation of + incidental or consequential damages, so this exclusion and limitation may + not apply to You. + +8. Litigation + + Any litigation relating to this License may be brought only in the courts + of a jurisdiction where the defendant maintains its principal place of + business and such litigation shall be governed by laws of that + jurisdiction, without reference to its conflict-of-law provisions. Nothing + in this Section shall prevent a party's ability to bring cross-claims or + counter-claims. + +9. Miscellaneous + + This License represents the complete agreement concerning the subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. Any law or regulation which provides that + the language of a contract shall be construed against the drafter shall not + be used to construe this License against a Contributor. + + +10. Versions of the License + +10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section + 10.3, no one other than the license steward has the right to modify or + publish new versions of this License. Each version will be given a + distinguishing version number. + +10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version + of the License under which You originally received the Covered Software, + or under the terms of any subsequent version published by the license + steward. + +10.3. Modified Versions + + If you create software not governed by this License, and you want to + create a new license for such software, you may create and use a + modified version of this License if you rename the license and remove + any references to the name of the license steward (except to note that + such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary + Licenses If You choose to distribute Source Code Form that is + Incompatible With Secondary Licenses under the terms of this version of + the License, the notice described in Exhibit B of this License must be + attached. + +Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the + terms of the Mozilla Public License, v. + 2.0. If a copy of the MPL was not + distributed with this file, You can + obtain one at + http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular file, +then You may include the notice in a location (such as a LICENSE file in a +relevant directory) where a recipient would be likely to look for such a +notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice + + This Source Code Form is "Incompatible + With Secondary Licenses", as defined by + the Mozilla Public License, v. 2.0. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..d068da9 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# maven-lambda + +[![Build Status](https://travis-ci.org/mozilla-releng/maven-lambda.svg?branch=master)](https://travis-ci.org/mozilla-releng/maven-lambda) [![Coverage Status](https://coveralls.io/repos/github/mozilla-releng/maven-lambda/badge.svg?branch=master)](https://coveralls.io/github/mozilla-releng/maven-lambda?branch=master) + +Generate maven metadata on an S3 bucket thanks to an AWS Lambda function. + + +## Hack on the code +```sh +virtualenv venv # create the virtualenv in ./venv +. venv/bin/activate # activate it +git clone https://github.com/mozilla-releng/maven-lambda +cd maven-lambda +pip install maven-lambda +``` diff --git a/lambda.py b/maven_lambda/__init__.py similarity index 94% rename from lambda.py rename to maven_lambda/__init__.py index 5954835..67c6412 100644 --- a/lambda.py +++ b/maven_lambda/__init__.py @@ -34,13 +34,17 @@ def lambda_handler(event, context): print('Found .pom files: {}'.format(folder_content_keys)) metadata = generate_release_maven_metadata(folder_content_keys) print('Generated maven-metadata content: {}'.format(metadata)) - upload_s3_file(bucket_name, folder, METADATA_BASE_FILE_NAME, metadata, content_type='text/xml') + upload_s3_file( + bucket_name, folder, METADATA_BASE_FILE_NAME, metadata, content_type='text/xml' + ) print('Uploaded new maven-metadata.xml') checksums = generate_checksums(metadata) print('New maven-metadata.xml checksums: {}'.format(checksums)) for type_, sum_ in checksums.items(): - upload_s3_file(bucket_name, folder, '{}.{}'.format(METADATA_BASE_FILE_NAME, type_), sum_) + upload_s3_file( + bucket_name, folder, '{}.{}'.format(METADATA_BASE_FILE_NAME, type_), sum_ + ) print('Uploaded new {} checksum file'.format(type_)) except Exception as e: diff --git a/maven_lambda/test/test_init.py b/maven_lambda/test/test_init.py new file mode 100644 index 0000000..0ffeda7 --- /dev/null +++ b/maven_lambda/test/test_init.py @@ -0,0 +1,8 @@ +from maven_lambda import generate_checksums + + +def test_generate_checksums(): + assert generate_checksums(b'known string') == { + 'md5': 'a48fba03a9ac529b358935164826d9fe', + 'sha1': '714f4de20aa1899ed09e22a82304e12d4658eac1', + } diff --git a/requirements-coveralls.txt b/requirements-coveralls.txt new file mode 100644 index 0000000..4131879 --- /dev/null +++ b/requirements-coveralls.txt @@ -0,0 +1,63 @@ +# Generated from dephash.py + hashin.py +certifi==2018.10.15 \ + --hash=sha512:3324ae6c4b99dda6f48aa9f0918fe045a19b19b26fcfdcca4be93ec967b9e4112d863c982686837b327f1663e308250d56ea337caeeeeb96579e08b20fca92df \ + --hash=sha512:48c796762f5f0aa472a24484f7a8d0c117ce1161f3f5512da1fccb2d76634ceefc88eb34f726d679654cb64fdd2ddb281861aa514213a7c3ea7c72fc4f1cf6f6 +chardet==3.0.4 \ + --hash=sha512:61a03b23447a2bfe52ceed4dd1b9afdb5784da1933a623776883ee9f297e341f633e27f0ce0230bd5fdc5fdb5382105ab42736a74a417ddeb9f83af57455dba5 \ + --hash=sha512:bfae58c8ea19c87cc9c9bf3d0b6146bfdb3630346bd954fe8e9f7da1f09da1fc0d6943ff04802798a665ea3b610ee2d65658ce84fe5a89f9e93625ea396a17f4 +coverage==4.5.1 \ + --hash=sha512:0d656cb22528744a8ef0853f2fa7b96f20fdd49f3c439c3211076e6aac1509c216138e31e24ba92e3945ad4dc81d58ef4b147c092e888a1acbc840d8187617e8 \ + --hash=sha512:10c30758ff2ad68bdfa03ffd28c6355b1717975afb1fda3ba9d9a5a352e782ea20e70dcab0b9fc77df62d7eebc04232e2299383fca570ed2fbc967536241e9ce \ + --hash=sha512:1bed7f91763ae47fc7a0548766029328f059c25fbdd292f2b313d867b93f161cb35b9e612894682b1f486d52c91e06ff7173a2274d6d098657e69de35768f854 \ + --hash=sha512:2520e0ba3adf1485e7d583ff1f14643bdbe531b4062353780b80737d08330adddb7ab6ad869a2542a261760b4be1d050182fe0f91061610463ee972298fe518e \ + --hash=sha512:2b5ad59f6570e22021ab96a9cba9bfad78469a248dec032a227a2fccd1b110ab7f38a5076a44a1a471b37077e7100b0f9c51fe370b8467f9dbedae498a042581 \ + --hash=sha512:309fe4c70de41671afc4fefbc959f0d16d54df3ca95c80b11f9ac8b86b6ea117a714f1c36f6f9976c1951a6760747e9b2de9de60943adc8b39482892f5ce5f7b \ + --hash=sha512:338a31e1a1856073501a02eaefaae2c18df27140598472d34a8432c9c25225296eab81567729a2cc165a4c9d8faeabb1e3bbb52ce840d394ba0f0c5f6baf2528 \ + --hash=sha512:3d84ef3f2078ced6010f7192fb5fbe1c0f12c11118cb756ff8b46c453327ec61639f47799b8338a0565033641abbcc6e3c5f394020cab2ffdddec04bb489bf1f \ + --hash=sha512:45126acc107f5a7fcb015c9b866a3b0d0101e9211fdecc5843f334fea28a2d80db1048e752d1d6f860687c9f289e03678cf2d92a77779a355b9b186a772d3353 \ + --hash=sha512:45abe32fa09505e436c8cae010e3866399dee551c13fb5a35da57cd296502b9f266332d278671ebdb7ccab941326daeb1e27118821862e249ee985ef4a6d0d35 \ + --hash=sha512:4757a11361a9d4f757082f885512e6b4de24b60344646ad09741c84e4fb4f08813f05aa18a7acb3451a331a91fb9d27ef411bf9348b54d3d7cd3074e4645f41b \ + --hash=sha512:4ae653511277a5bb984142286e01157e1a068c01a16c825adf06287e569cc516ca056e6fefcb05b2038f31ca261b5fa8ef345a6c0274650b3de175a694188b95 \ + --hash=sha512:55decd6e6d369682b67c9a82ccf5772538e004279a657d6d9f75482ff20896360b37b4841d08d79996ce16956bb863d2a2bb33e2ee7d5b06fd3e79adf96548df \ + --hash=sha512:5ad7ec5b9be01298957c22704a2689e2e9c9c3dc12e11570fbc4a5f382432a854bcea75e4419e953175da3aa2ee1d2ec2f244886db5188f7cc8d9e231b29cc2e \ + --hash=sha512:7927c89140e844f56917746f41a866755ffcb72d8028bd23ab055446f90231d0c1f4ccc29d67fada8155a5c927b4559f3e263e49659755dc847ebd4b7aa6e392 \ + --hash=sha512:798fd2eb99a17cdcfd7b2f2d95fc319fb860e041b982b4e7c9d1ccbff41c35f19d5ca16e3605e2222cd30a4ed3cddfe94149b1b2ec27a54efd1ea6474b9ccb1b \ + --hash=sha512:82742a572549400778cad99057b1ced4c36b61e917983148eccc86bfa6340de8cfefc4f743e79ff876b641e0b9d21307dd6bde78638a6b20dd8ad215068dda25 \ + --hash=sha512:8510d0846aa24b5fbbdd74c0e38ab29c8fce7cc96ff473f4b52fa8044fcafcfb54449e8aaab29efe7c73a3530167231412b14ccf10e6cb34c9838adf63826019 \ + --hash=sha512:89e12e4b7ee82e2f2f92c75697ac30bdbc214d9b8fb0bd5aa21e657eac1800f8fb1b44ae9c1d8ae07666d0b0d9a5a1f681b555fcc2d141f1ad15ab589e005243 \ + --hash=sha512:980260b63b49b697a543184e0233996ba6fa4df8c6976227ae6c20dd650f1a094f4115a3e999222e73806f191bf7ce2a2848bd60a690dd1737b102928f25f3bc \ + --hash=sha512:9b24bda59e374374dbd48973d118e039fdeeff3d193411533aed90e3d425ddd5ad5419903e2cc7a719a4ff04bbd066eb3e11e153ee8df339dae03dcc8c25b9c0 \ + --hash=sha512:9c0b13abc5376eaff78c4e7f2a945bb86965969ea1ab3571d2209f91df078c1a779ee42f47bf96e62fe9bd63668e49edfaa0b00525c18d2cbbd155781fa2201b \ + --hash=sha512:9dd03ce95b1a107337b226d46dcd9e6fdf3b388426ac0508cb1b6c5c43423f22b8b35828e9d89dcc08483525b3bc2de1334fe7e85bfaae9d64f64933ef9fe3ce \ + --hash=sha512:a5cbfd1cd7e5212285c28dec4e8b8354b6b189cde501f078746e5dc45216f4d24479eef18a612c00bfe94192ab48deb79150cd261ff42254ab83205dc58ff77b \ + --hash=sha512:a7892f7106be5ab0670d32b4e8d10ec9e1336e4706d94666c084be17f4519672aa84c2dbfa4028b43433ea51ed29ffe175ab3908b91f5329578c7a6bbde7df91 \ + --hash=sha512:ac9dc454f928a9e7fbd8e4a98bfce0511415cac69e80cf0a098afa504d9c6585c2eeac0553f20d3edd297770f5744e8f03ddb0a17f62bde70caf3779d11e32b9 \ + --hash=sha512:b0b004871cfd6f1b949a4ddc37544a73c1446602109b671c6752baa3776e4f08dfe340c1c75299c62612c43fba652ee92e3481bb39ecb7e9b02643a041becac4 \ + --hash=sha512:b202a7278ebb3c87d6fcd2f1cff7dc88d78fa7eae709a73e6207c6212f962e706f84f22c14dad6c5c3e8be7eef7c1806c3f66e8f1e557c6127aea0a97a797b0f \ + --hash=sha512:b388092fe437bfc8bc10205ffaa5a43e418e39e1f0e3509ef03721149c5904455142eadfc28d414007f93e5d0deb39231b59b35cba82ea884809c60020b1cfa3 \ + --hash=sha512:c718f78a365a5b610cb2f1fe8ca646b83d6439912cfb9f787e57cc84dc84eea6f3150660231acd093dfa84d2f4f8135f7f2512fb05a1978e1b12c3fd8b23f505 \ + --hash=sha512:d0662ad14ebb76454571ed5b083e62bd35e57cd801f627dd1d286ccfce7c271109a814f73e26fb402d60c23ae08ac96f29ca62a43cbbcb027e72b349ec9f296f \ + --hash=sha512:d108c823f643d6b11ecb828461d96ce14a27acab0e2a0c60ff0ce332b40edff1b18abbf4175cef4e6619a419eb32fc60788bb7d67eb28b8124665f7715739ebe \ + --hash=sha512:d329341278272c48270cb8eb712257ce9970c665606351064d02ce37424c42407e833e4688e938c3e88804451e15cb5287dedc91e0fe5a66cb5cc201f791ab1c \ + --hash=sha512:d4b9569efa13c9a316a0bc99e7c163a474ed7022df0445ed5811e0ad4e53f0316472e3c8b8540f995d0d6abaae5025796d876f5322e63819fb469a7f1a5419a9 \ + --hash=sha512:d6788611162a863a8a274473b6dcdaefadccd0f42f6732431cdb12ebd5300987eb3db29df0f305528bbe9766b87baba9a6dca0460089cab5aa11b1ca727d3af8 \ + --hash=sha512:d987c1fee355cfc7d6bdc89234295b7dd35941449f14dc5c8efac28bb98894f9a78d558dd02a05457a97916de070ae386127be7197efc3b511c4f7a7f056f189 \ + --hash=sha512:dba0935c4079bfce694866d6598408db305b82063ed4b0dcaf5d4260a70b25118aa3d72ff81ba3326dcb6377734c4fa5811740543331ce6eb1c9886e621217ac \ + --hash=sha512:e01685335bd44d0c767429568adc5fb3669417354b62d634bb06fcdfaa959102ff1105f3b108046047a4dffd24bbce5bf81fcdd61b49a45f2aad32a83034dc9c \ + --hash=sha512:f673f86b32764a023d32626939217d56c53029a4de83f7ef018f8a76e5ee2d0090f3395e6c79098c73f3dbe66ae14355ca3e3bb799275b7229bf198dc4864236 \ + --hash=sha512:f96a049d5dda5b2ca4e135a561d8ad9a1a511603e553996e07ee6e46a3573afea1ffe895d2897e3c2347ecf186588b62b6d3d821d1f87109319081777d1c0fd8 \ + --hash=sha512:fee28f472b893d8531b7b6b65681cc59e39627de4c9c6d91c043943793eb586f1427a8b18f8b50cc507fab30c5652ddad5d01d9c368e5488254e36bae1627ac4 +coveralls==1.5.1 \ + --hash=sha512:4f5fd0579fb42c0778c2e8bc5c7fb7c3234bf3f273187c4d6268b9a08ddca575710c2d48aeeb4e5022bdbfe6a6d2ad4c6f1ebc54216a6a81d99d327080ed6dbb \ + --hash=sha512:7073ea7980e78d01dc0f2faa7bebf7c25a4563432b667277a7b6b632f0e45cc26caded9b865806206dd5d7ff26b2454edd095485fc1059d586d55db647f0f7c2 +docopt==0.6.2 \ + --hash=sha512:af138feccf8c37b374ee44fcda4938a88107d434df13c173214021b1a3348b152a595095a86982b66ac03a11db8e0f1e9e6a3a65c98deea92330311daeb831a3 +idna==2.7 \ + --hash=sha512:34ba985862e386243f43616586e53830177cf4ba0925b6054198dfa63c085ec5c6c5b54c2b3c0989bc768aacceeef76b84471e58a16183b960dc4b8812cd1c61 \ + --hash=sha512:ed1fe279142f8fc9604b12fadc6e7cda78b822194d481dcb23c4474e9d584d170b45a410c553a1625c319c3d1b242e29aca86c7c2f13b73f19bbf0607e9fdcbd +requests==2.20.0 \ + --hash=sha512:9cb23978f09b47bff2806d09edfff5e3a5396349021911da6c6f66c7d0890ef3569965745e96f603c9770953392c664b4a7d0338403812cfd6c859ef93407624 \ + --hash=sha512:d9d44ed56f868484e36686dee7a2507d8fef45f9cbd861971bb2b6956c7aecb20988f4830017f111027b5eebd00541805797820b0a455694fdbd1b5dce8907d2 +urllib3==1.24 \ + --hash=sha512:557e3fa616f064e4447faf9cbbcc9ca14c29077e70871d8bfa7d7271acc3ae012bf4c0dae76ddc8760195c31da90b204168dbf5c99bcf5a1b72158d460a3bcdf \ + --hash=sha512:9da4b64149d456a80ba160f70d1111db79c128fcbc40d9d9ad79d0f6b8716704bde835cdc5bdce4a0b24503f80dc25f48cdbca4da7e7e3aa6a431f8fc78a2fac diff --git a/requirements-coveralls.txt.in b/requirements-coveralls.txt.in new file mode 100644 index 0000000..21d4a5c --- /dev/null +++ b/requirements-coveralls.txt.in @@ -0,0 +1,2 @@ +# pyup: ignore file +coveralls diff --git a/requirements-test.txt b/requirements-test.txt new file mode 100644 index 0000000..5f43a28 --- /dev/null +++ b/requirements-test.txt @@ -0,0 +1,103 @@ +# Generated from dephash.py + hashin.py +atomicwrites==1.2.1 \ + --hash=sha512:4df7ee97e0817a80378b273ced310b8ad88eb6ced93a594a6e3dc38ad1e7208226fde01b6d282f85583c57a50859e82c85bacaae8a7c64fce55e6965f74b12c5 \ + --hash=sha512:99842b2bdb5b3d0118abdc3f2e13ab02a2952e9a0974c104c92aaac51e28f5530d2c53ef7500fa5c3b939c4058b5551dc97253cca2c2f949e266028c7cb920e9 +attrs==18.2.0 \ + --hash=sha512:2ac149102fc5e549e05338ead1c4af71069c14ceca48e93bf7a07e12848cc1fb5500f64b2fcceb4ea7743de866122eb507087e8ae685e600526257a4742f6442 \ + --hash=sha512:58c26579d6dfcacbe9e3f770a125861e0625d435f1293eebe0d62efc9b8aa9572be2b312d73037a647163bffb0a13b240fb157aff7ed35196f637ae945d61d22 +boto3==1.9.33 \ + --hash=sha512:0def3d9657174fddb708a1a241dd1121ea758b54aecb9d614add8d300961902f399e12d59c9336beed65802b0cf0d2c22f6f1893420943b8b521b8739936b2ab \ + --hash=sha512:47defbcb160df26f8a211a823a77a637aa0a2ee218a186be0403f5e134419c967f01ed4f5a4b0e8ba1a00d47bfc5e8cb1c45ece2f7bbdd8a4eab856df035dc27 +botocore==1.12.33 \ + --hash=sha512:5778ac0da753d01a4b05800166df65938e14daa8049fb1698a2c406fc6059a8a9462410de2318601e35b352a5314c3fe1d2baddb15dc96e49eb6c28dcd35174a \ + --hash=sha512:ae282f9d26086086d129a622c6e675f7166f39826e3f62e5235b41561362a2d71eac2a02022a37199011cc2ef0cc0d73a1e33dc667517a7d8a001ffb1838c523 +coverage==4.5.1 \ + --hash=sha512:0d656cb22528744a8ef0853f2fa7b96f20fdd49f3c439c3211076e6aac1509c216138e31e24ba92e3945ad4dc81d58ef4b147c092e888a1acbc840d8187617e8 \ + --hash=sha512:10c30758ff2ad68bdfa03ffd28c6355b1717975afb1fda3ba9d9a5a352e782ea20e70dcab0b9fc77df62d7eebc04232e2299383fca570ed2fbc967536241e9ce \ + --hash=sha512:1bed7f91763ae47fc7a0548766029328f059c25fbdd292f2b313d867b93f161cb35b9e612894682b1f486d52c91e06ff7173a2274d6d098657e69de35768f854 \ + --hash=sha512:2520e0ba3adf1485e7d583ff1f14643bdbe531b4062353780b80737d08330adddb7ab6ad869a2542a261760b4be1d050182fe0f91061610463ee972298fe518e \ + --hash=sha512:2b5ad59f6570e22021ab96a9cba9bfad78469a248dec032a227a2fccd1b110ab7f38a5076a44a1a471b37077e7100b0f9c51fe370b8467f9dbedae498a042581 \ + --hash=sha512:309fe4c70de41671afc4fefbc959f0d16d54df3ca95c80b11f9ac8b86b6ea117a714f1c36f6f9976c1951a6760747e9b2de9de60943adc8b39482892f5ce5f7b \ + --hash=sha512:338a31e1a1856073501a02eaefaae2c18df27140598472d34a8432c9c25225296eab81567729a2cc165a4c9d8faeabb1e3bbb52ce840d394ba0f0c5f6baf2528 \ + --hash=sha512:3d84ef3f2078ced6010f7192fb5fbe1c0f12c11118cb756ff8b46c453327ec61639f47799b8338a0565033641abbcc6e3c5f394020cab2ffdddec04bb489bf1f \ + --hash=sha512:45126acc107f5a7fcb015c9b866a3b0d0101e9211fdecc5843f334fea28a2d80db1048e752d1d6f860687c9f289e03678cf2d92a77779a355b9b186a772d3353 \ + --hash=sha512:45abe32fa09505e436c8cae010e3866399dee551c13fb5a35da57cd296502b9f266332d278671ebdb7ccab941326daeb1e27118821862e249ee985ef4a6d0d35 \ + --hash=sha512:4757a11361a9d4f757082f885512e6b4de24b60344646ad09741c84e4fb4f08813f05aa18a7acb3451a331a91fb9d27ef411bf9348b54d3d7cd3074e4645f41b \ + --hash=sha512:4ae653511277a5bb984142286e01157e1a068c01a16c825adf06287e569cc516ca056e6fefcb05b2038f31ca261b5fa8ef345a6c0274650b3de175a694188b95 \ + --hash=sha512:55decd6e6d369682b67c9a82ccf5772538e004279a657d6d9f75482ff20896360b37b4841d08d79996ce16956bb863d2a2bb33e2ee7d5b06fd3e79adf96548df \ + --hash=sha512:5ad7ec5b9be01298957c22704a2689e2e9c9c3dc12e11570fbc4a5f382432a854bcea75e4419e953175da3aa2ee1d2ec2f244886db5188f7cc8d9e231b29cc2e \ + --hash=sha512:7927c89140e844f56917746f41a866755ffcb72d8028bd23ab055446f90231d0c1f4ccc29d67fada8155a5c927b4559f3e263e49659755dc847ebd4b7aa6e392 \ + --hash=sha512:798fd2eb99a17cdcfd7b2f2d95fc319fb860e041b982b4e7c9d1ccbff41c35f19d5ca16e3605e2222cd30a4ed3cddfe94149b1b2ec27a54efd1ea6474b9ccb1b \ + --hash=sha512:82742a572549400778cad99057b1ced4c36b61e917983148eccc86bfa6340de8cfefc4f743e79ff876b641e0b9d21307dd6bde78638a6b20dd8ad215068dda25 \ + --hash=sha512:8510d0846aa24b5fbbdd74c0e38ab29c8fce7cc96ff473f4b52fa8044fcafcfb54449e8aaab29efe7c73a3530167231412b14ccf10e6cb34c9838adf63826019 \ + --hash=sha512:89e12e4b7ee82e2f2f92c75697ac30bdbc214d9b8fb0bd5aa21e657eac1800f8fb1b44ae9c1d8ae07666d0b0d9a5a1f681b555fcc2d141f1ad15ab589e005243 \ + --hash=sha512:980260b63b49b697a543184e0233996ba6fa4df8c6976227ae6c20dd650f1a094f4115a3e999222e73806f191bf7ce2a2848bd60a690dd1737b102928f25f3bc \ + --hash=sha512:9b24bda59e374374dbd48973d118e039fdeeff3d193411533aed90e3d425ddd5ad5419903e2cc7a719a4ff04bbd066eb3e11e153ee8df339dae03dcc8c25b9c0 \ + --hash=sha512:9c0b13abc5376eaff78c4e7f2a945bb86965969ea1ab3571d2209f91df078c1a779ee42f47bf96e62fe9bd63668e49edfaa0b00525c18d2cbbd155781fa2201b \ + --hash=sha512:9dd03ce95b1a107337b226d46dcd9e6fdf3b388426ac0508cb1b6c5c43423f22b8b35828e9d89dcc08483525b3bc2de1334fe7e85bfaae9d64f64933ef9fe3ce \ + --hash=sha512:a5cbfd1cd7e5212285c28dec4e8b8354b6b189cde501f078746e5dc45216f4d24479eef18a612c00bfe94192ab48deb79150cd261ff42254ab83205dc58ff77b \ + --hash=sha512:a7892f7106be5ab0670d32b4e8d10ec9e1336e4706d94666c084be17f4519672aa84c2dbfa4028b43433ea51ed29ffe175ab3908b91f5329578c7a6bbde7df91 \ + --hash=sha512:ac9dc454f928a9e7fbd8e4a98bfce0511415cac69e80cf0a098afa504d9c6585c2eeac0553f20d3edd297770f5744e8f03ddb0a17f62bde70caf3779d11e32b9 \ + --hash=sha512:b0b004871cfd6f1b949a4ddc37544a73c1446602109b671c6752baa3776e4f08dfe340c1c75299c62612c43fba652ee92e3481bb39ecb7e9b02643a041becac4 \ + --hash=sha512:b202a7278ebb3c87d6fcd2f1cff7dc88d78fa7eae709a73e6207c6212f962e706f84f22c14dad6c5c3e8be7eef7c1806c3f66e8f1e557c6127aea0a97a797b0f \ + --hash=sha512:b388092fe437bfc8bc10205ffaa5a43e418e39e1f0e3509ef03721149c5904455142eadfc28d414007f93e5d0deb39231b59b35cba82ea884809c60020b1cfa3 \ + --hash=sha512:c718f78a365a5b610cb2f1fe8ca646b83d6439912cfb9f787e57cc84dc84eea6f3150660231acd093dfa84d2f4f8135f7f2512fb05a1978e1b12c3fd8b23f505 \ + --hash=sha512:d0662ad14ebb76454571ed5b083e62bd35e57cd801f627dd1d286ccfce7c271109a814f73e26fb402d60c23ae08ac96f29ca62a43cbbcb027e72b349ec9f296f \ + --hash=sha512:d108c823f643d6b11ecb828461d96ce14a27acab0e2a0c60ff0ce332b40edff1b18abbf4175cef4e6619a419eb32fc60788bb7d67eb28b8124665f7715739ebe \ + --hash=sha512:d329341278272c48270cb8eb712257ce9970c665606351064d02ce37424c42407e833e4688e938c3e88804451e15cb5287dedc91e0fe5a66cb5cc201f791ab1c \ + --hash=sha512:d4b9569efa13c9a316a0bc99e7c163a474ed7022df0445ed5811e0ad4e53f0316472e3c8b8540f995d0d6abaae5025796d876f5322e63819fb469a7f1a5419a9 \ + --hash=sha512:d6788611162a863a8a274473b6dcdaefadccd0f42f6732431cdb12ebd5300987eb3db29df0f305528bbe9766b87baba9a6dca0460089cab5aa11b1ca727d3af8 \ + --hash=sha512:d987c1fee355cfc7d6bdc89234295b7dd35941449f14dc5c8efac28bb98894f9a78d558dd02a05457a97916de070ae386127be7197efc3b511c4f7a7f056f189 \ + --hash=sha512:dba0935c4079bfce694866d6598408db305b82063ed4b0dcaf5d4260a70b25118aa3d72ff81ba3326dcb6377734c4fa5811740543331ce6eb1c9886e621217ac \ + --hash=sha512:e01685335bd44d0c767429568adc5fb3669417354b62d634bb06fcdfaa959102ff1105f3b108046047a4dffd24bbce5bf81fcdd61b49a45f2aad32a83034dc9c \ + --hash=sha512:f673f86b32764a023d32626939217d56c53029a4de83f7ef018f8a76e5ee2d0090f3395e6c79098c73f3dbe66ae14355ca3e3bb799275b7229bf198dc4864236 \ + --hash=sha512:f96a049d5dda5b2ca4e135a561d8ad9a1a511603e553996e07ee6e46a3573afea1ffe895d2897e3c2347ecf186588b62b6d3d821d1f87109319081777d1c0fd8 \ + --hash=sha512:fee28f472b893d8531b7b6b65681cc59e39627de4c9c6d91c043943793eb586f1427a8b18f8b50cc507fab30c5652ddad5d01d9c368e5488254e36bae1627ac4 +docutils==0.14 \ + --hash=sha512:1ed72c2ef7d2ca38d1c6f3154b7986ea46f599d9bd826405a5257fdd7740c8626957d6298aa95fb0edea8a24515de22f1ad9b2ecbd59341a1ab7a2bab30f500c \ + --hash=sha512:391177f1f87d837463b9bc135805ef102c8221b52eabf7c2309ac8d9635db3698f6d43e79d2ce9a53c8a2fa2ed1b21dafdad98d5ba1a8d1672b68741854caa9a \ + --hash=sha512:c3b303121066fb1a67c5984f7e00edda81f3e3a47e84729e4480c86777df7bb236c2965bf6d3f15c72c17de329137a3d20ce35ecef410801539ca9a9328f9260 +flake8==3.6.0 \ + --hash=sha512:0bfcc8ec78fba7d27de77a42dffac350afc99b63a772dc41945bc51068b2f13c180959d6827f2ab2330eff07f35c5980a1ffd04ef7cff0bfb290b7c58a414637 \ + --hash=sha512:f4377bc7806074a88f88b3652c3061583e576ee515b2b741cee9c6dc18f84f34a7807c93fda9dca3d8b006e379dcee60bb3ae20e6a2e62fd216a82a2b36f2eb5 +jmespath==0.9.3 \ + --hash=sha512:738e44d8027ef2a61ae52106cb44718a32b1200a5ae1b595c8fe0fd56a4ec1560091a207a1c136966760475d8c92d3e6ea9b88a4ef86c18a554d4e71ce0809ff \ + --hash=sha512:eeab444df7a29c0bc64bd8064c942a5b02772d39d6d262dbef1d43ebaf7e4eb97c34fb1df3a47c6da011a632ec5f9b1ffe62ac51929e8d412368b907ebbb85a7 +mccabe==0.6.1 \ + --hash=sha512:9cebc6bd1c8c0201072c8c18fac5e250544ec61d6421e75e7db31a526e3f5daa5e9afae8e1ac85ed7df23d3e3216950ee311051230c685044432dabd81a3e14a \ + --hash=sha512:d8fc251a29790887c14c5932c5172b4cd578cd37ccf14cb96e80f0b97f27023427ea032d14e1e2a99d72627b055eb285f60db69e679ecd79d90a34b0255703d8 +more-itertools==4.3.0 \ + --hash=sha512:5fee3d99fd796b0f0f6b5aa99a8db22e219d3dced71fef6f4b16286fe67061dce280389b3638c55c6e5f6c828ef1286cee845d76a6861d2af66d90e995d5aa4e \ + --hash=sha512:6b551ae04729c6b6531121384efcc9e3db9de028d121da27cf10fae862ea28e8e73e8bcb1e3d4f6f5f0bfac5a4774bdd731f877639a4dc685bf64b207d6b69ab \ + --hash=sha512:a01f0070312c1cfdfbd5ff56c2e98779b7cd67b824885a49a4cd9ea99b6dc1462bacb56f2ac6132aa8febb0ef9263546ecb5f57566f091d84d69a821af7faaa1 +pluggy==0.8.0 \ + --hash=sha512:35c24756e5ab8bfbdbae60a76b26401194d5a2764af6da668297f00cdba4f50dd535d3699e776a53971882470371c836640b306f128d20034f99fbe9fd9e9aa8 \ + --hash=sha512:4b2e489a1ebafe894e41bfb04a1958eec3239528b6cee4cb19d634f7658588d3cd6ec09d7f23c9c24d9c3425a4e733e97605a1efaa46d12bc8b7ec3add722d4f +py==1.7.0 \ + --hash=sha512:74ecf5b53dd1e08b9494e3a246bd9e4c55b60c8321f1099b41fc395fe011905b5974fb919bf0f7c49dbcc440fa78741247b7023beb214ca1a0042c4f87e86c7e \ + --hash=sha512:c522be926c5716d866cb800eaa398a55518889da207a00575212254642eda2107e68c286e72b99cf94ecec1c8dcde1f763e2d8f296ab7e7673ae2671e70d5548 +pycodestyle==2.4.0 \ + --hash=sha512:3e13fdcf346d3e1579a2312c13d3142362a0afbb0b9b94e26a3452a576c91ee1c1a48b38c72268d75c024b83c8a9e51dbfc72bdcca8356d74e0f6262ae2383ba \ + --hash=sha512:cb35238291fed30f1a4363e65b754165772d01e6006e19ce31769691aed17411cd893899fcd22dfca0455401bee899097fff6f3d63825c7656f186e37b7da3a0 \ + --hash=sha512:fc2f909119d7023d6fa498a4fddc272f2db52885591b4ce08367850b21511bd1d5754813af69504be06fe94bef8b598cf63eaddc100fd3a9ed07528dc6e2cd2b +pyflakes==2.0.0 \ + --hash=sha512:1fe4bba754584c6f4acea41f448bffb30e80a93451ee0a0780c9eea9bd1f6d1b361f9acf8da1652d19fd559657f742ef90e3ac7d635815fa59e748b66923e4d1 \ + --hash=sha512:4961ebb8372f51783416681e79342d6be94318ecd007190e5c27f46c48f8f163c7a5f49cbe3025789ff1d9cd37c465b2f3baa219059779163545f9828a766f71 +pytest==3.9.3 \ + --hash=sha512:03ab708ebff936dc296d8c42c549789db42916ac8d4a1df817aebdcdfcb1d0c45126e6238f958eb1523938db6529baa282a9f2ff5742295b2113873abe07ef83 \ + --hash=sha512:a6b36e77910e22228e4d77519fadca4fd91511a8b5e5df82776ac95908ad4ab8e922352ce48770516050c30baffb405ae03479962a7e56243ea0bf036dc204a9 +pytest-cov==2.6.0 \ + --hash=sha512:6c6f83495801635795acb90b02f3caebc7395353374b35e0debf16cb9430b9bf6ce2eed53d00ba70ce85f86bb7295561637c49b1d041d1a59f6a52ccb8f517cd \ + --hash=sha512:d0ab9884a5540baf2c3355ad3426610cb04c5dc41dd85acec5321d5fcb97afa91d4f16b50e72120eeddee1585d4046131687881907d21f75e546bb57d121ffe0 +python-dateutil==2.7.5 \ + --hash=sha512:754499e83b9badef89259564c2e392813a8835372469099d335463a40021c26c7f7c980f6cd8de5001024f5356e93736ee4b86e2401697eb3152a7863ff779c9 \ + --hash=sha512:762752191d584a3995b55bbcfadc829261a263e0e6515a52db2fc32157bf0b3f96f787107c49bbd77cab9ce7e3f692ab3e8f392260fc18e6456b74eb190b44d3 +s3transfer==0.1.13 \ + --hash=sha512:1c53714e74af9da7f46f2ceb944da390243fe6b2bdd243a73ff65f18d055ed9194b7ac3c4e303ffdc094fac6f86fc3d16a6d046fde4282be98369c4a2c06a089 \ + --hash=sha512:90aca5cacefa19cb8cb21b7b82c5f3383bc0478503557de9c2277db2f39d98f6e11ad74bf56ec84a1fc8c4a920337b0bcb34bfcf509a49f347144b7f13afb37c +six==1.11.0 \ + --hash=sha512:33f246a2e987141e17e5edad9d3537cf3aba0cbdd0bc2a907ea52ce0d674b1474f29c3dd5cc26605fd960396054b189ca5f501708333cad234c223131483fe24 \ + --hash=sha512:b71248ef493ac12b115fdf06206090078fac147ec6ab6efb67b87e2b9c07a69d55bf8e70fde713d81735a99e560a17da714274e2ecbd7b0200d2e9a0f39970a7 +urllib3==1.24 \ + --hash=sha512:557e3fa616f064e4447faf9cbbcc9ca14c29077e70871d8bfa7d7271acc3ae012bf4c0dae76ddc8760195c31da90b204168dbf5c99bcf5a1b72158d460a3bcdf \ + --hash=sha512:9da4b64149d456a80ba160f70d1111db79c128fcbc40d9d9ad79d0f6b8716704bde835cdc5bdce4a0b24503f80dc25f48cdbca4da7e7e3aa6a431f8fc78a2fac diff --git a/requirements-test.txt.in b/requirements-test.txt.in new file mode 100644 index 0000000..fcfb3c1 --- /dev/null +++ b/requirements-test.txt.in @@ -0,0 +1,5 @@ +# pyup: ignore file +-r requirements.txt.in +flake8 +pytest +pytest-cov diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..9cf5d70 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,26 @@ +# Generated from dephash.py + hashin.py +boto3==1.9.33 \ + --hash=sha512:0def3d9657174fddb708a1a241dd1121ea758b54aecb9d614add8d300961902f399e12d59c9336beed65802b0cf0d2c22f6f1893420943b8b521b8739936b2ab \ + --hash=sha512:47defbcb160df26f8a211a823a77a637aa0a2ee218a186be0403f5e134419c967f01ed4f5a4b0e8ba1a00d47bfc5e8cb1c45ece2f7bbdd8a4eab856df035dc27 +botocore==1.12.33 \ + --hash=sha512:5778ac0da753d01a4b05800166df65938e14daa8049fb1698a2c406fc6059a8a9462410de2318601e35b352a5314c3fe1d2baddb15dc96e49eb6c28dcd35174a \ + --hash=sha512:ae282f9d26086086d129a622c6e675f7166f39826e3f62e5235b41561362a2d71eac2a02022a37199011cc2ef0cc0d73a1e33dc667517a7d8a001ffb1838c523 +docutils==0.14 \ + --hash=sha512:1ed72c2ef7d2ca38d1c6f3154b7986ea46f599d9bd826405a5257fdd7740c8626957d6298aa95fb0edea8a24515de22f1ad9b2ecbd59341a1ab7a2bab30f500c \ + --hash=sha512:391177f1f87d837463b9bc135805ef102c8221b52eabf7c2309ac8d9635db3698f6d43e79d2ce9a53c8a2fa2ed1b21dafdad98d5ba1a8d1672b68741854caa9a \ + --hash=sha512:c3b303121066fb1a67c5984f7e00edda81f3e3a47e84729e4480c86777df7bb236c2965bf6d3f15c72c17de329137a3d20ce35ecef410801539ca9a9328f9260 +jmespath==0.9.3 \ + --hash=sha512:738e44d8027ef2a61ae52106cb44718a32b1200a5ae1b595c8fe0fd56a4ec1560091a207a1c136966760475d8c92d3e6ea9b88a4ef86c18a554d4e71ce0809ff \ + --hash=sha512:eeab444df7a29c0bc64bd8064c942a5b02772d39d6d262dbef1d43ebaf7e4eb97c34fb1df3a47c6da011a632ec5f9b1ffe62ac51929e8d412368b907ebbb85a7 +python-dateutil==2.7.5 \ + --hash=sha512:754499e83b9badef89259564c2e392813a8835372469099d335463a40021c26c7f7c980f6cd8de5001024f5356e93736ee4b86e2401697eb3152a7863ff779c9 \ + --hash=sha512:762752191d584a3995b55bbcfadc829261a263e0e6515a52db2fc32157bf0b3f96f787107c49bbd77cab9ce7e3f692ab3e8f392260fc18e6456b74eb190b44d3 +s3transfer==0.1.13 \ + --hash=sha512:1c53714e74af9da7f46f2ceb944da390243fe6b2bdd243a73ff65f18d055ed9194b7ac3c4e303ffdc094fac6f86fc3d16a6d046fde4282be98369c4a2c06a089 \ + --hash=sha512:90aca5cacefa19cb8cb21b7b82c5f3383bc0478503557de9c2277db2f39d98f6e11ad74bf56ec84a1fc8c4a920337b0bcb34bfcf509a49f347144b7f13afb37c +six==1.11.0 \ + --hash=sha512:33f246a2e987141e17e5edad9d3537cf3aba0cbdd0bc2a907ea52ce0d674b1474f29c3dd5cc26605fd960396054b189ca5f501708333cad234c223131483fe24 \ + --hash=sha512:b71248ef493ac12b115fdf06206090078fac147ec6ab6efb67b87e2b9c07a69d55bf8e70fde713d81735a99e560a17da714274e2ecbd7b0200d2e9a0f39970a7 +urllib3==1.24 \ + --hash=sha512:557e3fa616f064e4447faf9cbbcc9ca14c29077e70871d8bfa7d7271acc3ae012bf4c0dae76ddc8760195c31da90b204168dbf5c99bcf5a1b72158d460a3bcdf \ + --hash=sha512:9da4b64149d456a80ba160f70d1111db79c128fcbc40d9d9ad79d0f6b8716704bde835cdc5bdce4a0b24503f80dc25f48cdbca4da7e7e3aa6a431f8fc78a2fac diff --git a/requirements.txt.in b/requirements.txt.in new file mode 100644 index 0000000..30ddf82 --- /dev/null +++ b/requirements.txt.in @@ -0,0 +1 @@ +boto3 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..8d2d7ab --- /dev/null +++ b/setup.py @@ -0,0 +1,35 @@ +import os +import re +from setuptools import setup, find_packages + + +project_dir = os.path.abspath(os.path.dirname(__file__)) + +with open(os.path.join(project_dir, 'version.txt')) as f: + version = f.read().rstrip() + +# We use the .in file because a library shouldn't pin versions, it breaks consumers' updates. +# We allow commented lines in this file +with open(os.path.join(project_dir, 'requirements.txt.in')) as f: + requirements_raw = f.readlines() + +requirements_without_comments = [ + line for line in requirements_raw if line and not line.startswith('#') +] + +setup( + name='maven-lambda', + version=version, + description="""Generate maven metadata on an S3 bucket thanks to an AWS Lambda function""", + author='Mozilla Release Engineering', + author_email='release+python@mozilla.com', + url='https://github.com/mozilla-releng/maven-lambda', + packages=find_packages(), + include_package_data=True, + zip_safe=False, + license='MPL2', + install_requires=requirements_without_comments, + classifiers=( + 'Programming Language :: Python :: 3', + ), +) diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..7dd7dad --- /dev/null +++ b/tox.ini @@ -0,0 +1,41 @@ +[tox] +envlist = py36, py37 + +[testenv] +setenv = + PYTHONDONTWRITEBYTECODE=1 + +passenv = + HOME + TRAVIS + TRAVIS_JOB_ID + TRAVIS_BRANCH + +deps = -r requirements-test.txt + +# Installing with deps can downgrade packages specified in requirements-test.txt causing us +# to not fail in `pip check` below. We do however want the requirements file installed +# with deps, because then any new dependencies will fail to install due to hashing being missing. +skip_install = True + +commands= + pip install -e . --no-deps # see note on skip_install above + pip check + py.test --cov maven_lambda --cov-report term-missing + coverage html + flake8 + +[testenv:coveralls] +deps= -r requirements-coveralls.txt +commands= + pip check + coveralls + +[flake8] +max-line-length = 99 +exclude = .ropeproject,.tox,sandbox,docs,.eggs,*.egg,*.egg-info,setup.py,build/ +show-source = True + +[pytest] +norecursedirs = .tox .git .hg sandbox, +python_files = test_*.py diff --git a/version.txt b/version.txt new file mode 100644 index 0000000..6e8bf73 --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +0.1.0