[Checkins] SVN: zc.mirrorcheeseshopslashsimple/trunk/ better check for unicode/ascii package names

Andreas Jung andreas at andreas-jung.com
Tue Aug 12 07:43:49 EDT 2008


Log message for revision 89712:
  better check for unicode/ascii package names
  

Changed:
  U   zc.mirrorcheeseshopslashsimple/trunk/buildout.cfg
  U   zc.mirrorcheeseshopslashsimple/trunk/setup.py
  U   zc.mirrorcheeseshopslashsimple/trunk/src/zc/mirrorcheeseshopslashsimple.py
  A   zc.mirrorcheeseshopslashsimple/trunk/src/zc/tests.py
  A   zc.mirrorcheeseshopslashsimple/trunk/src/zc/util.py

-=-
Modified: zc.mirrorcheeseshopslashsimple/trunk/buildout.cfg
===================================================================
--- zc.mirrorcheeseshopslashsimple/trunk/buildout.cfg	2008-08-12 11:43:32 UTC (rev 89711)
+++ zc.mirrorcheeseshopslashsimple/trunk/buildout.cfg	2008-08-12 11:43:48 UTC (rev 89712)
@@ -1,8 +1,13 @@
 [buildout]
-parts = py
+parts = py test
 develop = .
 
 [py]
 recipe = zc.recipe.egg
 eggs = zc.mirrorcheeseshopslashsimple
 interpreter = py
+
+
+[test]
+recipe = zc.recipe.testrunner
+eggs = zc.mirrorcheeseshopslashsimple

Modified: zc.mirrorcheeseshopslashsimple/trunk/setup.py
===================================================================
--- zc.mirrorcheeseshopslashsimple/trunk/setup.py	2008-08-12 11:43:32 UTC (rev 89711)
+++ zc.mirrorcheeseshopslashsimple/trunk/setup.py	2008-08-12 11:43:48 UTC (rev 89712)
@@ -2,7 +2,7 @@
 
 setup(
     name='zc.mirrorcheeseshopslashsimple',
-    version='0.2',
+    version='0.3',
     package_dir = {'': 'src'},
     install_requires = ['zc.lockfile'],
     entry_points = dict(console_scripts=[

Modified: zc.mirrorcheeseshopslashsimple/trunk/src/zc/mirrorcheeseshopslashsimple.py
===================================================================
--- zc.mirrorcheeseshopslashsimple/trunk/src/zc/mirrorcheeseshopslashsimple.py	2008-08-12 11:43:32 UTC (rev 89711)
+++ zc.mirrorcheeseshopslashsimple/trunk/src/zc/mirrorcheeseshopslashsimple.py	2008-08-12 11:43:48 UTC (rev 89712)
@@ -15,6 +15,7 @@
 import ConfigParser
 import os, sys, time, urllib, urllib2, xmlrpclib
 import zc.lockfile
+import util
 
 lock_file_path = 'pypi-poll-access.lock'
 poll_time_path = 'pypi-poll-timestamp'
@@ -41,9 +42,8 @@
     return tuple(config.sections())
 
 def get_page(dest, package, force=False):
-    try:
-        package.decode('ascii')
-    except UnicodeEncodeError:
+
+    if not util.isASCII(package):
         print 'skipping %r which has a non-ascii name' % `package`
         return
 

Added: zc.mirrorcheeseshopslashsimple/trunk/src/zc/tests.py
===================================================================
--- zc.mirrorcheeseshopslashsimple/trunk/src/zc/tests.py	                        (rev 0)
+++ zc.mirrorcheeseshopslashsimple/trunk/src/zc/tests.py	2008-08-12 11:43:48 UTC (rev 89712)
@@ -0,0 +1,27 @@
+# *-* coding: iso-8859-15 *-*
+
+"""
+Tests
+"""
+
+import unittest
+import util
+
+
+class UtilityTests(unittest.TestCase):
+
+    def testIsAscii(self):
+
+        self.assertEqual(util.isASCII('foo'), True)
+        self.assertEqual(util.isASCII(u'foo'), True)
+        self.assertEqual(util.isASCII('üöä'), False)
+        self.assertEqual(util.isASCII(u'üöä'), False)
+        self.assertRaises(TypeError, util.isASCII, 2)
+
+
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(UtilityTests))
+    return suite
+

Added: zc.mirrorcheeseshopslashsimple/trunk/src/zc/util.py
===================================================================
--- zc.mirrorcheeseshopslashsimple/trunk/src/zc/util.py	                        (rev 0)
+++ zc.mirrorcheeseshopslashsimple/trunk/src/zc/util.py	2008-08-12 11:43:48 UTC (rev 89712)
@@ -0,0 +1,22 @@
+
+
+def isASCII(s):
+    """ Checks if a string/unicode string contains only ASCII chars.  """
+
+    if isinstance(s, unicode):
+        try:
+            s.encode('ascii')
+            return True
+        except UnicodeError:
+            return False
+
+    elif isinstance(s, str):
+        try:
+            unicode(s, 'ascii')
+            return True
+        except UnicodeError:
+            return False
+
+    else:
+        raise TypeError('isASCII() requires a string or unicode string')
+



More information about the Checkins mailing list