1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234
|
Changes
=======
Release History
---------------
2.0.7 - 2016-11-24
^^^^^^^^^^^^^^^^^^
* Sometimes numeric (N) and float fields (F) are padded with
'*'. These are now stripped. (Reported by sgiangola and Matungos,
issue #10.)
* added ``char_decode_errors`` option which lets you choose how to
handle characters that can't be decoded. (Implemented by ZHU Enwei,
pull request #16.)
* added ``--char-decode-errors`` option to ``dbf2sqlite``.
* added ``dbfread.version_info``.
2.0.6 - 2016-06-07
^^^^^^^^^^^^^^^^^^
* Added support for long character (C) fields (up to 65535 bytes).
(Requested by Eric Mertens and Marcelo Manzano.)
* Added support for Visual FoxPro varchar fields (V). (Thanks to Roman
Kharin for reporting and bobintetley for providing a solution.)
* Bugfix (dbf2sqlite): some table or field names might actually collide with
sql reserved words. (Fix by vthriller, pull request #15.)
* Documented how to convert records to Pandas data frames. (Thanks to
Roman Yurchak for suggesting this.)
2.0.5 - 2015-11-30
^^^^^^^^^^^^^^^^^^
* Bugfix: memo field parser used str instead of bytes. (Fix submitted
independently by Sebastian Setzer (via email) and by Artem Vlasov,
pull request #11.)
* Bugfix: some field parsers called self._get_memo() instead of
self.get_memo(). (Fix by Yu Feng, pull request #9.)
2.0.4 - 2015-02-07
^^^^^^^^^^^^^^^^^^
* DBF header and field headers are no longer read-only. For example
you can now change field names by doing ``table.fields[0].name = 'price'``
or read from files where field sizes in the header don't match those
in the actual records by doing ``table.fields[0].length = 500``.
* fixed some examples that didn't work with Python 3.
2.0.3 - 2014-09-30
^^^^^^^^^^^^^^^^^^
* added currency field (Y). (Patch by Stack-of-Pancakes.)
2.0.2 - 2014-09-29
^^^^^^^^^^^^^^^^^^
* bugfix: a date with all zeroes in the DBF header resulted in
'ValueError: month must be in 1..12'. (Reported by Andrew Myers.)
The ``date`` attribute is now set to ``None`` for any value that is
not a valid date.
2.0.1 - 2014-09-19
^^^^^^^^^^^^^^^^^^
* bugfix: didn't handle field names with garbage after b'\0'
terminator. (Patch by Cédric Krier.)
* now handles 0 (_NullFlags) fields that are more than 1 byte long.
0 fields are now returned as byte strings instead of integers.
(Reported by Carlos Huga.)
* the type B field is a double precision floating point numbers in
Visual FoxPro. The parser crashed when it tried to interpret this as
a string containing a number. (Reported by Carlos Huga.)
* API changes: memo field parsers now return the memo data (typically
a unicode string or bytes object) instead of returning the
index. This makes it easier to implement new memo types or extend
the existing ones since memo fields are no longer a special case.
2.0.0 - 2014-08-12
^^^^^^^^^^^^^^^^^^
* ``dbfread.open()`` and ``dbfread.read()`` are now deprecated and
will be removed in 1.4. Since the ``DBF`` object is no longer a
subclass of list, these functions instead return backward compatible
``DeprecatedDBF`` objects.
* records are now returned as ordered dictionaries. This makes it
easier to iterate over fields in the same order that they appear in
the file.
* now reads (at least some) DBT files.
* added support for 6 new field types.
* added ``ignore_missing_memofile`` argument. If ``True`` and the memo
file is not found all memo fields will be returned as ``None``.
* DBF now raises ``DBFNotFound`` and ``MissingMemoFile``. These
inherit from IOError, so old code should still work.
* added ``InvalidValue``. This is currently not used by the library but
can be useful for custom parsing.
* ``FieldParser`` is now available in the top scope.
* wrote documentation.
* switched to pytest for unit tests.
1.1.1 - 2014-08-03
^^^^^^^^^^^^^^^^^^
* example and test data files were missing from the manifest.
1.1.0 - 2014-08-03
^^^^^^^^^^^^^^^^^^
* the ``DBF`` object is no longer a subclass of list. Records are
instead available in the ``records`` attribute, but the table can be
iterated over like before. This change was made to make the API
cleaner and easier to understand. ``read()`` is still included for
backwards compatability, and returns an ``OldStyleTable`` object
with the old behaviour.
* default character encoding is now ``"ascii"``. This is a saner default
than the previously used ``"latin1"``, which would decode but could give
the wrong characters.
* the DBF object can now be used as a context manager (using the
"with" statement).
1.0.6 - 2014-08-02
^^^^^^^^^^^^^^^^^^
* critical bugfix: each record contained only the last
field. (Introduced in 1.0.5, making that version unusable.)
* improved performance of record reading a bit.
1.0.5 - 2014-08-01
^^^^^^^^^^^^^^^^^^
This version is broken.
* more than doubled performance of record parsing.
* removed circular dependency between table and deleted record iterator.
* added ``dbversion`` attribute.
* added example ``dbfinfo.py``.
* numeric field (N) parser now handles invalid data correctly.
* added more unit tests.
1.0.4 - 2014-07-27
^^^^^^^^^^^^^^^^^^
* bugfix: crashed when record list was not terminated with b'\x1a'.
(Bug first apperad in 1.0.2 after a rewrite.)
* bugfix: memo fields with no value were returned as ''. They are
now returned correctly as None.
* bugfix: field header terminaters were compared with strings.
* added example parserclass_debugstring.py.
1.0.3 - 2014-07-26
^^^^^^^^^^^^^^^^^^
* reinstated hastily removed parserclass option.
1.0.2 - 2014-07-26
^^^^^^^^^^^^^^^^^^
* added example record_objects.py.
* removed parserclass option to allow for internal changes. There is
currently no (documented) way to add custom field types.
1.0.1 - 2014-07-26
^^^^^^^^^^^^^^^^^^
* bugfix: deleted records were ignored when using open().
* memo file is now opened and closed by each iterator instead of
staying open all the time.
1.0.0 - 2014-07-25
^^^^^^^^^^^^^^^^^^
* records can now be streamed from the file, making it possible to
read data files that are too large to fit in memory.
* documentation is more readable and complete.
* now installs correctly with easy_install.
* added "--encoding" option to dbf2sqlite which can be used to
override character encoding.
0.1.0 - 2014-04-08
^^^^^^^^^^^^^^^^^^
Initial release.
|