Reorganize source tree to have a "cubicweb" top-level package
authorDenis Laxalde <denis.laxalde@logilab.fr>
Sat, 16 Jan 2016 13:48:51 +0100
changeset 11057 0b59724cb3f2
parent 11052 058bb3dc685f
child 11058 23eb30449fe5
Reorganize source tree to have a "cubicweb" top-level package Basically: mkdir cubicweb hg mv *.py -X setup.py cubicweb hg mv dataimport devtools entities etwist ext hooks i18n misc schemas server skeleton sobjects test web wsgi cubicweb Other changes: * adjust path to cubicweb-ctl in devtools tests * update setup.py to avoid importing __pkginfo__ (exec it instead), replace os.path.walk by os.walk and prepend `modname` here and there * update tox.ini to account for new test locations * update doc/conf.py so that it still finds __pkginfo__.py and CWDIR in doc/Makefile
MANIFEST.in
__init__.py
__pkginfo__.py
_exceptions.py
_gcdebug.py
appobject.py
crypto.py
cubicweb/__init__.py
cubicweb/__pkginfo__.py
cubicweb/_exceptions.py
cubicweb/_gcdebug.py
cubicweb/appobject.py
cubicweb/crypto.py
cubicweb/cwconfig.py
cubicweb/cwctl.py
cubicweb/cwgettext.py
cubicweb/cwvreg.py
cubicweb/dataimport/__init__.py
cubicweb/dataimport/csv.py
cubicweb/dataimport/deprecated.py
cubicweb/dataimport/importer.py
cubicweb/dataimport/massive_store.py
cubicweb/dataimport/pgstore.py
cubicweb/dataimport/stores.py
cubicweb/dataimport/test/data-massimport/schema.py
cubicweb/dataimport/test/data/geonames.csv
cubicweb/dataimport/test/data/people.csv
cubicweb/dataimport/test/data/schema.py
cubicweb/dataimport/test/data/timeZones.txt
cubicweb/dataimport/test/test_csv.py
cubicweb/dataimport/test/test_massive_store.py
cubicweb/dataimport/test/test_pgstore.py
cubicweb/dataimport/test/test_sqlgenstore.py
cubicweb/dataimport/test/test_stores.py
cubicweb/dataimport/test/unittest_importer.py
cubicweb/devtools/__init__.py
cubicweb/devtools/cwtwill.py
cubicweb/devtools/data/cwmock.js
cubicweb/devtools/data/qunit.css
cubicweb/devtools/data/qunit.js
cubicweb/devtools/data/xvfb-run.sh
cubicweb/devtools/dataimport.py
cubicweb/devtools/devctl.py
cubicweb/devtools/fake.py
cubicweb/devtools/fill.py
cubicweb/devtools/fix_po_encoding
cubicweb/devtools/htmlparser.py
cubicweb/devtools/httptest.py
cubicweb/devtools/instrument.py
cubicweb/devtools/qunit.py
cubicweb/devtools/realdbtest.py
cubicweb/devtools/repotest.py
cubicweb/devtools/stresstester.py
cubicweb/devtools/test/data/bootstrap_cubes
cubicweb/devtools/test/data/cubes/__init__.py
cubicweb/devtools/test/data/cubes/i18ntestcube/__init__.py
cubicweb/devtools/test/data/cubes/i18ntestcube/__pkginfo__.py
cubicweb/devtools/test/data/cubes/i18ntestcube/i18n/en.po.ref
cubicweb/devtools/test/data/cubes/i18ntestcube/schema.py
cubicweb/devtools/test/data/cubes/i18ntestcube/views.py
cubicweb/devtools/test/data/firstnames.txt
cubicweb/devtools/test/data/schema.py
cubicweb/devtools/test/data/static/js_examples/dep_1.js
cubicweb/devtools/test/data/static/js_examples/deps_2.js
cubicweb/devtools/test/data/static/js_examples/test_simple_failure.js
cubicweb/devtools/test/data/static/js_examples/test_simple_success.js
cubicweb/devtools/test/data/static/js_examples/test_with_dep.js
cubicweb/devtools/test/data/static/js_examples/test_with_ordered_deps.js
cubicweb/devtools/test/data/static/js_examples/utils.js
cubicweb/devtools/test/data/views.py
cubicweb/devtools/test/requirements.txt
cubicweb/devtools/test/unittest_dbfill.py
cubicweb/devtools/test/unittest_devctl.py
cubicweb/devtools/test/unittest_fill.py
cubicweb/devtools/test/unittest_httptest.py
cubicweb/devtools/test/unittest_i18n.py
cubicweb/devtools/test/unittest_qunit.py
cubicweb/devtools/test/unittest_testlib.py
cubicweb/devtools/test/unittest_webtest.py
cubicweb/devtools/testlib.py
cubicweb/devtools/webtest.py
cubicweb/entities/__init__.py
cubicweb/entities/adapters.py
cubicweb/entities/authobjs.py
cubicweb/entities/lib.py
cubicweb/entities/schemaobjs.py
cubicweb/entities/sources.py
cubicweb/entities/test/data/migration/postcreate.py
cubicweb/entities/test/data/schema.py
cubicweb/entities/test/requirements.txt
cubicweb/entities/test/unittest_base.py
cubicweb/entities/test/unittest_wfobjs.py
cubicweb/entities/wfobjs.py
cubicweb/entity.py
cubicweb/etwist/__init__.py
cubicweb/etwist/http.py
cubicweb/etwist/request.py
cubicweb/etwist/server.py
cubicweb/etwist/service.py
cubicweb/etwist/test/data/views.py
cubicweb/etwist/test/requirements.txt
cubicweb/etwist/test/unittest_server.py
cubicweb/etwist/twconfig.py
cubicweb/etwist/twctl.py
cubicweb/ext/__init__.py
cubicweb/ext/html4zope.py
cubicweb/ext/markdown.py
cubicweb/ext/rest.py
cubicweb/ext/tal.py
cubicweb/ext/test/data/views.py
cubicweb/ext/test/requirements.txt
cubicweb/ext/test/unittest_rest.py
cubicweb/hooks/__init__.py
cubicweb/hooks/bookmark.py
cubicweb/hooks/email.py
cubicweb/hooks/integrity.py
cubicweb/hooks/logstats.py
cubicweb/hooks/metadata.py
cubicweb/hooks/notification.py
cubicweb/hooks/security.py
cubicweb/hooks/synccomputed.py
cubicweb/hooks/syncschema.py
cubicweb/hooks/syncsession.py
cubicweb/hooks/syncsources.py
cubicweb/hooks/test/data-computed/schema.py
cubicweb/hooks/test/data/schema.py
cubicweb/hooks/test/requirements.txt
cubicweb/hooks/test/unittest_bookmarks.py
cubicweb/hooks/test/unittest_hooks.py
cubicweb/hooks/test/unittest_integrity.py
cubicweb/hooks/test/unittest_security.py
cubicweb/hooks/test/unittest_synccomputed.py
cubicweb/hooks/test/unittest_syncschema.py
cubicweb/hooks/test/unittest_syncsession.py
cubicweb/hooks/workflow.py
cubicweb/hooks/zmq.py
cubicweb/i18n.py
cubicweb/i18n/de.po
cubicweb/i18n/en.po
cubicweb/i18n/es.po
cubicweb/i18n/fr.po
cubicweb/mail.py
cubicweb/md5crypt.py
cubicweb/migration.py
cubicweb/misc/cmp_schema.py
cubicweb/misc/cwdesklets/gfx/bg.png
cubicweb/misc/cwdesklets/gfx/border-left.png
cubicweb/misc/cwdesklets/gfx/logo_cw.png
cubicweb/misc/cwdesklets/gfx/rss.png
cubicweb/misc/cwdesklets/rql_query.display
cubicweb/misc/cwdesklets/rqlsensor/__init__.py
cubicweb/misc/cwdesklets/web_query.display
cubicweb/misc/cwfs/A_FAIRE
cubicweb/misc/cwfs/cwfs-spec.txt
cubicweb/misc/cwfs/cwfs.py
cubicweb/misc/cwfs/cwfs_test.py
cubicweb/misc/cwzope/cwzope.py
cubicweb/misc/migration/3.10.0_Any.py
cubicweb/misc/migration/3.10.0_common.py
cubicweb/misc/migration/3.10.4_Any.py
cubicweb/misc/migration/3.10.5_Any.py
cubicweb/misc/migration/3.10.7_Any.py
cubicweb/misc/migration/3.10.8_Any.py
cubicweb/misc/migration/3.10.9_Any.py
cubicweb/misc/migration/3.11.0_Any.py
cubicweb/misc/migration/3.12.9_Any.py
cubicweb/misc/migration/3.13.0_Any.py
cubicweb/misc/migration/3.13.3_Any.py
cubicweb/misc/migration/3.13.6_Any.py
cubicweb/misc/migration/3.13.8_Any.py
cubicweb/misc/migration/3.14.0_Any.py
cubicweb/misc/migration/3.14.7_Any.py
cubicweb/misc/migration/3.15.0_Any.py
cubicweb/misc/migration/3.15.0_common.py
cubicweb/misc/migration/3.15.4_Any.py
cubicweb/misc/migration/3.15.9_Any.py
cubicweb/misc/migration/3.16.1_Any.py
cubicweb/misc/migration/3.17.0_Any.py
cubicweb/misc/migration/3.17.11_Any.py
cubicweb/misc/migration/3.18.2_Any.py
cubicweb/misc/migration/3.18.4_Any.py
cubicweb/misc/migration/3.19.0_Any.py
cubicweb/misc/migration/3.20.0_Any.py
cubicweb/misc/migration/3.20.7_Any.py
cubicweb/misc/migration/3.20.8_Any.py
cubicweb/misc/migration/3.21.0_Any.py
cubicweb/misc/migration/3.21.1_Any.py
cubicweb/misc/migration/3.21.2_Any.py
cubicweb/misc/migration/3.22.0_Any.py
cubicweb/misc/migration/3.3.5_Any.py
cubicweb/misc/migration/3.4.0_Any.py
cubicweb/misc/migration/3.4.0_common.py
cubicweb/misc/migration/3.4.3_Any.py
cubicweb/misc/migration/3.5.0_Any.py
cubicweb/misc/migration/3.5.10_Any.py
cubicweb/misc/migration/3.5.3_Any.py
cubicweb/misc/migration/3.6.1_Any.py
cubicweb/misc/migration/3.7.0_Any.py
cubicweb/misc/migration/3.7.2_Any.py
cubicweb/misc/migration/3.7.4_Any.py
cubicweb/misc/migration/3.7.5_Any.py
cubicweb/misc/migration/3.8.1_Any.py
cubicweb/misc/migration/3.8.3_Any.py
cubicweb/misc/migration/3.8.3_common.py
cubicweb/misc/migration/3.8.5_Any.py
cubicweb/misc/migration/3.9.0_Any.py
cubicweb/misc/migration/3.9.5_Any.py
cubicweb/misc/migration/bootstrapmigration_repository.py
cubicweb/misc/migration/postcreate.py
cubicweb/misc/scripts/chpasswd.py
cubicweb/misc/scripts/cwuser_ldap2system.py
cubicweb/misc/scripts/detect_cycle.py
cubicweb/misc/scripts/ldap_change_base_dn.py
cubicweb/misc/scripts/ldapuser2ldapfeed.py
cubicweb/misc/scripts/pyroforge2datafeed.py
cubicweb/misc/scripts/repair_file_1-9_migration.py
cubicweb/misc/scripts/repair_splitbrain_ldapuser_source.py
cubicweb/mttransforms.py
cubicweb/multipart.py
cubicweb/predicates.py
cubicweb/pylintext.py
cubicweb/pytestconf.py
cubicweb/repoapi.py
cubicweb/req.py
cubicweb/rqlrewrite.py
cubicweb/rset.py
cubicweb/rtags.py
cubicweb/schema.py
cubicweb/schemas/Bookmark.py
cubicweb/schemas/__init__.py
cubicweb/schemas/_regproc.mysql.sql
cubicweb/schemas/_regproc.postgres.sql
cubicweb/schemas/base.py
cubicweb/schemas/bootstrap.py
cubicweb/schemas/workflow.py
cubicweb/selectors.py
cubicweb/server/__init__.py
cubicweb/server/checkintegrity.py
cubicweb/server/cwzmq.py
cubicweb/server/edition.py
cubicweb/server/hook.py
cubicweb/server/migractions.py
cubicweb/server/querier.py
cubicweb/server/repository.py
cubicweb/server/rqlannotation.py
cubicweb/server/schema2sql.py
cubicweb/server/schemaserial.py
cubicweb/server/serverconfig.py
cubicweb/server/serverctl.py
cubicweb/server/session.py
cubicweb/server/sources/__init__.py
cubicweb/server/sources/datafeed.py
cubicweb/server/sources/ldapfeed.py
cubicweb/server/sources/native.py
cubicweb/server/sources/rql2sql.py
cubicweb/server/sources/storages.py
cubicweb/server/sqlutils.py
cubicweb/server/ssplanner.py
cubicweb/server/test/data-cwep002/schema.py
cubicweb/server/test/data-migractions/bootstrap_cubes
cubicweb/server/test/data-migractions/cubes/__init__.py
cubicweb/server/test/data-migractions/cubes/fakecustomtype/__init__.py
cubicweb/server/test/data-migractions/cubes/fakecustomtype/__pkginfo__.py
cubicweb/server/test/data-migractions/cubes/fakecustomtype/schema.py
cubicweb/server/test/data-migractions/cubes/fakecustomtype/site_cubicweb.py
cubicweb/server/test/data-migractions/cubes/fakeemail/__init__.py
cubicweb/server/test/data-migractions/cubes/fakeemail/__pkginfo__.py
cubicweb/server/test/data-migractions/cubes/fakeemail/schema.py
cubicweb/server/test/data-migractions/migratedapp/__init__.py
cubicweb/server/test/data-migractions/migratedapp/bootstrap_cubes
cubicweb/server/test/data-migractions/migratedapp/schema.py
cubicweb/server/test/data-migractions/schema.py
cubicweb/server/test/data-schema2sql/__init__.py
cubicweb/server/test/data-schema2sql/schema/Company.py
cubicweb/server/test/data-schema2sql/schema/Dates.py
cubicweb/server/test/data-schema2sql/schema/State.py
cubicweb/server/test/data-schema2sql/schema/__init__.py
cubicweb/server/test/data-schema2sql/schema/schema.py
cubicweb/server/test/data-schema2sql/schema/toignore
cubicweb/server/test/data-schemaserial/schema.py
cubicweb/server/test/data-schemaserial/site_cubicweb.py
cubicweb/server/test/data/bootstrap_cubes
cubicweb/server/test/data/hooks.py
cubicweb/server/test/data/ldap_test.ldif
cubicweb/server/test/data/migration/postcreate.py
cubicweb/server/test/data/schema.py
cubicweb/server/test/data/site_cubicweb.py
cubicweb/server/test/data/slapd.conf.in
cubicweb/server/test/data/sources_extern
cubicweb/server/test/data/sources_multi
cubicweb/server/test/datacomputed/migratedapp/schema.py
cubicweb/server/test/datacomputed/schema.py
cubicweb/server/test/requirements.txt
cubicweb/server/test/unittest_checkintegrity.py
cubicweb/server/test/unittest_datafeed.py
cubicweb/server/test/unittest_hook.py
cubicweb/server/test/unittest_ldapsource.py
cubicweb/server/test/unittest_migractions.py
cubicweb/server/test/unittest_postgres.py
cubicweb/server/test/unittest_querier.py
cubicweb/server/test/unittest_repository.py
cubicweb/server/test/unittest_rql2sql.py
cubicweb/server/test/unittest_rqlannotation.py
cubicweb/server/test/unittest_schema2sql.py
cubicweb/server/test/unittest_schemaserial.py
cubicweb/server/test/unittest_security.py
cubicweb/server/test/unittest_serverctl.py
cubicweb/server/test/unittest_sources_native.py
cubicweb/server/test/unittest_sqlutils.py
cubicweb/server/test/unittest_ssplanner.py
cubicweb/server/test/unittest_storage.py
cubicweb/server/test/unittest_tools.py
cubicweb/server/test/unittest_undo.py
cubicweb/server/test/unittest_utils.py
cubicweb/server/utils.py
cubicweb/skeleton/DISTNAME.spec.tmpl
cubicweb/skeleton/MANIFEST.in
cubicweb/skeleton/README.tmpl
cubicweb/skeleton/__init__.py.tmpl
cubicweb/skeleton/__pkginfo__.py.tmpl
cubicweb/skeleton/data/cubes.CUBENAME.css
cubicweb/skeleton/data/cubes.CUBENAME.js
cubicweb/skeleton/debian/changelog.tmpl
cubicweb/skeleton/debian/compat
cubicweb/skeleton/debian/control.tmpl
cubicweb/skeleton/debian/copyright.tmpl
cubicweb/skeleton/debian/rules
cubicweb/skeleton/entities.py.tmpl
cubicweb/skeleton/hooks.py.tmpl
cubicweb/skeleton/i18n/en.po
cubicweb/skeleton/i18n/es.po
cubicweb/skeleton/i18n/fr.po
cubicweb/skeleton/migration/postcreate.py.tmpl
cubicweb/skeleton/migration/precreate.py.tmpl
cubicweb/skeleton/schema.py.tmpl
cubicweb/skeleton/setup.py
cubicweb/skeleton/sobjects.py.tmpl
cubicweb/skeleton/test/data/bootstrap_cubes.tmpl
cubicweb/skeleton/test/pytestconf.py
cubicweb/skeleton/test/realdb_test_CUBENAME.py
cubicweb/skeleton/test/test_CUBENAME.py.tmpl
cubicweb/skeleton/uiprops.py.tmpl
cubicweb/skeleton/views.py.tmpl
cubicweb/sobjects/__init__.py
cubicweb/sobjects/cwxmlparser.py
cubicweb/sobjects/ldapparser.py
cubicweb/sobjects/notification.py
cubicweb/sobjects/services.py
cubicweb/sobjects/supervising.py
cubicweb/sobjects/test/data/bootstrap_cubes
cubicweb/sobjects/test/data/schema.py
cubicweb/sobjects/test/data/sobjects/__init__.py
cubicweb/sobjects/test/requirements.txt
cubicweb/sobjects/test/unittest_cwxmlparser.py
cubicweb/sobjects/test/unittest_email.py
cubicweb/sobjects/test/unittest_notification.py
cubicweb/sobjects/test/unittest_register_user.py
cubicweb/sobjects/test/unittest_supervising.py
cubicweb/sobjects/textparsers.py
cubicweb/spa2rql.py
cubicweb/statsd_logger.py
cubicweb/tags.py
cubicweb/test/data/bootstrap_cubes
cubicweb/test/data/cubes/comment/__init__.py
cubicweb/test/data/cubes/comment/__pkginfo__.py
cubicweb/test/data/cubes/email/__init__.py
cubicweb/test/data/cubes/email/__pkginfo__.py
cubicweb/test/data/cubes/email/entities.py
cubicweb/test/data/cubes/email/hooks.py
cubicweb/test/data/cubes/email/views/__init__.py
cubicweb/test/data/cubes/file/__init__.py
cubicweb/test/data/cubes/file/__pkginfo__.py
cubicweb/test/data/cubes/file/entities/__init__.py
cubicweb/test/data/cubes/file/hooks/__init__.py
cubicweb/test/data/cubes/file/views.py
cubicweb/test/data/cubes/forge/__init__.py
cubicweb/test/data/cubes/forge/__pkginfo__.py
cubicweb/test/data/cubes/mycube/__init__.py
cubicweb/test/data/cubes/mycube/__pkginfo__.py
cubicweb/test/data/entities.py
cubicweb/test/data/erqlexpr_on_ertype.py
cubicweb/test/data/lowered_etype.py
cubicweb/test/data/migration/0.0.3_Any.py
cubicweb/test/data/migration/0.0.4_Any.py
cubicweb/test/data/migration/0.1.0_Any.py
cubicweb/test/data/migration/0.1.0_common.py
cubicweb/test/data/migration/0.1.0_repository.py
cubicweb/test/data/migration/0.1.2_Any.py
cubicweb/test/data/rewrite/__init__.py
cubicweb/test/data/rewrite/bootstrap_cubes
cubicweb/test/data/rewrite/schema.py
cubicweb/test/data/rqlexpr_on_computedrel.py
cubicweb/test/data/rqlexpr_on_ertype_read.py
cubicweb/test/data/rrqlexpr_on_attr.py
cubicweb/test/data/rrqlexpr_on_eetype.py
cubicweb/test/data/schema.py
cubicweb/test/data/scripts/script1.py
cubicweb/test/data/scripts/script2.py
cubicweb/test/data/scripts/script3.py
cubicweb/test/data/server_migration/2.10.2_Any.sql
cubicweb/test/data/server_migration/2.5.0_Any.sql
cubicweb/test/data/server_migration/2.6.0_Any.sql
cubicweb/test/data/server_migration/bootstrapmigration_repository.py
cubicweb/test/data/uppered_rtype.py
cubicweb/test/data/views.py
cubicweb/test/data_schemareader/schema.py
cubicweb/test/requirements.txt
cubicweb/test/unittest_binary.py
cubicweb/test/unittest_cwconfig.py
cubicweb/test/unittest_cwctl.py
cubicweb/test/unittest_entity.py
cubicweb/test/unittest_mail.py
cubicweb/test/unittest_migration.py
cubicweb/test/unittest_predicates.py
cubicweb/test/unittest_repoapi.py
cubicweb/test/unittest_req.py
cubicweb/test/unittest_rqlrewrite.py
cubicweb/test/unittest_rset.py
cubicweb/test/unittest_rtags.py
cubicweb/test/unittest_schema.py
cubicweb/test/unittest_spa2rql.py
cubicweb/test/unittest_toolsutils.py
cubicweb/test/unittest_uilib.py
cubicweb/test/unittest_utils.py
cubicweb/test/unittest_vregistry.py
cubicweb/toolsutils.py
cubicweb/transaction.py
cubicweb/uilib.py
cubicweb/utils.py
cubicweb/view.py
cubicweb/vregistry.py
cubicweb/web/__init__.py
cubicweb/web/_exceptions.py
cubicweb/web/action.py
cubicweb/web/application.py
cubicweb/web/box.py
cubicweb/web/captcha.py
cubicweb/web/component.py
cubicweb/web/controller.py
cubicweb/web/cors.py
cubicweb/web/data/accessories-text-editor.png
cubicweb/web/data/add_button.png
cubicweb/web/data/asc.gif
cubicweb/web/data/banner.png
cubicweb/web/data/bg.gif
cubicweb/web/data/bg_trame_grise.png
cubicweb/web/data/black-check.png
cubicweb/web/data/black-uncheck.png
cubicweb/web/data/bullet.png
cubicweb/web/data/bullet_orange.png
cubicweb/web/data/button.png
cubicweb/web/data/calendar.gif
cubicweb/web/data/cancel.png
cubicweb/web/data/contextFreeBoxHeader.png
cubicweb/web/data/contextualBoxHeader.png
cubicweb/web/data/critical.png
cubicweb/web/data/cubicweb.acl.css
cubicweb/web/data/cubicweb.ajax.box.js
cubicweb/web/data/cubicweb.ajax.js
cubicweb/web/data/cubicweb.calendar.css
cubicweb/web/data/cubicweb.calendar.js
cubicweb/web/data/cubicweb.calendar_popup.css
cubicweb/web/data/cubicweb.compat.js
cubicweb/web/data/cubicweb.css
cubicweb/web/data/cubicweb.edition.js
cubicweb/web/data/cubicweb.facets.css
cubicweb/web/data/cubicweb.facets.js
cubicweb/web/data/cubicweb.fckcwconfig-full.js
cubicweb/web/data/cubicweb.fckcwconfig.js
cubicweb/web/data/cubicweb.flot.js
cubicweb/web/data/cubicweb.form.css
cubicweb/web/data/cubicweb.goa.js
cubicweb/web/data/cubicweb.html_tree.css
cubicweb/web/data/cubicweb.htmlhelpers.js
cubicweb/web/data/cubicweb.ie.css
cubicweb/web/data/cubicweb.image.js
cubicweb/web/data/cubicweb.js
cubicweb/web/data/cubicweb.log.css
cubicweb/web/data/cubicweb.log.js
cubicweb/web/data/cubicweb.login.css
cubicweb/web/data/cubicweb.manageview.css
cubicweb/web/data/cubicweb.pictograms.css
cubicweb/web/data/cubicweb.preferences.css
cubicweb/web/data/cubicweb.preferences.js
cubicweb/web/data/cubicweb.print.css
cubicweb/web/data/cubicweb.python.js
cubicweb/web/data/cubicweb.reledit.js
cubicweb/web/data/cubicweb.schema.css
cubicweb/web/data/cubicweb.suggest.css
cubicweb/web/data/cubicweb.tablesorter.css
cubicweb/web/data/cubicweb.tableview.css
cubicweb/web/data/cubicweb.timetable.css
cubicweb/web/data/cubicweb.treeview.css
cubicweb/web/data/cubicweb.widgets.js
cubicweb/web/data/desc.gif
cubicweb/web/data/download.gif
cubicweb/web/data/dublincore-button.png
cubicweb/web/data/dublincore-icon.png
cubicweb/web/data/entypo.eot
cubicweb/web/data/entypo.svg
cubicweb/web/data/entypo.ttf
cubicweb/web/data/entypo.woff
cubicweb/web/data/error.png
cubicweb/web/data/excanvas.js
cubicweb/web/data/favicon.ico
cubicweb/web/data/feed-icon.png
cubicweb/web/data/feed-icon16x16.png
cubicweb/web/data/feed-icon32x32.png
cubicweb/web/data/file.gif
cubicweb/web/data/folder-closed.gif
cubicweb/web/data/folder.gif
cubicweb/web/data/fullcalendar.css
cubicweb/web/data/fullcalendar.js
cubicweb/web/data/fullcalendar.locale.js
cubicweb/web/data/fullcalendar.min.js
cubicweb/web/data/fullcalendar.print.css
cubicweb/web/data/go.png
cubicweb/web/data/go_next.png
cubicweb/web/data/go_prev.png
cubicweb/web/data/gradient-grey-up.png
cubicweb/web/data/gradient-grey.gif
cubicweb/web/data/help.png
cubicweb/web/data/help_ie.png
cubicweb/web/data/icon_blank.png
cubicweb/web/data/icon_bookmark.gif
cubicweb/web/data/icon_emailaddress.gif
cubicweb/web/data/icon_euser.gif
cubicweb/web/data/icon_map.png
cubicweb/web/data/icon_state.gif
cubicweb/web/data/images/animated-overlay.gif
cubicweb/web/data/images/ui-bg_flat_0_aaaaaa_40x100.png
cubicweb/web/data/images/ui-bg_flat_75_ffffff_40x100.png
cubicweb/web/data/images/ui-bg_glass_55_fbf9ee_1x400.png
cubicweb/web/data/images/ui-bg_glass_65_ffffff_1x400.png
cubicweb/web/data/images/ui-bg_glass_75_dadada_1x400.png
cubicweb/web/data/images/ui-bg_glass_75_e6e6e6_1x400.png
cubicweb/web/data/images/ui-bg_glass_95_fef1ec_1x400.png
cubicweb/web/data/images/ui-bg_highlight-soft_75_cccccc_1x100.png
cubicweb/web/data/images/ui-icons_222222_256x240.png
cubicweb/web/data/images/ui-icons_2e83ff_256x240.png
cubicweb/web/data/images/ui-icons_454545_256x240.png
cubicweb/web/data/images/ui-icons_888888_256x240.png
cubicweb/web/data/images/ui-icons_cd0a0a_256x240.png
cubicweb/web/data/incontextBoxHeader.png
cubicweb/web/data/information.png
cubicweb/web/data/jquery-migrate.js
cubicweb/web/data/jquery-treeview/changelog.md
cubicweb/web/data/jquery-treeview/images/ajax-loader.gif
cubicweb/web/data/jquery-treeview/images/file.gif
cubicweb/web/data/jquery-treeview/images/folder-closed.gif
cubicweb/web/data/jquery-treeview/images/folder.gif
cubicweb/web/data/jquery-treeview/images/minus.gif
cubicweb/web/data/jquery-treeview/images/plus.gif
cubicweb/web/data/jquery-treeview/images/treeview-black-line.gif
cubicweb/web/data/jquery-treeview/images/treeview-black.gif
cubicweb/web/data/jquery-treeview/images/treeview-default-line.gif
cubicweb/web/data/jquery-treeview/images/treeview-default.gif
cubicweb/web/data/jquery-treeview/images/treeview-famfamfam-line.gif
cubicweb/web/data/jquery-treeview/images/treeview-famfamfam.gif
cubicweb/web/data/jquery-treeview/images/treeview-gray-line.gif
cubicweb/web/data/jquery-treeview/images/treeview-gray.gif
cubicweb/web/data/jquery-treeview/images/treeview-red-line.gif
cubicweb/web/data/jquery-treeview/images/treeview-red.gif
cubicweb/web/data/jquery-treeview/jquery.treeview.async.js
cubicweb/web/data/jquery-treeview/jquery.treeview.css
cubicweb/web/data/jquery-treeview/jquery.treeview.edit.js
cubicweb/web/data/jquery-treeview/jquery.treeview.js
cubicweb/web/data/jquery-treeview/jquery.treeview.sortable.js
cubicweb/web/data/jquery-treeview/readme.md
cubicweb/web/data/jquery-treeview/screenshot.png
cubicweb/web/data/jquery.cookie.js
cubicweb/web/data/jquery.flot.js
cubicweb/web/data/jquery.js
cubicweb/web/data/jquery.qtip.js
cubicweb/web/data/jquery.qtip.min.js
cubicweb/web/data/jquery.tablesorter.js
cubicweb/web/data/jquery.timePicker.js
cubicweb/web/data/jquery.timepicker.css
cubicweb/web/data/jquery.ui.css
cubicweb/web/data/jquery.ui.datepicker-de.js
cubicweb/web/data/jquery.ui.datepicker-es.js
cubicweb/web/data/jquery.ui.datepicker-fr.js
cubicweb/web/data/jquery.ui.js
cubicweb/web/data/liveclipboard-icon.png
cubicweb/web/data/loading.gif
cubicweb/web/data/logo-cubicweb-gray.svg
cubicweb/web/data/logo-cubicweb-icon.svg
cubicweb/web/data/logo-cubicweb-text.svg
cubicweb/web/data/logo-cubicweb.svg
cubicweb/web/data/logo-logilab.png
cubicweb/web/data/logo.png
cubicweb/web/data/microformats-button.png
cubicweb/web/data/microformats-icon.png
cubicweb/web/data/minus.gif
cubicweb/web/data/no-check-no-border.png
cubicweb/web/data/ok.png
cubicweb/web/data/pen_icon.png
cubicweb/web/data/plus.gif
cubicweb/web/data/plus.png
cubicweb/web/data/porkys.ttf
cubicweb/web/data/puce.png
cubicweb/web/data/puce_down.png
cubicweb/web/data/puce_down_black.png
cubicweb/web/data/puce_up.png
cubicweb/web/data/pygments.css
cubicweb/web/data/required.png
cubicweb/web/data/rss-button.png
cubicweb/web/data/rss.png
cubicweb/web/data/search.png
cubicweb/web/data/sendcancel.png
cubicweb/web/data/sendok.png
cubicweb/web/data/trash_can.png
cubicweb/web/data/trash_can_small.png
cubicweb/web/data/ui.all.css
cubicweb/web/data/uiprops.py
cubicweb/web/data/up.gif
cubicweb/web/data/upload.gif
cubicweb/web/facet.py
cubicweb/web/form.py
cubicweb/web/formfields.py
cubicweb/web/formwidgets.py
cubicweb/web/htmlwidgets.py
cubicweb/web/http_headers.py
cubicweb/web/httpcache.py
cubicweb/web/propertysheet.py
cubicweb/web/request.py
cubicweb/web/schemaviewer.py
cubicweb/web/test/data/bootstrap_cubes
cubicweb/web/test/data/entities.py
cubicweb/web/test/data/pouet.css
cubicweb/web/test/data/schema.py
cubicweb/web/test/data/sheet1.py
cubicweb/web/test/data/sheet2.py
cubicweb/web/test/data/static/jstests/ajax_url0.html
cubicweb/web/test/data/static/jstests/ajax_url1.html
cubicweb/web/test/data/static/jstests/ajaxresult.json
cubicweb/web/test/data/static/jstests/test_ajax.html
cubicweb/web/test/data/static/jstests/test_ajax.js
cubicweb/web/test/data/static/jstests/test_htmlhelpers.html
cubicweb/web/test/data/static/jstests/test_htmlhelpers.js
cubicweb/web/test/data/static/jstests/test_utils.html
cubicweb/web/test/data/static/jstests/test_utils.js
cubicweb/web/test/data/static/jstests/utils.js
cubicweb/web/test/data/views.py
cubicweb/web/test/requirements.txt
cubicweb/web/test/test_jscript.py
cubicweb/web/test/test_views.py
cubicweb/web/test/testutils.js
cubicweb/web/test/unittest_application.py
cubicweb/web/test/unittest_breadcrumbs.py
cubicweb/web/test/unittest_controller.py
cubicweb/web/test/unittest_facet.py
cubicweb/web/test/unittest_form.py
cubicweb/web/test/unittest_formfields.py
cubicweb/web/test/unittest_formwidgets.py
cubicweb/web/test/unittest_http.py
cubicweb/web/test/unittest_http_headers.py
cubicweb/web/test/unittest_idownloadable.py
cubicweb/web/test/unittest_magicsearch.py
cubicweb/web/test/unittest_propertysheet.py
cubicweb/web/test/unittest_reledit.py
cubicweb/web/test/unittest_request.py
cubicweb/web/test/unittest_uicfg.py
cubicweb/web/test/unittest_urlpublisher.py
cubicweb/web/test/unittest_urlrewrite.py
cubicweb/web/test/unittest_views_actions.py
cubicweb/web/test/unittest_views_apacherewrite.py
cubicweb/web/test/unittest_views_basecontrollers.py
cubicweb/web/test/unittest_views_basetemplates.py
cubicweb/web/test/unittest_views_baseviews.py
cubicweb/web/test/unittest_views_csv.py
cubicweb/web/test/unittest_views_editforms.py
cubicweb/web/test/unittest_views_errorform.py
cubicweb/web/test/unittest_views_forms.py
cubicweb/web/test/unittest_views_json.py
cubicweb/web/test/unittest_views_navigation.py
cubicweb/web/test/unittest_views_pyviews.py
cubicweb/web/test/unittest_views_searchrestriction.py
cubicweb/web/test/unittest_views_staticcontrollers.py
cubicweb/web/test/unittest_views_treeview.py
cubicweb/web/test/unittest_views_xmlrss.py
cubicweb/web/test/unittest_viewselector.py
cubicweb/web/test/unittest_web.py
cubicweb/web/test/unittest_webconfig.py
cubicweb/web/uicfg.py
cubicweb/web/uihelper.py
cubicweb/web/views/__init__.py
cubicweb/web/views/actions.py
cubicweb/web/views/ajaxcontroller.py
cubicweb/web/views/ajaxedit.py
cubicweb/web/views/apacherewrite.py
cubicweb/web/views/authentication.py
cubicweb/web/views/autoform.py
cubicweb/web/views/basecomponents.py
cubicweb/web/views/basecontrollers.py
cubicweb/web/views/basetemplates.py
cubicweb/web/views/baseviews.py
cubicweb/web/views/bookmark.py
cubicweb/web/views/boxes.py
cubicweb/web/views/calendar.py
cubicweb/web/views/csvexport.py
cubicweb/web/views/cwproperties.py
cubicweb/web/views/cwsources.py
cubicweb/web/views/cwuser.py
cubicweb/web/views/debug.py
cubicweb/web/views/dotgraphview.py
cubicweb/web/views/edit_attributes.pt
cubicweb/web/views/editcontroller.py
cubicweb/web/views/editforms.py
cubicweb/web/views/editviews.py
cubicweb/web/views/emailaddress.py
cubicweb/web/views/embedding.py
cubicweb/web/views/error.py
cubicweb/web/views/facets.py
cubicweb/web/views/formrenderers.py
cubicweb/web/views/forms.py
cubicweb/web/views/ibreadcrumbs.py
cubicweb/web/views/idownloadable.py
cubicweb/web/views/igeocodable.py
cubicweb/web/views/isioc.py
cubicweb/web/views/json.py
cubicweb/web/views/magicsearch.py
cubicweb/web/views/management.py
cubicweb/web/views/massmailing.py
cubicweb/web/views/navigation.py
cubicweb/web/views/owl.py
cubicweb/web/views/plots.py
cubicweb/web/views/primary.py
cubicweb/web/views/pyviews.py
cubicweb/web/views/rdf.py
cubicweb/web/views/reledit.py
cubicweb/web/views/schema.py
cubicweb/web/views/searchrestriction.py
cubicweb/web/views/sessions.py
cubicweb/web/views/sparql.py
cubicweb/web/views/startup.py
cubicweb/web/views/staticcontrollers.py
cubicweb/web/views/tableview.py
cubicweb/web/views/tabs.py
cubicweb/web/views/timeline.py
cubicweb/web/views/timetable.py
cubicweb/web/views/treeview.py
cubicweb/web/views/uicfg.py
cubicweb/web/views/undohistory.py
cubicweb/web/views/urlpublishing.py
cubicweb/web/views/urlrewrite.py
cubicweb/web/views/vcard.py
cubicweb/web/views/wdoc.py
cubicweb/web/views/workflow.py
cubicweb/web/views/xbel.py
cubicweb/web/views/xmlrss.py
cubicweb/web/wdoc/about_en.rst
cubicweb/web/wdoc/about_fr.rst
cubicweb/web/wdoc/add_content_en.rst
cubicweb/web/wdoc/add_content_fr.rst
cubicweb/web/wdoc/advanced_usage_en.rst
cubicweb/web/wdoc/advanced_usage_schema_en.rst
cubicweb/web/wdoc/advanced_usage_schema_fr.rst
cubicweb/web/wdoc/bookmarks_en.rst
cubicweb/web/wdoc/bookmarks_fr.rst
cubicweb/web/wdoc/custom_view_en.rst
cubicweb/web/wdoc/custom_view_fr.rst
cubicweb/web/wdoc/custom_view_last_update_en.rst
cubicweb/web/wdoc/custom_view_last_update_fr.rst
cubicweb/web/wdoc/custom_view_rss_en.rst
cubicweb/web/wdoc/custom_view_rss_fr.rst
cubicweb/web/wdoc/glossary_en.rst
cubicweb/web/wdoc/glossary_fr.rst
cubicweb/web/wdoc/images/userprefs_en.png
cubicweb/web/wdoc/images/userprefs_fr.png
cubicweb/web/wdoc/main_en.rst
cubicweb/web/wdoc/search_en.rst
cubicweb/web/wdoc/search_fr.rst
cubicweb/web/wdoc/search_sample_queries_en.rst
cubicweb/web/wdoc/search_sample_queries_fr.rst
cubicweb/web/wdoc/standard_usage_en.rst
cubicweb/web/wdoc/standard_usage_fr.rst
cubicweb/web/wdoc/toc.xml
cubicweb/web/wdoc/tut_rql_en.rst
cubicweb/web/wdoc/tut_rql_fr.rst
cubicweb/web/wdoc/userprefs_en.rst
cubicweb/web/wdoc/userprefs_fr.rst
cubicweb/web/webconfig.py
cubicweb/web/webctl.py
cubicweb/wsgi/__init__.py
cubicweb/wsgi/handler.py
cubicweb/wsgi/request.py
cubicweb/wsgi/server.py
cubicweb/wsgi/test/requirements.txt
cubicweb/wsgi/test/unittest_wsgi.py
cubicweb/wsgi/tnd.py
cubicweb/wsgi/wz.py
cubicweb/xy.py
cwconfig.py
cwctl.py
cwgettext.py
cwvreg.py
dataimport/__init__.py
dataimport/csv.py
dataimport/deprecated.py
dataimport/importer.py
dataimport/massive_store.py
dataimport/pgstore.py
dataimport/stores.py
dataimport/test/data-massimport/schema.py
dataimport/test/data/geonames.csv
dataimport/test/data/people.csv
dataimport/test/data/schema.py
dataimport/test/data/timeZones.txt
dataimport/test/test_csv.py
dataimport/test/test_massive_store.py
dataimport/test/test_pgstore.py
dataimport/test/test_sqlgenstore.py
dataimport/test/test_stores.py
dataimport/test/unittest_importer.py
devtools/__init__.py
devtools/cwtwill.py
devtools/data/cwmock.js
devtools/data/qunit.css
devtools/data/qunit.js
devtools/data/xvfb-run.sh
devtools/dataimport.py
devtools/devctl.py
devtools/fake.py
devtools/fill.py
devtools/fix_po_encoding
devtools/htmlparser.py
devtools/httptest.py
devtools/instrument.py
devtools/qunit.py
devtools/realdbtest.py
devtools/repotest.py
devtools/stresstester.py
devtools/test/data/bootstrap_cubes
devtools/test/data/cubes/__init__.py
devtools/test/data/cubes/i18ntestcube/__init__.py
devtools/test/data/cubes/i18ntestcube/__pkginfo__.py
devtools/test/data/cubes/i18ntestcube/i18n/en.po.ref
devtools/test/data/cubes/i18ntestcube/schema.py
devtools/test/data/cubes/i18ntestcube/views.py
devtools/test/data/firstnames.txt
devtools/test/data/schema.py
devtools/test/data/static/js_examples/dep_1.js
devtools/test/data/static/js_examples/deps_2.js
devtools/test/data/static/js_examples/test_simple_failure.js
devtools/test/data/static/js_examples/test_simple_success.js
devtools/test/data/static/js_examples/test_with_dep.js
devtools/test/data/static/js_examples/test_with_ordered_deps.js
devtools/test/data/static/js_examples/utils.js
devtools/test/data/views.py
devtools/test/requirements.txt
devtools/test/unittest_dbfill.py
devtools/test/unittest_devctl.py
devtools/test/unittest_fill.py
devtools/test/unittest_httptest.py
devtools/test/unittest_i18n.py
devtools/test/unittest_qunit.py
devtools/test/unittest_testlib.py
devtools/test/unittest_webtest.py
devtools/testlib.py
devtools/webtest.py
doc/Makefile
doc/conf.py
entities/__init__.py
entities/adapters.py
entities/authobjs.py
entities/lib.py
entities/schemaobjs.py
entities/sources.py
entities/test/data/migration/postcreate.py
entities/test/data/schema.py
entities/test/requirements.txt
entities/test/unittest_base.py
entities/test/unittest_wfobjs.py
entities/wfobjs.py
entity.py
etwist/__init__.py
etwist/http.py
etwist/request.py
etwist/server.py
etwist/service.py
etwist/test/data/views.py
etwist/test/requirements.txt
etwist/test/unittest_server.py
etwist/twconfig.py
etwist/twctl.py
ext/__init__.py
ext/html4zope.py
ext/markdown.py
ext/rest.py
ext/tal.py
ext/test/data/views.py
ext/test/requirements.txt
ext/test/unittest_rest.py
hooks/__init__.py
hooks/bookmark.py
hooks/email.py
hooks/integrity.py
hooks/logstats.py
hooks/metadata.py
hooks/notification.py
hooks/security.py
hooks/synccomputed.py
hooks/syncschema.py
hooks/syncsession.py
hooks/syncsources.py
hooks/test/data-computed/schema.py
hooks/test/data/schema.py
hooks/test/requirements.txt
hooks/test/unittest_bookmarks.py
hooks/test/unittest_hooks.py
hooks/test/unittest_integrity.py
hooks/test/unittest_security.py
hooks/test/unittest_synccomputed.py
hooks/test/unittest_syncschema.py
hooks/test/unittest_syncsession.py
hooks/workflow.py
hooks/zmq.py
i18n.py
i18n/de.po
i18n/en.po
i18n/es.po
i18n/fr.po
mail.py
md5crypt.py
migration.py
misc/cmp_schema.py
misc/cwdesklets/gfx/bg.png
misc/cwdesklets/gfx/border-left.png
misc/cwdesklets/gfx/logo_cw.png
misc/cwdesklets/gfx/rss.png
misc/cwdesklets/rql_query.display
misc/cwdesklets/rqlsensor/__init__.py
misc/cwdesklets/web_query.display
misc/cwfs/A_FAIRE
misc/cwfs/cwfs-spec.txt
misc/cwfs/cwfs.py
misc/cwfs/cwfs_test.py
misc/cwzope/cwzope.py
misc/migration/3.10.0_Any.py
misc/migration/3.10.0_common.py
misc/migration/3.10.4_Any.py
misc/migration/3.10.5_Any.py
misc/migration/3.10.7_Any.py
misc/migration/3.10.8_Any.py
misc/migration/3.10.9_Any.py
misc/migration/3.11.0_Any.py
misc/migration/3.12.9_Any.py
misc/migration/3.13.0_Any.py
misc/migration/3.13.3_Any.py
misc/migration/3.13.6_Any.py
misc/migration/3.13.8_Any.py
misc/migration/3.14.0_Any.py
misc/migration/3.14.7_Any.py
misc/migration/3.15.0_Any.py
misc/migration/3.15.0_common.py
misc/migration/3.15.4_Any.py
misc/migration/3.15.9_Any.py
misc/migration/3.16.1_Any.py
misc/migration/3.17.0_Any.py
misc/migration/3.17.11_Any.py
misc/migration/3.18.2_Any.py
misc/migration/3.18.4_Any.py
misc/migration/3.19.0_Any.py
misc/migration/3.20.0_Any.py
misc/migration/3.20.7_Any.py
misc/migration/3.20.8_Any.py
misc/migration/3.21.0_Any.py
misc/migration/3.21.1_Any.py
misc/migration/3.21.2_Any.py
misc/migration/3.22.0_Any.py
misc/migration/3.3.5_Any.py
misc/migration/3.4.0_Any.py
misc/migration/3.4.0_common.py
misc/migration/3.4.3_Any.py
misc/migration/3.5.0_Any.py
misc/migration/3.5.10_Any.py
misc/migration/3.5.3_Any.py
misc/migration/3.6.1_Any.py
misc/migration/3.7.0_Any.py
misc/migration/3.7.2_Any.py
misc/migration/3.7.4_Any.py
misc/migration/3.7.5_Any.py
misc/migration/3.8.1_Any.py
misc/migration/3.8.3_Any.py
misc/migration/3.8.3_common.py
misc/migration/3.8.5_Any.py
misc/migration/3.9.0_Any.py
misc/migration/3.9.5_Any.py
misc/migration/bootstrapmigration_repository.py
misc/migration/postcreate.py
misc/scripts/chpasswd.py
misc/scripts/cwuser_ldap2system.py
misc/scripts/detect_cycle.py
misc/scripts/ldap_change_base_dn.py
misc/scripts/ldapuser2ldapfeed.py
misc/scripts/pyroforge2datafeed.py
misc/scripts/repair_file_1-9_migration.py
misc/scripts/repair_splitbrain_ldapuser_source.py
mttransforms.py
multipart.py
predicates.py
pylintext.py
pytestconf.py
repoapi.py
req.py
rqlrewrite.py
rset.py
rtags.py
schema.py
schemas/Bookmark.py
schemas/__init__.py
schemas/_regproc.mysql.sql
schemas/_regproc.postgres.sql
schemas/base.py
schemas/bootstrap.py
schemas/workflow.py
selectors.py
server/__init__.py
server/checkintegrity.py
server/cwzmq.py
server/edition.py
server/hook.py
server/migractions.py
server/querier.py
server/repository.py
server/rqlannotation.py
server/schema2sql.py
server/schemaserial.py
server/serverconfig.py
server/serverctl.py
server/session.py
server/sources/__init__.py
server/sources/datafeed.py
server/sources/ldapfeed.py
server/sources/native.py
server/sources/rql2sql.py
server/sources/storages.py
server/sqlutils.py
server/ssplanner.py
server/test/data-cwep002/schema.py
server/test/data-migractions/bootstrap_cubes
server/test/data-migractions/cubes/__init__.py
server/test/data-migractions/cubes/fakecustomtype/__init__.py
server/test/data-migractions/cubes/fakecustomtype/__pkginfo__.py
server/test/data-migractions/cubes/fakecustomtype/schema.py
server/test/data-migractions/cubes/fakecustomtype/site_cubicweb.py
server/test/data-migractions/cubes/fakeemail/__init__.py
server/test/data-migractions/cubes/fakeemail/__pkginfo__.py
server/test/data-migractions/cubes/fakeemail/schema.py
server/test/data-migractions/migratedapp/__init__.py
server/test/data-migractions/migratedapp/bootstrap_cubes
server/test/data-migractions/migratedapp/schema.py
server/test/data-migractions/schema.py
server/test/data-schema2sql/__init__.py
server/test/data-schema2sql/schema/Company.py
server/test/data-schema2sql/schema/Dates.py
server/test/data-schema2sql/schema/State.py
server/test/data-schema2sql/schema/__init__.py
server/test/data-schema2sql/schema/schema.py
server/test/data-schema2sql/schema/toignore
server/test/data-schemaserial/schema.py
server/test/data-schemaserial/site_cubicweb.py
server/test/data/bootstrap_cubes
server/test/data/hooks.py
server/test/data/ldap_test.ldif
server/test/data/migration/postcreate.py
server/test/data/schema.py
server/test/data/site_cubicweb.py
server/test/data/slapd.conf.in
server/test/data/sources_extern
server/test/data/sources_multi
server/test/datacomputed/migratedapp/schema.py
server/test/datacomputed/schema.py
server/test/requirements.txt
server/test/unittest_checkintegrity.py
server/test/unittest_datafeed.py
server/test/unittest_hook.py
server/test/unittest_ldapsource.py
server/test/unittest_migractions.py
server/test/unittest_postgres.py
server/test/unittest_querier.py
server/test/unittest_repository.py
server/test/unittest_rql2sql.py
server/test/unittest_rqlannotation.py
server/test/unittest_schema2sql.py
server/test/unittest_schemaserial.py
server/test/unittest_security.py
server/test/unittest_serverctl.py
server/test/unittest_sources_native.py
server/test/unittest_sqlutils.py
server/test/unittest_ssplanner.py
server/test/unittest_storage.py
server/test/unittest_tools.py
server/test/unittest_undo.py
server/test/unittest_utils.py
server/utils.py
setup.py
skeleton/DISTNAME.spec.tmpl
skeleton/MANIFEST.in
skeleton/README.tmpl
skeleton/__init__.py.tmpl
skeleton/__pkginfo__.py.tmpl
skeleton/data/cubes.CUBENAME.css
skeleton/data/cubes.CUBENAME.js
skeleton/debian/changelog.tmpl
skeleton/debian/compat
skeleton/debian/control.tmpl
skeleton/debian/copyright.tmpl
skeleton/debian/rules
skeleton/entities.py.tmpl
skeleton/hooks.py.tmpl
skeleton/i18n/en.po
skeleton/i18n/es.po
skeleton/i18n/fr.po
skeleton/migration/postcreate.py.tmpl
skeleton/migration/precreate.py.tmpl
skeleton/schema.py.tmpl
skeleton/setup.py
skeleton/sobjects.py.tmpl
skeleton/test/data/bootstrap_cubes.tmpl
skeleton/test/pytestconf.py
skeleton/test/realdb_test_CUBENAME.py
skeleton/test/test_CUBENAME.py.tmpl
skeleton/uiprops.py.tmpl
skeleton/views.py.tmpl
sobjects/__init__.py
sobjects/cwxmlparser.py
sobjects/ldapparser.py
sobjects/notification.py
sobjects/services.py
sobjects/supervising.py
sobjects/test/data/bootstrap_cubes
sobjects/test/data/schema.py
sobjects/test/data/sobjects/__init__.py
sobjects/test/requirements.txt
sobjects/test/unittest_cwxmlparser.py
sobjects/test/unittest_email.py
sobjects/test/unittest_notification.py
sobjects/test/unittest_register_user.py
sobjects/test/unittest_supervising.py
sobjects/textparsers.py
spa2rql.py
statsd_logger.py
tags.py
test/data/bootstrap_cubes
test/data/cubes/comment/__init__.py
test/data/cubes/comment/__pkginfo__.py
test/data/cubes/email/__init__.py
test/data/cubes/email/__pkginfo__.py
test/data/cubes/email/entities.py
test/data/cubes/email/hooks.py
test/data/cubes/email/views/__init__.py
test/data/cubes/file/__init__.py
test/data/cubes/file/__pkginfo__.py
test/data/cubes/file/entities/__init__.py
test/data/cubes/file/hooks/__init__.py
test/data/cubes/file/views.py
test/data/cubes/forge/__init__.py
test/data/cubes/forge/__pkginfo__.py
test/data/cubes/mycube/__init__.py
test/data/cubes/mycube/__pkginfo__.py
test/data/entities.py
test/data/erqlexpr_on_ertype.py
test/data/lowered_etype.py
test/data/migration/0.0.3_Any.py
test/data/migration/0.0.4_Any.py
test/data/migration/0.1.0_Any.py
test/data/migration/0.1.0_common.py
test/data/migration/0.1.0_repository.py
test/data/migration/0.1.2_Any.py
test/data/rewrite/__init__.py
test/data/rewrite/bootstrap_cubes
test/data/rewrite/schema.py
test/data/rqlexpr_on_computedrel.py
test/data/rqlexpr_on_ertype_read.py
test/data/rrqlexpr_on_attr.py
test/data/rrqlexpr_on_eetype.py
test/data/schema.py
test/data/scripts/script1.py
test/data/scripts/script2.py
test/data/scripts/script3.py
test/data/server_migration/2.10.2_Any.sql
test/data/server_migration/2.5.0_Any.sql
test/data/server_migration/2.6.0_Any.sql
test/data/server_migration/bootstrapmigration_repository.py
test/data/uppered_rtype.py
test/data/views.py
test/data_schemareader/schema.py
test/requirements.txt
test/unittest_binary.py
test/unittest_cwconfig.py
test/unittest_cwctl.py
test/unittest_entity.py
test/unittest_mail.py
test/unittest_migration.py
test/unittest_predicates.py
test/unittest_repoapi.py
test/unittest_req.py
test/unittest_rqlrewrite.py
test/unittest_rset.py
test/unittest_rtags.py
test/unittest_schema.py
test/unittest_spa2rql.py
test/unittest_toolsutils.py
test/unittest_uilib.py
test/unittest_utils.py
test/unittest_vregistry.py
toolsutils.py
tox.ini
transaction.py
uilib.py
utils.py
view.py
vregistry.py
web/__init__.py
web/_exceptions.py
web/action.py
web/application.py
web/box.py
web/captcha.py
web/component.py
web/controller.py
web/cors.py
web/data/accessories-text-editor.png
web/data/add_button.png
web/data/asc.gif
web/data/banner.png
web/data/bg.gif
web/data/bg_trame_grise.png
web/data/black-check.png
web/data/black-uncheck.png
web/data/bullet.png
web/data/bullet_orange.png
web/data/button.png
web/data/calendar.gif
web/data/cancel.png
web/data/contextFreeBoxHeader.png
web/data/contextualBoxHeader.png
web/data/critical.png
web/data/cubicweb.acl.css
web/data/cubicweb.ajax.box.js
web/data/cubicweb.ajax.js
web/data/cubicweb.calendar.css
web/data/cubicweb.calendar.js
web/data/cubicweb.calendar_popup.css
web/data/cubicweb.compat.js
web/data/cubicweb.css
web/data/cubicweb.edition.js
web/data/cubicweb.facets.css
web/data/cubicweb.facets.js
web/data/cubicweb.fckcwconfig-full.js
web/data/cubicweb.fckcwconfig.js
web/data/cubicweb.flot.js
web/data/cubicweb.form.css
web/data/cubicweb.goa.js
web/data/cubicweb.html_tree.css
web/data/cubicweb.htmlhelpers.js
web/data/cubicweb.ie.css
web/data/cubicweb.image.js
web/data/cubicweb.js
web/data/cubicweb.log.css
web/data/cubicweb.log.js
web/data/cubicweb.login.css
web/data/cubicweb.manageview.css
web/data/cubicweb.pictograms.css
web/data/cubicweb.preferences.css
web/data/cubicweb.preferences.js
web/data/cubicweb.print.css
web/data/cubicweb.python.js
web/data/cubicweb.reledit.js
web/data/cubicweb.schema.css
web/data/cubicweb.suggest.css
web/data/cubicweb.tablesorter.css
web/data/cubicweb.tableview.css
web/data/cubicweb.timetable.css
web/data/cubicweb.treeview.css
web/data/cubicweb.widgets.js
web/data/desc.gif
web/data/download.gif
web/data/dublincore-button.png
web/data/dublincore-icon.png
web/data/entypo.eot
web/data/entypo.svg
web/data/entypo.ttf
web/data/entypo.woff
web/data/error.png
web/data/excanvas.js
web/data/favicon.ico
web/data/feed-icon.png
web/data/feed-icon16x16.png
web/data/feed-icon32x32.png
web/data/file.gif
web/data/folder-closed.gif
web/data/folder.gif
web/data/fullcalendar.css
web/data/fullcalendar.js
web/data/fullcalendar.locale.js
web/data/fullcalendar.min.js
web/data/fullcalendar.print.css
web/data/go.png
web/data/go_next.png
web/data/go_prev.png
web/data/gradient-grey-up.png
web/data/gradient-grey.gif
web/data/help.png
web/data/help_ie.png
web/data/icon_blank.png
web/data/icon_bookmark.gif
web/data/icon_emailaddress.gif
web/data/icon_euser.gif
web/data/icon_map.png
web/data/icon_state.gif
web/data/images/animated-overlay.gif
web/data/images/ui-bg_flat_0_aaaaaa_40x100.png
web/data/images/ui-bg_flat_75_ffffff_40x100.png
web/data/images/ui-bg_glass_55_fbf9ee_1x400.png
web/data/images/ui-bg_glass_65_ffffff_1x400.png
web/data/images/ui-bg_glass_75_dadada_1x400.png
web/data/images/ui-bg_glass_75_e6e6e6_1x400.png
web/data/images/ui-bg_glass_95_fef1ec_1x400.png
web/data/images/ui-bg_highlight-soft_75_cccccc_1x100.png
web/data/images/ui-icons_222222_256x240.png
web/data/images/ui-icons_2e83ff_256x240.png
web/data/images/ui-icons_454545_256x240.png
web/data/images/ui-icons_888888_256x240.png
web/data/images/ui-icons_cd0a0a_256x240.png
web/data/incontextBoxHeader.png
web/data/information.png
web/data/jquery-migrate.js
web/data/jquery-treeview/changelog.md
web/data/jquery-treeview/images/ajax-loader.gif
web/data/jquery-treeview/images/file.gif
web/data/jquery-treeview/images/folder-closed.gif
web/data/jquery-treeview/images/folder.gif
web/data/jquery-treeview/images/minus.gif
web/data/jquery-treeview/images/plus.gif
web/data/jquery-treeview/images/treeview-black-line.gif
web/data/jquery-treeview/images/treeview-black.gif
web/data/jquery-treeview/images/treeview-default-line.gif
web/data/jquery-treeview/images/treeview-default.gif
web/data/jquery-treeview/images/treeview-famfamfam-line.gif
web/data/jquery-treeview/images/treeview-famfamfam.gif
web/data/jquery-treeview/images/treeview-gray-line.gif
web/data/jquery-treeview/images/treeview-gray.gif
web/data/jquery-treeview/images/treeview-red-line.gif
web/data/jquery-treeview/images/treeview-red.gif
web/data/jquery-treeview/jquery.treeview.async.js
web/data/jquery-treeview/jquery.treeview.css
web/data/jquery-treeview/jquery.treeview.edit.js
web/data/jquery-treeview/jquery.treeview.js
web/data/jquery-treeview/jquery.treeview.sortable.js
web/data/jquery-treeview/readme.md
web/data/jquery-treeview/screenshot.png
web/data/jquery.cookie.js
web/data/jquery.flot.js
web/data/jquery.js
web/data/jquery.qtip.js
web/data/jquery.qtip.min.js
web/data/jquery.tablesorter.js
web/data/jquery.timePicker.js
web/data/jquery.timepicker.css
web/data/jquery.ui.css
web/data/jquery.ui.datepicker-de.js
web/data/jquery.ui.datepicker-es.js
web/data/jquery.ui.datepicker-fr.js
web/data/jquery.ui.js
web/data/liveclipboard-icon.png
web/data/loading.gif
web/data/logo-cubicweb-gray.svg
web/data/logo-cubicweb-icon.svg
web/data/logo-cubicweb-text.svg
web/data/logo-cubicweb.svg
web/data/logo-logilab.png
web/data/logo.png
web/data/microformats-button.png
web/data/microformats-icon.png
web/data/minus.gif
web/data/no-check-no-border.png
web/data/ok.png
web/data/pen_icon.png
web/data/plus.gif
web/data/plus.png
web/data/porkys.ttf
web/data/puce.png
web/data/puce_down.png
web/data/puce_down_black.png
web/data/puce_up.png
web/data/pygments.css
web/data/required.png
web/data/rss-button.png
web/data/rss.png
web/data/search.png
web/data/sendcancel.png
web/data/sendok.png
web/data/trash_can.png
web/data/trash_can_small.png
web/data/ui.all.css
web/data/uiprops.py
web/data/up.gif
web/data/upload.gif
web/facet.py
web/form.py
web/formfields.py
web/formwidgets.py
web/htmlwidgets.py
web/http_headers.py
web/httpcache.py
web/propertysheet.py
web/request.py
web/schemaviewer.py
web/test/data/bootstrap_cubes
web/test/data/entities.py
web/test/data/pouet.css
web/test/data/schema.py
web/test/data/sheet1.py
web/test/data/sheet2.py
web/test/data/static/jstests/ajax_url0.html
web/test/data/static/jstests/ajax_url1.html
web/test/data/static/jstests/ajaxresult.json
web/test/data/static/jstests/test_ajax.html
web/test/data/static/jstests/test_ajax.js
web/test/data/static/jstests/test_htmlhelpers.html
web/test/data/static/jstests/test_htmlhelpers.js
web/test/data/static/jstests/test_utils.html
web/test/data/static/jstests/test_utils.js
web/test/data/static/jstests/utils.js
web/test/data/views.py
web/test/requirements.txt
web/test/test_jscript.py
web/test/test_views.py
web/test/testutils.js
web/test/unittest_application.py
web/test/unittest_breadcrumbs.py
web/test/unittest_controller.py
web/test/unittest_facet.py
web/test/unittest_form.py
web/test/unittest_formfields.py
web/test/unittest_formwidgets.py
web/test/unittest_http.py
web/test/unittest_http_headers.py
web/test/unittest_idownloadable.py
web/test/unittest_magicsearch.py
web/test/unittest_propertysheet.py
web/test/unittest_reledit.py
web/test/unittest_request.py
web/test/unittest_uicfg.py
web/test/unittest_urlpublisher.py
web/test/unittest_urlrewrite.py
web/test/unittest_views_actions.py
web/test/unittest_views_apacherewrite.py
web/test/unittest_views_basecontrollers.py
web/test/unittest_views_basetemplates.py
web/test/unittest_views_baseviews.py
web/test/unittest_views_csv.py
web/test/unittest_views_editforms.py
web/test/unittest_views_errorform.py
web/test/unittest_views_forms.py
web/test/unittest_views_json.py
web/test/unittest_views_navigation.py
web/test/unittest_views_pyviews.py
web/test/unittest_views_searchrestriction.py
web/test/unittest_views_staticcontrollers.py
web/test/unittest_views_treeview.py
web/test/unittest_views_xmlrss.py
web/test/unittest_viewselector.py
web/test/unittest_web.py
web/test/unittest_webconfig.py
web/uicfg.py
web/uihelper.py
web/views/__init__.py
web/views/actions.py
web/views/ajaxcontroller.py
web/views/ajaxedit.py
web/views/apacherewrite.py
web/views/authentication.py
web/views/autoform.py
web/views/basecomponents.py
web/views/basecontrollers.py
web/views/basetemplates.py
web/views/baseviews.py
web/views/bookmark.py
web/views/boxes.py
web/views/calendar.py
web/views/csvexport.py
web/views/cwproperties.py
web/views/cwsources.py
web/views/cwuser.py
web/views/debug.py
web/views/dotgraphview.py
web/views/edit_attributes.pt
web/views/editcontroller.py
web/views/editforms.py
web/views/editviews.py
web/views/emailaddress.py
web/views/embedding.py
web/views/error.py
web/views/facets.py
web/views/formrenderers.py
web/views/forms.py
web/views/ibreadcrumbs.py
web/views/idownloadable.py
web/views/igeocodable.py
web/views/isioc.py
web/views/json.py
web/views/magicsearch.py
web/views/management.py
web/views/massmailing.py
web/views/navigation.py
web/views/owl.py
web/views/plots.py
web/views/primary.py
web/views/pyviews.py
web/views/rdf.py
web/views/reledit.py
web/views/schema.py
web/views/searchrestriction.py
web/views/sessions.py
web/views/sparql.py
web/views/startup.py
web/views/staticcontrollers.py
web/views/tableview.py
web/views/tabs.py
web/views/timeline.py
web/views/timetable.py
web/views/treeview.py
web/views/uicfg.py
web/views/undohistory.py
web/views/urlpublishing.py
web/views/urlrewrite.py
web/views/vcard.py
web/views/wdoc.py
web/views/workflow.py
web/views/xbel.py
web/views/xmlrss.py
web/wdoc/about_en.rst
web/wdoc/about_fr.rst
web/wdoc/add_content_en.rst
web/wdoc/add_content_fr.rst
web/wdoc/advanced_usage_en.rst
web/wdoc/advanced_usage_schema_en.rst
web/wdoc/advanced_usage_schema_fr.rst
web/wdoc/bookmarks_en.rst
web/wdoc/bookmarks_fr.rst
web/wdoc/custom_view_en.rst
web/wdoc/custom_view_fr.rst
web/wdoc/custom_view_last_update_en.rst
web/wdoc/custom_view_last_update_fr.rst
web/wdoc/custom_view_rss_en.rst
web/wdoc/custom_view_rss_fr.rst
web/wdoc/glossary_en.rst
web/wdoc/glossary_fr.rst
web/wdoc/images/userprefs_en.png
web/wdoc/images/userprefs_fr.png
web/wdoc/main_en.rst
web/wdoc/search_en.rst
web/wdoc/search_fr.rst
web/wdoc/search_sample_queries_en.rst
web/wdoc/search_sample_queries_fr.rst
web/wdoc/standard_usage_en.rst
web/wdoc/standard_usage_fr.rst
web/wdoc/toc.xml
web/wdoc/tut_rql_en.rst
web/wdoc/tut_rql_fr.rst
web/wdoc/userprefs_en.rst
web/wdoc/userprefs_fr.rst
web/webconfig.py
web/webctl.py
wsgi/__init__.py
wsgi/handler.py
wsgi/request.py
wsgi/server.py
wsgi/test/requirements.txt
wsgi/test/unittest_wsgi.py
wsgi/tnd.py
wsgi/wz.py
xy.py
--- a/MANIFEST.in	Mon Jan 04 18:40:30 2016 +0100
+++ b/MANIFEST.in	Sat Jan 16 13:48:51 2016 +0100
@@ -19,33 +19,33 @@
 recursive-include doc/images *.png *.svg
 include doc/conf.py
 
-recursive-include misc *.py *.png *.display
+recursive-include cubicweb/misc *.py *.png *.display
 
-include web/views/*.pt
-recursive-include web/data external_resources *.js *.css *.py *.png *.gif *.ico *.ttf *.svg *.woff *.eot
-recursive-include web/wdoc *.rst *.png *.xml ChangeLog*
-recursive-include devtools/data *.js *.css *.sh
+include cubicweb/web/views/*.pt
+recursive-include cubicweb/web/data external_resources *.js *.css *.py *.png *.gif *.ico *.ttf *.svg *.woff *.eot
+recursive-include cubicweb/web/wdoc *.rst *.png *.xml ChangeLog*
+recursive-include cubicweb/devtools/data *.js *.css *.sh
 
-recursive-include i18n *.pot *.po
-recursive-include schemas *.py *.sql
+recursive-include cubicweb/i18n *.pot *.po
+recursive-include cubicweb/schemas *.py *.sql
 
-recursive-include test/data bootstrap_cubes *.py *.sql
-recursive-include entities/test/data bootstrap_cubes *.py
-recursive-include sobjects/test/data bootstrap_cubes *.py
-recursive-include hooks/test/data bootstrap_cubes *.py
-recursive-include server/test/data bootstrap_cubes *.py source* *.conf.in *.ldif
-recursive-include devtools/test/data bootstrap_cubes *.py *.txt *.js *.po.ref
-recursive-include web/test/data bootstrap_cubes pouet.css *.py
-recursive-include etwist/test/data *.py
+recursive-include cubicweb/test/data bootstrap_cubes *.py *.sql
+recursive-include cubicweb/entities/test/data bootstrap_cubes *.py
+recursive-include cubicweb/sobjects/test/data bootstrap_cubes *.py
+recursive-include cubicweb/hooks/test/data bootstrap_cubes *.py
+recursive-include cubicweb/server/test/data bootstrap_cubes *.py source* *.conf.in *.ldif
+recursive-include cubicweb/devtools/test/data bootstrap_cubes *.py *.txt *.js *.po.ref
+recursive-include cubicweb/web/test/data bootstrap_cubes pouet.css *.py
+recursive-include cubicweb/etwist/test/data *.py
 
-recursive-include web/test/jstests *.js *.html *.css *.json
-recursive-include web/test/windmill *.py
+recursive-include cubicweb/web/test/jstests *.js *.html *.css *.json
+recursive-include cubicweb/web/test/windmill *.py
 
-recursive-include skeleton *.py *.css *.js *.po compat *.in *.tmpl rules
+recursive-include cubicweb/skeleton *.py *.css *.js *.po compat *.in *.tmpl rules
 
 prune doc/book/en/.static
 prune doc/book/fr/.static
 prune doc/html/_sources/
-prune misc/cwfs
+prune cubicweb/misc/cwfs
 prune doc/js_api
 global-exclude *.pyc
--- a/__init__.py	Mon Jan 04 18:40:30 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,265 +0,0 @@
-# copyright 2003-2012 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
-# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
-#
-# This file is part of CubicWeb.
-#
-# CubicWeb is free software: you can redistribute it and/or modify it under the
-# terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation, either version 2.1 of the License, or (at your option)
-# any later version.
-#
-# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License along
-# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
-"""CubicWeb is a generic framework to quickly build applications which describes
-relations between entitites.
-"""
-__docformat__ = "restructuredtext en"
-
-# ignore the pygments UserWarnings
-import warnings
-import zlib
-warnings.filterwarnings('ignore', category=UserWarning,
-                        message='.*was already imported',
-                        module='.*pygments')
-
-
-from six import PY2, binary_type, text_type
-from six.moves import builtins
-
-CW_SOFTWARE_ROOT = __path__[0]
-
-import sys, os, logging
-from io import BytesIO
-
-from six.moves import cPickle as pickle
-
-from logilab.common.deprecation import deprecated
-from logilab.common.logging_ext import set_log_methods
-from yams.constraints import BASE_CONVERTERS, BASE_CHECKERS
-
-# pre python 2.7.2 safety
-logging.basicConfig()
-
-from cubicweb.__pkginfo__ import version as __version__
-
-
-set_log_methods(sys.modules[__name__], logging.getLogger('cubicweb'))
-
-# make all exceptions accessible from the package
-from cubicweb._exceptions import *
-from logilab.common.registry import ObjectNotFound, NoSelectableObject, RegistryNotFound
-
-
-# '_' is available to mark internationalized string but should not be used to
-# do the actual translation
-_ = text_type
-if not hasattr(builtins, '_'):
-    builtins._ = deprecated("[3.22] Use 'from cubicweb import _'")(_)
-
-
-# convert eid to the right type, raise ValueError if it's not a valid eid
-@deprecated('[3.17] typed_eid() was removed. replace it with int() when needed.')
-def typed_eid(eid):
-    return int(eid)
-
-#def log_thread(f, w, a):
-#    print f.f_code.co_filename, f.f_code.co_name
-#import threading
-#threading.settrace(log_thread)
-
-class Binary(BytesIO):
-    """class to hold binary data. Use BytesIO to prevent use of unicode data"""
-    _allowed_types = (binary_type, bytearray, buffer if PY2 else memoryview)
-
-    def __init__(self, buf=b''):
-        assert isinstance(buf, self._allowed_types), \
-               "Binary objects must use bytes/buffer objects, not %s" % buf.__class__
-        super(Binary, self).__init__(buf)
-
-    def write(self, data):
-        assert isinstance(data, self._allowed_types), \
-               "Binary objects must use bytes/buffer objects, not %s" % data.__class__
-        super(Binary, self).write(data)
-
-    def to_file(self, fobj):
-        """write a binary to disk
-
-        the writing is performed in a safe way for files stored on
-        Windows SMB shares
-        """
-        pos = self.tell()
-        self.seek(0)
-        if sys.platform == 'win32':
-            while True:
-                # the 16kB chunksize comes from the shutil module
-                # in stdlib
-                chunk = self.read(16*1024)
-                if not chunk:
-                    break
-                fobj.write(chunk)
-        else:
-            fobj.write(self.read())
-        self.seek(pos)
-
-    @staticmethod
-    def from_file(filename):
-        """read a file and returns its contents in a Binary
-
-        the reading is performed in a safe way for files stored on
-        Windows SMB shares
-        """
-        binary = Binary()
-        with open(filename, 'rb') as fobj:
-            if sys.platform == 'win32':
-                while True:
-                    # the 16kB chunksize comes from the shutil module
-                    # in stdlib
-                    chunk = fobj.read(16*1024)
-                    if not chunk:
-                        break
-                    binary.write(chunk)
-            else:
-                binary.write(fobj.read())
-        binary.seek(0)
-        return binary
-
-    def __eq__(self, other):
-        if not isinstance(other, Binary):
-            return False
-        return self.getvalue() == other.getvalue()
-
-
-    # Binary helpers to store/fetch python objects
-
-    @classmethod
-    def zpickle(cls, obj):
-        """ return a Binary containing a gzipped pickle of obj """
-        retval = cls()
-        retval.write(zlib.compress(pickle.dumps(obj, protocol=2)))
-        return retval
-
-    def unzpickle(self):
-        """ decompress and loads the stream before returning it """
-        return pickle.loads(zlib.decompress(self.getvalue()))
-
-
-def check_password(eschema, value):
-    return isinstance(value, (binary_type, Binary))
-BASE_CHECKERS['Password'] = check_password
-
-def str_or_binary(value):
-    if isinstance(value, Binary):
-        return value
-    return binary_type(value)
-BASE_CONVERTERS['Password'] = str_or_binary
-
-
-# use this dictionary to rename entity types while keeping bw compat
-ETYPE_NAME_MAP = {}
-
-# XXX cubic web cube migration map. See if it's worth keeping this mecanism
-#     to help in cube renaming
-CW_MIGRATION_MAP = {}
-
-def neg_role(role):
-    if role == 'subject':
-        return 'object'
-    return 'subject'
-
-def role(obj):
-    try:
-        return obj.role
-    except AttributeError:
-        return neg_role(obj.target)
-
-def target(obj):
-    try:
-        return obj.target
-    except AttributeError:
-        return neg_role(obj.role)
-
-
-class CubicWebEventManager(object):
-    """simple event / callback manager.
-
-    Typical usage to register a callback::
-
-      >>> from cubicweb import CW_EVENT_MANAGER
-      >>> CW_EVENT_MANAGER.bind('after-registry-reload', mycallback)
-
-    Typical usage to emit an event::
-
-      >>> from cubicweb import CW_EVENT_MANAGER
-      >>> CW_EVENT_MANAGER.emit('after-registry-reload')
-
-    emit() accepts an additional context parameter that will be passed
-    to the callback if specified (and only in that case)
-    """
-    def __init__(self):
-        self.callbacks = {}
-
-    def bind(self, event, callback, *args, **kwargs):
-        self.callbacks.setdefault(event, []).append( (callback, args, kwargs) )
-
-    def emit(self, event, context=None):
-        for callback, args, kwargs in self.callbacks.get(event, ()):
-            if context is None:
-                callback(*args, **kwargs)
-            else:
-                callback(context, *args, **kwargs)
-
-CW_EVENT_MANAGER = CubicWebEventManager()
-
-def onevent(event, *args, **kwargs):
-    """decorator to ease event / callback binding
-
-    >>> from cubicweb import onevent
-    >>> @onevent('before-registry-reload')
-    ... def mycallback():
-    ...     print 'hello'
-    ...
-    >>>
-    """
-    def _decorator(func):
-        CW_EVENT_MANAGER.bind(event, func, *args, **kwargs)
-        return func
-    return _decorator
-
-
-from yams.schema import role_name as rname
-
-def validation_error(entity, errors, substitutions=None, i18nvalues=None):
-    """easy way to retrieve a :class:`cubicweb.ValidationError` for an entity or eid.
-
-    You may also have 2-tuple as error keys, :func:`yams.role_name` will be
-    called automatically for them.
-
-    Messages in errors **should not be translated yet**, though marked for
-    internationalization. You may give an additional substition dictionary that
-    will be used for interpolation after the translation.
-    """
-    if substitutions is None:
-        # set empty dict else translation won't be done for backward
-        # compatibility reason (see ValidationError.translate method)
-        substitutions = {}
-    for key in list(errors):
-        if isinstance(key, tuple):
-            errors[rname(*key)] = errors.pop(key)
-    return ValidationError(getattr(entity, 'eid', entity), errors,
-                           substitutions, i18nvalues)
-
-
-# exceptions ##################################################################
-
-class ProgrammingError(Exception): #DatabaseError):
-    """Exception raised for errors that are related to the database's operation
-    and not necessarily under the control of the programmer, e.g. an unexpected
-    disconnect occurs, the data source name is not found, a transaction could
-    not be processed, a memory allocation error occurred during processing,
-    etc.
-    """
--- a/__pkginfo__.py	Mon Jan 04 18:40:30 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-# pylint: disable=W0622,C0103
-# copyright 2003-2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
-# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
-#
-# This file is part of CubicWeb.
-#
-# CubicWeb is free software: you can redistribute it and/or modify it under the
-# terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation, either version 2.1 of the License, or (at your option)
-# any later version.
-#
-# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License along
-# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
-"""cubicweb global packaging information for the cubicweb knowledge management
-software
-"""
-
-modname = distname = "cubicweb"
-
-numversion = (3, 22, 0)
-version = '.'.join(str(num) for num in numversion)
-
-description = "a repository of entities / relations for knowledge management"
-author = "Logilab"
-author_email = "contact@logilab.fr"
-web = 'http://www.cubicweb.org'
-license = 'LGPL'
-
-classifiers = [
-           'Environment :: Web Environment',
-           'Framework :: CubicWeb',
-           'Programming Language :: Python',
-           'Programming Language :: JavaScript',
-]
-
-__depends__ = {
-    'six': '>= 1.4.0',
-    'logilab-common': '>= 0.63.1',
-    'logilab-mtconverter': '>= 0.8.0',
-    'rql': '>= 0.34.0',
-    'yams': '>= 0.42.0',
-    #gettext                    # for xgettext, msgcat, etc...
-    # web dependencies
-    'lxml': '',
-    # XXX graphviz
-    # server dependencies
-    'logilab-database': '>= 1.15.0',
-    'passlib': '',
-    'pytz': '',
-    'Markdown': ''
-    }
-
-__recommends__ = {
-    'docutils': '>= 0.6',
-    'Pillow': '',               # for captcha
-    'pycrypto': '',             # for crypto extensions
-    'fyzz': '>= 0.1.0',         # for sparql
-    'vobject': '>= 0.6.0',      # for ical view
-    'rdflib': None,             #
-    'pyzmq': None,
-    'Twisted': '',
-    #'Products.FCKeditor':'',
-    #'SimpleTAL':'>= 4.1.6',
-    }
-
-import sys
-from os import listdir, environ
-from os.path import join, isdir
-import glob
-
-scripts = [s for s in glob.glob(join('bin', 'cubicweb-*'))
-           if not s.endswith('.bat')]
-include_dirs = [join('test', 'data'),
-                join('server', 'test', 'data'),
-                join('hooks', 'test', 'data'),
-                join('web', 'test', 'data'),
-                join('devtools', 'data'),
-                join('devtools', 'test', 'data'),
-                'schemas', 'skeleton']
-
-
-_server_migration_dir = join('misc', 'migration')
-_data_dir = join('web', 'data')
-_wdoc_dir = join('web', 'wdoc')
-_wdocimages_dir = join(_wdoc_dir, 'images')
-_views_dir = join('web', 'views')
-_i18n_dir = 'i18n'
-
-_pyversion = '.'.join(str(num) for num in sys.version_info[0:2])
-if '--home' in sys.argv:
-    # --home install
-    pydir = 'python' + _pyversion
-else:
-    pydir = join('python' + _pyversion, 'site-packages')
-
-# data files that shall be copied into the main package directory
-package_data = {
-    'cubicweb.web.views':['*.pt'],
-    }
-
-try:
-    # data files that shall be copied outside the main package directory
-    data_files = [
-        # server data
-        [join('share', 'cubicweb', 'schemas'),
-         glob.glob(join('schemas', '*.sql'))],
-        [join('share', 'cubicweb', 'migration'),
-         [join(_server_migration_dir, filename)
-          for filename in listdir(_server_migration_dir)]],
-        # web data
-        [join('share', 'cubicweb', 'cubes', 'shared', 'data'),
-         [join(_data_dir, fname) for fname in listdir(_data_dir)
-          if not isdir(join(_data_dir, fname))]],
-        [join('share', 'cubicweb', 'cubes', 'shared', 'data', 'images'),
-         [join(_data_dir, 'images', fname) for fname in listdir(join(_data_dir, 'images'))]],
-        [join('share', 'cubicweb', 'cubes', 'shared', 'data', 'jquery-treeview'),
-         [join(_data_dir, 'jquery-treeview', fname) for fname in listdir(join(_data_dir, 'jquery-treeview'))
-          if not isdir(join(_data_dir, 'jquery-treeview', fname))]],
-        [join('share', 'cubicweb', 'cubes', 'shared', 'data', 'jquery-treeview', 'images'),
-         [join(_data_dir, 'jquery-treeview', 'images', fname)
-          for fname in listdir(join(_data_dir, 'jquery-treeview', 'images'))]],
-        [join('share', 'cubicweb', 'cubes', 'shared', 'wdoc'),
-         [join(_wdoc_dir, fname) for fname in listdir(_wdoc_dir)
-          if not isdir(join(_wdoc_dir, fname))]],
-        [join('share', 'cubicweb', 'cubes', 'shared', 'wdoc', 'images'),
-         [join(_wdocimages_dir, fname) for fname in listdir(_wdocimages_dir)]],
-        [join('share', 'cubicweb', 'cubes', 'shared', 'i18n'),
-         glob.glob(join(_i18n_dir, '*.po'))],
-        # skeleton
-        ]
-except OSError:
-    # we are in an installed directory, don't care about this
-    pass
--- a/_exceptions.py	Mon Jan 04 18:40:30 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-# copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
-# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
-#
-# This file is part of CubicWeb.
-#
-# CubicWeb is free software: you can redistribute it and/or modify it under the
-# terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation, either version 2.1 of the License, or (at your option)
-# any later version.
-#
-# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License along
-# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
-"""Exceptions shared by different cubicweb packages."""
-
-__docformat__ = "restructuredtext en"
-
-from warnings import warn
-
-from six import PY3, text_type
-
-from logilab.common.decorators import cachedproperty
-
-from yams import ValidationError
-
-# abstract exceptions #########################################################
-
-class CubicWebException(Exception):
-    """base class for cubicweb server exception"""
-    msg = ""
-    def __unicode__(self):
-        if self.msg:
-            if self.args:
-                return self.msg % tuple(self.args)
-            else:
-                return self.msg
-        else:
-            return u' '.join(text_type(arg) for arg in self.args)
-    __str__ = __unicode__ if PY3 else lambda self: self.__unicode__().encode('utf-8')
-
-class ConfigurationError(CubicWebException):
-    """a misconfiguration error"""
-
-class InternalError(CubicWebException):
-    """base class for exceptions which should not occur"""
-
-class SecurityError(CubicWebException):
-    """base class for cubicweb server security exceptions"""
-
-class RepositoryError(CubicWebException):
-    """base class for repository exceptions"""
-
-class SourceException(CubicWebException):
-    """base class for source exceptions"""
-
-class CubicWebRuntimeError(CubicWebException):
-    """base class for runtime exceptions"""
-
-# repository exceptions #######################################################
-
-class ConnectionError(RepositoryError):
-    """raised when a bad connection id is given or when an attempt to establish
-    a connection failed
-    """
-
-class AuthenticationError(ConnectionError):
-    """raised when an attempt to establish a connection failed due to wrong
-    connection information (login / password or other authentication token)
-    """
-
-class BadConnectionId(ConnectionError):
-    """raised when a bad connection id is given"""
-
-class UnknownEid(RepositoryError):
-    """the eid is not defined in the system tables"""
-    msg = 'No entity with eid %s in the repository'
-
-class UniqueTogetherError(RepositoryError):
-    """raised when a unique_together constraint caused an IntegrityError"""
-    def __init__(self, session, **kwargs):
-        self.session = session
-        assert 'rtypes' in kwargs or 'cstrname' in kwargs
-        self.kwargs = kwargs
-        # fill cache while the session is open
-        self.rtypes
-
-    @cachedproperty
-    def rtypes(self):
-        if 'rtypes' in self.kwargs:
-            return self.kwargs['rtypes']
-        cstrname = unicode(self.kwargs['cstrname'])
-        cstr = self.session.find('CWUniqueTogetherConstraint', name=cstrname).one()
-        return sorted(rtype.name for rtype in cstr.relations)
-
-    @cachedproperty
-    def args(self):
-        warn('[3.18] UniqueTogetherError.args is deprecated, just use '
-             'the .rtypes accessor.',
-             DeprecationWarning)
-        # the first argument, etype, is never used and was never garanteed anyway
-        return None, self.rtypes
-
-
-class ViolatedConstraint(RepositoryError):
-    def __init__(self, cnx, cstrname):
-        self.cnx = cnx
-        self.cstrname = cstrname
-
-
-# security exceptions #########################################################
-
-class Unauthorized(SecurityError):
-    """raised when a user tries to perform an action without sufficient
-    credentials
-    """
-    msg = 'You are not allowed to perform this operation'
-    msg1 = 'You are not allowed to perform %s operation on %s'
-    var = None
-
-    def __str__(self):
-        try:
-            if self.args and len(self.args) == 2:
-                return self.msg1 % self.args
-            if self.args:
-                return ' '.join(self.args)
-            return self.msg
-        except Exception as ex:
-            return str(ex)
-
-class Forbidden(SecurityError):
-    """raised when a user tries to perform a forbidden action
-    """
-
-# source exceptions ###########################################################
-
-class EidNotInSource(SourceException):
-    """trying to access an object with a particular eid from a particular
-    source has failed
-    """
-    msg = 'No entity with eid %s in %s'
-
-
-# registry exceptions #########################################################
-
-# pre 3.15 bw compat
-from logilab.common.registry import RegistryException, ObjectNotFound, NoSelectableObject
-
-class UnknownProperty(RegistryException):
-    """property found in database but unknown in registry"""
-
-# query exception #############################################################
-
-class QueryError(CubicWebRuntimeError):
-    """a query try to do something it shouldn't"""
-
-class NotAnEntity(CubicWebRuntimeError):
-    """raised when get_entity is called for a column which doesn't contain
-    a non final entity
-    """
-
-class MultipleResultsError(CubicWebRuntimeError):
-    """raised when ResultSet.one() is called on a resultset with multiple rows
-    of multiple columns.
-    """
-
-class NoResultError(CubicWebRuntimeError):
-    """raised when no result is found but at least one is expected.
-    """
-
-class UndoTransactionException(QueryError):
-    """Raised when undoing a transaction could not be performed completely.
-
-    Note that :
-      1) the partial undo operation might be acceptable
-         depending upon the final application
-
-      2) the undo operation can also fail with a `ValidationError` in
-         cases where the undoing breaks integrity constraints checked
-         immediately.
-
-      3) It might be that neither of those exception is raised but a
-         subsequent `commit` might raise a `ValidationError` in cases
-         where the undoing breaks integrity constraints checked at
-         commit time.
-
-    :type txuuix: int
-    :param txuuid: Unique identifier of the partially undone transaction
-
-    :type errors: list
-    :param errors: List of errors occurred during undoing
-    """
-    msg = u"The following error(s) occurred while undoing transaction #%d : %s"
-
-    def __init__(self, txuuid, errors):
-        super(UndoTransactionException, self).__init__(txuuid, errors)
-        self.txuuid = txuuid
-        self.errors = errors
-
-# tools exceptions ############################################################
-
-class ExecutionError(Exception):
-    """server execution control error (already started, not running...)"""
-
-# pylint: disable=W0611
-from logilab.common.clcommands import BadCommandUsage
--- a/_gcdebug.py	Mon Jan 04 18:40:30 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
-# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
-#
-# This file is part of CubicWeb.
-#
-# CubicWeb is free software: you can redistribute it and/or modify it under the
-# terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation, either version 2.1 of the License, or (at your option)
-# any later version.
-#
-# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License along
-# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
-from __future__ import print_function
-
-import gc, types, weakref
-
-from cubicweb.schema import CubicWebRelationSchema, CubicWebEntitySchema
-try:
-    from cubicweb.web.request import _NeedAuthAccessMock
-except ImportError:
-    _NeedAuthAccessMock = None
-
-listiterator = type(iter([]))
-
-IGNORE_CLASSES = (
-    type, tuple, dict, list, set, frozenset, type(len),
-    weakref.ref, weakref.WeakKeyDictionary,
-    listiterator,
-    property, classmethod,
-    types.ModuleType, types.FunctionType, types.MethodType,
-    types.MemberDescriptorType, types.GetSetDescriptorType,
-    )
-if _NeedAuthAccessMock is not None:
-    IGNORE_CLASSES = IGNORE_CLASSES + (_NeedAuthAccessMock,)
-
-def _get_counted_class(obj, classes):
-    for cls in classes:
-        if isinstance(obj, cls):
-            return cls
-    raise AssertionError()
-
-def gc_info(countclasses,
-            ignoreclasses=IGNORE_CLASSES,
-            viewreferrersclasses=(), showobjs=False, maxlevel=1):
-    gc.collect()
-    gc.collect()
-    counters = {}
-    ocounters = {}
-    for obj in gc.get_objects():
-        if isinstance(obj, countclasses):
-            cls = _get_counted_class(obj, countclasses)
-            try:
-                counters[cls.__name__] += 1
-            except KeyError:
-                counters[cls.__name__] = 1
-        elif not isinstance(obj, ignoreclasses):
-            try:
-                key = '%s.%s' % (obj.__class__.__module__,
-                                 obj.__class__.__name__)
-            except AttributeError:
-                key = str(obj)
-            try:
-                ocounters[key] += 1
-            except KeyError:
-                ocounters[key] = 1
-        if isinstance(obj, viewreferrersclasses):
-            print('   ', obj, referrers(obj, showobjs, maxlevel))
-    garbage = [repr(obj) for obj in gc.garbage]
-    return counters, ocounters, garbage
-
-
-def referrers(obj, showobj=False, maxlevel=1):
-    objreferrers = _referrers(obj, maxlevel)
-    try:
-        return sorted(set((type(x), showobj and x or getattr(x, '__name__', '%#x' % id(x)))
-                          for x in objreferrers))
-    except TypeError:
-        s = set()
-        unhashable = []
-        for x in objreferrers:
-            try:
-                s.add(x)
-            except TypeError:
-                unhashable.append(x)
-        return sorted(s) + unhashable
-
-def _referrers(obj, maxlevel, _seen=None, _level=0):
-    interesting = []
-    if _seen is None:
-        _seen = set()
-    for x in gc.get_referrers(obj):
-        if id(x) in _seen:
-            continue
-        _seen.add(id(x))
-        if isinstance(x, types.FrameType):
-            continue
-        if isinstance(x, (CubicWebRelationSchema, CubicWebEntitySchema)):
-            continue
-        if isinstance(x, (list, tuple, set, dict, listiterator)):
-            if _level >= maxlevel:
-                pass
-                #interesting.append(x)
-            else:
-                interesting += _referrers(x, maxlevel, _seen, _level+1)
-        else:
-            interesting.append(x)
-    return interesting
--- a/appobject.py	Mon Jan 04 18:40:30 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-# copyright 2003-2012 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
-# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
-#
-# This file is part of CubicWeb.
-#
-# CubicWeb is free software: you can redistribute it and/or modify it under the
-# terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation, either version 2.1 of the License, or (at your option)
-# any later version.
-#
-# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License along
-# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
-"""
-
-The `AppObject` class
----------------------
-
-The AppObject class is the base class for all dynamically loaded objects
-(application objects) accessible through the vregistry.
-
-We can find a certain number of attributes and methods defined in this class and
-common to all the application objects.
-
-"""
-__docformat__ = "restructuredtext en"
-
-from logging import getLogger
-
-from logilab.common.deprecation import deprecated, class_renamed
-from logilab.common.logging_ext import set_log_methods
-
-# first line imports for bw compat
-from logilab.common.registry import (objectify_predicate, traced_selection, Predicate,
-                                     RegistrableObject, yes)
-
-
-objectify_selector = deprecated('[3.15] objectify_selector has been '
-                                'renamed to objectify_predicates in '
-                                'logilab.common.registry')(objectify_predicate)
-traced_selection = deprecated('[3.15] traced_selection has been '
-                              'moved to logilab.common.registry')(traced_selection)
-Selector = class_renamed('Selector', Predicate,
-                         '[3.15] Selector has been renamed to Predicate '
-                         'in logilab.common.registry')
-
-@deprecated('[3.15] lltrace decorator can now be removed')
-def lltrace(func):
-    return func
-
-# the base class for all appobjects ############################################
-
-class AppObject(RegistrableObject):
-    """This is the base class for CubicWeb application objects which are
-    selected in a request context.
-
-    The following attributes should be set on concrete appobject classes:
-
-    At selection time, the following attributes are set on the instance:
-
-    :attr:`_cw`
-      current request
-    :attr:`cw_extra_kwargs`
-      other received arguments
-
-    And also the following, only if `rset` is found in arguments (in which case
-    rset/row/col will be removed from `cwextra_kwargs`):
-
-    :attr:`cw_rset`
-      context result set or None
-
-    :attr:`cw_row`
-      if a result set is set and the context is about a particular cell in the
-      result set, and not the result set as a whole, specify the row number we
-      are interested in, else None
-
-    :attr:`cw_col`
-      if a result set is set and the context is about a particular cell in the
-      result set, and not the result set as a whole, specify the col number we
-      are interested in, else None
-
-
-    .. Note::
-
-      * do not inherit directly from this class but from a more specific class
-        such as `AnyEntity`, `EntityView`, `AnyRsetView`, `Action`...
-
-    """
-    __select__ = yes()
-
-    @classmethod
-    def __registered__(cls, registry):
-        """called by the registry when the appobject has been registered.
-
-        It must return the object that will be actually registered (this may be
-        the right hook to create an instance for example). By default the
-        appobject is returned without any transformation.
-        """
-        pdefs = getattr(cls, 'cw_property_defs', {})
-        for propid, pdef in pdefs.items():
-            pdef = pdef.copy() # may be shared
-            pdef['default'] = getattr(cls, propid, pdef['default'])
-            pdef['sitewide'] = getattr(cls, 'site_wide', pdef.get('sitewide'))
-            registry.vreg.register_property(cls._cwpropkey(propid), **pdef)
-        assert callable(cls.__select__), cls
-        return cls
-
-    def __init__(self, req, **extra):
-        super(AppObject, self).__init__()
-        self._cw = req
-        try:
-            self.cw_rset = extra.pop('rset')
-            self.cw_row = extra.pop('row', None)
-            self.cw_col = extra.pop('col', None)
-        except KeyError:
-            pass
-        self.cw_extra_kwargs = extra
-
-    # persistent class properties ##############################################
-    #
-    # optional `cw_property_defs` dict on a class defines available persistent
-    # properties for this class:
-    #
-    # * key: id of the property (the actual CWProperty key is build using
-    #        <registry name>.<obj id>.<property id>
-    # * value: tuple (property type, vocabfunc, default value, property description)
-    #         possible types are those used by `logilab.common.configuration`
-    #
-    # notice that when it exists multiple objects with the same id (adaptation,
-    # overriding) only the first encountered definition is considered, so those
-    # objects can't try to have different default values for instance.
-    #
-    # you can then access to a property value using self.cw_propval, where self
-    # is an instance of class
-
-    @classmethod
-    def _cwpropkey(cls, propid):
-        """return cw property key for the property of the given id for this
-        class
-        """
-        return '%s.%s.%s' % (cls.__registry__, cls.__regid__, propid)
-
-    def cw_propval(self, propid):
-        """return cw property value associated to key
-
-        <cls.__registry__>.<cls.id>.<propid>
-        """
-        return self._cw.property_value(self._cwpropkey(propid))
-
-    # these are overridden by set_log_methods below
-    # only defining here to prevent pylint from complaining
-    info = warning = error = critical = exception = debug = lambda msg,*a,**kw: None
-
-set_log_methods(AppObject, getLogger('cubicweb.appobject'))
-
-# defined here to avoid warning on usage on the AppObject class
-yes = deprecated('[3.15] yes has been moved to logilab.common.registry')(yes)
--- a/crypto.py	Mon Jan 04 18:40:30 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-# copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
-# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
-#
-# This file is part of CubicWeb.
-#
-# CubicWeb is free software: you can redistribute it and/or modify it under the
-# terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation, either version 2.1 of the License, or (at your option)
-# any later version.
-#
-# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License along
-# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
-"""Simple cryptographic routines, based on python-crypto."""
-__docformat__ = "restructuredtext en"
-
-from base64 import b64encode, b64decode
-
-from six.moves import cPickle as pickle
-
-from Crypto.Cipher import Blowfish
-
-
-_CYPHERERS = {}
-def _cypherer(seed):
-    try:
-        return _CYPHERERS[seed]
-    except KeyError:
-        _CYPHERERS[seed] = Blowfish.new(seed, Blowfish.MODE_ECB)
-        return _CYPHERERS[seed]
-
-
-def encrypt(data, seed):
-    string = pickle.dumps(data)
-    string = string + '*' * (8 - len(string) % 8)
-    string = b64encode(_cypherer(seed).encrypt(string))
-    return unicode(string)
-
-
-def decrypt(string, seed):
-    # pickle ignores trailing characters so we do not need to strip them off
-    string = _cypherer(seed).decrypt(b64decode(string))
-    return pickle.loads(string)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cubicweb/__init__.py	Sat Jan 16 13:48:51 2016 +0100
@@ -0,0 +1,265 @@
+# copyright 2003-2012 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
+# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
+#
+# This file is part of CubicWeb.
+#
+# CubicWeb is free software: you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation, either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License along
+# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
+"""CubicWeb is a generic framework to quickly build applications which describes
+relations between entitites.
+"""
+__docformat__ = "restructuredtext en"
+
+# ignore the pygments UserWarnings
+import warnings
+import zlib
+warnings.filterwarnings('ignore', category=UserWarning,
+                        message='.*was already imported',
+                        module='.*pygments')
+
+
+from six import PY2, binary_type, text_type
+from six.moves import builtins
+
+CW_SOFTWARE_ROOT = __path__[0]
+
+import sys, os, logging
+from io import BytesIO
+
+from six.moves import cPickle as pickle
+
+from logilab.common.deprecation import deprecated
+from logilab.common.logging_ext import set_log_methods
+from yams.constraints import BASE_CONVERTERS, BASE_CHECKERS
+
+# pre python 2.7.2 safety
+logging.basicConfig()
+
+from cubicweb.__pkginfo__ import version as __version__
+
+
+set_log_methods(sys.modules[__name__], logging.getLogger('cubicweb'))
+
+# make all exceptions accessible from the package
+from cubicweb._exceptions import *
+from logilab.common.registry import ObjectNotFound, NoSelectableObject, RegistryNotFound
+
+
+# '_' is available to mark internationalized string but should not be used to
+# do the actual translation
+_ = text_type
+if not hasattr(builtins, '_'):
+    builtins._ = deprecated("[3.22] Use 'from cubicweb import _'")(_)
+
+
+# convert eid to the right type, raise ValueError if it's not a valid eid
+@deprecated('[3.17] typed_eid() was removed. replace it with int() when needed.')
+def typed_eid(eid):
+    return int(eid)
+
+#def log_thread(f, w, a):
+#    print f.f_code.co_filename, f.f_code.co_name
+#import threading
+#threading.settrace(log_thread)
+
+class Binary(BytesIO):
+    """class to hold binary data. Use BytesIO to prevent use of unicode data"""
+    _allowed_types = (binary_type, bytearray, buffer if PY2 else memoryview)
+
+    def __init__(self, buf=b''):
+        assert isinstance(buf, self._allowed_types), \
+               "Binary objects must use bytes/buffer objects, not %s" % buf.__class__
+        super(Binary, self).__init__(buf)
+
+    def write(self, data):
+        assert isinstance(data, self._allowed_types), \
+               "Binary objects must use bytes/buffer objects, not %s" % data.__class__
+        super(Binary, self).write(data)
+
+    def to_file(self, fobj):
+        """write a binary to disk
+
+        the writing is performed in a safe way for files stored on
+        Windows SMB shares
+        """
+        pos = self.tell()
+        self.seek(0)
+        if sys.platform == 'win32':
+            while True:
+                # the 16kB chunksize comes from the shutil module
+                # in stdlib
+                chunk = self.read(16*1024)
+                if not chunk:
+                    break
+                fobj.write(chunk)
+        else:
+            fobj.write(self.read())
+        self.seek(pos)
+
+    @staticmethod
+    def from_file(filename):
+        """read a file and returns its contents in a Binary
+
+        the reading is performed in a safe way for files stored on
+        Windows SMB shares
+        """
+        binary = Binary()
+        with open(filename, 'rb') as fobj:
+            if sys.platform == 'win32':
+                while True:
+                    # the 16kB chunksize comes from the shutil module
+                    # in stdlib
+                    chunk = fobj.read(16*1024)
+                    if not chunk:
+                        break
+                    binary.write(chunk)
+            else:
+                binary.write(fobj.read())
+        binary.seek(0)
+        return binary
+
+    def __eq__(self, other):
+        if not isinstance(other, Binary):
+            return False
+        return self.getvalue() == other.getvalue()
+
+
+    # Binary helpers to store/fetch python objects
+
+    @classmethod
+    def zpickle(cls, obj):
+        """ return a Binary containing a gzipped pickle of obj """
+        retval = cls()
+        retval.write(zlib.compress(pickle.dumps(obj, protocol=2)))
+        return retval
+
+    def unzpickle(self):
+        """ decompress and loads the stream before returning it """
+        return pickle.loads(zlib.decompress(self.getvalue()))
+
+
+def check_password(eschema, value):
+    return isinstance(value, (binary_type, Binary))
+BASE_CHECKERS['Password'] = check_password
+
+def str_or_binary(value):
+    if isinstance(value, Binary):
+        return value
+    return binary_type(value)
+BASE_CONVERTERS['Password'] = str_or_binary
+
+
+# use thi