Hello community,

here is the log from the commit of package python-xlwt for openSUSE:Factory 
checked in at 2018-02-01 21:31:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-xlwt (Old)
 and      /work/SRC/openSUSE:Factory/.python-xlwt.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-xlwt"

Thu Feb  1 21:31:08 2018 rev:8 rq:571742 version:1.3.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-xlwt/python-xlwt.changes  2017-05-09 
18:02:00.302599937 +0200
+++ /work/SRC/openSUSE:Factory/.python-xlwt.new/python-xlwt.changes     
2018-02-01 21:31:47.578324589 +0100
@@ -1,0 +2,9 @@
+Tue Jan 30 15:20:15 UTC 2018 - [email protected]
+
+- Update to version 1.3.0
+  * Officially support Python 3.6, drop support for 2.6.
+  * Fix bytes/string type mismatch in :func:`upack2rt` on python 3.
+  * Packaging and code style tweaks.
+  * Use generator expressions to avoid unnecessary lists in memory.
+
+-------------------------------------------------------------------

Old:
----
  xlwt-1.2.0.tar.gz

New:
----
  xlwt-1.3.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-xlwt.spec ++++++
--- /var/tmp/diff_new_pack.Dz0hPA/_old  2018-02-01 21:31:48.166297082 +0100
+++ /var/tmp/diff_new_pack.Dz0hPA/_new  2018-02-01 21:31:48.170296895 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-xlwt
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-xlwt
-Version:        1.2.0
+Version:        1.3.0
 Release:        0
 Url:            https://secure.simplistix.co.uk/svn/xlwt/trunk
 Summary:        Library to Create Spreadsheet Files Compatible With MS Excel 
97/2000/XP/2003
@@ -33,6 +33,7 @@
 BuildRequires:  %{python_module devel}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  python3-Sphinx
+BuildRequires:  python3-pkginfo
 %if %{with tests}
 BuildRequires:  %{python_module nose}
 %endif

++++++ xlwt-1.2.0.tar.gz -> xlwt-1.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/.travis.yml new/xlwt-1.3.0/.travis.yml
--- old/xlwt-1.2.0/.travis.yml  2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/.travis.yml  2017-08-22 08:46:08.000000000 +0200
@@ -4,14 +4,16 @@
 language: python
 
 python:
+  - "3.6"
   - "3.5"
   - "3.4"
   - "3.3"
   - "2.7"
-  - "2.6"
 
 # command to install dependencies
-install: "pip install -Ur requirements.txt"
+install: 
+- "pip install -U pip setuptools"
+- "pip install -Ur requirements.txt"
 
 # command to run tests, e.g. python setup.py test
 script: nosetests --with-cov --cov=xlwt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/PKG-INFO new/xlwt-1.3.0/PKG-INFO
--- old/xlwt-1.2.0/PKG-INFO     2017-01-04 17:17:15.000000000 +0100
+++ new/xlwt-1.3.0/PKG-INFO     2017-08-22 08:47:13.000000000 +0200
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: xlwt
-Version: 1.2.0
+Version: 1.3.0
 Summary: Library to create spreadsheet files compatible with MS Excel 
97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2.7, 3.3+
 Home-page: http://www.python-excel.org/
 Author: John Machin
 Author-email: [email protected]
 License: BSD
-Download-URL: http://pypi.python.org/pypi/xlwt
+Download-URL: https://pypi.python.org/pypi/xlwt
 Description: |Travis|_ |Coveralls|_ |Docs|_ |PyPI|_
         
         .. |Travis| image:: 
https://api.travis-ci.org/python-excel/xlwt.svg?branch=master
@@ -16,7 +16,7 @@
         .. _Coveralls: https://coveralls.io/r/python-excel/xlwt?branch=master
         
         .. |Docs| image:: 
https://readthedocs.org/projects/xlwt/badge/?version=latest
-        .. _Docs: http://xlwt.readthedocs.org/en/latest/
+        .. _Docs: https://xlwt.readthedocs.org/en/latest/
         
         .. |PyPI| image:: https://badge.fury.io/py/xlwt.svg
         .. _PyPI: https://badge.fury.io/py/xlwt
@@ -30,6 +30,9 @@
         The package itself is pure Python with no dependencies on modules or 
packages
         outside the standard Python distribution.
         
+        Please read this before using this package:
+        https://groups.google.com/d/msg/python-excel/P6TjJgFVjMI/g8d0eWxTBQAJ
+        
         Installation
         ============
         
@@ -69,7 +72,7 @@
         examples directory and the source code itself.
         
         The latest documentation can also be found at:
-        http://xlwt.readthedocs.org/en/latest/
+        https://xlwt.readthedocs.org/en/latest/
         
         Problems?
         =========
@@ -77,7 +80,7 @@
         
         - Read the source
         
-        - Ask a question on http://groups.google.com/group/python-excel/
+        - Ask a question on https://groups.google.com/group/python-excel/
         
         Acknowledgements
         ================
@@ -100,9 +103,9 @@
 Classifier: Topic :: Database
 Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI 
Tools/Libraries
 Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.3
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/README.rst new/xlwt-1.3.0/README.rst
--- old/xlwt-1.2.0/README.rst   2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/README.rst   2017-08-22 08:46:08.000000000 +0200
@@ -7,7 +7,7 @@
 .. _Coveralls: https://coveralls.io/r/python-excel/xlwt?branch=master
 
 .. |Docs| image:: https://readthedocs.org/projects/xlwt/badge/?version=latest
-.. _Docs: http://xlwt.readthedocs.org/en/latest/
+.. _Docs: https://xlwt.readthedocs.org/en/latest/
 
 .. |PyPI| image:: https://badge.fury.io/py/xlwt.svg
 .. _PyPI: https://badge.fury.io/py/xlwt
@@ -21,6 +21,9 @@
 The package itself is pure Python with no dependencies on modules or packages
 outside the standard Python distribution.
 
+Please read this before using this package:
+https://groups.google.com/d/msg/python-excel/P6TjJgFVjMI/g8d0eWxTBQAJ
+
 Installation
 ============
 
@@ -60,7 +63,7 @@
 examples directory and the source code itself.
 
 The latest documentation can also be found at:
-http://xlwt.readthedocs.org/en/latest/
+https://xlwt.readthedocs.org/en/latest/
 
 Problems?
 =========
@@ -68,7 +71,7 @@
 
 - Read the source
 
-- Ask a question on http://groups.google.com/group/python-excel/
+- Ask a question on https://groups.google.com/group/python-excel/
 
 Acknowledgements
 ================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/docs/changes.rst 
new/xlwt-1.3.0/docs/changes.rst
--- old/xlwt-1.2.0/docs/changes.rst     2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/docs/changes.rst     2017-08-22 08:46:08.000000000 +0200
@@ -3,6 +3,22 @@
 
 .. currentmodule:: xlwt
 
+1.3.0 (22 August 2017)
+----------------------
+
+- Officially support Python 3.6, drop support for 2.6.
+
+- Fix bytes/string type mismatch in :func:`upack2rt` on python 3.
+
+- Packaging and code style tweaks.
+
+- Use generator expressions to avoid unnecessary lists in memory.
+
+Thanks to the following for their contributions to this release:
+
+- Jon Dufresne
+- Bill Adams
+
 1.2.0 (4 January 2017)
 ----------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/docs/conf.py new/xlwt-1.3.0/docs/conf.py
--- old/xlwt-1.2.0/docs/conf.py 2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/docs/conf.py 2017-08-22 08:46:08.000000000 +0200
@@ -19,4 +19,4 @@
     html_theme = 'classic'
 
 htmlhelp_basename = project+'doc'
-intersphinx_mapping = {'python': ('http://docs.python.org', None)}
+intersphinx_mapping = {'python': ('https://docs.python.org', None)}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/docs/installation.rst 
new/xlwt-1.3.0/docs/installation.rst
--- old/xlwt-1.2.0/docs/installation.rst        2017-01-04 17:16:40.000000000 
+0100
+++ new/xlwt-1.3.0/docs/installation.rst        2017-08-22 08:46:08.000000000 
+0200
@@ -16,8 +16,3 @@
         # other stuff here
         install_requires=['xlwt'],
         )
-
-.. topic:: Python version requirements
-
-  This package has been tested with Python 2.6, 2.7, 3.3+ on Linux,
-  and is also expected to work on Mac OS X and Windows.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/docs/licenses.rst 
new/xlwt-1.3.0/docs/licenses.rst
--- old/xlwt-1.2.0/docs/licenses.rst    2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/docs/licenses.rst    2017-08-22 08:46:08.000000000 +0200
@@ -108,7 +108,7 @@
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
  General Public License for more details:
 
- http://www.gnu.org/licenses/lgpl.html
+ https://www.gnu.org/licenses/lgpl.html
 
 pyXLWriter also makes reference to the PERL Spreadsheet::WriteExcel as 
follows::
  
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/examples/hyperlinks.py 
new/xlwt-1.3.0/examples/hyperlinks.py
--- old/xlwt-1.2.0/examples/hyperlinks.py       2017-01-04 17:16:40.000000000 
+0100
+++ new/xlwt-1.3.0/examples/hyperlinks.py       2017-08-22 08:46:08.000000000 
+0200
@@ -22,7 +22,7 @@
 ##############
 
 n = "HYPERLINK"
-ws.write_merge(1, 1, 1, 10, Formula(n + 
'("http://www.irs.gov/pub/irs-pdf/f1000.pdf";"f1000.pdf";)'), h_style)
+ws.write_merge(1, 1, 1, 10, Formula(n + 
'("https://www.irs.gov/pub/irs-pdf/f1000.pdf";"f1000.pdf";)'), h_style)
 ws.write_merge(2, 2, 2, 25, Formula(n + 
'("mailto:[email protected]?subject=pyExcelerator-feedback&Body=Hello,%20Roman!";"pyExcelerator-feedback";)'),
 h_style)
 
 w.save("hyperlinks.xls")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/examples/image_chg_col_wid.py 
new/xlwt-1.3.0/examples/image_chg_col_wid.py
--- old/xlwt-1.2.0/examples/image_chg_col_wid.py        2017-01-04 
17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/examples/image_chg_col_wid.py        2017-08-22 
08:46:08.000000000 +0200
@@ -1,27 +1,27 @@
-# This demonstrates the effect of changing the column width
-# when inserting a picture/image.
-
-import xlwt
-w = xlwt.Workbook()
-ws = w.add_sheet('Image')
-
-ws.write(0, 2, "chg wid: none")
-ws.insert_bitmap('python.bmp', 2, 2)
-
-ws.write(0, 4, "chg wid: after")
-ws.insert_bitmap('python.bmp', 2, 4)
-ws.col(4).width = 20 * 256
-
-ws.write(0, 6, "chg wid: before")
-ws.col(6).width = 20 * 256
-ws.insert_bitmap('python.bmp', 2, 6)
-
-ws.write(0, 8, "chg wid: after")
-ws.insert_bitmap('python.bmp', 2, 8)
-ws.col(5).width = 8 * 256
-
-ws.write(0, 10, "chg wid: before")
-ws.col(10).width = 8 * 256
-ws.insert_bitmap('python.bmp', 2, 10)
-
-w.save('image_chg_col_wid.xls')
+# This demonstrates the effect of changing the column width
+# when inserting a picture/image.
+
+import xlwt
+w = xlwt.Workbook()
+ws = w.add_sheet('Image')
+
+ws.write(0, 2, "chg wid: none")
+ws.insert_bitmap('python.bmp', 2, 2)
+
+ws.write(0, 4, "chg wid: after")
+ws.insert_bitmap('python.bmp', 2, 4)
+ws.col(4).width = 20 * 256
+
+ws.write(0, 6, "chg wid: before")
+ws.col(6).width = 20 * 256
+ws.insert_bitmap('python.bmp', 2, 6)
+
+ws.write(0, 8, "chg wid: after")
+ws.insert_bitmap('python.bmp', 2, 8)
+ws.col(5).width = 8 * 256
+
+ws.write(0, 10, "chg wid: before")
+ws.col(10).width = 8 * 256
+ws.insert_bitmap('python.bmp', 2, 10)
+
+w.save('image_chg_col_wid.xls')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/examples/numbers_demo.py 
new/xlwt-1.3.0/examples/numbers_demo.py
--- old/xlwt-1.2.0/examples/numbers_demo.py     2017-01-04 17:16:40.000000000 
+0100
+++ new/xlwt-1.3.0/examples/numbers_demo.py     2017-08-22 08:46:08.000000000 
+0200
@@ -1,25 +1,25 @@
-#!/usr/bin/env python
-# -*- coding: windows-1251 -*-
-# Copyright (C) 2005 Kiseliov Roman
-
-from xlwt import *
-
-w = Workbook()
-ws = w.add_sheet('Hey, Dude')
-
-ws.write(0, 0, 1)
-ws.write(1, 0, 1.23)
-ws.write(2, 0, 12345678)
-ws.write(3, 0, 123456.78)
-
-ws.write(0, 1, -1)
-ws.write(1, 1, -1.23)
-ws.write(2, 1, -12345678)
-ws.write(3, 1, -123456.78)
-
-ws.write(0, 2, -17867868678687.0)
-ws.write(1, 2, -1.23e-5)
-ws.write(2, 2, -12345678.90780980)
-ws.write(3, 2, -123456.78)
-
-w.save('numbers.xls')
+#!/usr/bin/env python
+# -*- coding: windows-1251 -*-
+# Copyright (C) 2005 Kiseliov Roman
+
+from xlwt import *
+
+w = Workbook()
+ws = w.add_sheet('Hey, Dude')
+
+ws.write(0, 0, 1)
+ws.write(1, 0, 1.23)
+ws.write(2, 0, 12345678)
+ws.write(3, 0, 123456.78)
+
+ws.write(0, 1, -1)
+ws.write(1, 1, -1.23)
+ws.write(2, 1, -12345678)
+ws.write(3, 1, -123456.78)
+
+ws.write(0, 2, -17867868678687.0)
+ws.write(1, 2, -1.23e-5)
+ws.write(2, 2, -12345678.90780980)
+ws.write(3, 2, -123456.78)
+
+w.save('numbers.xls')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/examples/panes2.py 
new/xlwt-1.3.0/examples/panes2.py
--- old/xlwt-1.2.0/examples/panes2.py   2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/examples/panes2.py   2017-08-22 08:46:08.000000000 +0200
@@ -1,60 +1,60 @@
-#!/usr/bin/env python
-# -*- coding: ascii -*-
-# portions Copyright (C) 2005 Kiseliov Roman
-
-import xlwt
-
-w = xlwt.Workbook()
-sheets = [w.add_sheet('sheet ' + str(sheetx+1)) for sheetx in range(7)]
-ws1, ws2, ws3, ws4, ws5, ws6, ws7 = sheets
-for sheet in sheets:
-    for i in range(0x100):
-        sheet.write(i // 0x10, i % 0x10, i)
-
-H = 1
-V = 2
-HF = H + 2
-VF = V + 2
-
-ws1.panes_frozen = True
-ws1.horz_split_pos = H
-ws1.horz_split_first_visible = HF
-
-ws2.panes_frozen = True
-ws2.vert_split_pos = V
-ws2.vert_split_first_visible = VF
-
-ws3.panes_frozen = True
-ws3.horz_split_pos = H
-ws3.vert_split_pos = V
-ws3.horz_split_first_visible = HF
-ws3.vert_split_first_visible = VF
-
-H = 10
-V = 12
-HF = H + 2
-VF = V + 2
-
-ws4.panes_frozen = False
-ws4.horz_split_pos = H * 12.75 # rows
-ws4.horz_split_first_visible = HF
-
-ws5.panes_frozen = False
-ws5.vert_split_pos = V * 8.43 # rows
-ws5.vert_split_first_visible = VF
-
-ws6.panes_frozen = False
-ws6.horz_split_pos = H * 12.75 # rows
-ws6.horz_split_first_visible = HF
-ws6.vert_split_pos = V * 8.43 # cols
-ws6.vert_split_first_visible = VF
-
-ws7.split_position_units_are_twips = True
-ws7.panes_frozen = False
-ws7.horz_split_pos = H * 250 + 240 # twips
-ws7.horz_split_first_visible = HF
-ws7.vert_split_pos = V * 955 + 410 # twips
-ws7.vert_split_first_visible = VF
-
-w.save('panes2.xls')
-
+#!/usr/bin/env python
+# -*- coding: ascii -*-
+# portions Copyright (C) 2005 Kiseliov Roman
+
+import xlwt
+
+w = xlwt.Workbook()
+sheets = [w.add_sheet('sheet ' + str(sheetx+1)) for sheetx in range(7)]
+ws1, ws2, ws3, ws4, ws5, ws6, ws7 = sheets
+for sheet in sheets:
+    for i in range(0x100):
+        sheet.write(i // 0x10, i % 0x10, i)
+
+H = 1
+V = 2
+HF = H + 2
+VF = V + 2
+
+ws1.panes_frozen = True
+ws1.horz_split_pos = H
+ws1.horz_split_first_visible = HF
+
+ws2.panes_frozen = True
+ws2.vert_split_pos = V
+ws2.vert_split_first_visible = VF
+
+ws3.panes_frozen = True
+ws3.horz_split_pos = H
+ws3.vert_split_pos = V
+ws3.horz_split_first_visible = HF
+ws3.vert_split_first_visible = VF
+
+H = 10
+V = 12
+HF = H + 2
+VF = V + 2
+
+ws4.panes_frozen = False
+ws4.horz_split_pos = H * 12.75 # rows
+ws4.horz_split_first_visible = HF
+
+ws5.panes_frozen = False
+ws5.vert_split_pos = V * 8.43 # rows
+ws5.vert_split_first_visible = VF
+
+ws6.panes_frozen = False
+ws6.horz_split_pos = H * 12.75 # rows
+ws6.horz_split_first_visible = HF
+ws6.vert_split_pos = V * 8.43 # cols
+ws6.vert_split_first_visible = VF
+
+ws7.split_position_units_are_twips = True
+ws7.panes_frozen = False
+ws7.horz_split_pos = H * 250 + 240 # twips
+ws7.horz_split_first_visible = HF
+ws7.vert_split_pos = V * 955 + 410 # twips
+ws7.vert_split_first_visible = VF
+
+w.save('panes2.xls')
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/examples/zoom_magnification.py 
new/xlwt-1.3.0/examples/zoom_magnification.py
--- old/xlwt-1.2.0/examples/zoom_magnification.py       2017-01-04 
17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/examples/zoom_magnification.py       2017-08-22 
08:46:08.000000000 +0200
@@ -1,14 +1,14 @@
-import xlwt
-book = xlwt.Workbook()
-for magn in (0, 60, 100, 75, 150):
-    for preview in (False, True):
-        sheet = book.add_sheet('magn%d%s' % (magn, "np"[preview]))
-        if preview:
-            sheet.preview_magn = magn
-        else:
-            sheet.normal_magn = magn
-        sheet.page_preview = preview
-        for rowx in range(100):
-            sheet.write(rowx, 0, "Some text")
-book.save("zoom_magnification.xls")
-
+import xlwt
+book = xlwt.Workbook()
+for magn in (0, 60, 100, 75, 150):
+    for preview in (False, True):
+        sheet = book.add_sheet('magn%d%s' % (magn, "np"[preview]))
+        if preview:
+            sheet.preview_magn = magn
+        else:
+            sheet.normal_magn = magn
+        sheet.page_preview = preview
+        for rowx in range(100):
+            sheet.write(rowx, 0, "Some text")
+book.save("zoom_magnification.xls")
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/setup.cfg new/xlwt-1.3.0/setup.cfg
--- old/xlwt-1.2.0/setup.cfg    2017-01-04 17:17:15.000000000 +0100
+++ new/xlwt-1.3.0/setup.cfg    2017-08-22 08:47:13.000000000 +0200
@@ -1,8 +1,7 @@
-[wheel]
+[bdist_wheel]
 universal = 1
 
 [egg_info]
 tag_build = 
 tag_date = 0
-tag_svn_revision = 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/setup.py new/xlwt-1.3.0/setup.py
--- old/xlwt-1.2.0/setup.py     2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/setup.py     2017-08-22 08:46:08.000000000 +0200
@@ -19,12 +19,12 @@
     'Topic :: Database',
     'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries',
     'Programming Language :: Python :: 2',
-    'Programming Language :: Python :: 2.6',
     'Programming Language :: Python :: 2.7',
     'Programming Language :: Python :: 3',
     'Programming Language :: Python :: 3.3',
     'Programming Language :: Python :: 3.4',
     'Programming Language :: Python :: 3.5',
+    'Programming Language :: Python :: 3.6',
     ]
 
 KEYWORDS = (
@@ -37,7 +37,7 @@
     maintainer='John Machin',
     maintainer_email='[email protected]',
     url='http://www.python-excel.org/',
-    download_url='http://pypi.python.org/pypi/xlwt',
+    download_url='https://pypi.python.org/pypi/xlwt',
     description=DESCRIPTION,
     long_description=open(os.path.join(
         os.path.dirname(__file__), 'README.rst')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/tests/test_biff_records.py 
new/xlwt-1.3.0/tests/test_biff_records.py
--- old/xlwt-1.2.0/tests/test_biff_records.py   2017-01-04 17:16:40.000000000 
+0100
+++ new/xlwt-1.3.0/tests/test_biff_records.py   2017-08-22 08:46:08.000000000 
+0200
@@ -1,24 +1,24 @@
-# coding:utf-8
-
-from io import BytesIO
-import unittest
-
-import xlwt
-
-class TestSharedStringTable(unittest.TestCase):
-    def test_shared_string_table(self):
-        expected_result = 
b'\xfc\x00\x11\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x00\x01\x1e\x04;\x04O\x04'
-        string_record = xlwt.BIFFRecords.SharedStringTable(encoding='cp1251')
-        string_record.add_str(u'Оля')
-        self.assertEqual(expected_result, string_record.get_biff_record())
-
-class TestIntersheetsRef(unittest.TestCase):
-    def test_intersheets_ref(self):
-        book = xlwt.Workbook()
-        sheet_a = book.add_sheet('A')
-        sheet_a.write(0, 0, 'A1')
-        sheet_a.write(0, 1, 'A2')
-        sheet_b = book.add_sheet('B')
-        sheet_b.write(0, 0, xlwt.Formula("'A'!$A$1&'A'!$A$2"))
-        out = BytesIO()
-        book.save(out)
+# coding:utf-8
+
+from io import BytesIO
+import unittest
+
+import xlwt
+
+class TestSharedStringTable(unittest.TestCase):
+    def test_shared_string_table(self):
+        expected_result = 
b'\xfc\x00\x11\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x00\x01\x1e\x04;\x04O\x04'
+        string_record = xlwt.BIFFRecords.SharedStringTable(encoding='cp1251')
+        string_record.add_str(u'Оля')
+        self.assertEqual(expected_result, string_record.get_biff_record())
+
+class TestIntersheetsRef(unittest.TestCase):
+    def test_intersheets_ref(self):
+        book = xlwt.Workbook()
+        sheet_a = book.add_sheet('A')
+        sheet_a.write(0, 0, 'A1')
+        sheet_a.write(0, 1, 'A2')
+        sheet_b = book.add_sheet('B')
+        sheet_b.write(0, 0, xlwt.Formula("'A'!$A$1&'A'!$A$2"))
+        out = BytesIO()
+        book.save(out)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/tests/test_bitmaps.py 
new/xlwt-1.3.0/tests/test_bitmaps.py
--- old/xlwt-1.2.0/tests/test_bitmaps.py        2017-01-04 17:16:40.000000000 
+0100
+++ new/xlwt-1.3.0/tests/test_bitmaps.py        2017-08-22 08:46:08.000000000 
+0200
@@ -1,41 +1,41 @@
-# -*- coding: utf-8 -*-
-
-import sys
-import os
-import unittest
-import filecmp
-from datetime import datetime
-
-from utils import in_tst_dir, in_tst_output_dir
-
-import xlwt
-
-class TestBitmaps(unittest.TestCase):
-    def test_create_bitmap_from_memory(self):
-        book = xlwt.Workbook()
-        sheet = book.add_sheet('bitmap test')
-        
-        with open ("tests/python.bmp", "rb") as bmpfile:
-            bmpdata = bmpfile.read()
-            sheet.insert_bitmap_data(bmpdata, 1, 1)
-        
-        book.save(in_tst_output_dir('bitmaps.xls'))
-        
-        self.assertTrue(filecmp.cmp(in_tst_dir('bitmaps.xls'),
-                                    in_tst_output_dir('bitmaps.xls'),
-                                    shallow=False))
-
-    def test_create_bitmap_from_file(self):
-        book = xlwt.Workbook()
-        sheet = book.add_sheet('bitmap test')
-        
-        sheet.insert_bitmap("tests/python.bmp", 1, 1)
-        
-        book.save(in_tst_output_dir('bitmaps.xls'))
-        
-        self.assertTrue(filecmp.cmp(in_tst_dir('bitmaps.xls'),
-                                    in_tst_output_dir('bitmaps.xls'),
-                                    shallow=False))
-
-if __name__=='__main__':
-    unittest.main()
+# -*- coding: utf-8 -*-
+
+import sys
+import os
+import unittest
+import filecmp
+from datetime import datetime
+
+from utils import in_tst_dir, in_tst_output_dir
+
+import xlwt
+
+class TestBitmaps(unittest.TestCase):
+    def test_create_bitmap_from_memory(self):
+        book = xlwt.Workbook()
+        sheet = book.add_sheet('bitmap test')
+        
+        with open ("tests/python.bmp", "rb") as bmpfile:
+            bmpdata = bmpfile.read()
+            sheet.insert_bitmap_data(bmpdata, 1, 1)
+        
+        book.save(in_tst_output_dir('bitmaps.xls'))
+        
+        self.assertTrue(filecmp.cmp(in_tst_dir('bitmaps.xls'),
+                                    in_tst_output_dir('bitmaps.xls'),
+                                    shallow=False))
+
+    def test_create_bitmap_from_file(self):
+        book = xlwt.Workbook()
+        sheet = book.add_sheet('bitmap test')
+        
+        sheet.insert_bitmap("tests/python.bmp", 1, 1)
+        
+        book.save(in_tst_output_dir('bitmaps.xls'))
+        
+        self.assertTrue(filecmp.cmp(in_tst_dir('bitmaps.xls'),
+                                    in_tst_output_dir('bitmaps.xls'),
+                                    shallow=False))
+
+if __name__=='__main__':
+    unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/tests/test_compound_doc.py 
new/xlwt-1.3.0/tests/test_compound_doc.py
--- old/xlwt-1.2.0/tests/test_compound_doc.py   2017-01-04 17:16:40.000000000 
+0100
+++ new/xlwt-1.3.0/tests/test_compound_doc.py   2017-08-22 08:46:08.000000000 
+0200
@@ -1,41 +1,41 @@
-import unittest
-
-from xlwt.CompoundDoc import XlsDoc
-
-DIR = b'R\x00o\x00o\x00t\x00 
\x00E\x00n\x00t\x00r\x00y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x05\x01\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00W\x00o\x00r\x00k\x00b\x00o\x00o\x00k\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x02\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00'
-
-PACKED_SAT = 
b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\xfe\xff\xff\xff\xfd\xff\xff\xff\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'
-PACKED_MSAT_1ST = 
b'\x08\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'
-PACKED_MSAT_2ND = b""
-BOOK_STREAM_SECT = [0, 1, 2, 3, 4, 5, 6, 7]
-SAT_SECT = [8]
-MSAT_SECT_2ND = []
-
-HEADER = 
b'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>\x00\x03\x00\xfe\xff\t\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00'
-
-class TestXlsDoc(unittest.TestCase):
-    def test_build_directory(self):
-        xlsdoc = XlsDoc()
-        xlsdoc.book_stream_len = 0x1000
-        xlsdoc._build_directory()
-        self.assertEqual(DIR, xlsdoc.dir_stream)
-
-    def test_build_sat(self):
-        xlsdoc = XlsDoc()
-        xlsdoc.book_stream_len = 0x1000
-        xlsdoc._build_directory()
-        xlsdoc._build_sat()
-        self.assertEqual(PACKED_SAT, xlsdoc.packed_SAT)
-        self.assertEqual(PACKED_MSAT_1ST, xlsdoc.packed_MSAT_1st)
-        self.assertEqual(PACKED_MSAT_2ND, xlsdoc.packed_MSAT_2nd)
-        self.assertEqual(BOOK_STREAM_SECT, xlsdoc.book_stream_sect)
-        self.assertEqual(SAT_SECT, xlsdoc.SAT_sect)
-        self.assertEqual(MSAT_SECT_2ND, xlsdoc.MSAT_sect_2nd)
-
-    def test_build_header(self):
-        xlsdoc = XlsDoc()
-        xlsdoc.book_stream_len = 0x1000
-        xlsdoc._build_directory()
-        xlsdoc._build_sat()
-        xlsdoc._build_header()
-        self.assertEqual(HEADER, xlsdoc.header)
+import unittest
+
+from xlwt.CompoundDoc import XlsDoc
+
+DIR = b'R\x00o\x00o\x00t\x00 
\x00E\x00n\x00t\x00r\x00y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x05\x01\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00W\x00o\x00r\x00k\x00b\x00o\x00o\x00k\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x02\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00'
+
+PACKED_SAT = 
b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\xfe\xff\xff\xff\xfd\xff\xff\xff\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'
+PACKED_MSAT_1ST = 
b'\x08\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'
+PACKED_MSAT_2ND = b""
+BOOK_STREAM_SECT = [0, 1, 2, 3, 4, 5, 6, 7]
+SAT_SECT = [8]
+MSAT_SECT_2ND = []
+
+HEADER = 
b'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>\x00\x03\x00\xfe\xff\t\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00'
+
+class TestXlsDoc(unittest.TestCase):
+    def test_build_directory(self):
+        xlsdoc = XlsDoc()
+        xlsdoc.book_stream_len = 0x1000
+        xlsdoc._build_directory()
+        self.assertEqual(DIR, xlsdoc.dir_stream)
+
+    def test_build_sat(self):
+        xlsdoc = XlsDoc()
+        xlsdoc.book_stream_len = 0x1000
+        xlsdoc._build_directory()
+        xlsdoc._build_sat()
+        self.assertEqual(PACKED_SAT, xlsdoc.packed_SAT)
+        self.assertEqual(PACKED_MSAT_1ST, xlsdoc.packed_MSAT_1st)
+        self.assertEqual(PACKED_MSAT_2ND, xlsdoc.packed_MSAT_2nd)
+        self.assertEqual(BOOK_STREAM_SECT, xlsdoc.book_stream_sect)
+        self.assertEqual(SAT_SECT, xlsdoc.SAT_sect)
+        self.assertEqual(MSAT_SECT_2ND, xlsdoc.MSAT_sect_2nd)
+
+    def test_build_header(self):
+        xlsdoc = XlsDoc()
+        xlsdoc.book_stream_len = 0x1000
+        xlsdoc._build_directory()
+        xlsdoc._build_sat()
+        xlsdoc._build_header()
+        self.assertEqual(HEADER, xlsdoc.header)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/tests/test_easyxf.py 
new/xlwt-1.3.0/tests/test_easyxf.py
--- old/xlwt-1.2.0/tests/test_easyxf.py 2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/tests/test_easyxf.py 2017-08-22 08:46:08.000000000 +0200
@@ -1,55 +1,55 @@
-import unittest
-import filecmp
-import datetime
-
-from utils import in_tst_dir, in_tst_output_dir
-
-import xlwt as xlwt
-ezxf = xlwt.easyxf
-
-def write_xls(file_name, sheet_name, headings, data, heading_xf, data_xfs):
-    book = xlwt.Workbook()
-    sheet = book.add_sheet(sheet_name)
-    rowx = 0
-    for colx, value in enumerate(headings):
-        sheet.write(rowx, colx, value, heading_xf)
-    sheet.set_panes_frozen(True) # frozen headings instead of split panes
-    sheet.set_horz_split_pos(rowx+1) # in general, freeze after last heading 
row
-    sheet.set_remove_splits(True) # if user does unfreeze, don't leave a split 
there
-    for row in data:
-        rowx += 1
-        for colx, value in enumerate(row):
-            sheet.write(rowx, colx, value, data_xfs[colx])
-    book.save(file_name)
-
-EXAMPLE_XLS = 'xlwt_easyxf_simple_demo.xls'
-
-class TestUnicode0(unittest.TestCase):
-    def create_example_xls(self, filename):
-        mkd = datetime.date
-        hdngs = ['Date', 'Stock Code', 'Quantity', 'Unit Price', 'Value', 
'Message']
-        kinds =  'date    text          int         price         money    
text'.split()
-        data = [
-            [mkd(2007, 7, 1), 'ABC', 1000, 1.234567, 1234.57, ''],
-            [mkd(2007, 12, 31), 'XYZ', -100, 4.654321, -465.43, 'Goods 
returned'],
-            ] + [
-                [mkd(2008, 6, 30), 'PQRCD', 100, 2.345678, 234.57, ''],
-            ] * 100
-
-        heading_xf = ezxf('font: bold on; align: wrap on, vert centre, horiz 
center')
-        kind_to_xf_map = {
-            'date': ezxf(num_format_str='yyyy-mm-dd'),
-            'int': ezxf(num_format_str='#,##0'),
-            'money': ezxf('font: italic on; pattern: pattern solid, 
fore-colour grey25',
-                num_format_str='$#,##0.00'),
-            'price': ezxf(num_format_str='#0.000000'),
-            'text': ezxf(),
-            }
-        data_xfs = [kind_to_xf_map[k] for k in kinds]
-        write_xls(filename, 'Demo', hdngs, data, heading_xf, data_xfs)
-
-    def test_example_xls(self):
-        self.create_example_xls(in_tst_output_dir(EXAMPLE_XLS))
-        self.assertTrue(filecmp.cmp(in_tst_dir(EXAMPLE_XLS),
-                                    in_tst_output_dir(EXAMPLE_XLS),
-                                    shallow=False))
+import unittest
+import filecmp
+import datetime
+
+from utils import in_tst_dir, in_tst_output_dir
+
+import xlwt as xlwt
+ezxf = xlwt.easyxf
+
+def write_xls(file_name, sheet_name, headings, data, heading_xf, data_xfs):
+    book = xlwt.Workbook()
+    sheet = book.add_sheet(sheet_name)
+    rowx = 0
+    for colx, value in enumerate(headings):
+        sheet.write(rowx, colx, value, heading_xf)
+    sheet.set_panes_frozen(True) # frozen headings instead of split panes
+    sheet.set_horz_split_pos(rowx+1) # in general, freeze after last heading 
row
+    sheet.set_remove_splits(True) # if user does unfreeze, don't leave a split 
there
+    for row in data:
+        rowx += 1
+        for colx, value in enumerate(row):
+            sheet.write(rowx, colx, value, data_xfs[colx])
+    book.save(file_name)
+
+EXAMPLE_XLS = 'xlwt_easyxf_simple_demo.xls'
+
+class TestUnicode0(unittest.TestCase):
+    def create_example_xls(self, filename):
+        mkd = datetime.date
+        hdngs = ['Date', 'Stock Code', 'Quantity', 'Unit Price', 'Value', 
'Message']
+        kinds =  'date    text          int         price         money    
text'.split()
+        data = [
+            [mkd(2007, 7, 1), 'ABC', 1000, 1.234567, 1234.57, ''],
+            [mkd(2007, 12, 31), 'XYZ', -100, 4.654321, -465.43, 'Goods 
returned'],
+            ] + [
+                [mkd(2008, 6, 30), 'PQRCD', 100, 2.345678, 234.57, ''],
+            ] * 100
+
+        heading_xf = ezxf('font: bold on; align: wrap on, vert centre, horiz 
center')
+        kind_to_xf_map = {
+            'date': ezxf(num_format_str='yyyy-mm-dd'),
+            'int': ezxf(num_format_str='#,##0'),
+            'money': ezxf('font: italic on; pattern: pattern solid, 
fore-colour grey25',
+                num_format_str='$#,##0.00'),
+            'price': ezxf(num_format_str='#0.000000'),
+            'text': ezxf(),
+            }
+        data_xfs = [kind_to_xf_map[k] for k in kinds]
+        write_xls(filename, 'Demo', hdngs, data, heading_xf, data_xfs)
+
+    def test_example_xls(self):
+        self.create_example_xls(in_tst_output_dir(EXAMPLE_XLS))
+        self.assertTrue(filecmp.cmp(in_tst_dir(EXAMPLE_XLS),
+                                    in_tst_output_dir(EXAMPLE_XLS),
+                                    shallow=False))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/tests/test_mini.py 
new/xlwt-1.3.0/tests/test_mini.py
--- old/xlwt-1.2.0/tests/test_mini.py   2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/tests/test_mini.py   2017-08-22 08:46:08.000000000 +0200
@@ -1,21 +1,21 @@
-import sys
-import os
-import unittest
-import filecmp
-
-from utils import in_tst_dir, in_tst_output_dir
-
-import xlwt
-
-def from_tst_dir(filename):
-    return os.path.join(os.path.dirname(os.path.abspath(__file__)), filename)
-
-class TestMini(unittest.TestCase):
-    def test_create_mini_xls(self):
-        book = xlwt.Workbook()
-        sheet = book.add_sheet('xlwt was here')
-        book.save(in_tst_output_dir('mini.xls'))
-
-        self.assertTrue(filecmp.cmp(in_tst_dir('mini.xls'),
-                                    in_tst_output_dir('mini.xls'),
-                                    shallow=False))
+import sys
+import os
+import unittest
+import filecmp
+
+from utils import in_tst_dir, in_tst_output_dir
+
+import xlwt
+
+def from_tst_dir(filename):
+    return os.path.join(os.path.dirname(os.path.abspath(__file__)), filename)
+
+class TestMini(unittest.TestCase):
+    def test_create_mini_xls(self):
+        book = xlwt.Workbook()
+        sheet = book.add_sheet('xlwt was here')
+        book.save(in_tst_output_dir('mini.xls'))
+
+        self.assertTrue(filecmp.cmp(in_tst_dir('mini.xls'),
+                                    in_tst_output_dir('mini.xls'),
+                                    shallow=False))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/tests/test_simple.py 
new/xlwt-1.3.0/tests/test_simple.py
--- old/xlwt-1.2.0/tests/test_simple.py 2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/tests/test_simple.py 2017-08-22 08:46:08.000000000 +0200
@@ -1,67 +1,67 @@
-# -*- coding: utf-8 -*-
-
-import sys
-import os
-import unittest
-import filecmp
-from datetime import datetime
-
-from utils import in_tst_dir, in_tst_output_dir
-
-import xlwt
-
-LOREM_IPSUM = u'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'
-
-
-class TestSimple(unittest.TestCase):
-
-    def create_simple_xls(self, **kw):
-        font0 = xlwt.Font()
-        font0.name = 'Times New Roman'
-        font0.colour_index = 2
-        font0.bold = True
-
-        style0 = xlwt.XFStyle()
-        style0.font = font0
-
-        style1 = xlwt.XFStyle()
-        style1.num_format_str = 'D-MMM-YY'
-
-        wb = xlwt.Workbook(**kw)
-        ws = wb.add_sheet('A Test Sheet')
-
-        ws.write(0, 0, 'Test', style0)
-        ws.write(1, 0, datetime(2010, 12, 5), style1)
-        ws.write(2, 0, 1)
-        ws.write(2, 1, 1)
-        ws.write(2, 2, xlwt.Formula("A3+B3"))
-        return wb, ws
-
-    def test_create_simple_xls(self):
-        wb, _ = self.create_simple_xls()
-        wb.save(in_tst_output_dir('simple.xls'))
-        self.assertTrue(filecmp.cmp(in_tst_dir('simple.xls'),
-                                    in_tst_output_dir('simple.xls'),
-                                    shallow=False))
-
-    def test_create_less_simple_xls(self):
-        wb, ws = self.create_simple_xls()
-        more_content=[
-            [
-                u'A{0}'.format(i),
-                u'Zażółć gęślą jaźń {0} {1}'.format(i, LOREM_IPSUM),
-            ]
-            for idx, i in enumerate(range(1000, 1050))
-        ]
-        for r_idx, content_row in enumerate(more_content, 3):
-            for c_idx, cell in enumerate(content_row):
-                ws.write(r_idx, c_idx, cell)
-        wb.save(in_tst_output_dir('less_simple.xls'))
-        self.assertTrue(filecmp.cmp(in_tst_dir('less_simple.xls'),
-                                    in_tst_output_dir('less_simple.xls'),
-                                    shallow=False))
-
-    def test_font_compression(self):
-        wb, ws = self.create_simple_xls(style_compression = 2)
-        wb.save(in_tst_output_dir('simple.xls'), )
-
+# -*- coding: utf-8 -*-
+
+import sys
+import os
+import unittest
+import filecmp
+from datetime import datetime
+
+from utils import in_tst_dir, in_tst_output_dir
+
+import xlwt
+
+LOREM_IPSUM = u'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'
+
+
+class TestSimple(unittest.TestCase):
+
+    def create_simple_xls(self, **kw):
+        font0 = xlwt.Font()
+        font0.name = 'Times New Roman'
+        font0.colour_index = 2
+        font0.bold = True
+
+        style0 = xlwt.XFStyle()
+        style0.font = font0
+
+        style1 = xlwt.XFStyle()
+        style1.num_format_str = 'D-MMM-YY'
+
+        wb = xlwt.Workbook(**kw)
+        ws = wb.add_sheet('A Test Sheet')
+
+        ws.write(0, 0, 'Test', style0)
+        ws.write(1, 0, datetime(2010, 12, 5), style1)
+        ws.write(2, 0, 1)
+        ws.write(2, 1, 1)
+        ws.write(2, 2, xlwt.Formula("A3+B3"))
+        return wb, ws
+
+    def test_create_simple_xls(self):
+        wb, _ = self.create_simple_xls()
+        wb.save(in_tst_output_dir('simple.xls'))
+        self.assertTrue(filecmp.cmp(in_tst_dir('simple.xls'),
+                                    in_tst_output_dir('simple.xls'),
+                                    shallow=False))
+
+    def test_create_less_simple_xls(self):
+        wb, ws = self.create_simple_xls()
+        more_content=[
+            [
+                u'A{0}'.format(i),
+                u'Zażółć gęślą jaźń {0} {1}'.format(i, LOREM_IPSUM),
+            ]
+            for idx, i in enumerate(range(1000, 1050))
+        ]
+        for r_idx, content_row in enumerate(more_content, 3):
+            for c_idx, cell in enumerate(content_row):
+                ws.write(r_idx, c_idx, cell)
+        wb.save(in_tst_output_dir('less_simple.xls'))
+        self.assertTrue(filecmp.cmp(in_tst_dir('less_simple.xls'),
+                                    in_tst_output_dir('less_simple.xls'),
+                                    shallow=False))
+
+    def test_font_compression(self):
+        wb, ws = self.create_simple_xls(style_compression = 2)
+        wb.save(in_tst_output_dir('simple.xls'), )
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/tests/test_unicode1.py 
new/xlwt-1.3.0/tests/test_unicode1.py
--- old/xlwt-1.2.0/tests/test_unicode1.py       2017-01-04 17:16:40.000000000 
+0100
+++ new/xlwt-1.3.0/tests/test_unicode1.py       2017-08-22 08:46:08.000000000 
+0200
@@ -1,40 +1,40 @@
-import os
-import unittest
-import filecmp
-
-import xlwt
-
-from utils import in_tst_dir, in_tst_output_dir
-
-def create_example_xls(filename):
-    w = xlwt.Workbook()
-    ws1 = w.add_sheet(u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER 
BETA}\N{GREEK SMALL LETTER GAMMA}')
-
-    ws1.write(0, 0, u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER 
BETA}\N{GREEK SMALL LETTER GAMMA}')
-    ws1.write(1, 1, u'\N{GREEK SMALL LETTER DELTA}x = 1 + \N{GREEK SMALL 
LETTER DELTA}')
-
-    ws1.write(2,0, u'A\u2262\u0391.')     # RFC2152 example
-    ws1.write(3,0, u'Hi Mom -\u263a-!')   # RFC2152 example
-    ws1.write(4,0, u'\u65E5\u672C\u8A9E') # RFC2152 example
-    ws1.write(5,0, u'Item 3 is \u00a31.') # RFC2152 example
-    ws1.write(8,0, u'\N{INTEGRAL}')       # RFC2152 example
-
-    w.add_sheet(u'A\u2262\u0391.')     # RFC2152 example
-    w.add_sheet(u'Hi Mom -\u263a-!')   # RFC2152 example
-    one_more_ws = w.add_sheet(u'\u65E5\u672C\u8A9E') # RFC2152 example
-    w.add_sheet(u'Item 3 is \u00a31.') # RFC2152 example
-
-    one_more_ws.write(0, 0, u'\u2665\u2665')
-
-    w.add_sheet(u'\N{GREEK SMALL LETTER ETA WITH TONOS}')
-    w.save(filename)
-
-EXAMPLE_XLS = 'unicode1.xls'
-
-class TestUnicode1(unittest.TestCase):
-
-    def test_example_xls(self):
-        create_example_xls(in_tst_output_dir(EXAMPLE_XLS))
-        self.assertTrue(filecmp.cmp(in_tst_dir(EXAMPLE_XLS),
-                                    in_tst_output_dir(EXAMPLE_XLS),
-                                    shallow=False))
+import os
+import unittest
+import filecmp
+
+import xlwt
+
+from utils import in_tst_dir, in_tst_output_dir
+
+def create_example_xls(filename):
+    w = xlwt.Workbook()
+    ws1 = w.add_sheet(u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER 
BETA}\N{GREEK SMALL LETTER GAMMA}')
+
+    ws1.write(0, 0, u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER 
BETA}\N{GREEK SMALL LETTER GAMMA}')
+    ws1.write(1, 1, u'\N{GREEK SMALL LETTER DELTA}x = 1 + \N{GREEK SMALL 
LETTER DELTA}')
+
+    ws1.write(2,0, u'A\u2262\u0391.')     # RFC2152 example
+    ws1.write(3,0, u'Hi Mom -\u263a-!')   # RFC2152 example
+    ws1.write(4,0, u'\u65E5\u672C\u8A9E') # RFC2152 example
+    ws1.write(5,0, u'Item 3 is \u00a31.') # RFC2152 example
+    ws1.write(8,0, u'\N{INTEGRAL}')       # RFC2152 example
+
+    w.add_sheet(u'A\u2262\u0391.')     # RFC2152 example
+    w.add_sheet(u'Hi Mom -\u263a-!')   # RFC2152 example
+    one_more_ws = w.add_sheet(u'\u65E5\u672C\u8A9E') # RFC2152 example
+    w.add_sheet(u'Item 3 is \u00a31.') # RFC2152 example
+
+    one_more_ws.write(0, 0, u'\u2665\u2665')
+
+    w.add_sheet(u'\N{GREEK SMALL LETTER ETA WITH TONOS}')
+    w.save(filename)
+
+EXAMPLE_XLS = 'unicode1.xls'
+
+class TestUnicode1(unittest.TestCase):
+
+    def test_example_xls(self):
+        create_example_xls(in_tst_output_dir(EXAMPLE_XLS))
+        self.assertTrue(filecmp.cmp(in_tst_dir(EXAMPLE_XLS),
+                                    in_tst_output_dir(EXAMPLE_XLS),
+                                    shallow=False))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/tests/test_unicodeutils.py 
new/xlwt-1.3.0/tests/test_unicodeutils.py
--- old/xlwt-1.2.0/tests/test_unicodeutils.py   2017-01-04 17:16:40.000000000 
+0100
+++ new/xlwt-1.3.0/tests/test_unicodeutils.py   2017-08-22 08:46:08.000000000 
+0200
@@ -1,33 +1,37 @@
-# coding:utf-8
-
-import sys
-import unittest
-
-from xlwt.UnicodeUtils import upack1, upack2
-
-class TestUpack(unittest.TestCase):
-    def test_upack1(self):
-        result = b'\x1d\x00abcdefghijklmnopqrstuvwxyz\xd6\xc4\xdc'
-        ustr = upack1(u"abcdefghijklmnopqrstuvwxyzÖÄÜ")
-        self.assertEqual(ustr, result)
-
-    def test_upack2_ascii(self):
-        result = b'\x1d\x00\x00abcdefghijklmnopqrstuvwxyz\xd6\xc4\xdc'
-        ustr = upack2(u"abcdefghijklmnopqrstuvwxyzÖÄÜ")
-        self.assertEqual(ustr, result)
-
-    def test_upack2_latin1(self):
-        result = b'\x1d\x00\x00abcdefghijklmnopqrstuvwxyz\xd6\xc4\xdc'
-        ustr = upack2(u"abcdefghijklmnopqrstuvwxyzÖÄÜ", encoding='latin1')
-        self.assertEqual(ustr, result)
-
-    def test_upack2_cp1251(self):
-        result = b'\x1d\x00\x00abcdefghijklmnopqrstuvwxyz\xce\xeb\xff'
-        ustr = upack2(u"abcdefghijklmnopqrstuvwxyz\xce\xeb\xff", 
encoding='cp1251')
-        self.assertEqual(ustr, result)
-
-    def test_unicode(self):
-        chr_ = chr if (sys.version_info[0] >= 3) else unichr
-        result = 
b'\x00\x02\x01\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\t\x00\n\x00\x0b\x00\x0c\x00\r\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00
 
\x00!\x00"\x00#\x00$\x00%\x00&\x00\'\x00(\x00)\x00*\x00+\x00,\x00-\x00.\x00/\x000\x001\x002\x003\x004\x005\x006\x007\x008\x009\x00:\x00;\x00<\x00=\x00>\x00?\x00@\x00A\x00B\x00C\x00D\x00E\x00F\x00G\x00H\x00I\x00J\x00K\x00L\x00M\x00N\x00O\x00P\x00Q\x00R\x00S\x00T\x00U\x00V\x00W\x00X\x00Y\x00Z\x00[\x00\\\x00]\x00^\x00_\x00`\x00a\x00b\x00c\x00d\x00e\x00f\x00g\x00h\x00i\x00j\x00k\x00l\x00m\x00n\x00o\x00p\x00q\x00r\x00s\x00t\x00u\x00v\x00w\x00x\x00y\x00z\x00{\x00|\x00}\x00~\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\x07\x01\x08\x01\t\x01\n\x01\x0b\x01\x0c\x01\r\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01
 
\x01!\x01"\x01#\x01$\x01%\x01&\x01\'\x01(\x01)\x01*\x01+\x01,\x01-\x01.\x01/\x010\x011\x012\x013\x014\x015\x016\x017\x018\x019\x01:\x01;\x01<\x01=\x01>\x01?\x01@\x01A\x01B\x01C\x01D\x01E\x01F\x01G\x01H\x01I\x01J\x01K\x01L\x01M\x01N\x01O\x01P\x01Q\x01R\x01S\x01T\x01U\x01V\x01W\x01X\x01Y\x01Z\x01[\x01\\\x01]\x01^\x01_\x01`\x01a\x01b\x01c\x01d\x01e\x01f\x01g\x01h\x01i\x01j\x01k\x01l\x01m\x01n\x01o\x01p\x01q\x01r\x01s\x01t\x01u\x01v\x01w\x01x\x01y\x01z\x01{\x01|\x01}\x01~\x01\x7f\x01\x80\x01\x81\x01\x82\x01\x83\x01\x84\x01\x85\x01\x86\x01\x87\x01\x88\x01\x89\x01\x8a\x01\x8b\x01\x8c\x01\x8d\x01\x8e\x01\x8f\x01\x90\x01\x91\x01\x92\x01\x93\x01\x94\x01\x95\x01\x96\x01\x97\x01\x98\x01\x99\x01\x9a\x01\x9b\x01\x9c\x01\x9d\x01\x9e\x01\x9f\x01\xa0\x01\xa1\x01\xa2\x01\xa3\x01\xa4\x01\xa5\x01\xa6\x01\xa7\x01\xa8\x01\xa9\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xae\x01\xaf\x01\xb0\x01\xb1\x01\xb2\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xb8\x01\xb9\x01\xba\x01\xbb\x01\xbc\x01\xbd\x01\xbe\x01\xbf\x01\xc0\x01\xc1\x01\xc2\x01\xc3\x01\xc4\x01\xc5\x01\xc6\x01\xc7\x01\xc8\x01\xc9\x01\xca\x01\xcb\x01\xcc\x01\xcd\x01\xce\x01\xcf\x01\xd0\x01\xd1\x01\xd2\x01\xd3\x01\xd4\x01\xd5\x01\xd6\x01\xd7\x01\xd8\x01\xd9\x01\xda\x01\xdb\x01\xdc\x01\xdd\x01\xde\x01\xdf\x01\xe0\x01\xe1\x01\xe2\x01\xe3\x01\xe4\x01\xe5\x01\xe6\x01\xe7\x01\xe8\x01\xe9\x01\xea\x01\xeb\x01\xec\x01\xed\x01\xee\x01\xef\x01\xf0\x01\xf1\x01\xf2\x01\xf3\x01\xf4\x01\xf5\x01\xf6\x01\xf7\x01\xf8\x01\xf9\x01\xfa\x01\xfb\x01\xfc\x01\xfd\x01\xfe\x01\xff\x01'
-        unicodestring = ''.join( [chr_(i) for i in range(0x200)])
-        self.assertEqual(result, upack2(unicodestring))
+# coding:utf-8
+
+import sys
+import unittest
+
+from xlwt.UnicodeUtils import upack1, upack2, upack2rt
+
+class TestUpack(unittest.TestCase):
+    def test_upack1(self):
+        result = b'\x1d\x00abcdefghijklmnopqrstuvwxyz\xd6\xc4\xdc'
+        ustr = upack1(u"abcdefghijklmnopqrstuvwxyzÖÄÜ")
+        self.assertEqual(ustr, result)
+
+    def test_upack2_ascii(self):
+        result = b'\x1d\x00\x00abcdefghijklmnopqrstuvwxyz\xd6\xc4\xdc'
+        ustr = upack2(u"abcdefghijklmnopqrstuvwxyzÖÄÜ")
+        self.assertEqual(ustr, result)
+
+    def test_upack2_latin1(self):
+        result = b'\x1d\x00\x00abcdefghijklmnopqrstuvwxyz\xd6\xc4\xdc'
+        ustr = upack2(u"abcdefghijklmnopqrstuvwxyzÖÄÜ", encoding='latin1')
+        self.assertEqual(ustr, result)
+
+    def test_upack2_cp1251(self):
+        result = b'\x1d\x00\x00abcdefghijklmnopqrstuvwxyz\xce\xeb\xff'
+        ustr = upack2(u"abcdefghijklmnopqrstuvwxyz\xce\xeb\xff", 
encoding='cp1251')
+        self.assertEqual(ustr, result)
+
+    def test_unicode(self):
+        chr_ = chr if (sys.version_info[0] >= 3) else unichr
+        result = 
b'\x00\x02\x01\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\t\x00\n\x00\x0b\x00\x0c\x00\r\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00
 
\x00!\x00"\x00#\x00$\x00%\x00&\x00\'\x00(\x00)\x00*\x00+\x00,\x00-\x00.\x00/\x000\x001\x002\x003\x004\x005\x006\x007\x008\x009\x00:\x00;\x00<\x00=\x00>\x00?\x00@\x00A\x00B\x00C\x00D\x00E\x00F\x00G\x00H\x00I\x00J\x00K\x00L\x00M\x00N\x00O\x00P\x00Q\x00R\x00S\x00T\x00U\x00V\x00W\x00X\x00Y\x00Z\x00[\x00\\\x00]\x00^\x00_\x00`\x00a\x00b\x00c\x00d\x00e\x00f\x00g\x00h\x00i\x00j\x00k\x00l\x00m\x00n\x00o\x00p\x00q\x00r\x00s\x00t\x00u\x00v\x00w\x00x\x00y\x00z\x00{\x00|\x00}\x00~\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\x07\x01\x08\x01\t\x01\n\x01\x0b\x01\x0c\x01\r\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01
 
\x01!\x01"\x01#\x01$\x01%\x01&\x01\'\x01(\x01)\x01*\x01+\x01,\x01-\x01.\x01/\x010\x011\x012\x013\x014\x015\x016\x017\x018\x019\x01:\x01;\x01<\x01=\x01>\x01?\x01@\x01A\x01B\x01C\x01D\x01E\x01F\x01G\x01H\x01I\x01J\x01K\x01L\x01M\x01N\x01O\x01P\x01Q\x01R\x01S\x01T\x01U\x01V\x01W\x01X\x01Y\x01Z\x01[\x01\\\x01]\x01^\x01_\x01`\x01a\x01b\x01c\x01d\x01e\x01f\x01g\x01h\x01i\x01j\x01k\x01l\x01m\x01n\x01o\x01p\x01q\x01r\x01s\x01t\x01u\x01v\x01w\x01x\x01y\x01z\x01{\x01|\x01}\x01~\x01\x7f\x01\x80\x01\x81\x01\x82\x01\x83\x01\x84\x01\x85\x01\x86\x01\x87\x01\x88\x01\x89\x01\x8a\x01\x8b\x01\x8c\x01\x8d\x01\x8e\x01\x8f\x01\x90\x01\x91\x01\x92\x01\x93\x01\x94\x01\x95\x01\x96\x01\x97\x01\x98\x01\x99\x01\x9a\x01\x9b\x01\x9c\x01\x9d\x01\x9e\x01\x9f\x01\xa0\x01\xa1\x01\xa2\x01\xa3\x01\xa4\x01\xa5\x01\xa6\x01\xa7\x01\xa8\x01\xa9\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xae\x01\xaf\x01\xb0\x01\xb1\x01\xb2\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xb8\x01\xb9\x01\xba\x01\xbb\x01\xbc\x01\xbd\x01\xbe\x01\xbf\x01\xc0\x01\xc1\x01\xc2\x01\xc3\x01\xc4\x01\xc5\x01\xc6\x01\xc7\x01\xc8\x01\xc9\x01\xca\x01\xcb\x01\xcc\x01\xcd\x01\xce\x01\xcf\x01\xd0\x01\xd1\x01\xd2\x01\xd3\x01\xd4\x01\xd5\x01\xd6\x01\xd7\x01\xd8\x01\xd9\x01\xda\x01\xdb\x01\xdc\x01\xdd\x01\xde\x01\xdf\x01\xe0\x01\xe1\x01\xe2\x01\xe3\x01\xe4\x01\xe5\x01\xe6\x01\xe7\x01\xe8\x01\xe9\x01\xea\x01\xeb\x01\xec\x01\xed\x01\xee\x01\xef\x01\xf0\x01\xf1\x01\xf2\x01\xf3\x01\xf4\x01\xf5\x01\xf6\x01\xf7\x01\xf8\x01\xf9\x01\xfa\x01\xfb\x01\xfc\x01\xfd\x01\xfe\x01\xff\x01'
+        unicodestring = ''.join( [chr_(i) for i in range(0x200)])
+        self.assertEqual(result, upack2(unicodestring))
+
+    def test_upack2rt(self):
+        result = 
b'\x06\x00\x09\x01\x00a\x00b\x00c\x00\x91\x03\x92\x03\x93\x03', 
b'\x00\x00\x0C\x00'
+        self.assertEqual(result, upack2rt([(u'abcΑΒΓ', 12)]))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/tox.ini new/xlwt-1.3.0/tox.ini
--- old/xlwt-1.2.0/tox.ini      2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/tox.ini      2017-08-22 08:46:08.000000000 +0200
@@ -4,7 +4,7 @@
 # and then run "tox" from this directory.
 
 [tox]
-envlist = py35, py34, py33, py27, py26
+envlist = py36, py35, py34, py33, py27, py26
 
 [testenv]
 commands = 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/xlwt/BIFFRecords.py 
new/xlwt-1.3.0/xlwt/BIFFRecords.py
--- old/xlwt-1.2.0/xlwt/BIFFRecords.py  2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/xlwt/BIFFRecords.py  2017-08-22 08:46:08.000000000 +0200
@@ -68,7 +68,7 @@
         self._continues = [None, None]
         self._current_piece = pack('<II', 0, 0)
         data = [(idx, s) for s, idx in iteritems(self._str_indexes)]
-        data.extend([(idx, s) for s, idx in iteritems(self._rt_indexes)])
+        data.extend((idx, s) for s, idx in iteritems(self._rt_indexes))
         data.sort() # in index order
         for idx, s in data:
             if self._tally[idx] == 0:
@@ -2382,7 +2382,7 @@
             else: # ExternSheetRecord
                 header = pack("<HHH", self._REC_ID, 6 * krefs + 2, nrefs)
             res.append(header)
-            res.extend([pack("<HHH", *r) for r in chunk])
+            res.extend(pack("<HHH", *r) for r in chunk)
         return b''.join(res)
 
 class SupBookRecord(BiffRecord):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/xlwt/Cell.py new/xlwt-1.3.0/xlwt/Cell.py
--- old/xlwt-1.2.0/xlwt/Cell.py 2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/xlwt/Cell.py 2017-08-22 08:46:08.000000000 +0200
@@ -224,7 +224,7 @@
                 # MULRK record
                 nc = lastcolx - icolx + 1
                 pieces.append(pack('<4H', 0x00BD, 6 * nc + 6, rowx, icolx))
-                pieces.append(b''.join([pack('<Hi', xf_idx, value) for value, 
xf_idx in muldata]))
+                pieces.append(b''.join(pack('<Hi', xf_idx, value) for value, 
xf_idx in muldata))
                 pieces.append(pack('<H', lastcolx))
         else:
             if lastcolx == icolx:
@@ -235,7 +235,7 @@
                 # MULBLANK record
                 nc = lastcolx - icolx + 1
                 pieces.append(pack('<4H', 0x00BE, 2 * nc + 6, rowx, icolx))
-                pieces.append(b''.join([pack('<H', xf_idx) for xf_idx in 
muldata]))
+                pieces.append(b''.join(pack('<H', xf_idx) for xf_idx in 
muldata))
                 pieces.append(pack('<H', lastcolx))
         if packed_record:
             pieces.append(packed_record)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/xlwt/ExcelFormulaLexer.py 
new/xlwt-1.3.0/xlwt/ExcelFormulaLexer.py
--- old/xlwt-1.2.0/xlwt/ExcelFormulaLexer.py    2017-01-04 17:16:40.000000000 
+0100
+++ new/xlwt-1.3.0/xlwt/ExcelFormulaLexer.py    2017-08-22 08:46:08.000000000 
+0200
@@ -49,7 +49,7 @@
 )
 
 _re = recompile(
-    '(' + ')|('.join([i[0] for i in pattern_type_tuples]) + ')',
+    '(' + ')|('.join(i[0] for i in pattern_type_tuples) + ')',
     VERBOSE+IGNORECASE)
 
 _toktype = [None] + [i[1] for i in pattern_type_tuples]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/xlwt/Row.py new/xlwt-1.3.0/xlwt/Row.py
--- old/xlwt-1.2.0/xlwt/Row.py  2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/xlwt/Row.py  2017-08-22 08:46:08.000000000 +0200
@@ -1,5 +1,6 @@
 # -*- coding: windows-1252 -*-
 
+from decimal import Decimal
 from . import BIFFRecords
 from . import Style
 from .Cell import StrCell, BlankCell, NumberCell, FormulaCell, MulBlankCell, 
BooleanCell, ErrorCell, \
@@ -9,13 +10,6 @@
 from .Formatting import Font
 from .compat import basestring, xrange, int_types, iteritems
 
-try:
-    from decimal import Decimal
-except ImportError:
-    # Python 2.3: decimal not supported; create dummy Decimal class
-    class Decimal(object):
-        pass
-
 
 class Row(object):
     __slots__ = [# private variables
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/xlwt/Style.py new/xlwt-1.3.0/xlwt/Style.py
--- old/xlwt-1.2.0/xlwt/Style.py        2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/xlwt/Style.py        2017-08-22 08:46:08.000000000 +0200
@@ -130,7 +130,7 @@
             xf_index = self._xf_id2x[xf]
             self.stats[3] += 1
         elif self.style_compression == 2:
-            xf_key = (font_idx, num_format_idx) + tuple([obj._search_key() for 
obj in gof])
+            xf_key = (font_idx, num_format_idx) + tuple(obj._search_key() for 
obj in gof)
             xf_index = self._xf_val2x.get(xf_key)
             if xf_index is not None:
                 self._xf_id2x[xf] = xf_index
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/xlwt/UnicodeUtils.py 
new/xlwt-1.3.0/xlwt/UnicodeUtils.py
--- old/xlwt-1.2.0/xlwt/UnicodeUtils.py 2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/xlwt/UnicodeUtils.py 2017-08-22 08:46:08.000000000 +0200
@@ -72,7 +72,7 @@
 
 def upack2rt(rt, encoding='ascii'):
     us = u''
-    fr = ''
+    fr = b''
     offset = 0
     # convert rt strings to unicode if not already unicode
     # also generate the formatting run for the styles added
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/xlwt/Worksheet.py 
new/xlwt-1.3.0/xlwt/Worksheet.py
--- old/xlwt-1.2.0/xlwt/Worksheet.py    2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/xlwt/Worksheet.py    2017-08-22 08:46:08.000000000 +0200
@@ -1168,14 +1168,14 @@
 
     def __update_row_visible_levels(self):
         if self.__rows:
-            temp = max([self.__rows[r].level for r in self.__rows]) + 1
+            temp = max(self.__rows[r].level for r in self.__rows) + 1
             self.__row_visible_levels = max(temp, self.__row_visible_levels)
 
     def __guts_rec(self):
         self.__update_row_visible_levels()
         col_visible_levels = 0
         if len(self.__cols) != 0:
-            col_visible_levels = max([self.__cols[c].level for c in 
self.__cols]) + 1
+            col_visible_levels = max(self.__cols[c].level for c in 
self.__cols) + 1
         return BIFFRecords.GutsRecord(
             self.__row_gut_width, self.__col_gut_height, 
self.__row_visible_levels, col_visible_levels).get()
 
@@ -1397,7 +1397,7 @@
             # Above seek() is necessary to avoid a spurious IOError
             # with Errno 0 if the caller continues on writing rows
             # and flushing row data after the save().
-            # See http://bugs.python.org/issue3207
+            # See https://bugs.python.org/issue3207
         result.extend([
             self.__row_blocks_rec(),
             self.__merged_rec(),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/xlwt/__init__.py 
new/xlwt-1.3.0/xlwt/__init__.py
--- old/xlwt-1.2.0/xlwt/__init__.py     2017-01-04 17:16:40.000000000 +0100
+++ new/xlwt-1.3.0/xlwt/__init__.py     2017-08-22 08:46:08.000000000 +0200
@@ -1,4 +1,4 @@
-__VERSION__ = '1.2.0'
+__VERSION__ = '1.3.0'
 
 from .Workbook import Workbook
 from .Worksheet import Worksheet
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xlwt-1.2.0/xlwt.egg-info/PKG-INFO 
new/xlwt-1.3.0/xlwt.egg-info/PKG-INFO
--- old/xlwt-1.2.0/xlwt.egg-info/PKG-INFO       2017-01-04 17:17:15.000000000 
+0100
+++ new/xlwt-1.3.0/xlwt.egg-info/PKG-INFO       2017-08-22 08:47:13.000000000 
+0200
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: xlwt
-Version: 1.2.0
+Version: 1.3.0
 Summary: Library to create spreadsheet files compatible with MS Excel 
97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2.7, 3.3+
 Home-page: http://www.python-excel.org/
 Author: John Machin
 Author-email: [email protected]
 License: BSD
-Download-URL: http://pypi.python.org/pypi/xlwt
+Download-URL: https://pypi.python.org/pypi/xlwt
 Description: |Travis|_ |Coveralls|_ |Docs|_ |PyPI|_
         
         .. |Travis| image:: 
https://api.travis-ci.org/python-excel/xlwt.svg?branch=master
@@ -16,7 +16,7 @@
         .. _Coveralls: https://coveralls.io/r/python-excel/xlwt?branch=master
         
         .. |Docs| image:: 
https://readthedocs.org/projects/xlwt/badge/?version=latest
-        .. _Docs: http://xlwt.readthedocs.org/en/latest/
+        .. _Docs: https://xlwt.readthedocs.org/en/latest/
         
         .. |PyPI| image:: https://badge.fury.io/py/xlwt.svg
         .. _PyPI: https://badge.fury.io/py/xlwt
@@ -30,6 +30,9 @@
         The package itself is pure Python with no dependencies on modules or 
packages
         outside the standard Python distribution.
         
+        Please read this before using this package:
+        https://groups.google.com/d/msg/python-excel/P6TjJgFVjMI/g8d0eWxTBQAJ
+        
         Installation
         ============
         
@@ -69,7 +72,7 @@
         examples directory and the source code itself.
         
         The latest documentation can also be found at:
-        http://xlwt.readthedocs.org/en/latest/
+        https://xlwt.readthedocs.org/en/latest/
         
         Problems?
         =========
@@ -77,7 +80,7 @@
         
         - Read the source
         
-        - Ask a question on http://groups.google.com/group/python-excel/
+        - Ask a question on https://groups.google.com/group/python-excel/
         
         Acknowledgements
         ================
@@ -100,9 +103,9 @@
 Classifier: Topic :: Database
 Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI 
Tools/Libraries
 Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.3
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6


Reply via email to