From 6f3d2bed98d529e6b673bd4930cfa640da40939a Mon Sep 17 00:00:00 2001 From: "stephen.leibbrandt" Date: Thu, 18 Apr 2019 13:33:45 +0200 Subject: [PATCH 1/4] updated license, code for python3 and setup script for pypi --- LICENSE.md | 2 +- clickatell/__init__.py | 3 ++- setup.py | 27 ++++++++++++++++++--------- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/LICENSE.md b/LICENSE.md index 0cfccf3..63347d5 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014 Chris Brand +Copyright (c) 2019 Clickatell Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/clickatell/__init__.py b/clickatell/__init__.py index c9e1dac..3edf733 100755 --- a/clickatell/__init__.py +++ b/clickatell/__init__.py @@ -2,6 +2,7 @@ import urllib import json import re +import sys class Transport: """ @@ -57,7 +58,7 @@ def request(self, action, data={}, headers={}, method='GET'): :return: The request response """ http = httplib2.Http() - body = urllib.urlencode(data) + body = urllib.urlencode(data) if (sys.version_info[0] < 3) else urllib.parse.urlencode(data) url = 'https://' + self.endpoint + '/' + action url = (url + '?' + body) if (method == 'GET') else url resp, content = http.request(url, method, headers=headers, body=json.dumps(data)) diff --git a/setup.py b/setup.py index de17a99..d056336 100755 --- a/setup.py +++ b/setup.py @@ -1,18 +1,27 @@ -from setuptools import setup, find_packages +import setuptools -setup( +with open("README.md", "r") as fh: + long_description = fh.read() + +setuptools.setup( name="clickatell-platform", - version="2.0.0", - author="Chris Brand, Stephen Leibbrandt", + version="2.0.1", + author="Chris Brand, Stephen Leibbrandt, Renier Minne", author_email="support@clickatell.com", - keywords=["clickatell","sms"], - packages=find_packages(), + keywords=["clickatell","sms","platform"], + packages=setuptools.find_packages(), include_package_data=True, url="https://github.com/clickatell/clickatell-python", - license="LICENSE", description="Library for interacting with the Clickatell Platform SMS Gateway", long_description=open("README.md").read(), + long_description_content_type="text/markdown", + license="LICENSE", install_requires=[ "httplib2", - ] -) + ], + classifiers=[ + "Programming Language :: Python", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + ], +) \ No newline at end of file From 02d525d9c88dd4d60027e216b5c36f13672ba3e4 Mon Sep 17 00:00:00 2001 From: "stephen.leibbrandt" Date: Thu, 18 Apr 2019 13:36:02 +0200 Subject: [PATCH 2/4] updated Readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index daad682..7ad0b23 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ Clickatell Python Library ================================ -This library supports version **2** of Python. +This library supports version **2.7** & **3.7** of Python. ------------------------------------ @@ -16,7 +16,7 @@ You can install this library via PIP as part of your requirements file. pip install clickatell-platform ``` -[Clickatell Python PyPI](https://pypi.python.org/pypi?name=clickatell&version=0.0.1&:action=display) +[Clickatell Python PyPI](https://pypi.python.org/pypi?name=clickatell-platform&version=2.0.1&:action=display) Usage ------------------ From 2b763a43597338ba2ff200ab523c60cfc1f202b1 Mon Sep 17 00:00:00 2001 From: "stephen.leibbrandt" Date: Thu, 18 Apr 2019 14:37:06 +0200 Subject: [PATCH 3/4] updated with latest tested version --- .travis.yml | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7a6f33c..fcfde88 100755 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: python python: - "2.7" - - "3.2" + - "3.6" install: "python setup.py install" script: python -m unittest discover -s test/ \ No newline at end of file diff --git a/README.md b/README.md index 7ad0b23..6dd0528 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ Clickatell Python Library ================================ -This library supports version **2.7** & **3.7** of Python. +This library supports version **2.7** & **3.6** of Python. ------------------------------------ From d802bd673299adc10247eabd13e41437c815e8dd Mon Sep 17 00:00:00 2001 From: "stephen.leibbrandt" Date: Thu, 18 Apr 2019 15:18:03 +0200 Subject: [PATCH 4/4] added the distribution whl files and updated gitignore to remove build and tar --- .gitignore | 3 ++- dist/clickatell_platform-2.0.1-py2-none-any.whl | Bin 0 -> 6499 bytes dist/clickatell_platform-2.0.1-py3-none-any.whl | Bin 0 -> 6498 bytes 3 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 dist/clickatell_platform-2.0.1-py2-none-any.whl create mode 100644 dist/clickatell_platform-2.0.1-py3-none-any.whl diff --git a/.gitignore b/.gitignore index d18fa18..f73ae16 100755 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ __pycache__ /stage.py *.egg *.egg-info -/dist/ \ No newline at end of file +/dist/*.tar.gz +/build diff --git a/dist/clickatell_platform-2.0.1-py2-none-any.whl b/dist/clickatell_platform-2.0.1-py2-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..abb14a9c1f18234a6749ce8a360d67be0024d0a8 GIT binary patch literal 6499 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 gk750n_n+a literal 0 HcmV?d00001 diff --git a/dist/clickatell_platform-2.0.1-py3-none-any.whl b/dist/clickatell_platform-2.0.1-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..a6eba33858bebf722049bd51cebed8d4802a35e6 GIT binary patch literal 6498 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 literal 0 HcmV?d00001