{"id":34042886,"url":"https://github.com/nowells/python-wellrested","last_synced_at":"2026-04-02T01:01:23.587Z","repository":{"id":629409,"uuid":"270096","full_name":"nowells/python-wellrested","owner":"nowells","description":"A client to facilitate simple RESTful requests","archived":false,"fork":false,"pushed_at":"2010-09-07T14:13:48.000Z","size":130,"stargazers_count":18,"open_issues_count":2,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-08-09T03:08:52.180Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nowells.png","metadata":{"files":{"readme":"README.rst","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":"2009-08-05T21:19:43.000Z","updated_at":"2023-02-22T16:28:32.000Z","dependencies_parsed_at":"2022-07-05T04:30:57.324Z","dependency_job_id":null,"html_url":"https://github.com/nowells/python-wellrested","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nowells/python-wellrested","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nowells%2Fpython-wellrested","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nowells%2Fpython-wellrested/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nowells%2Fpython-wellrested/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nowells%2Fpython-wellrested/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nowells","download_url":"https://codeload.github.com/nowells/python-wellrested/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nowells%2Fpython-wellrested/sbom","scorecard":{"id":695804,"data":{"date":"2025-08-11","repo":{"name":"github.com/nowells/python-wellrested","commit":"d10d01689651108f368c69c0a9d1e74d1ae87483"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/20 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-22T03:39:37.220Z","repository_id":629409,"created_at":"2025-08-22T03:39:37.220Z","updated_at":"2025-08-22T03:39:37.220Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31293629,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-12-13T22:49:08.040Z","updated_at":"2026-04-02T01:01:23.548Z","avatar_url":"https://github.com/nowells.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"##########################################\n python-wellrested A Simple RESTful client\n##########################################\n\nIntroduction\n============\n\nThe python-wellrested library is a lean client for performing RESTful API calls.\n\nBasic Usage\n===========\n\nBasic usage of the python-wellrested library is simple.\n\nTo work with a RESTful API you first instantiate the client:\n\n::\n\n  \u003e\u003e\u003e j = JsonRestClient('http://example.com/api/', username='user', pass='password')\n\nThen you can read data using the ``get`` method:\n\n::\n\n  \u003e\u003e\u003e j.get('resource.json')\n\nA response object will be returned with data similar to the following\n\n::\n\n  \u003cResponse 200: {'content': '[\\n    {\\n        \"content\": \"demo content\", \\n        \"user\": {\\n            \"username\": \"demouser\", \\n            \"first_name\": \"Jane\"\\n        }\\n    }, \\n    }\\n]', 'headers': {'status': '200', 'content-location': u'http://example.com/api/resource.json', 'vary': 'Authorization', 'server': 'Werkzeug/0.5.1 Python/2.5.1', 'connection': 'close', 'date': 'Thu, 06 Aug 2009 13:48:47 GMT', 'content-type': 'application/json; charset=utf-8'}, 'data': None, 'status_code': 200}\u003e\n\nObviously the exact structure of the data depends on the API that is being called.\n\nTo post data to a RESTful API, the ``post`` method is used:\n\n::\n\n  \u003e\u003e\u003e mydata = {'foo':'bar',}\n  \u003e\u003e\u003e j.post('resource.json', data=mydata)\n\nThis will return a response similar to the one above, containing whatever confirmation the remote API delivers upon posting data. This is normally used for creating objects using the remote API.\n\nTo put data to a RESTful API, the ``put`` method is used:\n\n::\n\n  \u003e\u003e\u003e mydata = {'foo':'bar_edited',}\n  \u003e\u003e\u003e j.put('resource.json', data=mydata)\n\nAnd, finally, to delete data using a RESTful API, the ``delete`` method is used:\n\n::\n\n  \u003e\u003e\u003e j.delete('resource.json)\n\n.. note::\n\n    Please remember that the workings of each RESTful API will vary, and this client only handles the connection between your application and a RESTful resource. The above examples represent the basic usage concepts of python-wellrested, but are not exhaustive nor are they suitable for direct use as doctests.\n\nComparisons to Other REST Clients\n=================================\n\nThere are a few different REST clients written in Python that work just fine. It is not the most ambitious type of library to create. At the same time, it is completely possible to make value judgements, and python-wellrested probably lies somewhere in the middle of the quality spectrum.\n\nIn creating this client, we first checked out several others that had some obvious usage issues. Some were buggy, others were incomplete. Nowell wrote the base of python-wellrested quickly one night after hacking away with a less good client from somebody else.\n\nThe goal, as always, is to keep the client simple to use, adherent to relevant standards, and minimal in coding style.\n\nShortly after writing the first draft of python-wellrested, Nowell discovered py-restclient http://py-restclient.e-engura.org/, which seems to be a somewhat more mature client and the obvious other choice. There are some subtle api differences between the two clients, but they generally take the same basic approach to handling the RESTful API calls.\n\nPlease feel free to use whatever client best suits your needs. And send a pull request on github if you make any improvements to this code.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnowells%2Fpython-wellrested","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnowells%2Fpython-wellrested","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnowells%2Fpython-wellrested/lists"}