🤝 apply common templates from pyexcel mobans. https://github.com/moremoban/moban/pull/348

This commit is contained in:
chfw 2019-11-10 16:31:02 +00:00
parent 7f54170075
commit 093dee4da2
14 changed files with 161 additions and 234 deletions

4
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,4 @@
# These are supported funding model platforms
github: chfw
patreon: chfw

10
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,10 @@
With your PR, here is a check list:
- [ ] Has Test cases written
- [ ] 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

38
.gitignore vendored
View File

@ -25,6 +25,8 @@ parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
@ -43,6 +45,7 @@ pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
@ -77,9 +80,20 @@ target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that dont work, or not
# install all needed dependencies.
#Pipfile.lock
# celery beat schedule file
celerybeat-schedule
@ -107,6 +121,11 @@ venv.bak/
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# VirtualEnv rules
# Virtualenv
@ -238,6 +257,10 @@ flycheck_*.el
# directory configuration
.dir-locals.el
# network security
/network-security.data
# Vim rules
# Swap
[._]*.s[a-v][a-z]
@ -268,6 +291,9 @@ tags
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
@ -281,6 +307,14 @@ tags
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# CMake
cmake-build-*/
@ -311,6 +345,9 @@ fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
# SublimeText rules
# Cache files for Sublime Text
*.tmlanguage.cache
@ -390,7 +427,6 @@ DerivedData/
!default.perspectivev3
# Eclipse rules
.metadata
bin/
tmp/

View File

@ -1,30 +0,0 @@
{%extends 'README.rst.jj2' %}
{%block documentation_link%}
{%endblock%}
{%block description%}
**pyexcel-ods** is a tiny wrapper library to read, manipulate and write data in
ods format using python 2.6 and python 2.7. You are likely to use it with
`pyexcel <https://github.com/pyexcel/pyexcel>`_.
`pyexcel-ods3 <https://github.com/pyexcel/pyexcel-ods3>`_ is a sister library that
depends on ezodf and lxml. `pyexcel-odsr <https://github.com/pyexcel/pyexcel-odsr>`_
is the other sister library that has no external dependency but do ods reading only
{%endblock%}
{% block pagination_note%}
Special notice 30/01/2017: due to the constraints of the underlying 3rd party
library, it will read the whole file before returning the paginated data. So
at the end of day, the only benefit is less data returned from the reading
function. No major performance improvement will be seen.
With that said, please install `pyexcel-odsr <https://github.com/pyexcel/pyexcel-odsr>`_
and it gives better performance in pagination.
{%endblock%}
{%block extras %}
Credits
================================================================================
ODSReader is originally written by `Marco Conti <https://github.com/marcoconti83/read-ods-with-odfpy>`_
{%endblock%}

View File

@ -1,7 +0,0 @@
{% extends 'setup.py.jj2' %}
{%block platform_block%}
{%endblock%}
{%block compat_block%}
{%endblock%}

View File

@ -1,33 +1,16 @@
requires:
- type: git
url: https://github.com/moremoban/pypi-mobans
submodule: true
- https://github.com/pyexcel/pyexcel-mobans
overrides: "git://github.com/pyexcel/pyexcel-mobans!/mobanfile.yaml"
configuration:
configuration_dir: "pyexcel-mobans:config"
template_dir:
- "pyexcel-mobans:templates"
- "pypi-mobans:templates"
- ".moban.d"
configuration: pyexcel-ods.yml
targets:
- README.rst: README.rst
- setup.py: setup.py
- README.rst: custom_README.rst.jj2
- setup.py: custom_setup.py.jj2
- "docs/source/conf.py": "docs/source/conf.py.jj2"
- .travis.yml: travis.yml
- .gitignore: gitignore.jj2
- requirements.txt: requirements.txt
- LICENSE: NEW_BSD_LICENSE.jj2
- MANIFEST.in: MANIFEST.in.jj2
- "tests/requirements.txt": "tests/requirements.txt"
- test.sh: test.script.jj2
- test.bat: test.script.jj2
- "tests/test_filter.py": "tests/test_filter.py.jj2"
- "tests/test_formatters.py": "tests/test_formatters.py"
- "tests/test_stringio.py": "tests/test_stringio.py.jj2"
- "tests/test_writer.py": "tests/test_writer.py.jj2"
- "tests/base.py": "tests/base.py.jj2"
- output: CHANGELOG.rst
configuration: changelog.yml
template: CHANGELOG.rst.jj2
- lint.sh: lint.script.jj2

View File

@ -1,49 +1,11 @@
sudo: false
dist: xenial
language: python
notifications:
email: false
{% extends "travis.yml.jj2" %}
{%block custom_python_versions%}
python:
- 3.8-dev
- 3.7
- 3.6
- 3.5
- 2.7
{%endblock%}
stages:
- test
- lint
.disable_global: &disable_global
before_install: false
install: true
before_script: false
after_success: false
after_failure: false
.lint: &lint
<<: *disable_global
python: 3.6
stage: lint
install: pip install flake8
script: make lint
jobs:
include:
- *lint
stage: test
script: make test
before_install:
- if [[ -f min_requirements.txt && "$MINREQ" -eq 1 ]]; then
mv min_requirements.txt requirements.txt ;
fi
- test ! -f rnd_requirements.txt || pip install --no-deps -r rnd_requirements.txt
- test ! -f rnd_requirements.txt || pip install -r rnd_requirements.txt ;
- pip install -r tests/requirements.txt
script:
- make test
after_success:
codecov

View File

@ -4,8 +4,7 @@ Change log
0.5.6 - 19.03.2019
--------------------------------------------------------------------------------
added
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**added**
#. `#32 <https://github.com/pyexcel/pyexcel-ods/issues/32>`_, fix odfpy pinning
#. `#33 <https://github.com/pyexcel/pyexcel-ods/issues/33>`_, fix
@ -14,16 +13,14 @@ added
0.5.5 - 16.03.2019
--------------------------------------------------------------------------------
added
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**added**
#. `#32 <https://github.com/pyexcel/pyexcel-ods/issues/32>`_, fix odfpy pinning
0.5.4 - 27.11.2018
--------------------------------------------------------------------------------
added
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**added**
#. `#30 <https://github.com/pyexcel/pyexcel-ods/issues/30>`_, long type will not
be written in ods. please use string type. And if the integer is equal or
@ -33,8 +30,7 @@ added
0.5.3 - unreleased
--------------------------------------------------------------------------------
added
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**added**
#. `#24 <https://github.com/pyexcel/pyexcel-ods/issues/24>`_, ignore
comments(<office:comment>) in cell
@ -45,8 +41,7 @@ added
0.5.2 - 23.10.2017
--------------------------------------------------------------------------------
updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**updated**
#. pyexcel `pyexcel#105 <https://github.com/pyexcel/pyexcel/issues/105>`_,
remove gease from setup_requires, introduced by 0.5.1.
@ -55,8 +50,7 @@ updated
0.5.1 - 20.10.2017
--------------------------------------------------------------------------------
added
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**added**
#. `pyexcel#103 <https://github.com/pyexcel/pyexcel/issues/103>`_, include
LICENSE file in MANIFEST.in, meaning LICENSE file will appear in the released
@ -65,22 +59,19 @@ added
0.5.0 - 30.08.2017
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. put dependency on pyexcel-io 0.5.0, which uses cStringIO instead of StringIO.
Hence, there will be performance boost in handling files in memory.
Relocated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Relocated**
#. All ods type conversion code lives in pyexcel_io.service module
0.4.1 - 25.08.2017
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. `pyexcel#23 <https://github.com/pyexcel/pyexcel/issues/23>`_, handle
unseekable stream given by http response
@ -90,8 +81,7 @@ Updated
0.4.0 - 19.06.2017
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. `pyexcel#14 <https://github.com/pyexcel/pyexcel/issues/14>`_, close file
handle
@ -101,8 +91,7 @@ Updated
0.3.3 - 07.05.2017
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. issue `pyexcel#19 <https://github.com/pyexcel/pyexcel/issues/19>`_, not all
texts in a multi-node cell were extracted.
@ -110,8 +99,7 @@ Updated
0.3.2 - 13.04.2017
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. issue `pyexcel#17 <https://github.com/pyexcel/pyexcel/issues/17>`_, empty new
line is ignored
@ -121,24 +109,21 @@ Updated
0.3.1 - 02.02.2017
--------------------------------------------------------------------------------
Added
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Added**
#. Recognize currency type
0.3.0 - 22.12.2016
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. Code refactoring with pyexcel-io v 0.3.0
0.2.2 - 24.10.2016
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. issue `pyexcel#14 <https://github.com/pyexcel/pyexcel/issues/14>`_, index
error when reading a ods file that has non-uniform columns repeated property.
@ -146,8 +131,7 @@ Updated
0.2.1 - 31.08.2016
--------------------------------------------------------------------------------
Added
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Added**
#. support pagination. two pairs: start_row, row_limit and start_column,
column_limit help you deal with large files.
@ -156,24 +140,21 @@ Added
0.2.0 - 01.06.2016
--------------------------------------------------------------------------------
Added
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Added**
#. By default, `float` will be converted to `int` where fits. `auto_detect_int`,
a flag to switch off the autoatic conversion from `float` to `int`.
#. 'library=pyexcel-ods' was added so as to inform pyexcel to use it instead of
other libraries, in the situation where multiple plugins were installed.
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. support the auto-import feature of pyexcel-io 0.2.0
0.1.1 - 30.01.2016
--------------------------------------------------------------------------------
Added
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Added**
#. 'streaming' is an extra option given to get_data. Only when 'streaming' is
explicitly set to True, the data will be consisted of generators, hence will
@ -182,64 +163,56 @@ Added
#. support multi-line text cell #5
#. feature migration from pyexcel-ods3 pyexcel/pyexcel-ods3#5
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. compatibility with pyexcel-io 0.1.1
0.0.12 - 10.10.2015
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. Bug fix: excessive trailing columns with empty values
0.0.11 - 26.09.2015
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. Complete fix for libreoffice datetime field
0.0.10 - 15.09.2015
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. Bug fix: date field could have datetime from libreoffice
0.0.9 - 21.08.2015
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. Bug fix: utf-8 string throw unicode exceptions
0.0.8 - 28.06.2015
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. Pin dependency odfpy 0.9.6 to avoid buggy odfpy 1.3.0
0.0.7 - 28.05.2015
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. Bug fix: "number-columns-repeated" is now respected
0.0.6 - 21.05.2015
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. get_data and save_data are seen across pyexcel-* extensions. remember them
once and use them across all extensions.
@ -247,8 +220,7 @@ Updated
0.0.5 - 22.02.2015
--------------------------------------------------------------------------------
Added
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Added**
#. Loads only one sheet from a multiple sheet book
#. Use New BSD License
@ -256,8 +228,7 @@ Added
0.0.4 - 14.12.2014
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. IO interface update as pyexcel-io introduced keywords.
#. initial release
@ -265,8 +236,7 @@ Updated
0.0.3 - 08.12.2014
--------------------------------------------------------------------------------
Updated
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Updated**
#. IO interface update as pyexcel-io introduced keywords.
#. initial release

View File

@ -3,10 +3,7 @@ pyexcel-ods - Let you focus on data, instead of ods format
================================================================================
.. image:: https://raw.githubusercontent.com/pyexcel/pyexcel.github.io/master/images/patreon.png
:target: https://www.patreon.com/pyexcel
.. image:: https://api.bountysource.com/badge/team?team_id=288537
:target: https://salt.bountysource.com/teams/chfw-pyexcel
:target: https://www.patreon.com/chfw
.. image:: https://travis-ci.org/pyexcel/pyexcel-ods.svg?branch=master
:target: http://travis-ci.org/pyexcel/pyexcel-ods
@ -14,6 +11,14 @@ pyexcel-ods - Let you focus on data, instead of ods format
.. image:: https://codecov.io/gh/pyexcel/pyexcel-ods/branch/master/graph/badge.svg
:target: https://codecov.io/gh/pyexcel/pyexcel-ods
.. image:: https://badge.fury.io/py/pyexcel-ods.svg
:target: https://pypi.org/project/pyexcel-ods
.. image:: https://pepy.tech/badge/pyexcel-ods/month
:target: https://pepy.tech/project/pyexcel-ods/month
.. image:: https://img.shields.io/gitter/room/gitterHQ/gitter.svg
:target: https://gitter.im/pyexcel/Lobby
@ -53,7 +58,7 @@ Support the project
================================================================================
If your company has embedded pyexcel and its components into a revenue generating
product, please support me on `patreon <https://www.patreon.com/bePatron?u=5537627>`_
product, please support me on `github <https://github.com/sponsors/chfw>`_, `patreon <https://www.patreon.com/bePatron?u=5537627>`_
or `bounty source <https://salt.bountysource.com/teams/chfw-pyexcel>`_ to maintain
the project and develop it further.
@ -354,8 +359,6 @@ How to update test environment and update documentation
Additional steps are required:
#. pip install moban
#. git clone https://github.com/moremoban/setupmobans.git # generic setup
#. git clone https://github.com/pyexcel/pyexcel-commons.git commons
#. make your changes in `.moban.d` directory, then issue command `moban`
What is pyexcel-commons
@ -368,18 +371,6 @@ What is .moban.d
`.moban.d` stores the specific meta data for the library.
Acceptance criteria
-------------------
#. Has Test cases written
#. 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
Credits
================================================================================

View File

@ -7,7 +7,7 @@ DESCRIPTION = (
#
# 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
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Path setup --------------------------------------------------------------
@ -21,9 +21,9 @@ DESCRIPTION = (
# -- Project information -----------------------------------------------------
project = 'pyexcel'
copyright = 'copyright 2015-2019 Onni Software Ltd.'
author = 'Onni Software Ltd.'
project = 'pyexcel-ods'
copyright = '2015-2019 Onni Software Ltd.'
author = 'C.W.'
# The short X.Y version
version = '0.5.6'
# The full version, including alpha/beta/rc tags
@ -68,7 +68,7 @@ html_static_path = ['_static']
# -- Options for intersphinx extension ---------------------------------------
# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {'https://docs.python.org/': None}
intersphinx_mapping = {'https://docs.python.org/3/': None}
# TODO: html_theme not configurable upstream
html_theme = 'default'
@ -83,3 +83,4 @@ texinfo_documents = [
intersphinx_mapping.update({
'pyexcel': ('http://pyexcel.readthedocs.io/en/latest/', None),
})
master_doc = "index"

View File

@ -1 +1,2 @@
flake8 . --exclude=.moban.d,docs --builtins=unicode,xrange,long
pip install flake8
flake8 . --exclude=.moban.d,docs,setup.py --builtins=unicode,xrange,long

102
setup.py
View File

@ -1,14 +1,14 @@
#!/usr/bin/env python3
import os
import sys
# Template by pypi-mobans
import codecs
import locale
# Template by pypi-mobans
import os
import platform
import sys
from shutil import rmtree
from setuptools import Command, find_packages, setup
from setuptools import Command, setup, find_packages
# Work around mbcs bug in distutils.
# http://bugs.python.org/issue10945
@ -18,55 +18,59 @@ from setuptools import Command, find_packages, setup
try:
lc = locale.getlocale()
pf = platform.system()
if pf != 'Windows' and lc == (None, None):
locale.setlocale(locale.LC_ALL, 'C.UTF-8')
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')
locale.setlocale(locale.LC_ALL, "en_US.UTF-8")
NAME = 'pyexcel-ods'
AUTHOR = 'C.W.'
VERSION = '0.5.6'
EMAIL = 'wangc_2011@hotmail.com'
LICENSE = 'New BSD'
NAME = "pyexcel-ods"
AUTHOR = "C.W."
VERSION = "0.5.6"
EMAIL = "info@pyexcel.org"
LICENSE = "New BSD"
DESCRIPTION = (
'A wrapper library to read, manipulate and write data in ods format'
"A wrapper library to read, manipulate and write data in ods format"
)
URL = 'https://github.com/pyexcel/pyexcel-ods'
DOWNLOAD_URL = '%s/archive/0.5.6.tar.gz' % URL
FILES = ['README.rst', 'CHANGELOG.rst']
URL = "https://github.com/pyexcel/pyexcel-ods"
DOWNLOAD_URL = "%s/archive/0.5.6.tar.gz" % URL
FILES = ["README.rst", "CHANGELOG.rst"]
KEYWORDS = [
'python',
"python",
]
CLASSIFIERS = [
'Topic :: Software Development :: Libraries',
'Programming Language :: Python',
'Intended Audience :: Developers',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
"Topic :: Software Development :: Libraries",
"Programming Language :: Python",
"Intended Audience :: Developers",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
]
INSTALL_REQUIRES = [
'pyexcel-io>=0.5.16',
'odfpy>=1.3.5',
"pyexcel-io>=0.5.16",
"odfpy>=1.3.5",
]
SETUP_COMMANDS = {}
PACKAGES = find_packages(exclude=['ez_setup', 'examples', 'tests'])
PACKAGES = find_packages(exclude=["ez_setup", "examples", "tests"])
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-ods v0.5.6 ' +
PUBLISH_COMMAND = "{0} setup.py sdist bdist_wheel upload -r pypi".format(sys.executable)
GS_COMMAND = ("gs pyexcel-ods v0.5.6 " +
"Find 0.5.6 in changelog for more details")
NO_GS_MESSAGE = ('Automatic github release is disabled. ' +
'Please install gease to enable it.')
NO_GS_MESSAGE = ("Automatic github release is disabled. " +
"Please install gease to enable it.")
UPLOAD_FAILED_MSG = (
'Upload failed. please run "%s" yourself.' % PUBLISH_COMMAND)
HERE = os.path.abspath(os.path.dirname(__file__))
@ -75,13 +79,13 @@ HERE = os.path.abspath(os.path.dirname(__file__))
class PublishCommand(Command):
"""Support setup.py upload."""
description = 'Build and publish the package on github and pypi'
description = "Build and publish the package on github and pypi"
user_options = []
@staticmethod
def status(s):
"""Prints things in bold."""
print('\033[1m{0}\033[0m'.format(s))
print("\033[1m{0}\033[0m".format(s))
def initialize_options(self):
pass
@ -91,14 +95,14 @@ class PublishCommand(Command):
def run(self):
try:
self.status('Removing previous builds...')
rmtree(os.path.join(HERE, 'dist'))
rmtree(os.path.join(HERE, 'build'))
rmtree(os.path.join(HERE, 'pyexcel_ods.egg-info'))
self.status("Removing previous builds...")
rmtree(os.path.join(HERE, "dist"))
rmtree(os.path.join(HERE, "build"))
rmtree(os.path.join(HERE, "pyexcel_ods.egg-info"))
except OSError:
pass
self.status('Building Source and Wheel (universal) distribution...')
self.status("Building Source and Wheel (universal) distribution...")
run_status = True
if has_gease():
run_status = os.system(GS_COMMAND) == 0
@ -106,13 +110,13 @@ class PublishCommand(Command):
self.status(NO_GS_MESSAGE)
if run_status:
if os.system(PUBLISH_COMMAND) != 0:
self.status(UPLOAD_FAILED_MSG % PUBLISH_COMMAND)
self.status(UPLOAD_FAILED_MSG)
sys.exit()
SETUP_COMMANDS.update({
'publish': PublishCommand
"publish": PublishCommand
})
@ -141,7 +145,7 @@ def read_files(*files):
def read(afile):
"""Read a file into setup"""
the_relative_file = os.path.join(HERE, afile)
with codecs.open(the_relative_file, 'r', 'utf-8') as opened_file:
with codecs.open(the_relative_file, "r", "utf-8") as opened_file:
content = filter_out_test_code(opened_file)
content = "".join(list(content))
return content
@ -150,11 +154,11 @@ def read(afile):
def filter_out_test_code(file_handle):
found_test_code = False
for line in file_handle.readlines():
if line.startswith('.. testcode:'):
if line.startswith(".. testcode:"):
found_test_code = True
continue
if found_test_code is True:
if line.startswith(' '):
if line.startswith(" "):
continue
else:
empty_line = line.strip()
@ -164,14 +168,14 @@ def filter_out_test_code(file_handle):
found_test_code = False
yield line
else:
for keyword in ['|version|', '|today|']:
for keyword in ["|version|", "|today|"]:
if keyword in line:
break
else:
yield line
if __name__ == '__main__':
if __name__ == "__main__":
setup(
test_suite="tests",
name=NAME,
@ -185,7 +189,7 @@ if __name__ == '__main__':
license=LICENSE,
keywords=KEYWORDS,
extras_require=EXTRAS_REQUIRE,
tests_require=['nose'],
tests_require=["nose"],
install_requires=INSTALL_REQUIRES,
packages=PACKAGES,
include_package_data=True,

View File

@ -1,2 +1,3 @@
#/bin/bash
pip freeze
nosetests --with-coverage --cover-package pyexcel_ods --cover-package tests tests --with-doctest --doctest-extension=.rst README.rst docs/source pyexcel_ods

View File

@ -2,6 +2,7 @@ import os
from textwrap import dedent
import pyexcel as pe
from nose.tools import eq_