Merge pull request #62 from pyexcel/dev

release 0.5.12
This commit is contained in:
jaska 2019-02-09 23:18:15 +00:00 committed by GitHub
commit 9b6579540b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
43 changed files with 175 additions and 226 deletions

View File

@ -12,4 +12,3 @@ def setup(app):
{%endblock%}

View File

@ -6,4 +6,3 @@
{%block pyexcel_extra_classifiers%}
'Programming Language :: Python :: Implementation :: PyPy'
{%endblock%}}

View File

@ -3,4 +3,7 @@
SQLAlchemy
pyexcel>=0.2.0
pyexcel-xls>=0.1.0
moban
black;python_version>="3.6"
isort;python_version>="3.6"
{%endblock%}

View File

@ -1,18 +1,22 @@
requires:
- type: git
url: https://github.com/moremoban/pypi-mobans
submodule: true
- https://github.com/pyexcel/pyexcel-mobans
configuration:
configuration_dir: "commons/config"
configuration_dir: "pyexcel-mobans:config"
template_dir:
- "commons/templates"
- "setupmobans/templates"
- "pyexcel-mobans:templates"
- "pypi-mobans:templates"
- ".moban.d"
configuration: pyexcel-io.yml
targets:
- "docs/source/conf.py": "docs/source/conf.py"
- "docs/source/conf.py": "docs/conf.py_t"
- setup.py: setup.py
- .travis.yml: travis.yml.jj2
- requirements.txt: requirements.txt.jj2
- "tests/requirements.txt": "tests/requirements.txt"
- LICENSE: NEW_BSD_LICENSE.jj2
- MANIFEST.in: MANIFEST.in.jj2
- test.sh: test.script.jj2
- test.bat: test.script.jj2
- README.rst: README.rst

View File

@ -1,7 +1,18 @@
Change log
================================================================================
0.5.10 - 3.12.2018
0.5.12 - 9.02.2019
--------------------------------------------------------------------------------
updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#. `#60 <https://github.com/pyexcel/pyexcel-io/issues/60>`_: include tests in
tar ball
#. `#61 <https://github.com/pyexcel/pyexcel-io/issues/61>`_: enable python
setup.py test
0.5.11 - 3.12.2018
--------------------------------------------------------------------------------
updated

View File

@ -1,4 +1,4 @@
Copyright (c) 2015-2018 by Onni Software Ltd. and its contributors
Copyright (c) by Onni Software Ltd. and its contributors
All rights reserved.
Redistribution and use in source and binary forms of the software as well

View File

@ -1,3 +1,7 @@
include README.rst
include LICENSE
include CHANGELOG.rst
recursive-include tests *
include docs/source/*
include Makefile
include test.sh

View File

@ -6,3 +6,8 @@ test:
document:
sphinx-autogen -o docs/source/generated/ docs/source/*.rst
sphinx-build -b html docs/source/ docs/build/
format:
isort -y $(find pyexcel_io -name "*.py"|xargs echo) $(find tests -name "*.py"|xargs echo)
black -l 79 pyexcel_io
black -l 79 tests

View File

@ -211,6 +211,7 @@ Acceptance criteria
#. Has all code lines tested
#. Passes all Travis CI builds
#. Has fair amount of documentation if your change is complex
#. run 'make format' so as to confirm the pyexcel organisation's coding style
#. Please update CHANGELOG.rst
#. Please add yourself to CONTRIBUTORS.rst
#. Agree on NEW BSD License for your contribution

View File

@ -1,11 +1,18 @@
name: pyexcel-io
organisation: pyexcel
releases:
- changes:
- action: updated
details:
- '`#60`: include tests in tar ball'
- '`#61`: enable python setup.py test'
version: 0.5.12
date: 9.02.2019
- changes:
- action: updated
details:
- '`#59`: Please use scan_plugins_regex, which lml 0.7 complains about'
version: 0.5.10
version: 0.5.11
date: 3.12.2018
- changes:
- action: added

View File

@ -1,15 +1,7 @@
# -*- coding: utf-8 -*-
DESCRIPTION = (
'A python library to read and write structured data in csv, zipped csv ' +
'format and to/from databases' +
''
)
# -*- coding: utf-8 -*-
#
# Configuration file for the Sphinx documentation builder.
#
# This file does only contain a selection of the most common options. For a
# full list see the documentation:
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# http://www.sphinx-doc.org/en/master/config
# -- Path setup --------------------------------------------------------------
@ -24,35 +16,31 @@ DESCRIPTION = (
# -- Project information -----------------------------------------------------
project = u'pyexcel-io'
copyright = u'2015-2018 Onni Software Ltd.'
author = u'C.W.'
project = 'pyexcel-io'
copyright = 'copyright 2015-2019 Onni Software Ltd.'
author = 'C.W.'
# The short X.Y version
version = u'0.5.11'
version = '0.5.12'
# The full version, including alpha/beta/rc tags
release = u'0.5.11'
release = '0.5.12'
# -- General configuration ---------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.viewcode',]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
templates_path = ['templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
# source_suffix = ['.rst', '.md']
source_suffix = '.rst'
source_suffix = ''
# The master toctree document.
master_doc = 'index'
@ -69,9 +57,6 @@ language = 'en'
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = []
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = None
# -- Options for HTML output -------------------------------------------------
@ -89,7 +74,7 @@ html_theme = 'alabaster'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
html_static_path = ['static']
# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
@ -102,63 +87,6 @@ html_static_path = ['_static']
# html_sidebars = {}
# -- Options for HTMLHelp output ---------------------------------------------
# Output file base name for HTML help builder.
htmlhelp_basename = 'pyexcel-iodoc'
# -- Options for LaTeX output ------------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'pyexcel-io.tex', u'pyexcel-io Documentation',
u'Onni Software Ltd.', 'manual'),
]
# -- Options for manual page output ------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'pyexcel-io', u'pyexcel-io Documentation',
[author], 1)
]
# -- Options for Texinfo output ----------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'pyexcel-io', u'pyexcel-io Documentation',
author, 'pyexcel-io', 'One line description of project.',
'Miscellaneous'),
]
# -- Options for Epub output -------------------------------------------------
# Bibliographic Dublin Core info.
@ -181,23 +109,3 @@ epub_exclude_files = ['search.html']
# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {'https://docs.python.org/': None}
# TODO: html_theme not configurable upstream
html_theme = 'default'
def setup(app):
app.add_stylesheet('theme_overrides.css')
# TODO: DESCRIPTION not configurable upstream
texinfo_documents = [
('index', 'pyexcel-io',
'pyexcel-io Documentation',
'Onni Software Ltd.', 'pyexcel-io',
DESCRIPTION,
'Miscellaneous'),
]
intersphinx_mapping.update({
'pyexcel': ('http://pyexcel.readthedocs.io/en/latest/', None),
})

View File

@ -138,8 +138,7 @@ get_data(.., library='pyexcel-ods')
============= ======= ======== ======= ======== ======== ========
`pyexcel-io`_ `xls`_ `xlsx`_ `ods`_ `ods3`_ `odsr`_ `xlsxw`_
============= ======= ======== ======= ======== ======== ========
0.5.10+ 0.5.0+ 0.5.0+ 0.5.4 0.5.3 0.5.0+ 0.5.0+
0.5.1+ 0.5.0+ 0.5.0+ 0.5.0+ 0.5.0+ 0.5.0+ 0.5.0+
0.5.1 0.5.0 0.5.0 0.5.0 0.5.0 0.5.0 0.5.0
0.4.x 0.4.x 0.4.x 0.4.x 0.4.x 0.4.x 0.4.x
0.3.0+ 0.3.0+ 0.3.0 0.3.0+ 0.3.0+ 0.3.0 0.3.0
0.2.2+ 0.2.2+ 0.2.2+ 0.2.1+ 0.2.1+ 0.0.1

View File

@ -1,9 +1,10 @@
overrides: "pyexcel.yaml"
name: "pyexcel-io"
project: "pyexcel-io"
name: pyexcel-io
nick_name: io
version: 0.5.11
current_version: 0.5.11
release: 0.5.11
version: 0.5.12
current_version: 0.5.12
release: 0.5.12
dependencies:
- ordereddict;python_version<"2.7"
- lml>=0.0.4

View File

@ -8,7 +8,7 @@
:license: New BSD License, see LICENSE for more details
"""
import pyexcel_io.manager as manager
from pyexcel_io._compact import OrderedDict, isstream, PY2
from pyexcel_io._compact import PY2, OrderedDict, isstream
from .constants import MESSAGE_ERROR_03, MESSAGE_WRONG_IO_INSTANCE

View File

@ -9,10 +9,10 @@
"""
import logging
import pyexcel_io.constants as constants
from pyexcel_io.book import BookWriter
from pyexcel_io.sheet import SheetWriter
from pyexcel_io.utils import is_empty_array, swap_empty_string_for_none
import pyexcel_io.constants as constants
log = logging.getLogger(__name__)

View File

@ -7,10 +7,10 @@
:copyright: (c) 2014-2017 by Onni Software Ltd.
:license: New BSD License, see LICENSE for more details
"""
import pyexcel_io.constants as constants
from pyexcel_io.book import BookWriter
from pyexcel_io.sheet import SheetWriter
from pyexcel_io.utils import is_empty_array, swap_empty_string_for_none
import pyexcel_io.constants as constants
class PyexcelSQLSkipRowException(Exception):

View File

@ -7,12 +7,12 @@
:copyright: (c) 2014-2017 by Onni Software Ltd.
:license: New BSD License, see LICENSE for more details
"""
from types import GeneratorType
import warnings
from types import GeneratorType
from pyexcel_io._compact import isstream, PY2
from pyexcel_io.plugins import READERS, WRITERS
import pyexcel_io.constants as constants
from pyexcel_io.plugins import READERS, WRITERS
from pyexcel_io._compact import PY2, isstream
def iget_data(afile, file_type=None, **keywords):
@ -119,29 +119,13 @@ def save_data(afile, data, file_type=None, **keywords):
if no_file_type:
file_type = constants.FILE_FORMAT_CSV
store_data(
afile,
to_store,
file_type=file_type,
single_sheet_in_book=single_sheet_in_book,
**keywords
)
def store_data(afile, data, file_type=None, **keywords):
"""Non public function to store data to afile
:param filename: actual file name, a file stream or actual content
:param data: the data to be written
:param file_type: used only when filename is not a physial file name
:param keywords: any other parameters
"""
if isstream(afile):
keywords.update(dict(file_stream=afile, file_type=file_type))
else:
keywords.update(dict(file_name=afile, file_type=file_type))
keywords['single_sheet_in_book'] = single_sheet_in_book
with get_writer(**keywords) as writer:
writer.write(data)
writer.write(to_store)
def load_data(

View File

@ -7,8 +7,7 @@
:copyright: (c) 2014-2017 by Onni Software Ltd.
:license: New BSD License, see LICENSE for more details
"""
from pyexcel_io._compact import StringIO, BytesIO
from pyexcel_io._compact import BytesIO, StringIO
MIME_TYPES = {}
FILE_TYPES = ()

View File

@ -13,9 +13,8 @@ from lml.plugin import PluginInfoChain, PluginInfo
import pyexcel_io.utils as ioutils
import pyexcel_io.manager as manager
import pyexcel_io.exceptions as exceptions
import pyexcel_io.constants as constants
import pyexcel_io.exceptions as exceptions
ERROR_MESSAGE_FORMATTER = "one of these plugins for %s data in '%s': %s"
UPGRADE_MESSAGE = "Please upgrade the plugin '%s' according to \

View File

@ -7,18 +7,17 @@
:copyright: (c) 2014-2017 by Onni Software Ltd.
:license: New BSD License, see LICENSE for more details
"""
import re
import os
import re
import csv
import glob
import codecs
from pyexcel_io.book import BookReader
from pyexcel_io.sheet import SheetReader, NamedContent
import pyexcel_io.service as service
import pyexcel_io._compact as compact
import pyexcel_io.constants as constants
import pyexcel_io.service as service
from pyexcel_io.book import BookReader
from pyexcel_io.sheet import SheetReader, NamedContent
DEFAULT_SEPARATOR = "__"
DEFAULT_SHEET_SEPARATOR_FORMATTER = "---%s---" % constants.DEFAULT_NAME + "%s"

View File

@ -9,11 +9,10 @@
"""
import zipfile
from pyexcel_io._compact import StringIO, PY2
from pyexcel_io.book import BookReader
from pyexcel_io._compact import PY2, StringIO
from pyexcel_io.constants import FILE_FORMAT_CSVZ
from .csvr import CSVinMemoryReader, NamedContent
from .csvr import NamedContent, CSVinMemoryReader
class CSVZipBookReader(BookReader):

View File

@ -8,7 +8,6 @@
:license: New BSD License, see LICENSE for more details
"""
from pyexcel_io.constants import FILE_FORMAT_TSVZ, KEYWORD_TSV_DIALECT
from .csvz import CSVZipBookReader

View File

@ -7,9 +7,9 @@
:copyright: (c) 2014-2017 by Onni Software Ltd.
:license: New BSD License, see LICENSE for more details
"""
from pyexcel_io._compact import irange
from pyexcel_io.utils import _index_filter
import pyexcel_io.constants as constants
from pyexcel_io.utils import _index_filter
from pyexcel_io._compact import irange
class NamedContent(object):

View File

@ -9,7 +9,6 @@
"""
import pyexcel_io.constants as constants
XLS_PLUGIN = "pyexcel-xls"
XLSX_PLUGIN = "pyexcel-xlsx"
ODS_PLUGIN = "pyexcel-ods"

View File

@ -10,10 +10,10 @@
import csv
import codecs
from pyexcel_io.book import BookWriter
from pyexcel_io.sheet import SheetWriter
import pyexcel_io._compact as compact
import pyexcel_io.constants as constants
from pyexcel_io.book import BookWriter
from pyexcel_io.sheet import SheetWriter
class UnicodeWriter(object):

View File

@ -9,11 +9,10 @@
"""
import zipfile
from pyexcel_io._compact import StringIO, PY2
from pyexcel_io.book import BookWriter
from pyexcel_io.constants import DEFAULT_SHEET_NAME, FILE_FORMAT_CSVZ
from .csvw import CSVSheetWriter, UnicodeWriter
from pyexcel_io._compact import PY2, StringIO
from pyexcel_io.constants import FILE_FORMAT_CSVZ, DEFAULT_SHEET_NAME
from .csvw import UnicodeWriter, CSVSheetWriter
class CSVZipSheetWriter(CSVSheetWriter):

View File

@ -8,7 +8,6 @@
:license: New BSD License, see LICENSE for more details
"""
from pyexcel_io.constants import FILE_FORMAT_TSVZ, KEYWORD_TSV_DIALECT
from .csvz import CSVZipBookWriter

View File

@ -1,5 +1,5 @@
.
https://github.com/chfw/lml/archive/master.zip
https://github.com/pyexcel/pyexcel/archive/master.zip
https://github.com/pyexcel/pyexcel-xls/archive/master.zip
https://github.com/pyexcel/pyexcel-xls/archive/dev.zip

View File

@ -4,16 +4,32 @@
import os
import sys
import codecs
import locale
import platform
from shutil import rmtree
from setuptools import Command, setup, find_packages
PY2 = sys.version_info[0] == 2
PY26 = PY2 and sys.version_info[1] < 7
PY33 = sys.version_info < (3, 4)
# Work around mbcs bug in distutils.
# http://bugs.python.org/issue10945
# This work around is only if a project supports Python < 3.4
# Work around for locale not being set
try:
lc = locale.getlocale()
pf = platform.system()
if pf != 'Windows' and lc == (None, None):
locale.setlocale(locale.LC_ALL, 'C.UTF-8')
except (ValueError, UnicodeError, locale.Error):
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
NAME = 'pyexcel-io'
AUTHOR = 'C.W.'
VERSION = '0.5.11'
VERSION = '0.5.12'
EMAIL = 'wangc_2011@hotmail.com'
LICENSE = 'New BSD'
DESCRIPTION = (
@ -21,7 +37,7 @@ DESCRIPTION = (
'format and to/from databases'
)
URL = 'https://github.com/pyexcel/pyexcel-io'
DOWNLOAD_URL = '%s/archive/0.5.11.tar.gz' % URL
DOWNLOAD_URL = '%s/archive/0.5.12.tar.gz' % URL
FILES = ['README.rst', 'CHANGELOG.rst']
KEYWORDS = [
'python',
@ -65,8 +81,8 @@ EXTRAS_REQUIRE = {
# You do not need to read beyond this line
PUBLISH_COMMAND = '{0} setup.py sdist bdist_wheel upload -r pypi'.format(
sys.executable)
GS_COMMAND = ('gs pyexcel-io v0.5.11 ' +
"Find 0.5.11 in changelog for more details")
GS_COMMAND = ('gs pyexcel-io v0.5.12 ' +
"Find 0.5.12 in changelog for more details")
NO_GS_MESSAGE = ('Automatic github release is disabled. ' +
'Please install gease to enable it.')
UPLOAD_FAILED_MSG = (
@ -175,6 +191,7 @@ def filter_out_test_code(file_handle):
if __name__ == '__main__':
setup(
test_suite="tests",
name=NAME,
author=AUTHOR,
version=VERSION,

View File

@ -6,3 +6,6 @@ flake8
SQLAlchemy
pyexcel>=0.2.0
pyexcel-xls>=0.1.0
moban
black;python_version>="3.6"
isort;python_version>="3.6"

View File

@ -1,7 +1,7 @@
from pyexcel_io.sheet import SheetReader, SheetWriter, NamedContent
from pyexcel_io.book import BookWriter
from pyexcel_io.utils import is_empty_array
from nose.tools import raises
from pyexcel_io.book import BookWriter
from pyexcel_io.sheet import SheetReader, SheetWriter, NamedContent
from pyexcel_io.utils import is_empty_array
@raises(NotImplementedError)

View File

@ -1,5 +1,5 @@
from nose.tools import raises
from pyexcel_io.book import RWInterface, BookReader, BookWriter
from pyexcel_io.book import BookReader, BookWriter, RWInterface
@raises(NotImplementedError)

View File

@ -2,18 +2,19 @@
# -*- coding: utf-8 -*-
import os
from unittest import TestCase
from textwrap import dedent
from nose.tools import raises, eq_
from unittest import TestCase
import pyexcel_io.manager as manager
from nose.tools import eq_, raises
from pyexcel_io.sheet import NamedContent
from pyexcel_io._compact import PY2, BytesIO, StringIO
from pyexcel_io.readers.csvr import (
CSVSheetReader,
CSVFileReader,
CSVSheetReader,
CSVinMemoryReader,
)
from pyexcel_io.writers.csvw import CSVFileWriter, CSVMemoryWriter
from pyexcel_io._compact import BytesIO, PY2, StringIO
class TestReaders(TestCase):

View File

@ -1,20 +1,20 @@
from nose.tools import raises, eq_
from nose.tools import eq_, raises
from pyexcel_io import save_data
from pyexcel_io._compact import OrderedDict
from pyexcel_io.constants import DB_DJANGO
from pyexcel_io.database.common import (
DjangoModelImporter,
DjangoModelImportAdapter,
DjangoModelExporter,
DjangoModelImporter,
DjangoModelExportAdapter,
)
from pyexcel_io.database.importers.django import (
DjangoModelWriter,
DjangoBookWriter,
DjangoModelImportAdapter,
)
from pyexcel_io.database.exporters.django import (
DjangoModelReader,
DjangoBookReader,
DjangoModelReader,
)
from pyexcel_io.database.importers.django import (
DjangoBookWriter,
DjangoModelWriter,
)

View File

@ -1,9 +1,9 @@
import os
import pyexcel_io.constants as constants
from nose.tools import eq_
from pyexcel_io import get_data, save_data
from pyexcel_io.utils import _index_filter
from nose.tools import eq_
import pyexcel_io.constants as constants
def test_index_filter():

View File

@ -1,16 +1,15 @@
import os
import sys
import types
from zipfile import BadZipfile
from unittest import TestCase
import pyexcel_io.manager as manager
import pyexcel_io.exceptions as exceptions
from pyexcel_io._compact import StringIO, BytesIO, is_string
from pyexcel_io._compact import OrderedDict
from pyexcel_io import save_data, get_data, iget_data
from nose.tools import eq_, raises
from pyexcel_io import get_data, iget_data, save_data
from pyexcel_io.io import load_data, get_writer
from nose.tools import raises, eq_
from zipfile import BadZipfile
from pyexcel_io._compact import BytesIO, StringIO, OrderedDict, is_string
PY2 = sys.version_info[0] == 2

View File

@ -2,11 +2,13 @@
# -*- coding: utf-8 -*-
import os
import pyexcel as p
from nose import SkipTest
from nose.tools import eq_
from pyexcel_io import get_data, save_data
from pyexcel_io._compact import PY26
import pyexcel as p
IN_TRAVIS = "TRAVIS" in os.environ

View File

@ -1,13 +1,14 @@
import os
from unittest import TestCase
from textwrap import dedent
from nose.tools import raises
from unittest import TestCase
import pyexcel_io.manager as manager
from nose.tools import raises
from pyexcel_io._compact import OrderedDict
from pyexcel_io.readers.csvr import CSVBookReader
from pyexcel_io.readers.tsv import TSVBookReader
from pyexcel_io.writers.csvw import CSVBookWriter
from pyexcel_io.writers.tsv import TSVBookWriter
from pyexcel_io.readers.csvr import CSVBookReader
from pyexcel_io.writers.csvw import CSVBookWriter
class TestCSVReaders(TestCase):

View File

@ -1,16 +1,17 @@
# -*- coding: utf-8 -*-
import os
from unittest import TestCase
from pyexcel_io._compact import OrderedDict
from pyexcel_io import save_data
import pyexcel_io.manager as manager
from pyexcel_io.readers.csvz import CSVZipBookReader
from pyexcel_io.writers.csvz import CSVZipBookWriter
from pyexcel_io.readers.tsvz import TSVZipBookReader
from pyexcel_io.writers.tsvz import TSVZipBookWriter
import zipfile
from nose.tools import raises
import sys
import zipfile
from unittest import TestCase
import pyexcel_io.manager as manager
from nose.tools import raises
from pyexcel_io import save_data
from pyexcel_io._compact import OrderedDict
from pyexcel_io.readers.csvz import CSVZipBookReader
from pyexcel_io.readers.tsvz import TSVZipBookReader
from pyexcel_io.writers.csvz import CSVZipBookWriter
from pyexcel_io.writers.tsvz import TSVZipBookWriter
PY2 = sys.version_info[0] == 2

View File

@ -1,9 +1,10 @@
import os
import datetime
from unittest import TestCase
from textwrap import dedent
from unittest import TestCase
import pyexcel as pe
from pyexcel_io._compact import text_type

View File

@ -1,4 +1,5 @@
import os
from nose.tools import eq_
from pyexcel_io import get_data, save_data

View File

@ -1,6 +1,6 @@
from nose.tools import eq_
from pyexcel_io.sheet import SheetWriter, SheetReader
import pyexcel_io.constants as constants
from nose.tools import eq_
from pyexcel_io.sheet import SheetReader, SheetWriter
class MyWriter(SheetWriter):

View File

@ -1,32 +1,38 @@
import sys
import json
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy import Float, Date, DateTime, ForeignKey
from sqlalchemy.orm import sessionmaker
import datetime
import platform
from nose.tools import eq_, raises
from sqlalchemy import (
Date,
Float,
Column,
String,
Integer,
DateTime,
ForeignKey,
create_engine,
)
from sqlalchemy.orm import backref, relationship, sessionmaker
from pyexcel_io._compact import OrderedDict
from pyexcel_io.database.common import (
SQLTableExporter,
SQLTableExportAdapter,
SQLTableImporter,
SQLTableExportAdapter,
SQLTableImportAdapter,
)
from sqlalchemy.ext.declarative import declarative_base
from pyexcel_io.database.querysets import QuerysetsReader
from pyexcel_io.database.exporters.sqlalchemy import (
SQLTableReader,
SQLBookReader,
SQLTableReader,
)
from pyexcel_io.database.importers.sqlalchemy import (
PyexcelSQLSkipRowException,
SQLTableWriter,
SQLBookWriter,
SQLTableWriter,
PyexcelSQLSkipRowException,
)
from pyexcel_io.database.querysets import QuerysetsReader
from sqlalchemy.orm import relationship, backref
from nose.tools import raises, eq_
import platform
PY3 = sys.version_info[0] == 3
PY36 = PY3 and sys.version_info[1] == 6