{ "info": { "author": "Hugo Branquinho", "author_email": "hugobranq@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: Pyramid", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: Unix", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: WSGI", "Topic :: Utilities" ], "description": "ines\r\n====\r\n\r\nAn extensible package made with pyramid (see http://www.pylonsproject.org/)\r\nto relate multiple applications.\r\n\r\n\r\nExample\r\n=======\r\n\r\n::\r\n\r\n from ines.api import BaseAPISession\r\n # Register APP one internal API\r\n class OneSession(BaseAPISession):\r\n __app_name__ = 'app_one' # This is required when you have multiple app in one package\r\n def some_method(self):\r\n return u'Method of app ONE called'\r\n # Register two APP internal API\r\n class TwoSession(BaseAPISession):\r\n __app_name__ = 'app_two'\r\n def some_method(self):\r\n return u'Method of app TWO called'\r\n\r\n from ines.config import APIConfigurator\r\n # Start APPS config\r\n config_one = APIConfigurator(\r\n application_name='app_one',\r\n settings={'api.extension.session_path': OneSession})\r\n config_two = APIConfigurator(\r\n application_name='app_two',\r\n settings={'api.extension.session_path': TwoSession})\r\n\r\n from ines.view import api_config\r\n # Add route / view for app one\r\n config_one.add_routes(('one_app_home', ''))\r\n @api_config(route_name='one_app_home')\r\n def one_app_home(context, request):\r\n # Here we call the two APP method\r\n return {\r\n 'two_app': request.api.applications.app_two.some_method(),\r\n 'one_app': request.api.applications.app_one.some_method(),\r\n 'one_app_direct': request.api.some_method()}\r\n # Add route / view for app two\r\n config_two.add_routes(('one_app_home', ''))\r\n @api_config(route_name='one_app_home')\r\n def one_app_home(context, request):\r\n # Here we call the two APP method\r\n return {\r\n 'one_app': request.api.applications.app_one.some_method(),\r\n 'two_app': request.api.applications.app_two.some_method(),\r\n 'two_app_direct': request.api.some_method()}\r\n\r\n # Create pyramid wsgi middleware and start server\r\n from wsgiref.simple_server import make_server\r\n from paste.urlmap import URLMap\r\n from ines.wsgi import not_found_api_application\r\n urlmap = URLMap(not_found_app=not_found_api_application({}))\r\n urlmap['/one'] = config_one.make_wsgi_app()\r\n urlmap['/two'] = config_two.make_wsgi_app()\r\n server = make_server('0.0.0.0', 6543, urlmap)\r\n server.serve_forever()\r\n\r\n\r\n\r\n0.1 (unreleased)\r\n================\r\n\r\nFeatures\r\n--------\r\n\r\n- Add unit tests\r\n- Add documentation\r\n- Add ines translations\r\n\r\n\r\n0.1 (unreleased)\r\n================\r\n\r\nFeatures\r\n--------\r\n\r\n- Add unit tests\r\n- Add documentation\r\n- Add ines translations\r\n\r\n\r\n0.1a2 (2015-06-20)\r\n==================\r\n\r\nFeatures\r\n--------\r\n\r\n- ``utils.make_unique_hash`` now receives a ``length`` attribute\r\n\r\n- Changed request cache located at ``request.cache`` to ``request.session_cache``\r\n\r\n- Changed filesystem cache located at ``request.fcache`` to ``request.cache``\r\n\r\n- New function ``utils.remove_file`` to remove system files, ignoring some errors (with retry loop)\r\n\r\n- New function ``utils.move_file`` to move a file ignoring some system errors\r\n\r\n- New function ``convert.make_sha256_no_cache`` to ignore ``convert.make_sha256`` cache system\r\n\r\n- New function ``utils.get_file_binary`` to get a file binary ignoring some system errors\r\n\r\n- New function ``utils.put_binary_on_file`` to write/append a file ignoring some system errors\r\n\r\n- New function ``utils.put_binary_on_file`` to write/append a file ignoring some system errors\r\n\r\n- New function ``system.thread_is_running`` to check running threads, registered with ``system.register_thread`` or started with ``system.start_system_thread``\r\n\r\n- New function ``convert.convert_timezone`` update datetime value to the selected timezone\r\n\r\n- New function ``convert.maybe_string`` to convert value to string if exists, else return ``None``\r\n\r\n- New function ``utils.path_unique_code`` create file path unique code using sha256\r\n\r\n- New function ``utils.file_unique_code`` create file unique code using sha256\r\n\r\n- New function ``utils.string_unique_code`` create string unique code using sha256\r\n\r\n- New function ``mimetype.find_mimetype`` to find mimemtype using filename and/or file binary\r\n\r\n- New sql filter function ``api.database.sql.date_in_period_filter`` to create a SQLAlchemy filter to find items in a period of time\r\n\r\n- New cache type ``cache.SaveMeMemcached`` uses Memcached system\r\n\r\n- New locks type ``cache.LockMeMemcached`` uses Memcached system\r\n\r\n- Improve ``convert.make_sha256`` speed using ``repoze.lru.LRUCache``\r\n\r\n- Improve ``cache.CacheMe.get_file_path`` speed using ``repoze.lru.LRUCache``\r\n\r\n- Improve ``locks.LockMe.get_file_path`` speed using ``repoze.lru.LRUCache``\r\n\r\n- Improve ``convert.camelcase`` speed using ``repoze.lru.LRUCache``\r\n\r\n- Improve ``convert.uncamelcase`` speed using ``repoze.lru.LRUCache``\r\n\r\n- New properties added to ``authentication.AuthenticatedSession``, ``is_user`` and ``is_apikey``\r\n\r\n- Added ORM query to ines.api.core\r\n\r\n- New module ``api.policy.BaseTokenPolicySession``. Helper for authentication using token\r\n\r\n- New module ``api.mailer``. Helper for smtp mailer.\r\n\r\n- New method ``api.route_url``. Creates the application route_url like request.route_url\r\n\r\n\r\nBug Fixes\r\n---------\r\n\r\n- Deal with ``IOError.errno`` and ``OSError.errno`` don't ignore them\r\n\r\n\r\nBackwards Incompatibilities\r\n---------------------------\r\n\r\n- ines now requires SQLAlchemy >= 1.0.0\r\n\r\n- ``api_cache_decorator`` now receives argument ``expire_cache`` to delete saved info, instead of ``expire``\r\n\r\n- ``locks.LockTimeout`` moved to ``exceptions.LockTimeout``\r\n\r\n- ``locks.remove_file_quietly`` moved to ``utils.remove_file_quietly``\r\n\r\n- ``cache.make_dir`` moved to ``utils.make_dir``\r\n\r\n- ``locks.LockMe`` now receives argument ``path`` instead of ``lock_path``\r\n\r\n- ``locks.LockMe.clean_junk_locks`` don't receives any argument. Use ``locks.LockMe.clean_junk_locks_as_daemon`` instead.\r\n\r\n- ``api.database.BaseSQLSessionManager`` moved to ``api.database.sql.BaseSQLSessionManager``\r\n\r\n- ``api.database.BaseSQLSession`` moved to ``api.database.sql.BaseSQLSession``\r\n\r\n- ``api.database.sql.BaseDatabaseSessionManager`` moved to ``api.database.BaseDatabaseSessionManager``\r\n\r\n- ``api.database.sql.BaseDatabaseSession`` moved to ``api.database.BaseDatabaseSession``\r\n\r\n- ines no longer depends on ``repoze.tm2``. If you use ``ines.middleware.repozerm.RepozeTMMiddleware`` or ``ines.api.database.sql.BaseSQLSessionManager`` or ``ines.api.core.BaseCoreSessionManager`` or ``ines.api.database.sql.BaseSQLSession`` or ``ines.api.core.BaseCoreSession`` you need to define ``repoze.tm2`` in setup requirements.\r\n\r\n- ines no longer depends on ``transaction``. If you use ``ines.api.database.sql.BaseDatabaseSessionManager`` or ``ines.api.core.BaseCoreSessionManager`` or ``ines.api.database.sql.BaseSQLSession`` or ``ines.api.core.BaseCoreSession`` you need to define ``transaction`` in setup requirements.\r\n\r\n- ines no longer depends on ``zope.sqlalchemy``. If want to keep using this as sqlalchemy session extension, you need to define it on config settings like `sql.session_extension = zope.sqlalchemy:ZopeTransactionExtension` and define ``zope.sqlalchemy`` in setup requirements.\r\n\r\n- ines.api.*.settings now reads global settings keys starting with ines.api.*.__api_name__\r\n\r\n\r\nDependencies\r\n------------\r\n\r\n- ines now depends on ``repoze.lru``\r\n\r\n- ines now depends on ``venusian``\r\n\r\n\r\n0.1a1 (2015-05-06)\r\n==================\r\n\r\n- Initial release.", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/hugobranq/ines/tarball/0.1", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/hugobranq/ines", "keywords": "web wsgi pylons pyramid utilities core", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "ines", "package_url": "https://pypi.org/project/ines/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/ines/", "project_urls": { "Download": "https://github.com/hugobranq/ines/tarball/0.1", "Homepage": "https://github.com/hugobranq/ines" }, "release_url": "https://pypi.org/project/ines/0.1a2/", "requires_dist": null, "requires_python": null, "summary": "Web applications manager for pyramid packages", "version": "0.1a2" }, "last_serial": 1600253, "releases": { "0.1a1": [ { "comment_text": "", "digests": { "md5": "38ccc2f2c09135682e9c4ab8b8aca1e1", "sha256": "6a0ee5234a2ac253d45f334333291b1199ac6c5601707dcbe9826aeb0781bc65" }, "downloads": -1, "filename": "ines-0.1a1.tar.gz", "has_sig": false, "md5_digest": "38ccc2f2c09135682e9c4ab8b8aca1e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52743, "upload_time": "2015-05-06T14:52:59", "url": "https://files.pythonhosted.org/packages/ca/b9/4eca93ed77d81e0a6849cfb4e6ac806e0ac73bf17f19f2a04704f3199ebd/ines-0.1a1.tar.gz" } ], "0.1a2": [ { "comment_text": "", "digests": { "md5": "eaa69cb04ab77f850c00739e097ede98", "sha256": "3a2da692918a1f33fd5c3ca997d185af984f1e351b3e2047a43461aea3419825" }, "downloads": -1, "filename": "ines-0.1a2.tar.gz", "has_sig": false, "md5_digest": "eaa69cb04ab77f850c00739e097ede98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73331, "upload_time": "2015-06-20T17:37:51", "url": "https://files.pythonhosted.org/packages/05/97/bccd0b5c91c95f8b302019bb3943a90e5e0637a59df2b1f68510fc57c768/ines-0.1a2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "eaa69cb04ab77f850c00739e097ede98", "sha256": "3a2da692918a1f33fd5c3ca997d185af984f1e351b3e2047a43461aea3419825" }, "downloads": -1, "filename": "ines-0.1a2.tar.gz", "has_sig": false, "md5_digest": "eaa69cb04ab77f850c00739e097ede98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73331, "upload_time": "2015-06-20T17:37:51", "url": "https://files.pythonhosted.org/packages/05/97/bccd0b5c91c95f8b302019bb3943a90e5e0637a59df2b1f68510fc57c768/ines-0.1a2.tar.gz" } ] }