diff --git a/.coveragerc b/.coveragerc deleted file mode 100644 index b1b0c534..00000000 --- a/.coveragerc +++ /dev/null @@ -1,2 +0,0 @@ -[run] -omit = rsconnect/tests/* diff --git a/.gitignore b/.gitignore index 90be67c8..281343ab 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,18 @@ *.pyc -/build/ -/dist/ +.DS_Store +.coverage +.vagrant +/*.egg +/*.egg-info +/*.eggs /.conda/ +/.idea/ /.jupyter/ /.local/ -/.idea/ +/build/ +/dist/ /node_modules/ /notebooks*/ -/*.egg-info -/*.egg -/*.eggs -.DS_Store -.vagrant -rsconnect/tests/testdata/**/rsconnect-python/ -.coverage +/rsconnect/version.py htmlcov +rsconnect/tests/testdata/**/rsconnect-python/ diff --git a/Makefile b/Makefile index e56094a8..b53eda22 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION := $(shell cat rsconnect/version.txt).$(shell printenv BUILD_NUMBER || echo 9999) +VERSION := $(shell python setup.py --version) HOSTNAME := $(shell hostname) RUNNER = docker run \ diff --git a/Pipfile b/Pipfile index 02963803..8a66aad7 100644 --- a/Pipfile +++ b/Pipfile @@ -5,12 +5,15 @@ verify_ssl = true [dev-packages] black = "*" +coverage = "*" flake8 = "*" funcsigs = "*" +importlib-metadata = "*" ipython = "*" pytest = "*" pytest-cov = "*" -importlib-metadata = "*" +setuptools_scm = "*" +toml = "*" [packages] click = ">=7.0.0" diff --git a/Pipfile.lock b/Pipfile.lock index 4e258faa..60be3e18 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "67aeeb23ef1a428e7318be4b3b0ab0101eda72fed75fb9f108f0e679b41aac92" + "sha256": "bb56060d8c98ddda4e2d3fee14c73cc9a946cc2c3361fc3e00bd99f4d64ff0f8" }, "pipfile-spec": 6, "requires": {}, @@ -32,10 +32,10 @@ }, "backcall": { "hashes": [ - "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4", - "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2" + "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", + "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255" ], - "version": "==0.1.0" + "version": "==0.2.0" }, "bleach": { "hashes": [ @@ -86,11 +86,11 @@ }, "ipython": { "hashes": [ - "sha256:5b241b84bbf0eb085d43ae9d46adf38a13b45929ca7774a740990c2c242534bb", - "sha256:f0126781d0f959da852fb3089e170ed807388e986a8dd4e6ac44855845b0fb1c" + "sha256:0ef1433879816a960cd3ae1ae1dc82c64732ca75cec8dab5a4e29783fb571d0e", + "sha256:1b85d65632211bf5d3e6f1406f3393c8c429a47d7b947b9a87812aa5bce6595c" ], "markers": "python_version >= '3.6'", - "version": "==7.14.0" + "version": "==7.15.0" }, "ipython-genutils": { "hashes": [ @@ -194,11 +194,11 @@ }, "nbformat": { "hashes": [ - "sha256:049af048ed76b95c3c44043620c17e56bc001329e07f83fec4f177f0e3d7b757", - "sha256:276343c78a9660ab2a63c28cc33da5f7c58c092b3f3a40b6017ae2ce6689320d" + "sha256:54d4d6354835a936bad7e8182dcd003ca3dc0cedfee5a306090e04854343b340", + "sha256:ea55c9b817855e2dfcd3f66d74857342612a60b1f09653440f4a5845e6e3523f" ], "markers": "python_version >= '3.5'", - "version": "==5.0.6" + "version": "==5.0.7" }, "packaging": { "hashes": [ @@ -355,10 +355,10 @@ }, "wcwidth": { "hashes": [ - "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1", - "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1" + "sha256:79375666b9954d4a1a10739315816324c3e73110af9d0e102d906fdb0aec009f", + "sha256:8c6b5b6ee1360b842645f336d9e5d68c55817c26d3050f46b235ef2bc650e48f" ], - "version": "==0.1.9" + "version": "==0.2.4" }, "webencodings": { "hashes": [ @@ -394,10 +394,10 @@ }, "backcall": { "hashes": [ - "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4", - "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2" + "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", + "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255" ], - "version": "==0.1.0" + "version": "==0.2.0" }, "black": { "hashes": [ @@ -449,7 +449,7 @@ "sha256:e1ea316102ea1e1770724db01998d1603ed921c54a86a2efcb03428d5417e489", "sha256:f90bfc4ad18450c80b024036eaf91e4a246ae287701aaa88eaebebf150868052" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", + "index": "pypi", "version": "==5.1" }, "decorator": { @@ -461,11 +461,11 @@ }, "flake8": { "hashes": [ - "sha256:c69ac1668e434d37a2d2880b3ca9aafd54b3a10a3ac1ab101d22f29e29cf8634", - "sha256:ccaa799ef9893cebe69fdfefed76865aeaefbb94cb8545617b2298786a4de9a5" + "sha256:15e351d19611c887e482fb960eae4d44845013cc142d42896e9862f775d8cf5c", + "sha256:f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208" ], "index": "pypi", - "version": "==3.8.2" + "version": "==3.8.3" }, "funcsigs": { "hashes": [ @@ -477,19 +477,19 @@ }, "importlib-metadata": { "hashes": [ - "sha256:2a688cbaa90e0cc587f1df48bdc97a6eadccdcd9c35fb3f976a09e3b5016d90f", - "sha256:34513a8a0c4962bc66d35b359558fd8a5e10cd472d37aec5f66858addef32c1e" + "sha256:0505dd08068cfec00f53a74a0ad927676d7757da81b7436a6eefe4c7cf75c545", + "sha256:15ec6c0fd909e893e3a08b3a7c76ecb149122fb14b7efe1199ddd4c7c57ea958" ], "index": "pypi", - "version": "==1.6.0" + "version": "==1.6.1" }, "ipython": { "hashes": [ - "sha256:5b241b84bbf0eb085d43ae9d46adf38a13b45929ca7774a740990c2c242534bb", - "sha256:f0126781d0f959da852fb3089e170ed807388e986a8dd4e6ac44855845b0fb1c" + "sha256:0ef1433879816a960cd3ae1ae1dc82c64732ca75cec8dab5a4e29783fb571d0e", + "sha256:1b85d65632211bf5d3e6f1406f3393c8c429a47d7b947b9a87812aa5bce6595c" ], "markers": "python_version >= '3.6'", - "version": "==7.14.0" + "version": "==7.15.0" }, "ipython-genutils": { "hashes": [ @@ -515,11 +515,11 @@ }, "more-itertools": { "hashes": [ - "sha256:558bb897a2232f5e4f8e2399089e35aecb746e1f9191b6584a151647e89267be", - "sha256:7818f596b1e87be009031c7653d01acc46ed422e6656b394b0f765ce66ed4982" + "sha256:68c70cc7167bdf5c7c9d8f6954a7837089c6a36bf565383919bb595efb8a17e5", + "sha256:b78134b2063dd214000685165d81c154522c3ee0a1c0d4d113c80361c234c5a2" ], "markers": "python_version >= '3.5'", - "version": "==8.3.0" + "version": "==8.4.0" }, "packaging": { "hashes": [ @@ -584,11 +584,11 @@ }, "py": { "hashes": [ - "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa", - "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0" + "sha256:a673fa23d7000440cc885c17dbd34fafcb7d7a6e230b29f6766400de36a33c44", + "sha256:f3b3a4c36512a4c4f024041ab51866f11761cc169670204b235f6b20523d4e6b" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.8.1" + "version": "==1.8.2" }, "pycodestyle": { "hashes": [ @@ -624,45 +624,59 @@ }, "pytest": { "hashes": [ - "sha256:95c710d0a72d91c13fae35dce195633c929c3792f54125919847fdcdf7caa0d3", - "sha256:eb2b5e935f6a019317e455b6da83dd8650ac9ffd2ee73a7b657a30873d67a698" + "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1", + "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8" ], "index": "pypi", - "version": "==5.4.2" + "version": "==5.4.3" }, "pytest-cov": { "hashes": [ - "sha256:b6a814b8ed6247bd81ff47f038511b57fe1ce7f4cc25b9106f1a4b106f1d9322", - "sha256:c87dfd8465d865655a8213859f1b4749b43448b5fae465cb981e16d52a811424" + "sha256:1a629dc9f48e53512fcbfda6b07de490c374b0c83c55ff7a1720b3fccff0ac87", + "sha256:6e6d18092dce6fad667cd7020deed816f858ad3b49d5b5e2b1cc1c97a4dba65c" ], "index": "pypi", - "version": "==2.9.0" + "version": "==2.10.0" }, "regex": { "hashes": [ - "sha256:1386e75c9d1574f6aa2e4eb5355374c8e55f9aac97e224a8a5a6abded0f9c927", - "sha256:27ff7325b297fb6e5ebb70d10437592433601c423f5acf86e5bc1ee2919b9561", - "sha256:329ba35d711e3428db6b45a53b1b13a0a8ba07cbbcf10bbed291a7da45f106c3", - "sha256:3a9394197664e35566242686d84dfd264c07b20f93514e2e09d3c2b3ffdf78fe", - "sha256:51f17abbe973c7673a61863516bdc9c0ef467407a940f39501e786a07406699c", - "sha256:579ea215c81d18da550b62ff97ee187b99f1b135fd894a13451e00986a080cad", - "sha256:70c14743320a68c5dac7fc5a0f685be63bc2024b062fe2aaccc4acc3d01b14a1", - "sha256:7e61be8a2900897803c293247ef87366d5df86bf701083b6c43119c7c6c99108", - "sha256:8044d1c085d49673aadb3d7dc20ef5cb5b030c7a4fa253a593dda2eab3059929", - "sha256:89d76ce33d3266173f5be80bd4efcbd5196cafc34100fdab814f9b228dee0fa4", - "sha256:99568f00f7bf820c620f01721485cad230f3fb28f57d8fbf4a7967ec2e446994", - "sha256:a7c37f048ec3920783abab99f8f4036561a174f1314302ccfa4e9ad31cb00eb4", - "sha256:c2062c7d470751b648f1cacc3f54460aebfc261285f14bc6da49c6943bd48bdd", - "sha256:c9bce6e006fbe771a02bda468ec40ffccbf954803b470a0345ad39c603402577", - "sha256:ce367d21f33e23a84fb83a641b3834dd7dd8e9318ad8ff677fbfae5915a239f7", - "sha256:ce450ffbfec93821ab1fea94779a8440e10cf63819be6e176eb1973a6017aff5", - "sha256:ce5cc53aa9fbbf6712e92c7cf268274eaff30f6bd12a0754e8133d85a8fb0f5f", - "sha256:d466967ac8e45244b9dfe302bbe5e3337f8dc4dec8d7d10f5e950d83b140d33a", - "sha256:d881c2e657c51d89f02ae4c21d9adbef76b8325fe4d5cf0e9ad62f850f3a98fd", - "sha256:e565569fc28e3ba3e475ec344d87ed3cd8ba2d575335359749298a0899fe122e", - "sha256:ea55b80eb0d1c3f1d8d784264a6764f931e172480a2f1868f2536444c5f01e01" - ], - "version": "==2020.5.14" + "sha256:08997a37b221a3e27d68ffb601e45abfb0093d39ee770e4257bd2f5115e8cb0a", + "sha256:112e34adf95e45158c597feea65d06a8124898bdeac975c9087fe71b572bd938", + "sha256:1700419d8a18c26ff396b3b06ace315b5f2a6e780dad387e4c48717a12a22c29", + "sha256:2f6f211633ee8d3f7706953e9d3edc7ce63a1d6aad0be5dcee1ece127eea13ae", + "sha256:52e1b4bef02f4040b2fd547357a170fc1146e60ab310cdbdd098db86e929b387", + "sha256:55b4c25cbb3b29f8d5e63aeed27b49fa0f8476b0d4e1b3171d85db891938cc3a", + "sha256:5aaa5928b039ae440d775acea11d01e42ff26e1561c0ffcd3d805750973c6baf", + "sha256:654cb773b2792e50151f0e22be0f2b6e1c3a04c5328ff1d9d59c0398d37ef610", + "sha256:690f858d9a94d903cf5cada62ce069b5d93b313d7d05456dbcd99420856562d9", + "sha256:6ad8663c17db4c5ef438141f99e291c4d4edfeaacc0ce28b5bba2b0bf273d9b5", + "sha256:89cda1a5d3e33ec9e231ece7307afc101b5217523d55ef4dc7fb2abd6de71ba3", + "sha256:92d8a043a4241a710c1cf7593f5577fbb832cf6c3a00ff3fc1ff2052aff5dd89", + "sha256:95fa7726d073c87141f7bbfb04c284901f8328e2d430eeb71b8ffdd5742a5ded", + "sha256:97712e0d0af05febd8ab63d2ef0ab2d0cd9deddf4476f7aa153f76feef4b2754", + "sha256:b2ba0f78b3ef375114856cbdaa30559914d081c416b431f2437f83ce4f8b7f2f", + "sha256:bae83f2a56ab30d5353b47f9b2a33e4aac4de9401fb582b55c42b132a8ac3868", + "sha256:c78e66a922de1c95a208e4ec02e2e5cf0bb83a36ceececc10a72841e53fbf2bd", + "sha256:cf59bbf282b627130f5ba68b7fa3abdb96372b24b66bdf72a4920e8153fc7910", + "sha256:e3cdc9423808f7e1bb9c2e0bdb1c9dc37b0607b30d646ff6faf0d4e41ee8fee3", + "sha256:e9b64e609d37438f7d6e68c2546d2cb8062f3adb27e6336bc129b51be20773ac", + "sha256:fbff901c54c22425a5b809b914a3bfaf4b9570eee0e5ce8186ac71eb2025191c" + ], + "version": "==2020.6.8" + }, + "setuptools-scm": { + "hashes": [ + "sha256:09c659d1d6680811c43f476a33c6d3d9872416580786e96bd29ea03e6a818e41", + "sha256:69258e2eeba5f7ce1ed7a5f109519580fa3578250f8e4d6684859f86d1b15826", + "sha256:731550a27e3901ee501c3bf99140b5436b8eeba341a9d19911cf364b8d573293", + "sha256:892e63b4983f9e30f9e8bf89ad03d2a02a47e6e5ced09b03ae6fe952ade8a579", + "sha256:a8994582e716ec690f33fec70cca0f85bd23ec974e3f783233e4879090a7faa8", + "sha256:b42c150c34d6120babf3646abd7513e032be2e230b3d2034f27404c65aa0c977", + "sha256:eaaec16b7af25c5f532b5af2332213bb6223d15cca4518f6dbc4c055641c86fd", + "sha256:efc928d6a64162c88cdc85fa4b84adfbd6dbf9f9b04319bc495eb16dcfaae00a" + ], + "index": "pypi", + "version": "==4.1.2" }, "six": { "hashes": [ @@ -677,6 +691,7 @@ "sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f", "sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88" ], + "index": "pypi", "version": "==0.10.1" }, "traitlets": { @@ -714,10 +729,10 @@ }, "wcwidth": { "hashes": [ - "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1", - "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1" + "sha256:79375666b9954d4a1a10739315816324c3e73110af9d0e102d906fdb0aec009f", + "sha256:8c6b5b6ee1360b842645f336d9e5d68c55817c26d3050f46b235ef2bc650e48f" ], - "version": "==0.1.9" + "version": "==0.2.4" }, "zipp": { "hashes": [ diff --git a/pyproject.toml b/pyproject.toml index 632eb802..38b3263f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,12 @@ +[build-system] +requires = ["setuptools>=42", "wheel", "setuptools_scm[toml]>=3.4"] + [tool.black] line-length = 120 target-version = ['py27', 'py35', 'py36', 'py37', 'py38'] + +[tool.coverage.run] +omit = ["rsconnect/tests/*"] + +[tool.setuptools_scm] +write_to = "rsconnect/version.py" diff --git a/rsconnect/__init__.py b/rsconnect/__init__.py index c4bde66b..a0282863 100644 --- a/rsconnect/__init__.py +++ b/rsconnect/__init__.py @@ -1,3 +1 @@ -from os.path import join, dirname - -VERSION = open(join(dirname(__file__), "version.txt"), "r").read().strip() +from rsconnect.version import version as VERSION # noqa diff --git a/rsconnect/version.txt b/rsconnect/version.txt deleted file mode 100644 index ba7805a1..00000000 --- a/rsconnect/version.txt +++ /dev/null @@ -1 +0,0 @@ -1.5.0b1 \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index a7bdf864..d29eddd2 100644 --- a/setup.cfg +++ b/setup.cfg @@ -2,4 +2,28 @@ universal = 1 [metadata] +author = Michael Marchetti +author_email = mike@rstudio.com +description = Python integration with RStudio Connect +license = GPL-2.0 license_file = LICENSE.md +long_description = file:README.md +long_description_content_type = text/markdown +name = rsconnect_python +url = http://github.com/rstudio/rsconnect-python +project_urls = + Documentation = https://docs.rstudio.com/rsconnect-python + +[options] +install_requires = + six>=1.14.0 + click>=7.0.0 +setup_requires = + setuptools +packages = rsconnect +python_requires = >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* +zip_safe = true + +[options.entry_points] +console_scripts = + rsconnect = rsconnect.main:cli diff --git a/setup.py b/setup.py index 2c0f0cbd..60684932 100644 --- a/setup.py +++ b/setup.py @@ -1,36 +1,3 @@ from setuptools import setup -import os -import sys - -def readme(): - with open("README.md") as fd: - return fd.read() - - -print("setup.py using python", sys.version_info[0]) - -with open("rsconnect/version.txt", "r") as f: - VERSION = f.read().strip() - -BUILD = os.environ.get("BUILD_NUMBER", "9999") - -setup( - name="rsconnect_python", - version="{version}.{build}".format(version=VERSION, build=BUILD), - description="Python integration with RStudio Connect", - long_description=readme(), - long_description_content_type="text/markdown", - url="http://github.com/rstudio/rsconnect-python", - project_urls={"Documentation": "https://docs.rstudio.com/rsconnect-python",}, - author="Michael Marchetti", - author_email="mike@rstudio.com", - license="GPL-2.0", - packages=["rsconnect"], - package_data={"": ["version.txt"]}, - include_package_data=True, - zip_safe=False, - install_requires=["six>=1.14.0", "click>=7.0.0",], - python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", - entry_points={"console_scripts": ["rsconnect=rsconnect.main:cli"],}, -) +setup()