From fbdf990c49a9f1102856ff24ffdd0abcda07ed1f Mon Sep 17 00:00:00 2001 From: Michael L Date: Thu, 13 Jun 2019 21:01:05 -0500 Subject: [PATCH 1/5] Create set-me-up.py https://gist.github.com/philippeowagner/6826498 dynicily generate setup.py etc.. --- set-me-up.py | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 set-me-up.py diff --git a/set-me-up.py b/set-me-up.py new file mode 100644 index 00000000..da795f8a --- /dev/null +++ b/set-me-up.py @@ -0,0 +1,100 @@ +# -*- coding: utf-8 -*- +import re +import distutils.sysconfig as sysconfig +import os + +__doc__ = '''set-me-up. + +Usage: + set-me-up +''' +SETUP_PY_TEMPLATE = """# -*- coding: utf-8 -*- +from setuptools import setup, find_packages + +setup( + name='%(name)s', + version=%(version)s, + packages=find_packages(), + include_package_data=%(include_package_data)s, + install_requires=[%(install_requires)s], +) +""" + +STDLIB_MODULES = set() +stdlibpath = sysconfig.get_python_lib(standard_lib=True) +for top, dirs, files in os.walk(stdlibpath): + for nm in files: + if nm != '__init__.py' and nm[-3:] == '.py': + STDLIB_MODULES.add(os.path.join(top, nm)[len(stdlibpath)+1:-3].replace('\\','.').split('.')[0]) + +IMPORT_RES = [ + re.compile(r'^import\s+(?P[\w\d_]+)'), + re.compile(r'^from\s+(?P[\w\d_]+)'), +] + +VERSION_RE = re.compile(r'^__version__\s=', re.M) + +def guess_dependencies_from_file(path, ignore): + with open(path) as fobj: + data = fobj.read() + names = set() + for regex in IMPORT_RES: + names.update(regex.findall(data)) + return [name for name in names if name not in ignore] + + + +def guess_dependencies(projectdir): + dependencies = set() + base_ignore = [guess_name(projectdir)] + for root, _, filenames in os.walk(projectdir): + for filename in filenames: + if filename.endswith('.py'): + path = os.path.join(root, filename) + dependencies.update(guess_dependencies_from_file(path, base_ignore + [filename[:-3] for filename in filenames if filename.endswith('.py')])) + return ','.join(['"%s"' % name for name in dependencies if name not in STDLIB_MODULES]) + + +def find_package_data(projectdir): + package_data = [] + parent = guess_name(projectdir) + for name in ['templates', 'locale', 'static']: + if os.path.exists(os.path.join(projectdir, name)): + package_data.append('recursive-include %s/%s *' % (parent, name)) + return '\n'.join(package_data) + + +def guess_name(projectdir): + return os.path.basename(projectdir.rstrip('/')) + +def guess_version(projectdir): + with open(os.path.join(projectdir, '__init__.py')) as fobj: + data = fobj.read() + if VERSION_RE.search(data): + return '__import__("%s").__version__' % guess_name(projectdir) + else: + return '"1.0"' + + +def main(projectdir): + if not os.path.exists(projectdir): + print "No project not found at %s" % projectdir + return + package_data = find_package_data(projectdir) + context = { + 'name': guess_name(projectdir), + 'version': guess_version(projectdir), + 'include_package_data': 'True' if package_data else 'False', + 'name': guess_name(projectdir), + 'install_requires': guess_dependencies(projectdir), + } + with open('setup.py', 'w') as fobj: + fobj.write(SETUP_PY_TEMPLATE % context) + if package_data: + with open('MANIFEST.in', 'w') as fobj: + fobj.write(package_data) + +if __name__ == '__main__': + import docopt + args = docopt.docopt(__doc__) + main(args['']) From ba688f7eeb6672644bf6d602130db42b28a7b65a Mon Sep 17 00:00:00 2001 From: "Michael R. Lawrence" Date: Thu, 13 Jun 2019 21:13:51 -0500 Subject: [PATCH 2/5] Create setup.py create template setup.py https://gist.github.com/philippeowagner/6826498 via autogent toy. --- setup.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 setup.py diff --git a/setup.py b/setup.py new file mode 100644 index 00000000..9066108d --- /dev/null +++ b/setup.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +from setuptools import setup, find_packages + +setup( + name='', + version=__import__("").__version__, + packages=find_packages(), + include_package_data=False, + install_requires=["importlib","sys","pip","requests"], +) From 2b7985f1e4a1fc9eb5ae19bd5cd7e2b4b04995ac Mon Sep 17 00:00:00 2001 From: "Michael R. Lawrence" Date: Thu, 13 Jun 2019 21:15:29 -0500 Subject: [PATCH 3/5] Delete set-me-up.py drop gist setup.py gen toy (https://gist.github.com/philippeowagner/6826498) --- set-me-up.py | 100 --------------------------------------------------- 1 file changed, 100 deletions(-) delete mode 100644 set-me-up.py diff --git a/set-me-up.py b/set-me-up.py deleted file mode 100644 index da795f8a..00000000 --- a/set-me-up.py +++ /dev/null @@ -1,100 +0,0 @@ -# -*- coding: utf-8 -*- -import re -import distutils.sysconfig as sysconfig -import os - -__doc__ = '''set-me-up. - -Usage: - set-me-up -''' -SETUP_PY_TEMPLATE = """# -*- coding: utf-8 -*- -from setuptools import setup, find_packages - -setup( - name='%(name)s', - version=%(version)s, - packages=find_packages(), - include_package_data=%(include_package_data)s, - install_requires=[%(install_requires)s], -) -""" - -STDLIB_MODULES = set() -stdlibpath = sysconfig.get_python_lib(standard_lib=True) -for top, dirs, files in os.walk(stdlibpath): - for nm in files: - if nm != '__init__.py' and nm[-3:] == '.py': - STDLIB_MODULES.add(os.path.join(top, nm)[len(stdlibpath)+1:-3].replace('\\','.').split('.')[0]) - -IMPORT_RES = [ - re.compile(r'^import\s+(?P[\w\d_]+)'), - re.compile(r'^from\s+(?P[\w\d_]+)'), -] - -VERSION_RE = re.compile(r'^__version__\s=', re.M) - -def guess_dependencies_from_file(path, ignore): - with open(path) as fobj: - data = fobj.read() - names = set() - for regex in IMPORT_RES: - names.update(regex.findall(data)) - return [name for name in names if name not in ignore] - - - -def guess_dependencies(projectdir): - dependencies = set() - base_ignore = [guess_name(projectdir)] - for root, _, filenames in os.walk(projectdir): - for filename in filenames: - if filename.endswith('.py'): - path = os.path.join(root, filename) - dependencies.update(guess_dependencies_from_file(path, base_ignore + [filename[:-3] for filename in filenames if filename.endswith('.py')])) - return ','.join(['"%s"' % name for name in dependencies if name not in STDLIB_MODULES]) - - -def find_package_data(projectdir): - package_data = [] - parent = guess_name(projectdir) - for name in ['templates', 'locale', 'static']: - if os.path.exists(os.path.join(projectdir, name)): - package_data.append('recursive-include %s/%s *' % (parent, name)) - return '\n'.join(package_data) - - -def guess_name(projectdir): - return os.path.basename(projectdir.rstrip('/')) - -def guess_version(projectdir): - with open(os.path.join(projectdir, '__init__.py')) as fobj: - data = fobj.read() - if VERSION_RE.search(data): - return '__import__("%s").__version__' % guess_name(projectdir) - else: - return '"1.0"' - - -def main(projectdir): - if not os.path.exists(projectdir): - print "No project not found at %s" % projectdir - return - package_data = find_package_data(projectdir) - context = { - 'name': guess_name(projectdir), - 'version': guess_version(projectdir), - 'include_package_data': 'True' if package_data else 'False', - 'name': guess_name(projectdir), - 'install_requires': guess_dependencies(projectdir), - } - with open('setup.py', 'w') as fobj: - fobj.write(SETUP_PY_TEMPLATE % context) - if package_data: - with open('MANIFEST.in', 'w') as fobj: - fobj.write(package_data) - -if __name__ == '__main__': - import docopt - args = docopt.docopt(__doc__) - main(args['']) From 117d8d5071fedb754609136be9ee9602514ec540 Mon Sep 17 00:00:00 2001 From: Michael L Date: Thu, 13 Jun 2019 21:18:55 -0500 Subject: [PATCH 4/5] Update setup.py --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 9066108d..aa5a1542 100644 --- a/setup.py +++ b/setup.py @@ -7,4 +7,5 @@ packages=find_packages(), include_package_data=False, install_requires=["importlib","sys","pip","requests"], + install_reqs = parse_requirements('requirements.txt', session='hack') ) From 1edd8b7d2504cce2cfbf4d588acd917251f14b61 Mon Sep 17 00:00:00 2001 From: Michael L Date: Thu, 13 Jun 2019 21:22:02 -0500 Subject: [PATCH 5/5] Update setup.py --- setup.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/setup.py b/setup.py index aa5a1542..5daeb4b9 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,9 @@ # -*- coding: utf-8 -*- +# https://gist.github.com/philippeowagner/6826498 autogen +#https://stackoverflow.com/questions/14399534/reference-requirements-txt-for-the-install-requires-kwarg-in-setuptools-setup-py +# https://wiki.gentoo.org/wiki/Project:Python/distutils-r1 makes ebuilds for Gentoo or Pentoo and or Arch etc too easy. +## proffer the template for author and improvemnts. + from setuptools import setup, find_packages setup(