{ "info": { "author": "Ingeniweb", "author_email": "support@ingeniweb.com", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "#################\nFileSystemStorage\n#################\n\nBy Ingeniweb_.\n\n--------------------------\n\n.. contents:: **Table of contents**\n\n--------------------------\n\n\nAbout FileSystemStorage\n#######################\n\nFileSystemStorage (FSS) is an Archetypes storage for storing fields\nraw values on the file system. This storage is used to avoid\nunnecessary growth of the ZODB's FileStorage (Data.fs) when using a\nlot of large files.\n\nPlease note that FSS is a Plone component for **content types\ndevelopers**. Do not expect anything more in your Plone site if you\ndon't use Plone components that may use FSS, such as AttachmentField_.\n\n\nCopyright and license\n#####################\n\nCopyright (c) 2005 - 2008 Ingeniweb_ SAS\n\nThis software is subject to the provisions of the GNU General Public License,\nVersion 2.0 (GPL). A copy of the GPL should accompany this distribution.\nTHIS SOFTWARE IS PROVIDED \"AS IS\" AND ANY AND ALL EXPRESS OR IMPLIED\nWARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS\nFOR A PARTICULAR PURPOSE\n\nSee the `LICENSE` file that comes with this product.\n\n\nRequirements\n############\n\n* `Plone 3.0+ bundle `_\n\n\nUpgrading\n#########\n\nFrom FSS 2.5.x and older\n========================\n\nThe way we configure the storage and backup paths as well as the\nstorage strategies **HAVE CHANGED IN DEPTH**. There's no automatic\nmigration from this version. Please create a configuration file that\nclones your old configlet preferences as indicated in `FSS main\nconfiguration`_.\n\nFrom iw.fss 2.7.1\n=================\n\nFrom this version and later version, iw.fss registers upgrade steps in\nGenericSetup. When upgrading to a newer version of iw.fss, just have a\nlook at the \"Upgrade\" tab of the portal_setup tool in your Plone site.\n\nWarning, due to the removal of the `portal_fss` tool upgrading from\n2.7.1 does not retain the RDF options (activated and specific\nscript). If you used RDF with 2.7.1, you need to redo the same RDF\nsetting in the FileSystemStorage config panel.\n\n\nMigrating between strategies\n############################\n\nUse the `bin/strategymigrator.py` shell utility that ships with FSS. Get\nmore info on this utility using the `--help` option.\n\nNote that only flat -> directory and directory -> flat are available\ntoday. Sponsorship is welcome - as indicated in `Support and\nfeedback`_ - if you need other strategy migrations.\n\n\nInstallation\n############\n\nWith buildout\n=============\n\nThis example speaks of itself::\n\n [buildout]\n ...\n eggs =\n ...\n iw.fss\n ...\n\n [instance]\n ...\n zcml =\n ...\n iw.fss\n iw.fss-meta\n ...\n\nYou may also use the `iw.recipe.fss`_ recipe egg to configure fully an\ninstance.\n\n\nFrom SVN reposo\n===============\n\n* Inflate iw.fss package into your zope instance lib/python directory.\n I'm sure it's already done.\n\n* Add `$INSTANCE_HOME/etc/package-includes/iw.fss-meta.zcml` file with\n this line::\n\n \n\n* Add `$INSTANCE_HOME/etc/package-includes/iw.fss-configure.zcml` file\n with this line::\n\n \n\nConfiguring your Plone sites\n============================\n\n* **Read carefully** `Storage strategies`_ and `FSS main\n configuration`_ below and configure your instance in\n `plone-filesystemstorage.conf` accordingly. You may use the\n `iw.recipe.fss`_ recipe in your `buildout.cfg` to do this.\n\n* Start your Zope instance\n\n* In ZMI, go into your plone site and install the product using\n portal_quickinstaller\n\n* Optionally, tweak some - self explained - preferences in the\n FileSystemStorage configuration panel of your Plone site.\n\n\nStorage strategies\n##################\n\nA storage strategy defines how field values will be stored in your\nfiles system.\n\n\nStrategies overview\n===================\n\nFSS comes with 4 storage strategies. Each strategy requires two directories:\n\n* The storage directory stores the values of relevant fields in files\n according to the selected strategy.\n* The backup directory that keeps the values of the fields of deleted\n contents for \"Undo\" purpose.\n* Only one storage strategy can be selected on a given Plone site,\n but different Plone site in the same Zope instance may have distinct\n storage strategies.\n* You need the best performances: choose the `Flat storage strategy`_\n or `Directory storage strategy`_.\n* You need a storage that looks like your Plone site (in example to\n publish the storage directory in a read only samba or NFS share):\n choose the `Site storage strategy 1`_ or the `Site storage strategy 2`_.\n* If you care about CMFEdition support (means that one of the content\n types using FSS is versioned with CMFEditions), you should *not* use\n the `Site storage strategy 1`_ or the `Site storage strategy 2`_.\n\nSee `FSS main configuration`_ to configure the best suited strategy on\nyour Zope instance and Plone sites.\n\n\nFlat storage strategy\n=====================\n\nAll field values are stored in a flat structure. This strategy is the\ndefault one.\n\n* Filename of these stored values: `_`\n* Filename of rdf file: `_.rdf`\n* Filename of backup values: `_.bak`\n\nRdf files are not backed up. They are automatically generated.\n\nExample of storage::\n\n fssDirectory\n |\n |- f42ad00adb7d4580f929d734bf1ed3ab_image\n |\n |- f42ad00adb7d4580f929d734bf1ed3ab_image.rdf\n |\n |- f42ad00adb7d4580f929d734bf1ed3ab_file\n |\n |- f42ad00adb7d4580f929d734bf1ed3ab_file.rdf\n\n fssBackupDirectory\n |\n |- 9efeb7638fb35f5f9b9955da3e2dbfec_file.bak\n\n\nDirectory storage strategy\n==========================\n\nAll field values are stored in a directory structure. Sub directories\nare defined on two level. First level of directory uses the 2\ncharacters of content uid. Second level of directory uses the 4\ncharacters of content uid. Backup files are stored in a flat\nstructure.\n\n* Filename of these stored values: `_`\n* Filename of rdf file: `_.rdf`\n* Filename of backup values: `_.bak`\n\nRDF files are not backed up. They are automatically generated\n\nExample of storage::\n\n fssDirectory\n |\n |- f42\n |\n |- f42ad\n |\n |- f42ad00adb7d4580f929d734bf1ed3ab_image\n |\n |- f42ad00adb7d4580f929d734bf1ed3ab_image.rdf\n |\n |- f42ad00adb7d4580f929d734bf1ed3ab_file\n |\n |- f42ad00adb7d4580f929d734bf1ed3ab_file.rdf\n\n fssBackupDirectory\n |\n |- 9efeb7638fb35f5f9b9955da3e2dbfec_file.bak\n\nDepending in one hand on your file system performances facing a huge\namount of files in the same directory, and in the other hand on the\nnumber of contents relying on FSS, you might choose this strategy or\nthe `Flat storage strategy`_.\n\n\nSite storage strategy 1\n=======================\n\nAll field values are stored in a directory structure mirroring\nstructure of PloneSite. Backup files are stored in a flat structure.\n\n* Filename of these stored values: Filename of field value or field\n name if not defined\n* Filename of rdf file: `.rdf`\n* Filename of backup values: `_.bak`\n\nRdf files are not backed up. They are automatically generated\n\nExample of storage::\n\n fssDirectory\n |\n |- members\n |\n |- john\n |\n |- dummy-document\n |\n |- image\n | |\n | |- moutain.jpg\n | |\n | |- image.rdf\n |\n |- file\n |\n |- diary.odt\n |\n |- file.rdf\n\n fssBackupDirectory\n |\n |- 9efeb7638fb35f5f9b9955da3e2dbfec_file.bak\n\n\nSite storage strategy 2\n=======================\n\nAll field values are stored in a directory structure mirroring\nstructure of PloneSite. Backup files are stored in a flat structure.\n\n* Filename of these stored values: Filename of field value or field\n name if not defined\n* Filename of rdf file: `.rdf`\n* Filename of backup values: `_.bak`\n\nRdf files are not backed up. They are automatically generated\n\nExample of storage::\n\n fssDirectory\n |\n |- members\n |\n |- john\n |\n |- dummy-document\n |\n |- fss.cfg\n |\n |- moutain.jpg\n |\n |- mountain.jpg.rdf\n |\n |- diary.odt\n |\n |- diary.odt.rdf\n\n fssBackupDirectory\n |\n |- 9efeb7638fb35f5f9b9955da3e2dbfec_file.bak\n\n\nFSS main configuration\n######################\n\nFSS is mainly configured the ZConfig way. At startup, the\nconfiguration file will be searched (in that order) in:\n\n* $INSTANCE_HOME/etc/plone-filesystemstorage.conf\n* /path/to/iw/fss/etc/plone-filesystemstorage.conf\n* /path/to/iw/fss/etc/plone-filesystemstorage.conf.in\n\nA sample working configuration in provided in this last file. It\nassumes you have $INSTANCE_HOME/var/fss_storage and\n$INSTANCE_HOME/var/fss_backup directories, both being read/write\nenabled to the user that runs the Zope process, unless Zope will raise\nan error at startup.\n\nAll configuration doc you need is in `plone-filesystemstorage.conf.in`\ncomments.\n\nInconsistent configuration features raise explicit error messages at\nZope startup.\n\nNote that we didn't include this in `zope.conf` in order to keep Zope\n2.7 and Zope 2.8 compatibility.\n\n\nConfiguration panel\n###################\n\nFSS and RDF\n===========\n\nAs mentioned above in `Storage strategies`_, FSS can optionally store\nRDF files in the back-end storage. These RDF files conform the\n`DCMES-XML standard`_ on XML expression of DublinCore elements.\n\nIf you select the `Flat storage strategy`_, the RDF files may be used\nto build a files tree as close as possible of the Plone tree structure\nfrom the storage back-end, with the `build_fs_tree.py` utility::\n\n $ cd /path/to/iw/fss/bin\n $ python build_fs_tree.py --help\n\n\nFSS maintenance\n===============\n\nThe \"Maintenance\" tab of FSS configuration panel shows some statistics\nabout the amount of files managed by FSS.\n\nIn addition 2 additional buttons are provided:\n\n* **Update FSS files** : Cleans up the back-end storage\n directories. Files not referenced from a content object are removed.\n\n* **Update RDF files** : Builds all RDF files, in the event you chose\n to select the generetion of RDF files after having inserted relevant\n contents.\n\n\nZope backups\n############\n\nOf course, you need to synch your Data.fs backups with the storage\npaths backups, unless you may restore corrupted/incomplete sites.\n\n\nCaveats and pittfalls\n#####################\n\nNote that whatever's the selected strategies, **DO NEVER CHANGE ANY\nFILE IN THE STORAGE PATHS UNLESS YOU KNOW WHAT YOU DO**, otherwise\nyou'll loose your contents, your job, your money, your friends, your\nwife/husband and children.\n\n**DO NEVER CHANGE THE STRATEGY FOR A PLONE SITE ONCE THIS SITE HAS\nFIELDS STORED IN ITS FSS STORAGE PATH** unless you ran the appropriate\nstrategy migrator - see `Migrating between strategies`_ otherwise\nyou're loose your contents, your job, ...\n\nThought it is possible to share the same storage path and backup path\nwithin various Plone sites, since you don't mind of your data in\ndevelopment sites, you should really configure FSS such each Plone\nsite has its own private storage path and backup path. In cas you\nignore this warning, **DO NEVER CLICK ANY BUTTON IN THE MAINTENANCE\nTAB OF THE FSS CONFIGURATION PANEL** otherwise you'll loose your\ncontents, your job, ...\n\nZexp exports **don't embed the associated FSS storage**. So don't move\nyour Plone site within Zope instances using zexp exports unless you\nmove the storage and backup directories along with the zexp file.\n\nAfter changing your configuration (see `FSS main configuration`_),\nalways restart your Zope instance in foreground since configuration\nerrors are not reported when Zope is started as daemon or Windows\nservice.\n\nDeveloper's corner\n##################\n\nUsing FSS in your content types\n===============================\n\nWe assume that creating AT based content types is a familiar activity.\n\nWhen creating the schema of a content type, you usually don't mention\nthe storage of your fields since AT provides a default ZODB\nstorage. You can choose another storage, either another one that ships\nin the Archetypes bundle, or a third party storage like FSS.\n\nHere is a small example that doesn't need much comments::\n\n # Usual Zope/CMF/Plone/Archetypes imports\n ...\n from iw.fss.FileSystemStorage import FileSystemStorage\n ...\n my_schema = Schema((\n FileField('file',\n ...\n storage=FileSystemStorage(),\n widget=FileWidget(...)\n\t\t),\n ...\n ))\n ...\n\nYou may have a look at `examples/FSSItem.py` to see a demo content\ntype using FSS. If you want to play with this content type::\n\n $ $INSTANCE_HOME/bin/zopectl stop\n $ export FSS_INSTALL_EXAMPLE_TYPES=1\n $ $INSTANCE_HOME/bin/zopectl start\n\n\nMonkey patching a third party content type\n==========================================\n\nThe Python way\n++++++++++++++\n\nThis works with any Zope version listed in the Requirements_. If you\nrun a Zope 2.9 or later instance, you should prefer `The ZCML way`_.\n\nThis simple example shows how to plug the ATFile standard type from\nany custom product. Let's say we're in the `__init__.py` of your\ncustom product::\n\n ...\n from iw.fss import zcml as fss_utils\n from Products.ATContentTypes import atct\n ...\n fss_utils.patchATType(atct.ATFile, ['file'])\n ...\n\nThe ZCML way\n++++++++++++\n\nThis works only with Zope 2.9 and up, and is the recommanded way to\nwire your AT based content types with FSS since this way hides the API\ndetails that may be deprecated in the future.\n\nYou just need to add the \"fss\" namespace support and some directives\nin your \"configure.zcml\" like this to have the same effect as in the\nexample of `The Python way`_ above::\n\n \n ...\n \n ...\n \n\nThe (required) attributes of this directive are:\n\n* **class**: the dotted name of the AT based content type class.\n* **fields**: one or more (space separated) field names to wire with FSS.\n\n\nStoring Plone standard content types with FSS\n=============================================\n\nInclude this ZCML element either in your instance `package-includes`\ndirectory or in any personal `configure.zcml` in your instance\npackages::\n\n \n\nThis ZCML file wires FSS with the relevant content types that ship with Plone bundle:\n\n* File\n* Image\n* News Item\n\n\nCustomize RDF info set\n======================\n\nYou can add data to the RDF info set via a FSS dedicated - and\noptional - hook.\n\nOpen the FSS configuration panel and give the name of your personal\nRDF data script, let's call it `fss_custom_rdf` for this example. This\nscript will add or change the RDF default data set.\n\n\nRDF script interface\n++++++++++++++++++++\n\nThe script may be in any Plone layer like `custom` or any other in the\nskins path.\n\nSuch script is expected to have 4 parameters:\n\n* `name`: the name of the field\n* `instance`: the content object being processed\n* `properties`: FSS field properties mapping, depending on the type of\n field associated to FSS storage.\n* `default_rdf`: a mapping structure of the RDF data, including the\n namespaces, and the elements.\n\nSuch script is expected to return an updated `default_rdf` mapping\nstructure.\n\nPlease read the source of classes `FSSInfo`, `FSSFileInfo` and\n`FSSImageInfo` from module `FileSystemStorage.py`, `RDFWriter` from\nmodule `rdf.py` for detailed information on formats of expected data.\n\n\nSimple example\n++++++++++++++\n\nWe need to add the date of RDF file generation in an element like\nthis::\n\n 2007-05-13 13:21:00\n\nHere's the script::\n\n ## Script (Python) \"fss_custom_rdf\"\n ##bind container=container\n ##bind context=context\n ##bind namespace=\n ##bind script=script\n ##bind subpath=traverse_subpath\n ##parameters=name, instance, properties, default_rdf\n ##title=\n ##\n \"\"\"We add the date of RDF file generation\"\"\"\n\n rdf_args = default_rdf.copy()\n\n # Add the date of RDF generation\n new_props = []\n new_props.extend(rdf_args['field_props'])\n new_props.append({'id': 'fss:rdf_date', 'value': DateTime().ISO()})\n rdf_args['field_props'] = new_props\n\n return rdf_args\n\n\nMore complex example\n++++++++++++++++++++\n\nIn this more complex (and stupid - don't do this ;) example, we remove\nthe elements from `fss` namespace and simulate the standard behaviour\nfor other elements (`dc` and `rdf` elements).\n\nHere's the code::\n\n ## Script (Python) \"fss_custom_rdf\"\n ##bind container=container\n ##bind context=context\n ##bind namespace=\n ##bind script=script\n ##bind subpath=traverse_subpath\n ##parameters=name, instance, properties, default_rdf\n ##title=\n ##\n from Products.CMFCore.utils import getToolByName\n\n rdf_args = {}\n\n # Set RDF charset\n ptool = getToolByName(instance, 'portal_properties')\n rdf_args['charset'] = ptool.site_properties.default_charset\n\n # Set RDF namespaces\n rdf_args['namespaces'] = (\n {'id': 'xmlns:rdf', 'value': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'},\n {'id': 'xmlns:dc', 'value': 'http://purl.org/dc/elements/1.1/'},\n {'id': 'xmlns:fss', 'value': 'http://namespace.ingeniweb.com/fss'},)\n\n # Set field url\n utool = getToolByName(instance, 'portal_url')\n portal_path = utool.getPortalObject().getPhysicalPath()\n portal_path_len = len(portal_path)\n rel_path = '/'.join(instance.getPhysicalPath()[portal_path_len:])\n fss_path = '%s/%s' % (rel_path, name)\n rdf_args['field_url'] = fss_path\n\n # Set RDF properties\n props = (\n {'id': 'dc:title', 'value': instance.title_or_id()},\n {'id': 'dc:description', 'value': instance.Description()},\n {'id': 'dc:language', 'value': instance.Language()},\n {'id': 'dc:creator', 'value': instance.Creator()},\n {'id': 'dc:date', 'value': instance.modified()},\n {'id': 'dc:format', 'value': properties.get('mimetype', 'text/plain')},\n )\n rdf_args['field_props'] = props\n\n # Returns the RDF structure\n return rdf_args\n\n\nRecommanded practices on custom RDF\n+++++++++++++++++++++++++++++++++++\n\nDo not change the existing elements under `fss` namespace unless the\n`bin/build_fs_tree.py` utility won't work. In other terms, do not use\nthe script of the `More complex example`_.\n\nAdding or changing elements to the `dc` and `rdf` namespaces may screw up\nexternal utilities based on canonical `DCMES-XML standard`_.\n\nConsider adding your own namespace for your custom extra elements.\n\n\nTesting\n#######\n\nPlease read `./tests/README.txt`.\n\n\nOther documentation\n###################\n\nSee `./doc/*` and `./locales/README.txt`\n\n\nDownloads\n#########\n\nYou may find newer stable versions of FSS and pointers to related\ninformations (tracker, doc, ...) from\nhttp://pypi.python.org/pypi/iw.fss\n\n\nSubversion repository\n#####################\n\nStay in tune with the freshest (maybe unstable) versions or participate to\nthe FileSystemStorage evolutions:\n\nhttps://svn.plone.org/svn/collective/iw.fss\n\n\nSupport and feedback\n####################\n\nPlease read all the documentation that comes with this product before\nasking for support, unless you might get a RTFM reply ;)\n\nLocalisation issues - other than french - should be reported to the\nrelevant translators (see Credits_ below).\n\nReport bugs using the tracker (the `Tracker` link from\nhttp://plone.org/iw.fss). Please provide in your\nbug report:\n\n* Your configuration (Operating system+Zope+Plone+Products/versions).\n* The storage strategy in use.\n* The full traceback if available.\n* One or more scenario that triggers the bug.\n\nNote that we do not support bug reports on Subversion trunk or\nbranches checkouts.\n\n`Mail to Ingeniweb support `_ in English or\nFrench to ask for specific support.\n\n`Donations are welcome for new features requests\n`_\n\n\nCredits\n#######\n\n* Main developer: `Cyrille Lebeaupin `_\n* ZConfig and ZCML support: `Gilles Lenfant `_\n* HTTP \"Range\" support: `Youenn Boussard `_\n* Paris 2008 sprint additional contributors:\n - `Mehdi Benammar `_\n - `Romain Griffiths `_\n\nSee `locales/README.txt` about localization credits.\n\n--------------------------\n\n.. sectnum::\n.. _Ingeniweb: http://www.ingeniweb.com/\n.. _AttachmentField: http://plone.org/products/attachmentfield\n.. _DCMES-XML standard: http://dublincore.org/documents/dcmes-xml/\n.. _iw.recipe.fss: http://pypi.python.org/pypi/iw.recipe.fss\n.. $Id: README.txt 69184 2008-07-30 07:48:03Z ajung $", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://svn.plone.org/svn/collective/iw.fss/", "keywords": "fss plone", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "iw.fss", "package_url": "https://pypi.org/project/iw.fss/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/iw.fss/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://svn.plone.org/svn/collective/iw.fss/" }, "release_url": "https://pypi.org/project/iw.fss/2.7.6/", "requires_dist": null, "requires_python": null, "summary": "Archetypes storage for storing fields raw values on the file system.", "version": "2.7.6" }, "last_serial": 755331, "releases": { "2.7.0": [ { "comment_text": "", "digests": { "md5": "cea326f9f763c25cdebef432ebb6d64c", "sha256": "80f2d335165e52625a11a3d73b79fe1aaf3ad6c4c8e7401b49bc09794ecf9a12" }, "downloads": -1, "filename": "iw.fss-2.7.0-py2.4.egg", "has_sig": false, "md5_digest": "cea326f9f763c25cdebef432ebb6d64c", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 192217, "upload_time": "2008-02-26T17:15:25", "url": "https://files.pythonhosted.org/packages/1c/1b/43def98bbb3d7255c2d69668f65cd6afa2b0ec154adcddb9971075f8af28/iw.fss-2.7.0-py2.4.egg" } ], "2.7.1": [ { "comment_text": "", "digests": { "md5": "04e0ea672cc5c31d0fd073ebe22f5acd", "sha256": "5000b910daf23fd94e0befb38059e085a1be85f7d464657078cc71f1bfc9674e" }, "downloads": -1, "filename": "iw.fss-2.7.1-py2.4.egg", "has_sig": false, "md5_digest": "04e0ea672cc5c31d0fd073ebe22f5acd", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 205049, "upload_time": "2008-03-18T14:06:21", "url": "https://files.pythonhosted.org/packages/1f/af/752f9f693b6975322bbdca67f3f5c5266e213a859984c98b929cd164361e/iw.fss-2.7.1-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "a66a0cb642158968611163f158f9e167", "sha256": "72b704e230e91eb64eb0ff8d3f371ad4a8e68157486476132dd09e1d12aabb4a" }, "downloads": -1, "filename": "iw.fss-2.7.1.tar.gz", "has_sig": false, "md5_digest": "a66a0cb642158968611163f158f9e167", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 120375, "upload_time": "2008-03-18T14:06:03", "url": "https://files.pythonhosted.org/packages/42/1c/c61fb2c6512026a701cbafc6e9592a4be0e8196ba8f401aac980ac70e88e/iw.fss-2.7.1.tar.gz" } ], "2.7.3": [ { "comment_text": "", "digests": { "md5": "5a79f47705f88605805e62f2d85f0bde", "sha256": "f91203586bd31b9a7198f2d9107be68a29f0dd06a69f3d90022dcd05640b1d13" }, "downloads": -1, "filename": "iw.fss-2.7.3-py2.4.egg", "has_sig": false, "md5_digest": "5a79f47705f88605805e62f2d85f0bde", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 232201, "upload_time": "2008-07-16T12:42:52", "url": "https://files.pythonhosted.org/packages/e5/c4/ddb34a92e07aef4aad96e7ef55bfc2aae18de6f92d2728cc4104468e811b/iw.fss-2.7.3-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "4e849e27ec6eadfe53fe4b7ed63392d4", "sha256": "bfb4bb86f0ebe725eddef4700e3e5e096f38c7eb9a00f2fdf8bb9a851e1984be" }, "downloads": -1, "filename": "iw.fss-2.7.3.tar.gz", "has_sig": false, "md5_digest": "4e849e27ec6eadfe53fe4b7ed63392d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 122953, "upload_time": "2008-07-16T12:42:52", "url": "https://files.pythonhosted.org/packages/3c/f2/d7c6277d94267b9a42883da2f9c39e2259026bd71a8f8bf800d516aff51d/iw.fss-2.7.3.tar.gz" } ], "2.7.4": [ { "comment_text": "", "digests": { "md5": "f5d6099171e9c11e23f5d60e5a279eca", "sha256": "e1701c0c0992338ed5b865d22a7051ad81db46e6b9e7e77d77881b3bf0a165e2" }, "downloads": -1, "filename": "iw.fss-2.7.4-py2.4.egg", "has_sig": false, "md5_digest": "f5d6099171e9c11e23f5d60e5a279eca", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 232310, "upload_time": "2008-07-25T12:43:50", "url": "https://files.pythonhosted.org/packages/e3/2d/9e14319def37ba7608d631c23690eb7b343713538e31f5c1ead870cf525c/iw.fss-2.7.4-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "cefca36c01a1cfdf4e160fcd4033b2f1", "sha256": "c5a71ae543d26b30b811e037cb632c7bf4f1209159b2ee06576454ab517af800" }, "downloads": -1, "filename": "iw.fss-2.7.4.tar.gz", "has_sig": false, "md5_digest": "cefca36c01a1cfdf4e160fcd4033b2f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 123036, "upload_time": "2008-07-25T12:43:47", "url": "https://files.pythonhosted.org/packages/87/40/cb4ac50f8b9cb905f84a18acf995891f7cdf41ce1b1ab6a6249bfcf1d862/iw.fss-2.7.4.tar.gz" } ], "2.7.5": [ { "comment_text": "", "digests": { "md5": "a3bd731c25db785594ffd61145d16409", "sha256": "832136e93a4804998da3c2dd7ac886030aa93eb3bfea3372ec9e2da4912a26b5" }, "downloads": -1, "filename": "iw.fss-2.7.5-py2.4.egg", "has_sig": false, "md5_digest": "a3bd731c25db785594ffd61145d16409", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 232244, "upload_time": "2008-07-28T14:42:27", "url": "https://files.pythonhosted.org/packages/4a/03/2571ad7c5357a5339403ce56fc38f0db879a35b64c06969e9e001164c750/iw.fss-2.7.5-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "e655245ad31aab3fe10f148fcbaf4bf8", "sha256": "bdc6fd8de14b175b78cebbeab158bc246f8448cbcffeb494ec28d4835dde038f" }, "downloads": -1, "filename": "iw.fss-2.7.5.tar.gz", "has_sig": false, "md5_digest": "e655245ad31aab3fe10f148fcbaf4bf8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 123069, "upload_time": "2008-07-28T14:42:24", "url": "https://files.pythonhosted.org/packages/98/0b/27e998da5775c02947158c7a5145e506adb36499611f5c883bdfcba1efff/iw.fss-2.7.5.tar.gz" } ], "2.7.6": [ { "comment_text": "", "digests": { "md5": "cb98d442fa7d9a5c57277ae9aeefefd9", "sha256": "e018c90dddb0c8e235fbd395715604de7400435600ca167fd0c74dd895258ca7" }, "downloads": -1, "filename": "iw.fss-2.7.6-py2.4.egg", "has_sig": false, "md5_digest": "cb98d442fa7d9a5c57277ae9aeefefd9", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 236440, "upload_time": "2008-10-23T09:55:26", "url": "https://files.pythonhosted.org/packages/e9/1e/e47a019b1e8dbc63b281d9513b44506846b7c062b9cc80236973143cab1c/iw.fss-2.7.6-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "9afbad88fa9ccce24188dfa9352a4fd1", "sha256": "5937697051b9e8d6de000998a381fc71161d73a95954b7a57e74ab827f11b8f9" }, "downloads": -1, "filename": "iw.fss-2.7.6.tar.gz", "has_sig": false, "md5_digest": "9afbad88fa9ccce24188dfa9352a4fd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 125245, "upload_time": "2008-10-23T09:55:22", "url": "https://files.pythonhosted.org/packages/62/bc/a88db10d9e8faac3cc42b11ed301e5c6c82132062e31d42b31d8ef50d8e6/iw.fss-2.7.6.tar.gz" } ], "2.8.0a1": [ { "comment_text": "", "digests": { "md5": "e0743f6496380a2ca3fd1e7c28fa9d5c", "sha256": "1f00a7979b3e6f5796404dc46d57b43e4eec888a51275919df3bc7ef0192be4a" }, "downloads": -1, "filename": "iw.fss-2.8.0a1.tar.gz", "has_sig": false, "md5_digest": "e0743f6496380a2ca3fd1e7c28fa9d5c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 247893, "upload_time": "2009-08-03T19:37:01", "url": "https://files.pythonhosted.org/packages/1a/5c/f438b16f2e35e956af02e43cac609dbd78bb045d1c6061a7080740668516/iw.fss-2.8.0a1.tar.gz" } ], "2.8.0a2": [ { "comment_text": "", "digests": { "md5": "cb26be21868df4e8cd1eb2039278f3fd", "sha256": "491ea1f748a0c5f4d4d4b5f2d56a42c3f117b78d4e08016149d65f37193cfa4e" }, "downloads": -1, "filename": "iw.fss-2.8.0a2-py2.4.egg", "has_sig": false, "md5_digest": "cb26be21868df4e8cd1eb2039278f3fd", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 363530, "upload_time": "2009-08-07T16:05:51", "url": "https://files.pythonhosted.org/packages/65/4a/3fefc7f05fc30425cf80ae5712c7a7c05438f533c78092b36ab6c752d03d/iw.fss-2.8.0a2-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "2aa99135333685f89d306bb6210dcf28", "sha256": "4818f87f7b413095625ea1cf9e3d9133999002dfd203cf9be35901d741607d04" }, "downloads": -1, "filename": "iw.fss-2.8.0a2.tar.gz", "has_sig": false, "md5_digest": "2aa99135333685f89d306bb6210dcf28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 248286, "upload_time": "2009-08-07T16:05:44", "url": "https://files.pythonhosted.org/packages/ec/0c/37b5e0c9f2d6cd069d2302c1436108bca4e807819569f7adc65f3b032a21/iw.fss-2.8.0a2.tar.gz" } ], "2.8.0a3": [ { "comment_text": "", "digests": { "md5": "20f6671a0f94d4d3b3c19e9506395942", "sha256": "150bfb862862b744844c52538863583f3d53f02b587de7967bbabb9ce80d6595" }, "downloads": -1, "filename": "iw.fss-2.8.0a3-py2.4.egg", "has_sig": false, "md5_digest": "20f6671a0f94d4d3b3c19e9506395942", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 363590, "upload_time": "2009-08-07T16:49:48", "url": "https://files.pythonhosted.org/packages/05/d6/4d329f629c59a93c796a822bf6ad731b4274629dcc47df6e9b70cd05fd97/iw.fss-2.8.0a3-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "6b712196912456f744a5097bdff716e7", "sha256": "92a9fdf3cb61715c421e6e46a9a45e4753a496f19978a15e1d079eb7002fa593" }, "downloads": -1, "filename": "iw.fss-2.8.0a3.tar.gz", "has_sig": false, "md5_digest": "6b712196912456f744a5097bdff716e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 248355, "upload_time": "2009-08-07T16:49:42", "url": "https://files.pythonhosted.org/packages/5b/99/74a076ed969818a134bc6e637bbd288429b896b592266a54f57a310ea9b8/iw.fss-2.8.0a3.tar.gz" } ], "2.8.0b1": [ { "comment_text": "", "digests": { "md5": "b7d7d7ed222fb51e3f3f6a8d77c5ffde", "sha256": "9e7fd13c5d8db4949e46fdffd98d4a15f0cdbe2d497adaf470b1dfeb85ce208b" }, "downloads": -1, "filename": "iw.fss-2.8.0b1-py2.4.egg", "has_sig": false, "md5_digest": "b7d7d7ed222fb51e3f3f6a8d77c5ffde", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 377338, "upload_time": "2009-08-19T14:28:58", "url": "https://files.pythonhosted.org/packages/83/80/8966d5898f347ccd65faa561007ac64f7336ac0a5a44449b55afd335f80b/iw.fss-2.8.0b1-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "f1cf10240b79619e1ef9c22fad2a6410", "sha256": "2b9423f1005bffb8755e4e4ee81def6d8f752fba9ee25a9e6fcfe2a7e5eb247b" }, "downloads": -1, "filename": "iw.fss-2.8.0b1.tar.gz", "has_sig": false, "md5_digest": "f1cf10240b79619e1ef9c22fad2a6410", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 252458, "upload_time": "2009-08-19T14:28:53", "url": "https://files.pythonhosted.org/packages/fc/bc/7c95025e21a8739fbde8a28071270565052584e48933fc58e5a0837478c3/iw.fss-2.8.0b1.tar.gz" } ], "2.8.0b2": [ { "comment_text": "", "digests": { "md5": "4ea9bb7877cba51aebf2b13985e60c68", "sha256": "649b036eefd199bc368aba4be32d39dad06696d161618acf6cca23b76ffddb47" }, "downloads": -1, "filename": "iw.fss-2.8.0b2-py2.4.egg", "has_sig": false, "md5_digest": "4ea9bb7877cba51aebf2b13985e60c68", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 385647, "upload_time": "2009-11-06T23:21:57", "url": "https://files.pythonhosted.org/packages/40/5e/5f319db763086444a397716e5c5f55a75016c39be330087c156cd0fa127d/iw.fss-2.8.0b2-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "085d3c0cf68320e329731a9d3260abac", "sha256": "7bcbe79d2212d075b80dbcd7218593b88dc71e97adaa3b5fcb2f46d21f775901" }, "downloads": -1, "filename": "iw.fss-2.8.0b2.tar.gz", "has_sig": false, "md5_digest": "085d3c0cf68320e329731a9d3260abac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 257394, "upload_time": "2009-11-06T23:21:53", "url": "https://files.pythonhosted.org/packages/e2/ea/fca7dcf8c1268590b78d1a064260c609088e1f7b39c5aea1dbb5764d0dd2/iw.fss-2.8.0b2.tar.gz" } ], "2.8.0rc1": [ { "comment_text": "", "digests": { "md5": "864396c9c6a0f66dd608e24c610c6158", "sha256": "d401d588fa83955e70a64632bf49e8dd337e227291aa5e65c8b94a6eb7927d81" }, "downloads": -1, "filename": "iw.fss-2.8.0rc1-py2.4.egg", "has_sig": false, "md5_digest": "864396c9c6a0f66dd608e24c610c6158", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 386528, "upload_time": "2009-11-13T15:15:51", "url": "https://files.pythonhosted.org/packages/51/98/7eab6abf02d93cb6f678a61273cbfac3bdc69f24538b47691f24449642c4/iw.fss-2.8.0rc1-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "270dd131c79c613285afd7715cc7930f", "sha256": "89ac973a0c07427ade7b9ffc99d01818cad771a61adf92706ae52a55173bf226" }, "downloads": -1, "filename": "iw.fss-2.8.0rc1.tar.gz", "has_sig": false, "md5_digest": "270dd131c79c613285afd7715cc7930f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 258949, "upload_time": "2009-11-13T15:15:40", "url": "https://files.pythonhosted.org/packages/77/5a/855be9b3ea7df30403ed83bd6676f31daabcde4f993563faeb8232bb7be3/iw.fss-2.8.0rc1.tar.gz" } ], "2.8.0rc2": [ { "comment_text": "", "digests": { "md5": "57368815b1d0e58194eb28ad7f79b1af", "sha256": "dd6bd7887326cfa2e3eb0665bb5987cb6a708377957792fccab9a866cb796df6" }, "downloads": -1, "filename": "iw.fss-2.8.0rc2.tar.gz", "has_sig": false, "md5_digest": "57368815b1d0e58194eb28ad7f79b1af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 256901, "upload_time": "2010-04-06T16:08:34", "url": "https://files.pythonhosted.org/packages/9d/06/d965de2c9a2ddd8618777c8c328f94c6eee30c0f8b724ca6eb2a4291d25b/iw.fss-2.8.0rc2.tar.gz" } ], "2.8.0rc3": [ { "comment_text": "", "digests": { "md5": "ec2a66d5987b3b922db4498d985b64d7", "sha256": "0294f5d1afca71b3185014b327f188674d2d6cd348a00bc7b4b350476b7014dc" }, "downloads": -1, "filename": "iw.fss-2.8.0rc3.tar.gz", "has_sig": false, "md5_digest": "ec2a66d5987b3b922db4498d985b64d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 503439, "upload_time": "2010-04-15T10:46:17", "url": "https://files.pythonhosted.org/packages/be/28/64d969acebe671d585c876d0b3f5198e2ddb005d23e2d3f7678ce42299fb/iw.fss-2.8.0rc3.tar.gz" } ], "2.8.0rc5": [ { "comment_text": "", "digests": { "md5": "e0e3afc59d784100b2d981ecb31a06a5", "sha256": "88ea6d63664ef7dd06a8caf7bd969583650a9ce84cbcffbb043a097e0948a141" }, "downloads": -1, "filename": "iw.fss-2.8.0rc5.tar.gz", "has_sig": false, "md5_digest": "e0e3afc59d784100b2d981ecb31a06a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 506186, "upload_time": "2010-11-09T10:59:10", "url": "https://files.pythonhosted.org/packages/ba/ec/49ba4fe3d3b3a403e38a64a8e25d997d365aa7857eb9dd7ac34674621e39/iw.fss-2.8.0rc5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cb98d442fa7d9a5c57277ae9aeefefd9", "sha256": "e018c90dddb0c8e235fbd395715604de7400435600ca167fd0c74dd895258ca7" }, "downloads": -1, "filename": "iw.fss-2.7.6-py2.4.egg", "has_sig": false, "md5_digest": "cb98d442fa7d9a5c57277ae9aeefefd9", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 236440, "upload_time": "2008-10-23T09:55:26", "url": "https://files.pythonhosted.org/packages/e9/1e/e47a019b1e8dbc63b281d9513b44506846b7c062b9cc80236973143cab1c/iw.fss-2.7.6-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "9afbad88fa9ccce24188dfa9352a4fd1", "sha256": "5937697051b9e8d6de000998a381fc71161d73a95954b7a57e74ab827f11b8f9" }, "downloads": -1, "filename": "iw.fss-2.7.6.tar.gz", "has_sig": false, "md5_digest": "9afbad88fa9ccce24188dfa9352a4fd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 125245, "upload_time": "2008-10-23T09:55:22", "url": "https://files.pythonhosted.org/packages/62/bc/a88db10d9e8faac3cc42b11ed301e5c6c82132062e31d42b31d8ef50d8e6/iw.fss-2.7.6.tar.gz" } ] }