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
