{ "info": { "author": "Filip Noetzel", "author_email": "filip+pypi@j03.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Other Environment", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "A command line tool that copies files to filenames based on their contents. It\nalso writes a map of what was renamed to what, so you can find your files.\n\nMain purpose of this is that you can `add a far future Expires header to your\ncomponents `__. Using hash based\nfilenames is a lot better than using your $VCS revision number, because users\nonly need to download files that didn't change.\n\n\n\n.. contents:: Table of Contents\n\nCreating some source files\n--------------------------\n\nFor this demo, we'll create a few directories, one for the maps to live, one\nfor the input files:\n\n>>> system(\"mkdir maps/\")\n>>> system(\"mkdir -p input/subdir/2nd/\")\n\nWe also create files that live in a sub- and subsubdirectories:\n\n>>> write(\"input/foo.txt\", \"foo\")\n>>> write(\"input/subdir/bar.txt\", \"bar\")\n>>> write(\"input/subdir/2nd/baz.txt\", \"foofoofoo\")\n\nSimple usage\n------------\n\n>>> system(\"hashedassets -v maps/map.txt input/*.txt input/*/*.txt output/\")\nmkdir 'output'\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\n\n>>> system(\"ls maps/\")\nmap.txt\n\n>>> print(open(\"maps/map.txt\").read())\nfoo.txt: C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt\nsubdir/bar.txt: Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt\n\n\n>>> system(\"ls output/\")\nC-7Hteo_D9vJXQ3UfzxbwnXaijM.txt\nYs23Ag_5IOWqZCw9QGaVDdHwH00.txt\n\nModification time is also preserved:\n\n>>> old_stat = os.stat(\"input/foo.txt\")\n>>> new_stat = os.stat(\"output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt\")\n>>> [(getattr(old_stat, prop) == getattr(new_stat, prop))\n... for prop in ('st_mtime', 'st_atime', 'st_ino',)]\n[True, True, False]\n\nIf you specify a directory as source, all files and subdirectories will be processed:\n\n>>> system(\"hashedassets -v maps/dirmap.txt input/ output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\ncp 'input/subdir/2nd/baz.txt' 'output/NdbmnXyjdY2paFzlDw9aJzCKH9w.txt'\n\n>>> system(\"rm output/NdbmnXyjdY2paFzlDw9aJzCKH9w.txt\")\n\n\nOutput formats\n--------------\n\nWe can easily do this with multiple formats:\n\nSed\n+++\n\nThis generates a sed script that does the replacements for us:\n\n>>> system(\"hashedassets -v -n my_callback maps/map.sed input/*.txt input/*/*.txt output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\n\n>>> print(open(\"maps/map.sed\").read())\ns/foo\\.txt/C-7Hteo_D9vJXQ3UfzxbwnXaijM\\.txt/g\ns/subdir\\/bar\\.txt/Ys23Ag_5IOWqZCw9QGaVDdHwH00\\.txt/g\n\n\nWe should be able to use this with sed on this file:\n\n>>> write(\"replaceme.html\", \"bar\")\n\nThe script is then applied like this:\n\n>>> system(\"sed -f maps/map.sed replaceme.html\")\nbar\n\nNote '.' is not treated as wildcard, so the following does not work\n\n>>> write(\"replaceme2.html\", \"bar\")\n>>> system(\"sed -f maps/map.sed replaceme2.html\")\nbar\n\nJavaScript\n++++++++++\n\n>>> system(\"hashedassets -v -n my_callback maps/map.js input/*.txt input/*/*.txt output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\n\n>>> print(open(\"maps/map.js\").read())\nvar my_callback = {\n \"foo.txt\": \"C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt\",\n \"subdir/bar.txt\": \"Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt\"\n};\n\nJSON\n++++\n\n>>> system(\"hashedassets -v -n my_callback maps/map.json input/*.txt input/*/*.txt output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\n\n>>> print(open(\"maps/map.json\").read())\n{\n \"foo.txt\": \"C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt\",\n \"subdir/bar.txt\": \"Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt\"\n}\n\nJSONP\n+++++\n\n>>> system(\"hashedassets -v -n my_callback maps/map.jsonp input/*.txt input/*/*.txt output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\n\n>>> print(open(\"maps/map.jsonp\").read())\nmy_callback({\n \"foo.txt\": \"C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt\",\n \"subdir/bar.txt\": \"Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt\"\n});\n\nSCSS\n++++\n\n`Sass `__ (\"Syntactically Awesome Stylesheets\") is a meta language on top of CSS.\n\n>>> system(\"hashedassets -v -n my_callback maps/map.scss input/*.txt input/*/*.txt output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\n\n>>> print(open(\"maps/map.scss\").read())\n@mixin my_callback($directive, $path) {\n @if $path == \"foo.txt\" { #{$directive}: url(\"C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt\"); }\n @else if $path == \"subdir/bar.txt\" { #{$directive}: url(\"Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt\"); }\n @else {\n @warn \"Did not find \"#{$path}\" in list of assets\";\n #{$directive}: url($path);\n }\n}\n\nPHP\n+++\n\n>>> system(\"hashedassets -v -n my_callback maps/map.php input/*.txt input/*/*.txt output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\n\n>>> print(open(\"maps/map.php\").read())\n$my_callback = array(\n \"foo.txt\" => \"C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt\",\n \"subdir/bar.txt\" => \"Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt\",\n)\n\n\nOptions\n-------\n\nSpecifying the type with -t\n+++++++++++++++++++++++++++\n\nThe type of the map is guessed from the filename, but you can specify it as\nwell:\n\n>>> system(\"hashedassets -v -t js cantguessmaptype input/*.txt input/*/*.txt output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\n\nSpecifying the length of the filename with -l\n+++++++++++++++++++++++++++++++++++++++++++++\n\n>>> system(\"hashedassets -v -l 10 maps/shortmap.json input/*.txt input/*/*.txt output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9.txt'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IO.txt'\n\n>>> system(\"rm output/C-7Hteo_D9.txt output/Ys23Ag_5IO.txt\")\n\nSpecifying the digest with -d\n+++++++++++++++++++++++++++++\n\nHashedassets uses sha1 by default to hash the input files. You can change that\nwith the -d command line parameter, e.g. by specifying -d md5 to use the md5\ndigest method.\n\n>>> system(\"hashedassets -v -d md5 maps/md5map.json input/*.txt input/*/*.txt output/\")\ncp 'input/foo.txt' 'output/rL0Y20zC-Fzt72VPzMSk2A.txt'\ncp 'input/subdir/bar.txt' 'output/N7UdGUp1E-RbVvZSTy1R8g.txt'\n\n>>> system(\"rm output/rL0Y20zC-Fzt72VPzMSk2A.txt output/N7UdGUp1E-RbVvZSTy1R8g.txt\")\n\nKeep the directory structure with --keep-dirs\n+++++++++++++++++++++++++++++++++++++++++++++\n\nBy default hashedassets copies all output files into the root level of the\noutput dir. You can turn this off, with the ''--keep-dirs'' option:\n\n>>> system(\"hashedassets -v --keep-dirs maps/preserve.json input/*.txt input/*/*.txt input/*/*/*.txt output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\nmkdir -p output/subdir\ncp 'input/subdir/bar.txt' 'output/subdir/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\nmkdir -p output/subdir/2nd\ncp 'input/subdir/2nd/baz.txt' 'output/subdir/2nd/NdbmnXyjdY2paFzlDw9aJzCKH9w.txt'\n\n>>> system(\"rm -r output/subdir/\")\n\nDon't move anything with --map-only\n+++++++++++++++++++++++++++++++++++\n\nIf you specify ''--map-only'', the program will create a map but it won't move\nany files. This is useful, if you want to use the hashed name as part of the\npath ('''http://static.example.com/aYs23A/subdir/bar.txt''') that is dropped by\nthe webserver during url rewriting.\n\n>>> system(\"hashedassets -v --map-only maps/maponly.txt input/*.txt\")\n>>> print(open('maps/maponly.txt').read())\nfoo.txt: C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt\n\n\nDon't map anything with --identity\n++++++++++++++++++++++++++++++++++\n\nIf you specify ''--identity'' the program will create a map that maps every\nfile to itself, similar to how the `identity function\n`__ is defined. You can use\nthis if you want to disable hashedassets temporarily, but don't want to alter\nyour build script heavily:\n\n>>> system(\"hashedassets -v --identity maps/identitymap.json input/*.txt input/*/*.txt output/\")\ncp 'input/foo.txt' 'output/foo.txt'\nmkdir -p output/subdir\ncp 'input/subdir/bar.txt' 'output/subdir/bar.txt'\n\n>>> print(open('maps/identitymap.json').read())\n{\n \"foo.txt\": \"foo.txt\",\n \"subdir/bar.txt\": \"subdir/bar.txt\"\n}\n\nIf you switch --identity off, all identity files get deleted:\n\n>>> system(\"hashedassets -v maps/identitymap.json input/*.txt input/*/*.txt output/\")\nrm 'output/foo.txt'\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\nrm 'output/subdir/bar.txt'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\n\n>>> print(open('maps/identitymap.json').read())\n{\n \"foo.txt\": \"C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt\",\n \"subdir/bar.txt\": \"Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt\"\n}\n\n>>> system(\"rm -r output/subdir/\")\n\nStrip file extensions with --strip-extensions\n+++++++++++++++++++++++++++++++++++++++++++++\n\nIf you want to strip the file extensions of the resulting hashed files, this\noption is for you! This is particularly useful in combination with the\n''--map-only'' option with the hashed name becoming part of the path of the url.\n\n>>> system(\"hashedassets -v --strip-extensions maps/noextensions.json input/*.txt input/*/*.txt output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00'\n\n>>> print(open('maps/noextensions.json').read())\n{\n \"foo.txt\": \"C-7Hteo_D9vJXQ3UfzxbwnXaijM\",\n \"subdir/bar.txt\": \"Ys23Ag_5IOWqZCw9QGaVDdHwH00\"\n}\n\n>>> system(\"rm -r output/C-7Hteo_D9vJXQ3UfzxbwnXaijM output/Ys23Ag_5IOWqZCw9QGaVDdHwH00\")\n\nVerbose mode with -v\n++++++++++++++++++++\n\nUsually the program does not print anything if it everything works as expected:\n\n>>> system(\"hashedassets maps/map2.txt input/*.txt input/*/*.txt output/\")\n\nYou can tell the program to log more information (using ``-v``), optionally\nmultiple times to see what's going on inside:\n\n>>> system(\"hashedassets -v maps/map3.txt input/*.txt input/*/*.txt output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\n\nExclude files with --exclude\n++++++++++++++++++++++++++++\n\nYou can exclude dirs and files from being hashed, using the ``--exclude``\noption, both using patterns and directories:\n\n>>> system(\"hashedassets -v maps/xmap.txt --exclude input/*/2nd input/ output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\n\n>>> system(\"hashedassets -v maps/xmap2.txt --exclude input/subdir/ input/ output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\n\n>>> system(\"hashedassets -v maps/xmap3.txt --exclude input/subdir/2nd/baz.txt input/ output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\n\nRelative paths with --reference\n+++++++++++++++++++++++++++++++\n\nIf you need all paths relative to a specific file or directory, ``--reference`` is your friend:\n\n>>> system(\"hashedassets -v --keep-dirs --reference=output/subdir/style.css maps/refmap.txt input/ output/\")\ncp 'input/foo.txt' 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\nmkdir -p output/subdir\ncp 'input/subdir/bar.txt' 'output/subdir/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\nmkdir -p output/subdir/2nd\ncp 'input/subdir/2nd/baz.txt' 'output/subdir/2nd/NdbmnXyjdY2paFzlDw9aJzCKH9w.txt'\n\n>>> print(open('maps/refmap.txt').read())\n../foo.txt: ../C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt\nbar.txt: Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt\n2nd/baz.txt: 2nd/NdbmnXyjdY2paFzlDw9aJzCKH9w.txt\n\nIf we execute this again, there is no work to do:\n\n>>> system(\"hashedassets -v --keep-dirs --reference=output/subdir/ maps/refmap.txt input/ output/\")\n>>> system(\"rm -r output/subdir/\")\n\nAdvanced usage\n--------------\n\nWriting the map to stdout\n+++++++++++++++++++++++++\n\n>>> system(\"hashedassets --map-type=txt - input/*.txt input/*/*.txt output/\")\nfoo.txt: C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt\nsubdir/bar.txt: Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt\n\n\n\nRe-using a map\n++++++++++++++\n\nThe program reads in maps it created in a prior run to only copy files that\nhaven't changed since. So, the following commands do not copy any files:\n\n>>> system(\"hashedassets -v maps/map.scss input/*.txt input/*/*.txt output/\")\n>>> system(\"hashedassets -v maps/map.php input/*.txt input/*/*.txt output/\")\n>>> system(\"hashedassets -v maps/map.js input/*.txt input/*/*.txt output/\")\n>>> system(\"hashedassets -v maps/map.json input/*.txt input/*/*.txt output/\")\n>>> system(\"hashedassets -v maps/map.sed input/*.txt input/*/*.txt output/\")\n>>> system(\"hashedassets -v maps/map.jsonp input/*.txt input/*/*.txt output/\")\n>>> system(\"hashedassets -v maps/map.txt input/*.txt input/*/*.txt output/\")\n\nIf we touch one of the input files in between, the file will be read but not\ncopied because the hashsum is the same:\n\n>>> system('touch -t200504072214.12 input/foo.txt')\n>>> system(\"hashedassets -v maps/map.json input/*.txt input/*/*.txt output/\")\n\nIf we change the file's content, it will get a new name:\n\n>>> write(\"input/foo.txt\", \"foofoo\")\n\nThen try again:\n\n>>> system(\"hashedassets -v maps/map.json input/*.txt input/*/*.txt output/\")\nrm 'output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'\ncp 'input/foo.txt' 'output/QIDaFD7KLKQh0l5O6b8exdew3b0.txt'\n\nIf you then list the files in the directory, note that the old file\n''output/C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'' is gone:\n\n>>> system(\"ls output/\")\nQIDaFD7KLKQh0l5O6b8exdew3b0.txt\nYs23Ag_5IOWqZCw9QGaVDdHwH00.txt\n\nIf we remove one of the created files, it gets recreated:\n\n>>> system(\"rm output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt\")\n>>> system(\"hashedassets -v maps/map.json input/*.txt input/*/*.txt output/\")\ncp 'input/subdir/bar.txt' 'output/Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'\n\n>>> system(\"ls output/\")\nQIDaFD7KLKQh0l5O6b8exdew3b0.txt\nYs23Ag_5IOWqZCw9QGaVDdHwH00.txt\n\nIf a file that is about to be removed because the original content changed, it\nisn't recreated:\n\n>>> system(\"rm output/QIDaFD7KLKQh0l5O6b8exdew3b0.txt\")\n>>> write(\"input/foo.txt\", \"foofoofoo\")\n>>> system(\"hashedassets -v maps/map.json input/*.txt input/*/*.txt output/\")\ncp 'input/foo.txt' 'output/NdbmnXyjdY2paFzlDw9aJzCKH9w.txt'\n\nUsing the same directory for SOURCE and DEST\n++++++++++++++++++++++++++++++++++++++++++++\n\nThis works as well:\n\n>>> system(\"hashedassets -v maps/samedir.json input/*.txt input/\")\ncp 'input/foo.txt' 'input/NdbmnXyjdY2paFzlDw9aJzCKH9w.txt'\n\nEven after the command is invoked a second time:\n\n>>> system(\"hashedassets -v maps/samedir.json input/*.txt input/\")\n\nNotice, that the mapfile does not contain the self-reference:\n\n>>> print(open(\"maps/samedir.json\").read())\n{\n \"foo.txt\": \"NdbmnXyjdY2paFzlDw9aJzCKH9w.txt\"\n}\n\n>>> write(\"input/foo.txt\", \"barbarbar\")\n>>> system(\"hashedassets -v maps/samedir.json input/*.txt input/\")\nrm 'input/NdbmnXyjdY2paFzlDw9aJzCKH9w.txt'\ncp 'input/foo.txt' 'input/sWL19addVG2KRYJ02EDKXF4Oh8s.txt'", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.python.org/pypi/hashedassets", "keywords": null, "license": "Beerware", "maintainer": null, "maintainer_email": null, "name": "hashedassets", "package_url": "https://pypi.org/project/hashedassets/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/hashedassets/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://www.python.org/pypi/hashedassets" }, "release_url": "https://pypi.org/project/hashedassets/0.3.2/", "requires_dist": null, "requires_python": null, "summary": "Copies files to filenames based on their contents", "version": "0.3.2" }, "last_serial": 755530, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "536ec6c923a9a20f53e8e9831152ff8f", "sha256": "90901685bd40ae4ae2dd41b2e0159d7f4f4fbaa8c7ffdaa24876161f32d6ad9d" }, "downloads": -1, "filename": "hashedassets-0.2.0.tar.gz", "has_sig": false, "md5_digest": "536ec6c923a9a20f53e8e9831152ff8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7730, "upload_time": "2010-08-07T13:15:44", "url": "https://files.pythonhosted.org/packages/6d/52/269b3094297b55f9c1b313478a9150e68eea3014260a4277be2221cfa3bb/hashedassets-0.2.0.tar.gz" } ], "0.2.0a4": [ { "comment_text": "", "digests": { "md5": "3fd1de4922dcffea2a21d95b98b45f23", "sha256": "b0e1d876801a03aaa85dbf1f3e7b5e66d673051b16e84fc31c39eab6c5ad19cf" }, "downloads": -1, "filename": "hashedassets-0.2.0a4.tar.gz", "has_sig": false, "md5_digest": "3fd1de4922dcffea2a21d95b98b45f23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7728, "upload_time": "2010-08-03T22:25:50", "url": "https://files.pythonhosted.org/packages/02/c5/6c4986a2f32c7a30abf5114f03833ccb7f8cc8c243a0e139a8e2c4db9c52/hashedassets-0.2.0a4.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "12958814647bd5b819dbf54adbe8f8f2", "sha256": "ae481f44257b4430aa383e269f846131eb29f46ae17837b56d38d20d03b50bc4" }, "downloads": -1, "filename": "hashedassets-0.2.1.tar.gz", "has_sig": false, "md5_digest": "12958814647bd5b819dbf54adbe8f8f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9872, "upload_time": "2010-08-11T14:26:36", "url": "https://files.pythonhosted.org/packages/6d/2e/33ac3cf447a069f47c730bcd5e96b74f0082b9f583d95874df0716245dca/hashedassets-0.2.1.tar.gz" } ], "0.2.1dev0": [], "0.2.2": [ { "comment_text": "", "digests": { "md5": "41f1f321e35be8fc72c855b0993fd97b", "sha256": "a5274e98ecaeb0b7db01e3cad38980e6c7f3f166e269bc39629c66dd7c8d4767" }, "downloads": -1, "filename": "hashedassets-0.2.2.tar.gz", "has_sig": false, "md5_digest": "41f1f321e35be8fc72c855b0993fd97b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12024, "upload_time": "2010-11-19T13:05:06", "url": "https://files.pythonhosted.org/packages/ac/d4/86444bd15d45ebeb4a3bc1de662ecb78c97b851911ebfdfd775c4a2e384a/hashedassets-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "8506a7134eb61cefd7c0e44af05bce89", "sha256": "2831a32a28b3cc7285d37083a71eb92f87688508387165a68ea93257e5c150d2" }, "downloads": -1, "filename": "hashedassets-0.3.0.tar.gz", "has_sig": false, "md5_digest": "8506a7134eb61cefd7c0e44af05bce89", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15582, "upload_time": "2011-01-05T08:37:46", "url": "https://files.pythonhosted.org/packages/55/cc/effa62de74d338266019bec75415a5a88077b40faf68ea7bfc273ab12049/hashedassets-0.3.0.tar.gz" } ], "0.3.0b1": [ { "comment_text": "", "digests": { "md5": "fcf779187f67d9a32026c268ab2bde9b", "sha256": "6d72823868aec187612fe5d4fa8ad9c346de0870b8a1fb3257392e92564c9f99" }, "downloads": -1, "filename": "hashedassets-0.3.0b1.tar.gz", "has_sig": false, "md5_digest": "fcf779187f67d9a32026c268ab2bde9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13668, "upload_time": "2010-12-29T19:06:35", "url": "https://files.pythonhosted.org/packages/18/35/32e33580574cf420f2f1e64c618b5fee6901cee292a3ad99c0d2a8998159/hashedassets-0.3.0b1.tar.gz" } ], "0.3.0b3": [ { "comment_text": "", "digests": { "md5": "c0b48ab5934d15a21db13b970286730a", "sha256": "18d2244d74e6462f0ce879cbbc417c239d52d8e7f4cee1f0f6abe650d2ecabb5" }, "downloads": -1, "filename": "hashedassets-0.3.0b3.tar.gz", "has_sig": false, "md5_digest": "c0b48ab5934d15a21db13b970286730a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14770, "upload_time": "2010-12-29T21:32:40", "url": "https://files.pythonhosted.org/packages/a4/8e/8097cedb89219a7b8a4436ed375117be6a96d6ef4a28beba570ca362f3e4/hashedassets-0.3.0b3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "f9c339e03fb78ce163762b3b6aa5aeaa", "sha256": "788d23e8f2d9761f94111e6f9bbefdd6046bd5bf0525df52f275471dd066c564" }, "downloads": -1, "filename": "hashedassets-0.3.1.tar.gz", "has_sig": false, "md5_digest": "f9c339e03fb78ce163762b3b6aa5aeaa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16118, "upload_time": "2011-01-24T11:28:24", "url": "https://files.pythonhosted.org/packages/11/c3/2f061b5a07484403cb2d1d1a50066689d34fc78c17541f3ae848901c8579/hashedassets-0.3.1.tar.gz" } ], "0.3.1.1": [ { "comment_text": "", "digests": { "md5": "b2e218ab1e31175da32b24f7270d5590", "sha256": "766925139e6dc4b68cc3f5a7aadc13ddb276f21159c3de314aa4d5505aa6c918" }, "downloads": -1, "filename": "hashedassets-0.3.1.1.tar.gz", "has_sig": false, "md5_digest": "b2e218ab1e31175da32b24f7270d5590", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16382, "upload_time": "2011-02-06T22:40:56", "url": "https://files.pythonhosted.org/packages/1a/88/29cf67351f1b1c947f72f5db2bf11d1d066e5bb5d7eaad5b5f8ec9f52ece/hashedassets-0.3.1.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "cd32122a417f598e33fa421dd56b9c6c", "sha256": "9acf37f13c6fb7a380927db74c80722709a2ea915af3728c56d82845ce7dcfd5" }, "downloads": -1, "filename": "hashedassets-0.3.2.tar.gz", "has_sig": false, "md5_digest": "cd32122a417f598e33fa421dd56b9c6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19758, "upload_time": "2011-02-26T18:05:01", "url": "https://files.pythonhosted.org/packages/53/63/1876de859777b7fc0b983b96129e37cc8e0065df1a62fb0fde0d03788683/hashedassets-0.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cd32122a417f598e33fa421dd56b9c6c", "sha256": "9acf37f13c6fb7a380927db74c80722709a2ea915af3728c56d82845ce7dcfd5" }, "downloads": -1, "filename": "hashedassets-0.3.2.tar.gz", "has_sig": false, "md5_digest": "cd32122a417f598e33fa421dd56b9c6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19758, "upload_time": "2011-02-26T18:05:01", "url": "https://files.pythonhosted.org/packages/53/63/1876de859777b7fc0b983b96129e37cc8e0065df1a62fb0fde0d03788683/hashedassets-0.3.2.tar.gz" } ] }