Commits

Christian Tismer  committed 6855193

changes to make the upload to PyPi work

  • Participants
  • Parent commits 123939c

Comments (0)

Files changed (5)

 
 _cache
 
+dist
+
 syntax: regexp
 ^.Python$
 
 ^doc/eggs/
 ^doc/make\.bat
 ^doc/Makefile
-^doc/parts/
+^doc/parts/
+include *.txt *.rst
+recursive-include tiffany *.txt *.py *.tiff
+
+# coding=utf-8
+
 Tiffany - Read/Write Multipage-Tiff with PIL without PIL
 ========================================================
 
 *PySide (Qt)* does support Tiff, but only shows the first page. We also had
 to support Fax compression (CCITT G3/G4), but *Qt* supports this.
 
-Als erster Ansatz wurden einzelne Seiten aus der Tiff-Quelle mit *tiffcp*
-oder *tiffutil* (OS X) temporär kopiert und angezeigt. Eine suboptimale
-Lösung, insbesondere aus Datenschutzgründen.
+As a first approach we copied single pages out of multi-page tiff files
+using *tiffcp* or *tiffutil* (OS X) as a temp file for display. A sub-optimum
+solution, especially for data security reasons.
 
-Der zweite Ansatz löste dies ab durch eine kleine Modifikation der Verkettung
-der Tiff-Directories. Dadurch konnte eine Tiff-Datei im Speicher gepatcht
-und so auf die richtige Seite positioniert und dann angezeigt werden.
+The second approach replaced this by a tiny modification of the linkage of
+the tiff directories (IFD). This way, a tiff file could be patched in memory
+with the wanted page offset and then be shown without any files involved.
 
-Aber auch diese Lösung bleibt unbefriedigend:
+Unfortunately also this solution was not satisfactory:
 
-- unsere Tiff-Dateien haben Ungereimtheiten in den Tiff-Tags wie zuviele Null-Bytes
-  und falsche Tag-Reihenfolge,
+- out tiff files have anomalies in their tiff tags like too many null-bytes
+  and wrong tag order,
 
-- Qt's Implementierung von Tiff ist über-pedantisch und ignoriert beim kleinsten
-  Fehler alle Tiff-Tags.
+- Qt's implementation of tiff is over-pedantic and ignores all tags after the
+  smalles error.
+  
+Being a good friend of *Fredrik Lundh* and his *PIL* since years, I tried to
+attach the problem using this. Sadly Fredrik hasn't worked much on this since
+2006, and the situation is slightly messed up:
 
-Als langjahriger Freund von *Fredrik Lundh* und seinem *PIL* versuchte ich das
-Problem damit anzugehen. Leider hat Fredrik seit 2006 kaum mehr daran
-weitergearbeitet, und die Situation ist leicht verfahren:
+*PIL* has a clean-up of tiff tags, but cannot cope with fax compression by default.
+There exists a patch since many years, but this complicates the build process
+and pulls with *libtiff* a lot of dependencies in.
 
-*PIL* verfügt über eine Bereinigung der Tiff-Tags, kommt aber nicht mit der
-Fax-Kompression zurecht. Es gibt seit langem einen Patch dafür, jedoch ist
-der Build-Prozess erschwert und zieht mit *libtiff* eine Kette von Abhängigkeiten
-nach sich. Ich werde unter Anderem *Pillow*, Patches und andere Wege ansprechen.
+Furthermore, *PIL* is unable to write fax compressed files, but blows the data
+up to the full size, making this approach only a half solution as well.
 
-Des weiteren kann *PIL* keine Fax-komprimierten Dateien schreiben sondern bläht
-diese unnötig auf, sodass auch dieser Ansatz eine halbe Lösung bleibt.
+After a longer odyssey I saw then the light of a Tiffany lamp:
 
-Nach einer längeren Odyssee ging mir dann eine Tiffany-Lampe auf:
+I use only a hand-full of *PIL*s files, without any modification, pretend to unpack
+a tiff file, but actually cheating. Only the tiff tags are nicely processed and
+streamlined, but the compressed data is taken unmodified as-is.
+When writing a tiff page out, the existing data is just assembled in the correct
+order.
 
-Ich benutze einige wenige Dateien aus *PIL* ohne diese zu verändern und täusche
-vor, die Tiff-Dateien zu entpacken, aber tue es nicht. Es werden lediglich die
-Tiff-Tags ordentlich aufbereitet. Die komprimierten Daten werden so übernommen
-wie sie sind. Beim Schreiben von Dateien werden daher lediglich die vorhandenen
-Daten in anderer Reihenfolge wieder zusammengesetzt.
+For many projects like *didoca* that are processing tiff files without editing
+their contents, this is a complete solution of their tiff problem. The dependencies
+of the project stay minimal, there are no binaries required, and Tiffany is with
+less than 300 lines remarkably small.
 
-Für Projekte wie *DiDoCa*, die zwar Tiff-Dateien verarbeiten, aber nicht inhaltlich
-ändern wollen, ist damit das Tiff-Problem vollständig gelöst. Die Abhängigkeiten
-des Projekts bleiben minimal, es werden keine Binaries benötigt, und Tiffany ist
-als Monkey-Patch mit unter 300 Zeilen rekordverdächtig klein.
+Because just 5 files from *PIL* are used and the _imaging module is not compiled
+at all, I'm talking about "PIL without PIL ;-)
 
-Da hier nur 5 *PIL*-Dateien benutzt werden, aber das _imaging Modul überhaupt nicht
-übersetzt werden muss, spreche ich von "PIL ohne PIL" ;-).
-Tiffany ist ein eigenständiges Modul und interferiert nicht mit einer
-*PIL*-Installation.
+Tiffany is a stand-alone module and has no interference with *PIL*.
+You can see this by looking at ``import_mapper.py``. This module modifies ``__import__``
+so that the *PIL* modules appear as top-level internally, but become sub-modules of
+tiffany in ``sys.modules``.
 
-Im Vortrag werde ich die Implementierung vorstellen sowie weitere Alternativen,
-die Zukunft von *PIL*
-sowie auf weitere Tips und Kniffe in unserem Projekt eingehen.
+Please let me know if this stuff works for you, and send requests to
+<tismer@stackless.com> or use the links in the bitbucket website:
 
-Keywords
-========
-PIL, Monkey-Patching, Multipage-TIFF, FAX-G3/G4, Distributed Document Capture
+https://bitbucket.org/didoca/tiffany
 
     version = "0.3",
     author = "Christian Tismer",
     author_email = "tismer@stackless.com",
-    description = ("Tiffany -- read/write/arrange any multipage Tiff, any compression"),
+    description = ("Tiffany -- read/write/arrange any multi-page Tiff, any compression"),
     license = "PSF",
-    keywords = "tiff monkeypatch PIL didoca",
+    keywords = "tiff fax G3/G4 multi-page monkeypatch PIL didoca",
     url = "https://bitbucket.org/ctismer/tiffany",
-    packages=['tiffany'],
-    package_data={'': ['from-pil/*.py', '../README.rst']},
+    download_url = "",
+    test_suite = 'tiffany.test_tiffany',
+    packages=['tiffany'],#, 'tiffany/from-pil', 'tiffany/test', 'tiffany/test/data'],
     long_description=read('README.rst'),
-    classifiers=[
-        "Programming Language :: Python",
-        "Topic :: Software Development :: Libraries :: Python Modules",     
-        "Development Status :: 5 - Production/Stable",
-        "Environment :: X11 Applications :: Qt",
-        "License :: OSI Approved :: Python Software Foundation License",
-        "Intended Audience :: End Users/Desktop",
-        "Intended Audience :: Developers",
-        "Natural Language :: English",
-    ],
-    include_package_data=True,
-    zip_safe=False,
-    install_requires=[
+    # note that this _must_ be README or README.txt :-(
+    # unless you use a MANIFEST.in file :-)
+    classifiers = [f.strip() for f in """
+        Programming Language :: Python
+        Topic :: Software Development :: Libraries :: Python Modules    
+        Development Status :: 5 - Production/Stable
+        Environment :: X11 Applications :: Qt
+        License :: OSI Approved :: Python Software Foundation License
+        Intended Audience :: End Users/Desktop
+        Intended Audience :: Developers
+        Natural Language :: English
+    """.splitlines() if f.strip()],
+    include_package_data = True,
+    zip_safe = False,
+    install_requires = [
         'setuptools',
         # -*- Extra requirements: -*-
     ],
-    entry_points="""
+    entry_points = '\n'.join(f.strip() for f in """
     # -*- Entry points: -*-
-    """,
+    """.splitlines() if f.strip()),
     )

File tiffany/test/test_tiffany.py

+#dummy for now