[Python-modules-commits] [python-agate-dbf] 01/03: New upstream version 0.2.0

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Wed Mar 22 11:18:47 UTC 2017


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to branch master
in repository python-agate-dbf.

commit 82744971382d671e2152c6ba055b524e06d286e7
Author: Ghislain Antony Vaillant <ghisvail at gmail.com>
Date:   Wed Mar 15 11:52:50 2017 +0000

    New upstream version 0.2.0
---
 .gitignore                     |  12 +++
 .travis.yml                    |  12 +++
 AUTHORS.rst                    |   3 +
 CHANGELOG.rst                  |  10 ++
 COPYING                        |  21 ++++
 README.rst                     |  28 +++++
 agatedbf/__init__.py           |   3 +
 agatedbf/table.py              |  26 +++++
 docs/Makefile                  | 130 ++++++++++++++++++++++++
 docs/conf.py                   | 225 +++++++++++++++++++++++++++++++++++++++++
 docs/index.rst                 |  62 ++++++++++++
 example.py                     |   9 ++
 examples/test.dbf              | Bin 0 -> 1314 bytes
 examples/testdbf_converted.csv |   9 ++
 requirements-py2.txt           |   9 ++
 requirements-py3.txt           |   7 ++
 setup.cfg                      |   2 +
 setup.py                       |  42 ++++++++
 tests/__init__.py              |   0
 tests/test_table.py            |  21 ++++
 tox.ini                        |  20 ++++
 21 files changed, 651 insertions(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..62c9247
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+.DS_Store
+*.pyc
+*.swp
+*.swo
+.tox
+*.egg-info
+docs/_build
+dist
+.coverage
+build
+.proof
+.test.png
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..b8823ad
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,12 @@
+language: python
+python:
+  - "2.7"
+  - "3.3"
+  - "3.4"
+  - "3.5"
+# command to install dependencies
+install:
+    - if [[ $TRAVIS_PYTHON_VERSION == 3* ]]; then pip install -r requirements-py3.txt; else pip install -r requirements-py2.txt; fi
+# command to run tests
+script: nosetests tests
+sudo: false
diff --git a/AUTHORS.rst b/AUTHORS.rst
new file mode 100644
index 0000000..6aae902
--- /dev/null
+++ b/AUTHORS.rst
@@ -0,0 +1,3 @@
+The following individuals have contributed code to agate-excel:
+
+* `Christopher Groskopf <https://github.com/onyxfish>`_
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
new file mode 100644
index 0000000..4b4189a
--- /dev/null
+++ b/CHANGELOG.rst
@@ -0,0 +1,10 @@
+0.2.0
+-----
+
+* Remove dependency on monkeypatching.
+* Upgraded required agate to ``1.5.0``.
+
+0.1.0
+-----
+
+* Initial version.
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..7d61d32
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2016 Christopher Groskopf and contributors 
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..0f4701a
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,28 @@
+.. image:: https://travis-ci.org/wireservice/agate-dbf.png
+    :target: https://travis-ci.org/wireservice/agate-dbf
+    :alt: Build status
+
+.. image:: https://img.shields.io/pypi/dw/agate-dbf.svg
+    :target: https://pypi.python.org/pypi/agate-dbf
+    :alt: PyPI downloads
+
+.. image:: https://img.shields.io/pypi/v/agate-dbf.svg
+    :target: https://pypi.python.org/pypi/agate-dbf
+    :alt: Version
+
+.. image:: https://img.shields.io/pypi/l/agate-dbf.svg
+    :target: https://pypi.python.org/pypi/agate-dbf
+    :alt: License
+
+.. image:: https://img.shields.io/pypi/pyversions/agate-dbf.svg
+    :target: https://pypi.python.org/pypi/agate-dbf
+    :alt: Support Python versions
+
+agate-dbf adds read support for dbf files to `agate <https://github.com/wireservice/agate>`_.
+
+Important links:
+
+* agate             http://agate.rtfd.org
+* Documentation:    http://agate-dbf.rtfd.org
+* Repository:       https://github.com/wireservice/agate-dbf
+* Issues:           https://github.com/wireservice/agate-dbf/issues
diff --git a/agatedbf/__init__.py b/agatedbf/__init__.py
new file mode 100644
index 0000000..e1b71fc
--- /dev/null
+++ b/agatedbf/__init__.py
@@ -0,0 +1,3 @@
+#!/usr/bin/env python
+
+import agatedbf.table
diff --git a/agatedbf/table.py b/agatedbf/table.py
new file mode 100644
index 0000000..ac63498
--- /dev/null
+++ b/agatedbf/table.py
@@ -0,0 +1,26 @@
+#!/usr/bin/env python
+
+"""
+This module contains the DBF extension to :class:`Table <agate.table.Table>`.
+"""
+
+import agate
+from dbfread import DBF
+
+def recfactory(items):
+    return tuple(kv[1] for kv in items)
+
+def from_dbf(cls, path, encoding=None):
+    """
+    Parse a DBF file.
+
+    :param path:
+        Path to an DBF file to load. Note that due to limitations of the
+        dependency you can not pass a file handle. It must be a path.
+    """
+    dbf = DBF(path, load=True, lowernames=True, encoding=encoding, recfactory=recfactory)
+    table = agate.Table(dbf.records, column_names=dbf.field_names)
+
+    return table
+
+agate.Table.from_dbf = classmethod(from_dbf)
diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 0000000..4e37754
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,130 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html       to make standalone HTML files"
+	@echo "  dirhtml    to make HTML files named index.html in directories"
+	@echo "  singlehtml to make a single large HTML file"
+	@echo "  pickle     to make pickle files"
+	@echo "  json       to make JSON files"
+	@echo "  htmlhelp   to make HTML files and a HTML help project"
+	@echo "  qthelp     to make HTML files and a qthelp project"
+	@echo "  devhelp    to make HTML files and a Devhelp project"
+	@echo "  epub       to make an epub"
+	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+	@echo "  text       to make text files"
+	@echo "  man        to make manual pages"
+	@echo "  changes    to make an overview of all changed/added/deprecated items"
+	@echo "  linkcheck  to check all external links for integrity"
+	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+	-rm -rf $(BUILDDIR)/*
+
+html:
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+	@echo
+	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/agatedbf.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/agatedbf.qhc"
+
+devhelp:
+	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+	@echo
+	@echo "Build finished."
+	@echo "To view the help file:"
+	@echo "# mkdir -p $$HOME/.local/share/devhelp/agatedbf"
+	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/agatedbf"
+	@echo "# devhelp"
+
+epub:
+	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+	@echo
+	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make' in that directory to run these through (pdf)latex" \
+	      "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through pdflatex..."
+	make -C $(BUILDDIR)/latex all-pdf
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+	@echo
+	@echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+	@echo
+	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 0000000..b95c406
--- /dev/null
+++ b/docs/conf.py
@@ -0,0 +1,225 @@
+# -*- coding: utf-8 -*-
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import os
+import sys
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+sys.path.insert(0, os.path.abspath('..'))
+
+# -- 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.intersphinx']
+autodoc_member_order = 'bysource'
+
+intersphinx_mapping = {
+    'python': ('http://docs.python.org/3.5/', None),
+    'agate': ('http://agate.readthedocs.org/en/latest/', None)
+}
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'agate-dbf'
+copyright = u'2015, Christopher Groskopf'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '0.2.0'
+# The full version, including alpha/beta/rc tags.
+release = '0.2.0'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+html_theme = 'default'
+
+on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
+
+if not on_rtd:  # only import and set the theme if we're building docs locally
+    import sphinx_rtd_theme
+    html_theme = 'sphinx_rtd_theme'
+    html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# 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']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'agatedbfdoc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+  ('index', 'agate-dbf.tex', u'agate-dbf Documentation',
+   u'Christopher Groskopf', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output --------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+]
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 0000000..af9f089
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,62 @@
+===================
+agate-dbf |release|
+===================
+
+.. include:: ../README.rst
+
+Install
+=======
+
+To install:
+
+.. code-block:: bash
+
+    pip install agate-dbf
+
+For details on development or supported platforms see the `agate documentation <http://agate.readthedocs.org>`_.
+
+Usage
+=====
+
+agate-dbf uses a monkey patching pattern to add read for dbf files support to all :class:`agate.Table <agate.table.Table>` instances.
+
+.. code-block:: python
+
+    import agate
+    import agatedbf
+
+Importing agate-dbf adds new methods to :class:`agate.Table <agate.table.Table>`.
+
+.. code-block:: python
+
+    table = agate.Table.from_dbf('examples/test.dbf')
+
+    print(table)
+
+===
+API
+===
+
+.. autofunction:: agatedbf.table.from_dbf
+
+Authors
+=======
+
+.. include:: ../AUTHORS.rst
+
+Changelog
+=========
+
+.. include:: ../CHANGELOG.rst
+
+License
+=======
+
+.. include:: ../COPYING
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
diff --git a/example.py b/example.py
new file mode 100755
index 0000000..5469161
--- /dev/null
+++ b/example.py
@@ -0,0 +1,9 @@
+#!/usr/bin/env python
+
+import agate
+import agatedbf
+
+table = agate.Table.from_dbf('examples/test.dbf')
+
+print(table)
+table.print_table()
diff --git a/examples/test.dbf b/examples/test.dbf
new file mode 100644
index 0000000..57f709c
Binary files /dev/null and b/examples/test.dbf differ
diff --git a/examples/testdbf_converted.csv b/examples/testdbf_converted.csv
new file mode 100644
index 0000000..5c9d22c
--- /dev/null
+++ b/examples/testdbf_converted.csv
@@ -0,0 +1,9 @@
+statefp10,cd111fp,geoid10,namelsad10,lsad10,cdsessn,mtfcc10,funcstat10,aland10,awater10,intptlat10,intptlon10
+27,8,2708,Congressional District 8,C2,111,G5200,False,71546663636,12416573076,47.2400052,-92.9323194
+27,5,2705,Congressional District 5,C2,111,G5200,False,320220379,15485125,44.9781144,-93.2928317
+27,4,2704,Congressional District 4,C2,111,G5200,False,510623511,58464019,44.9957711,-93.0835230
+27,2,2702,Congressional District 2,C2,111,G5200,False,7826702653,340127460,44.5338366,-93.2513206
+27,1,2701,Congressional District 1,C2,111,G5200,False,34462275389,554678308,43.8952354,-93.9040300
+27,6,2706,Congressional District 6,C2,111,G5200,False,7951908435,431134882,45.3830033,-93.8845885
+27,7,2707,Congressional District 7,C2,111,G5200,False,82410267758,4987979498,46.6966838,-95.6752445
+27,3,2703,Congressional District 3,C2,111,G5200,False,1203647438,126012269,45.0212030,-93.5130863
diff --git a/requirements-py2.txt b/requirements-py2.txt
new file mode 100644
index 0000000..21f6818
--- /dev/null
+++ b/requirements-py2.txt
@@ -0,0 +1,9 @@
+unittest2==0.5.1
+nose>=1.1.2
+tox>=1.3
+Sphinx>=1.2.2
+sphinx_rtd_theme>=0.1.6
+wheel>=0.24.0
+ordereddict>=1.1
+dbfread>=2.0.5
+agate>=1.5.0
diff --git a/requirements-py3.txt b/requirements-py3.txt
new file mode 100644
index 0000000..ff25a82
--- /dev/null
+++ b/requirements-py3.txt
@@ -0,0 +1,7 @@
+nose>=1.1.2
+tox>=1.3
+Sphinx>=1.2.2
+sphinx_rtd_theme>=0.1.6
+wheel>=0.24.0
+dbfread>=2.0.5
+agate>=1.5.0
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..2a9acf1
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,2 @@
+[bdist_wheel]
+universal = 1
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..5d5b08d
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+
+from setuptools import setup
+
+install_requires = [
+    'agate>=1.5.0',
+    'dbfread>=2.0.5'
+]
+
+setup(
+    name='agate-dbf',
+    version='0.2.0',
+    description='agate-dbf adds read support for dbf files to agate.',
+    long_description=open('README.rst').read(),
+    author='Christopher Groskopf',
+    author_email='chrisgroskopf at gmail.com',
+    url='http://agate-dbf.readthedocs.org/',
+    license='MIT',
+    classifiers=[
+        'Development Status :: 4 - Beta',
+        'Intended Audience :: Developers',
+        'Intended Audience :: Science/Research',
+        'License :: OSI Approved :: MIT License',
+        'Natural Language :: English',
+        'Operating System :: OS Independent',
+        'Programming Language :: Python',
+        'Programming Language :: Python :: 2.7',
+        'Programming Language :: Python :: 3.3',
+        'Programming Language :: Python :: 3.4',
+        'Programming Language :: Python :: 3.5',
+        'Programming Language :: Python :: Implementation :: CPython',
+        'Programming Language :: Python :: Implementation :: PyPy',
+        'Topic :: Multimedia :: Graphics',
+        'Topic :: Scientific/Engineering :: Information Analysis',
+        'Topic :: Scientific/Engineering :: Visualization',
+        'Topic :: Software Development :: Libraries :: Python Modules',
+    ],
+    packages=[
+        'agatedbf'
+    ],
+    install_requires=install_requires
+)
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/test_table.py b/tests/test_table.py
new file mode 100644
index 0000000..b0355c9
--- /dev/null
+++ b/tests/test_table.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+# -*- coding: utf8 -*-
+
+try:
+    import unittest2 as unittest
+except ImportError:
+    import unittest
+
+import agate
+import agatedbf
+
+class TestDBF(agate.AgateTestCase):
+    def setUp(self):
+        self.table = agate.Table.from_csv('examples/testdbf_converted.csv')
+
+    def test_from_dbf(self):
+        table = agate.Table.from_dbf('examples/test.dbf')
+
+        self.assertColumnNames(table, self.table.column_names)
+        self.assertColumnTypes(table, [t.__class__ for t in self.table.column_types])
+        self.assertRows(table, self.table.rows)
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000..633b622
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,20 @@
+[tox]
+envlist = py27,py33,py34,py35,pypy
+
+[testenv]
+commands = nosetests
+
+[testenv:py27]
+deps = -rrequirements-py2.txt
+
+[testenv:py33]
+deps = -rrequirements-py3.txt
+
+[testenv:py34]
+deps = {[testenv:py33]deps}
+
+[testenv:py35]
+deps = {[testenv:py33]deps}
+
+[testenv:pypy]
+deps = {[testenv:py33]deps}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-agate-dbf.git



More information about the Python-modules-commits mailing list