# Originally inspired from http://go.chriswarrick.com/entry_points
# https://stackoverflow.com/questions/50585246/pip-install-creates-only-the-dist-info-not-the-package
from backports import configparser2
from datetime import datetime
from packaging import version
from setuptools import setup, find_packages
[docs]def find_and_list_packages():
"""This wrapper adds the display of packages found by setuptools.find_packages() during the build process. This
is useful when troubleshooting issues, such as when creating package_data entries for setup.py
"""
packages = find_packages()
print("Packages found during build:\r\n\t{0}".format(packages))
return packages
[docs]def version_builder(write_new_version=True, ini_file=None):
"""This method determines the next version number. The assumption is the version numbering scheme is relying on
a timestamp based version, in contrast to Major.Minor.Revision type of structure. THAT IS A NON-STANDARD SCHEME."""
now = datetime.now()
# read the Semantic Version. To update it, go changein the file
semantic_version = ini_file["distribution"]["version"]
# Build an ISO timestamp of when the build was done
military_time = int(str(now.hour) + "{:02d}".format(now.minute))
build_timestamp = "{0}.{1}.{2}.{3}".format(str(now.year), str(now.month), str(now.day), str(military_time))
build_number = int(ini_file["distribution"]["build_number"])
build_number += 1
# Update the some version information in the cfg file
if write_new_version:
# Timestamp and build number will increment each time, independent of version updating
ini_file["distribution"]["build_number"] = str(build_number)
ini_file["distribution"]["build_timestamp"] = build_timestamp
# Write the file to disk using all the values of the object in memory
with open('browser_driver.cfg', 'w') as ini_disk_file:
ini_file.write(ini_disk_file)
return semantic_version
if __name__ == "__main__":
ini_file_name = "browser_driver.cfg"
ini_file = configparser2.ConfigParser()
ini_file.read(ini_file_name)
setup(author=ini_file["project"]["author"],
author_email='pypi.python@teamburke.com',
classifiers=[
# Trove classifiers
# Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License',
'Natural Language :: English',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
# https://www.geeksforgeeks.org/difference-various-implementations-python/
'Programming Language :: Python :: Implementation :: CPython',
# Need to test to see if this will run on PyPy. That'd be cool.
# 'Programming Language :: Python :: Implementation :: PyPy',
'Topic :: Software Development :: Quality Assurance',
'Topic :: Software Development :: Testing'
],
# data_files=[('', ['./browser_driver.cfg'])],
description='Browser Driver is a Wrapper for Selenium Web Automation',
# entry_points={
# 'console_scripts': [ 'py_guide = py_guide.__main__:main' ]
# },
install_requires=[
'configparser2==4.0.0',
'selenium==3.12.0'
],
keywords="selenium test testing automation browser",
license="MIT",
# newline separates Description: header in PKG-INFO from readme content
long_description='\n' + open('README.rst').read(),
long_description_content_type='text/x-rst',
name='sjb.browserdriver',
# packages=['distribution'],
packages=find_and_list_packages(),
project_urls={
"Bug Tracker": "https://github.com/shawnjburke/browser_driver/issues/",
"Documentation": "https://shawnjburke.github.io/browser_driver/",
"Source Code": "https://github.com/shawnjburke/browser_driver/",
},
test_suite="browser_driver.tests.browser_tests",
url="https://github.com/shawnjburke/browser_driver",
version=version_builder(write_new_version=True, ini_file=ini_file),
)