{"id":13937541,"url":"https://github.com/nandoflorestan/bag","last_synced_at":"2025-04-28T07:31:23.023Z","repository":{"id":8192635,"uuid":"9621828","full_name":"nandoflorestan/bag","owner":"nandoflorestan","description":"A Python library for several purposes","archived":false,"fork":false,"pushed_at":"2024-07-12T07:34:15.000Z","size":832,"stargazers_count":26,"open_issues_count":0,"forks_count":7,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-16T05:20:06.370Z","etag":null,"topics":["library","pyramid-framework","python","python3","sqlalchemy","web"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nandoflorestan.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.rst","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2013-04-23T11:46:23.000Z","updated_at":"2024-11-20T21:09:50.000Z","dependencies_parsed_at":"2024-04-23T12:41:03.126Z","dependency_job_id":"f2b62652-bb9f-4bc3-bd72-00036782f8b3","html_url":"https://github.com/nandoflorestan/bag","commit_stats":{"total_commits":575,"total_committers":3,"mean_commits":"191.66666666666666","dds":0.006956521739130417,"last_synced_commit":"e6f3989f81b674754a1140a38b7e944f08dc92db"},"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nandoflorestan%2Fbag","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nandoflorestan%2Fbag/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nandoflorestan%2Fbag/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nandoflorestan%2Fbag/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nandoflorestan","download_url":"https://codeload.github.com/nandoflorestan/bag/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251271150,"owners_count":21562498,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["library","pyramid-framework","python","python3","sqlalchemy","web"],"created_at":"2024-08-07T23:03:40.191Z","updated_at":"2025-04-28T07:31:20.915Z","avatar_url":"https://github.com/nandoflorestan.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"===========\nbag library\n===========\n\n**bag** contains code for many purposes, which I find myself reusing in\nmultiple programs -- so this code must be version-controlled.\nI use SQLAlchemy and Pyramid a lot.\n\n**Documentation** is at http://docs.nando.audio/bag/latest/\n\nThe code is at\nhttps://github.com/nandoflorestan/bag\nwhere you can do your bug reports and pull requests.\n\nThis version of **bag** was published with\n`releaser \u003chttps://pypi.python.org/pypi/releaser\u003e`_.\n\n\nMost important library contents\n===============================\n\n- `bag.spreadsheet \u003chttp://docs.nando.audio/bag/latest/api/bag.spreadsheet.html\u003e`_\n  -- Import CSV and Excel spreadsheets based on headers on the first row.\n  There is also a buffered CSV writer for outputting CSV in a web app.\n- `bag.email_validator \u003chttp://docs.nando.audio/bag/latest/api/bag.email_validator.html\u003e`_\n  -- The ultimate functions for email validation and\n  domain validation, as well as an email address harvester.\n- `bag.pathlib_complement \u003chttp://docs.nando.audio/bag/latest/api/bag.pathlib_complement.html\u003e`_\n  -- A Path subclass that does what pathlib doesn't do.\n- `bag.subcommand \u003chttp://docs.nando.audio/bag/latest/api/bag.subcommand.html\u003e`_\n  -- Use argh to dispatch to subcommands with their command-line arguments.\n- `bag.web.burla \u003chttp://docs.nando.audio/bag/latest/api/bag.web.burla.html\u003e`_\n  -- Powerful URL generation independent of web frameworks, working in Python and in the client (Javascript) too. Also provided is `Pyramid integration for it \u003chttps://github.com/nandoflorestan/bag/blob/master/bag/web/pyramid/burla.py\u003e`_.\n- `bag.web.transecma \u003chttp://docs.nando.audio/bag/latest/api/bag.web.transecma.html\u003e`_\n  -- Complete solution for javascript internationalization. Compatible with\n  jquery templates. Includes\n  `transecma.js \u003chttps://github.com/nandoflorestan/bag/blob/master/bag/web/transecma.js\u003e`_.\n- `bag.web.flash_msg` has been removed in favor of a better module in the\n  `kerno \u003chttp://docs.nando.audio/kerno/latest/\u003e`_ library.  It defines\n  a rich class for UI messages to be stored in the HTTP session.\n\n\nIf you use the Pyramid web framework\n====================================\n\n- `bag.web.pyramid.angular_csrf \u003chttp://docs.nando.audio/bag/latest/api/bag.web.pyramid.angular_csrf.html\u003e`_\n  -- Make Pyramid play ball with AngularJS to achieve CSRF protection.\n- `bag.web.pyramid.locale \u003chttp://docs.nando.audio/bag/latest/api/bag.web.pyramid.locale.html\u003e`_\n  -- Easily enable and disable locales, let users switch languages,\n  and use the browser's languages by default.\n- `bag.web.pyramid.nav \u003chttp://docs.nando.audio/bag/latest/api/bag.web.pyramid.nav.html\u003e`_\n  -- Simple web menu system (navigation).\n- `bag.web.pyramid.plugins_manager \u003chttp://docs.nando.audio/bag/latest/api/bag.web.pyramid.plugins_manager.html\u003e`_\n  -- Make your Pyramid app extensible through plugins.\n- `bag.web.pyramid.resources \u003chttp://docs.nando.audio/bag/latest/api/bag.web.pyramid.resources.html\u003e`_\n- `bag.web.exceptions \u003chttp://docs.nando.audio/bag/latest/api/bag.web.exceptions.html\u003e`_\n  -- The Problem exception is good for throwing from a service layer, then\n  caught in the view layer to be shown to the user.\n  -- Functions and base resources for context objects (Pyramid traversal).\n- `bag.web.pyramid.routes \u003chttp://docs.nando.audio/bag/latest/api/bag.web.pyramid.routes.html\u003e`_\n  -- Make Pyramid routes and the route_path() function available to JS in the client.\n\n\nIf you use SQLAlchemy\n=====================\n\n- `bag.sqlalchemy.context \u003chttp://docs.nando.audio/bag/latest/api/bag.sqlalchemy.context.html\u003e`_\n  -- Convenient SQLAlchemy initialization, at last.\n- `bag.sqlalchemy.mediovaigel \u003chttp://docs.nando.audio/bag/latest/api/bag.sqlalchemy.mediovaigel.html\u003e`_ -- Complete solution for database fixtures using SQLAlchemy.\n- `bag.sqlalchemy.tricks \u003chttp://docs.nando.audio/bag/latest/api/bag.sqlalchemy.tricks.html\u003e`_\n  -- Various SQLAlchemy gimmicks, including a great base model class.\n\n\nCommands\n========\n\n- `delete_old_branches \u003chttp://docs.nando.audio/bag/latest/api/bag.git.delete_old_branches.html\u003e`_\n  -- Deletes git branches that have already been merged onto the current branch.\n  Optionally, filter the branches by age (in days).\n- `reorder_po \u003chttp://docs.nando.audio/bag/latest/api/bag.reorder_po.html\u003e`_\n  -- Reorders .po files (usually after transifex messes up the order of the\n  translations in them) so the diff is always readable.\n- `replace_text \u003chttp://docs.nando.audio/bag/latest/api/bag.replace_many.html\u003e`_\n  -- A simple command to replace text in many files, without worrying\n  about regular expressions.\n\n\nLess important library contents\n===============================\n\n- `bag.check_rst \u003chttp://docs.nando.audio/bag/latest/api/bag.check_rst.html\u003e`_\n  -- Verifies reStructuredText content for correctness.\n- `bag.console \u003chttp://docs.nando.audio/bag/latest/api/bag.console.html\u003e`_\n  -- Functions for user interaction at the console.\n- `bag.corrupt_image \u003chttp://docs.nando.audio/bag/latest/api/bag.corrupt_image.html\u003e`_\n  -- Read image files and do something if they are corrupt.\n- `bag.file_existence_manager \u003chttp://docs.nando.audio/bag/latest/api/bag.file_existence_manager.html\u003e`_\n  -- Tools for finding duplicate files using hashes.\n- `bag.log \u003chttp://docs.nando.audio/bag/latest/api/bag.log.html\u003e`_\n  -- Convenient logging initialization.\n- **bag.html** -- Encode and decode HTML and XML entities.\n- **bag.more_codecs** -- Got text in some weird encoding that\n  Python doesn't know? OK, use iconv to decode it.\n- `bag.show_progress \u003chttp://docs.nando.audio/bag/latest/api/bag.show_progress.html\u003e`_\n  -- Don't leave your user wondering if your program is hanging;\n  print the progress every few seconds.\n- `bag.streams \u003chttp://docs.nando.audio/bag/latest/api/bag.streams.html\u003e`_\n  -- Functions that use streams (open files).\n- `bag.text \u003chttp://docs.nando.audio/bag/latest/api/bag.text.html\u003e`_\n  -- Functions for working with unicode strings.\n- `bag.text.words \u003chttp://docs.nando.audio/bag/latest/api/bag.text.words.html\u003e`_\n  -- Contains lists of nouns and adjectives and can generate a random combination words\n  -- good for generating funny test data.\n- `bag.time \u003chttp://docs.nando.audio/bag/latest/api/bag.time.html\u003e`_\n  -- Functions to make it easier to work with datetimes.\n  Includes a JSON encoder that supports time, datetime and Decimal.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnandoflorestan%2Fbag","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnandoflorestan%2Fbag","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnandoflorestan%2Fbag/lists"}