{"id":24623114,"url":"https://github.com/cdent/gabbi-demo","last_synced_at":"2025-03-19T01:14:52.273Z","repository":{"id":31738275,"uuid":"35304285","full_name":"cdent/gabbi-demo","owner":"cdent","description":"A demo and tutorial of gabbi in one repo","archived":false,"fork":false,"pushed_at":"2018-04-27T09:45:56.000Z","size":136,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-01T03:29:05.290Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cdent.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-08T22:14:30.000Z","updated_at":"2020-05-20T07:39:32.000Z","dependencies_parsed_at":"2022-08-29T14:00:56.350Z","dependency_job_id":null,"html_url":"https://github.com/cdent/gabbi-demo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdent%2Fgabbi-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdent%2Fgabbi-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdent%2Fgabbi-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdent%2Fgabbi-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdent","download_url":"https://codeload.github.com/cdent/gabbi-demo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244333021,"owners_count":20436123,"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":[],"created_at":"2025-01-25T03:14:22.074Z","updated_at":"2025-03-19T01:14:52.250Z","avatar_url":"https://github.com/cdent.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Gabbi Demo\n\nThis repo contains a WSGI application that simultaneously operates\nas a tool for doing a demo of [gabbi](http://gabbi.readthedocs.org/)\nand a tutorial for using gabbi as a tool for doing test driven\ndevelopment of an API. By viewing the commit history of the\nrepository you can witness the steps necessary to use gabbi.\n\nBecause gabbi was born in the [OpenStack](http://www.openstack.org/)\nuniverse this demo uses some (but not all) of the Python environment\ntropes used there (tox, testr, subunit, etc). With luck other demos\nwill come along for other environments.\n\n# Tutorial\n\nIf you'd like to use this repo as a tutorial the most direct way is\nto clone it and then inspect the commit log in reverse:\n\n    git log --reverse\n\nor\n\n    git log -u --reverse\n\nThat will tell the story of how the app was built.\n\n# The App\n\nThe app that was created is a simple API that supports storing and\nretrieving objects of stuff put in containers. The containers and\nobjects can have names if you provide them or the server can provide a\nuuid. There is no persistence: data is stored in memory and when the\nserver shuts down stuff is gone. The HTML provided at / provides a\nlist of available URLS. So does the file `gdemo/urls.map`.\n\nFor the sake of transparency, the app does not use an obscuring\nmagical framework. Instead [selector](https://pypi.python.org/pypi/selector)\nwill be used for dispatch and\n[WebOb](https://pypi.python.org/pypi/WebOb) for request object\nhelper methods. This isn't necessarily a best in business setup but it\nis simple and that's the point.\n\n# The Demo\n\nThe process used to create the app has resulted in the backend that\nwill be used during a demo to be given at the OpenStack Liberty\nSummit in Vancouver, May 2015. When the artifacts from that presentation\nare available they will be [linked\nhere](https://github.com/cdent/grunner).\n\nIf you want to run gdemo yourself you need some kind of WSGI server.\n[gunicorn](https://pypi.python.org/pypi/gunicorn) works well.\nInstall it and then from the gdemo repo directory run:\n\n    gunicorn gdemo\n\nRemember your data is just in RAM!\n\n# Contributing\n\nPlease use GitHub's issues if you have a problem to report or a suggestion\nand make a pull request if you've got something you'd like to add or have\na bug fix.\n\n# Acknowledgements\n\nThanks to @FND for relaying the idea of using a git history as a\nguided learning tool.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdent%2Fgabbi-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdent%2Fgabbi-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdent%2Fgabbi-demo/lists"}