[Checkins] SVN: hurry.filesize/ Initial import.

Martijn Faassen faassen at infrae.com
Wed Mar 11 17:47:19 EDT 2009


Log message for revision 97921:
  Initial import.
  

Changed:
  A   hurry.filesize/
  A   hurry.filesize/trunk/
  A   hurry.filesize/trunk/buildout.cfg
  A   hurry.filesize/trunk/setup.py
  A   hurry.filesize/trunk/src/
  A   hurry.filesize/trunk/src/hurry/
  A   hurry.filesize/trunk/src/hurry/__init__.py
  A   hurry.filesize/trunk/src/hurry/filesize/
  A   hurry.filesize/trunk/src/hurry/filesize/__init__.py
  A   hurry.filesize/trunk/src/hurry/filesize/filesize.py
  A   hurry.filesize/trunk/src/hurry/filesize/tests.py

-=-
Added: hurry.filesize/trunk/buildout.cfg
===================================================================
--- hurry.filesize/trunk/buildout.cfg	                        (rev 0)
+++ hurry.filesize/trunk/buildout.cfg	2009-03-11 21:47:19 UTC (rev 97921)
@@ -0,0 +1,9 @@
+[buildout]
+develop = . 
+parts = test
+newest = false
+
+[test]
+recipe = zc.recipe.testrunner
+eggs = hurry.filesize
+defaults = ['--tests-pattern', '^f?tests$', '-v']

Added: hurry.filesize/trunk/setup.py
===================================================================
--- hurry.filesize/trunk/setup.py	                        (rev 0)
+++ hurry.filesize/trunk/setup.py	2009-03-11 21:47:19 UTC (rev 97921)
@@ -0,0 +1,41 @@
+from setuptools import setup, find_packages
+import os
+
+def read(*rnames):
+    return open(os.path.join(os.path.dirname(__file__), *rnames)).read()
+
+#long_description = (
+#    read('src/hurry/file/README.txt')
+#    + '\n' +
+#    read('src/hurry/file/browser/file.txt')
+#    + '\n' + 
+#    read('CHANGES.txt')
+#    )
+
+setup(
+    name="hurry.filesize",
+    version="09ev",
+    description="""\
+hurry.filesize is a simple Python library to make display human readable
+sizes of files (or anything that is sized in bytes), in kilobytes, megabytes,
+etc.
+""",
+#    long_description=long_description,
+    classifiers=[
+        "Programming Language :: Python",
+        "Topic :: Software Development :: Libraries :: Python Modules",
+        ],
+    keywords='file size bytes',
+    author='Martijn Faassen, Startifact',
+    author_email='faassen at startifact.com',
+    url='',
+    license='ZPL 2.1',
+    packages=find_packages('src'),
+    package_dir= {'':'src'},
+    namespace_packages=['hurry'],
+    include_package_data=True,
+    zip_safe=False,
+    install_requires=[
+       'setuptools',
+       ],
+    )

Added: hurry.filesize/trunk/src/hurry/__init__.py
===================================================================
--- hurry.filesize/trunk/src/hurry/__init__.py	                        (rev 0)
+++ hurry.filesize/trunk/src/hurry/__init__.py	2009-03-11 21:47:19 UTC (rev 97921)
@@ -0,0 +1,7 @@
+# this is a namespace package
+try:
+    import pkg_resources
+    pkg_resources.declare_namespace(__name__)
+except ImportError:
+    import pkgutil
+    __path__ = pkgutil.extend_path(__path__, __name__)

Added: hurry.filesize/trunk/src/hurry/filesize/__init__.py
===================================================================
--- hurry.filesize/trunk/src/hurry/filesize/__init__.py	                        (rev 0)
+++ hurry.filesize/trunk/src/hurry/filesize/__init__.py	2009-03-11 21:47:19 UTC (rev 97921)
@@ -0,0 +1,3 @@
+from hurry.filesize.filesize import size
+
+

Added: hurry.filesize/trunk/src/hurry/filesize/filesize.py
===================================================================
--- hurry.filesize/trunk/src/hurry/filesize/filesize.py	                        (rev 0)
+++ hurry.filesize/trunk/src/hurry/filesize/filesize.py	2009-03-11 21:47:19 UTC (rev 97921)
@@ -0,0 +1,74 @@
+
+traditional = [
+    (1024 ** 5, 'P'),
+    (1024 ** 4, 'T'), 
+    (1024 ** 3, 'G'), 
+    (1024 ** 2, 'M'), 
+    (1024 ** 1, 'K'),
+    (1024 ** 0, 'B')
+    ]
+
+si = [
+    (1000 ** 5, 'P'),
+    (1000 ** 4, 'T'), 
+    (1000 ** 3, 'G'), 
+    (1000 ** 2, 'M'), 
+    (1000 ** 1, 'K'),
+    (1000 ** 0, 'B')
+    ]
+
+def size(bytes, system=traditional):
+    """Human-readable file size.
+
+    Using the traditional system, where a factor of 1024 is used::
+    
+    >>> size(10)
+    '10B'
+    >>> size(100)
+    '100B'
+    >>> size(1000)
+    '1000B'
+    >>> size(2000)
+    '1K'
+    >>> size(10000)
+    '9K'
+    >>> size(20000)
+    '19K'
+    >>> size(100000)
+    '97K'
+    >>> size(200000)
+    '195K'
+    >>> size(1000000)
+    '976K'
+    >>> size(2000000)
+    '1M'
+    
+    Using the SI system, with a factor 1000::
+
+    >>> size(10, system=si)
+    '10B'
+    >>> size(100, system=si)
+    '100B'
+    >>> size(1000, system=si)
+    '1K'
+    >>> size(2000, system=si)
+    '2K'
+    >>> size(10000, system=si)
+    '10K'
+    >>> size(20000, system=si)
+    '20K'
+    >>> size(100000, system=si)
+    '100K'
+    >>> size(200000, system=si)
+    '200K'
+    >>> size(1000000, system=si)
+    '1M'
+    >>> size(2000000, system=si)
+    '2M'
+    
+    """
+    for factor, suffix in system:
+        if bytes >= factor:
+            break
+    return str(int(bytes/factor)) + suffix
+

Added: hurry.filesize/trunk/src/hurry/filesize/tests.py
===================================================================
--- hurry.filesize/trunk/src/hurry/filesize/tests.py	                        (rev 0)
+++ hurry.filesize/trunk/src/hurry/filesize/tests.py	2009-03-11 21:47:19 UTC (rev 97921)
@@ -0,0 +1,6 @@
+import unittest, doctest
+
+def test_suite():
+    return unittest.TestSuite((
+        doctest.DocTestSuite('hurry.filesize.filesize'),
+        ))



More information about the Checkins mailing list