diff --git a/README.md b/README.md new file mode 100644 index 0000000..2fa0c0b --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +Array Data to Excel Files \ No newline at end of file diff --git a/array2xls/__init__.py b/array2xls/__init__.py index 06e1d21..b706da4 100644 --- a/array2xls/__init__.py +++ b/array2xls/__init__.py @@ -1,6 +1,9 @@ import tkinter as tk +import pandas # just for pyinstaller -import gui +from . import gui + +__version__ = '0.0.1' def run(): root = tk.Tk() diff --git a/array2xls/gui.py b/array2xls/gui.py index 9efb7be..a7fe257 100644 --- a/array2xls/gui.py +++ b/array2xls/gui.py @@ -4,8 +4,8 @@ import tkinter.ttk as ttk from tkinter import filedialog import pandas -import validators -import inout +from . import validators +from . import inout APP_STATE_1 = 'no valid files selected' APP_STATE_2 = 'no valid fields selected' @@ -58,7 +58,7 @@ class FieldPanel(tk.Frame): self.is_single = tk.BooleanVar() self.is_single.set(True) self.rbtn_single = tk.Radiobutton( - self, text='single excel files', variable=self.is_single, value=True, command=self.disable_listbox) + self, text='seperate excel files', variable=self.is_single, value=True, command=self.disable_listbox) self.rbtn_combine = tk.Radiobutton( self, text='one combined excel file', variable=self.is_single, value=False, command=self.enable_listbox) self.rbtn_single.pack(anchor=tk.W) diff --git a/array2xls/inout.py b/array2xls/inout.py index 1e914ea..796725e 100644 --- a/array2xls/inout.py +++ b/array2xls/inout.py @@ -2,7 +2,6 @@ import os import re import pandas -import validators RE_NATURAL_SORT = re.compile('([0-9]+)') diff --git a/gift.ico b/gift.ico new file mode 100644 index 0000000..7d35369 Binary files /dev/null and b/gift.ico differ diff --git a/hook-openpyxl.py b/hook-openpyxl.py new file mode 100644 index 0000000..60bce86 --- /dev/null +++ b/hook-openpyxl.py @@ -0,0 +1,3 @@ +from PyInstaller.utils.hooks import collect_data_files + +datas = collect_data_files('openpyxl', True) \ No newline at end of file diff --git a/pyins.bat b/pyins.bat new file mode 100644 index 0000000..2dbf733 --- /dev/null +++ b/pyins.bat @@ -0,0 +1,13 @@ +pyinstaller ^ + -y ^ + --additional-hooks-dir=. ^ + --hidden-import=packaging ^ + --hidden-import=packaging.version ^ + --hidden-import=packaging.specifiers ^ + --hidden-import=packaging.requirements ^ + --hidden-import=openpyxl ^ + -w ^ + --onefile ^ + --name array2xls ^ + --icon gift.ico ^ + run_array2xls.py \ No newline at end of file diff --git a/run_array2xls.py b/run_array2xls.py new file mode 100644 index 0000000..5d2a17e --- /dev/null +++ b/run_array2xls.py @@ -0,0 +1,3 @@ +import array2xls + +array2xls.run() \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..ca7e2a1 --- /dev/null +++ b/setup.py @@ -0,0 +1,111 @@ +"""setup module for the array2xls package + +derived from https://github.com/pypa/sampleproject +""" + +# Always prefer setuptools over distutils +from setuptools import setup, find_packages +# To use a consistent encoding +import codecs +import os +# regular expressions for version string parsing from __init___.py +import re +import io + +here = os.path.abspath(os.path.dirname(__file__)) + +# Get the long description from the README file +with codecs.open(os.path.join(here, 'README.md'), encoding='utf-8') as f: + long_description = f.read() + +# version string parsing from __init___.py +# see https://packaging.python.org/en/latest/single_source_version/ +def read(*names, **kwargs): + with io.open( + os.path.join(os.path.dirname(__file__), *names), + encoding=kwargs.get("encoding", "utf8") + ) as fp: + return fp.read() + +def find_version(*file_paths): + version_file = read(*file_paths) + version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", + version_file, re.M) + if version_match: + return version_match.group(1) + raise RuntimeError("Unable to find version string in __init__.py") + + + + +setup( + name='array2xls', + + # Versions should comply with PEP440. For a discussion on single-sourcing + # the version across setup.py and the project code, see + # https://packaging.python.org/en/latest/single_source_version.html + version=find_version('array2xls', '__init__.py'), + + description='small gui app converting array data to excel files', + long_description=long_description, + + # The project's main homepage. + # url='https://github.com/holgi/gitdict', + + # Author details + author='Holger Frey', + author_email='frey@imtek.de', + + # Choose your license + license='Simplified BSD License', + + # See https://pypi.python.org/pypi?%3Aaction=list_classifiers + classifiers=[ + # How mature is this project? Common values are + # 3 - Alpha + # 4 - Beta + # 5 - Production/Stable + 'Development Status :: 3 - Alpha', + + # Indicate who your project is intended for + 'Intended Audience :: Science/Research', + 'Topic :: Scientific/Engineering :: Information Analysis', + + # Pick your license as you wish (should match "license" above) + 'License :: OSI Approved :: BSD License', + + # Specify the Python versions you support here. In particular, ensure + # that you indicate whether you support Python 2, Python 3 or both. + 'Programming Language :: Python :: 3.5', + ], + + # What does your project relate to? + keywords='microarray', + + # You can just specify the packages manually here if your project is + # simple. Or you can use find_packages(). + packages=find_packages(exclude=['tests', 'docs']), + + # Alternatively, if you want to distribute just a my_module.py, uncomment + # this: + # py_modules=["my_module"], + + # List run-time dependencies here. These will be installed by pip when + # your project is installed. For an analysis of "install_requires" vs pip's + # requirements files see: + # https://packaging.python.org/en/latest/requirements.html + install_requires=[ + 'pandas', + 'openpyxl', + 'packaging' + ], + + # List additional groups of dependencies here (e.g. development + # dependencies). You can install these using the following syntax, + # for example: + # $ pip install -e .[dev,test] + # extras_require={ + # 'test': ['pytest'], + # }, + +)