{"id":33030,"name":"book-tdd-web-dev-python","description":"Book - TDD web dev with Python","url":"https://github.com/hjwp/book-tdd-web-dev-python","last_synced_at":"2025-09-05T05:41:59.638Z","repository":{"id":9642426,"uuid":"11575725","full_name":"hjwp/Book-TDD-Web-Dev-Python","owner":"hjwp","description":"Book - TDD web dev with Python","archived":false,"fork":false,"pushed_at":"2025-09-03T16:36:17.000Z","size":111938,"stargazers_count":498,"open_issues_count":18,"forks_count":174,"subscribers_count":36,"default_branch":"main","last_synced_at":"2025-09-03T17:34:07.302Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.obeythetestinggoat.com","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/hjwp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.md","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2013-07-22T07:53:49.000Z","updated_at":"2025-09-03T16:36:21.000Z","dependencies_parsed_at":"2024-03-28T21:31:59.193Z","dependency_job_id":"7207ee19-78cb-40b2-a4c1-c73382a227ba","html_url":"https://github.com/hjwp/Book-TDD-Web-Dev-Python","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/hjwp/Book-TDD-Web-Dev-Python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hjwp%2FBook-TDD-Web-Dev-Python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hjwp%2FBook-TDD-Web-Dev-Python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hjwp%2FBook-TDD-Web-Dev-Python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hjwp%2FBook-TDD-Web-Dev-Python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hjwp","download_url":"https://codeload.github.com/hjwp/Book-TDD-Web-Dev-Python/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hjwp%2FBook-TDD-Web-Dev-Python/sbom","scorecard":{"id":466030,"data":{"date":"2025-08-11","repo":{"name":"github.com/hjwp/Book-TDD-Web-Dev-Python","commit":"d191d85c038aec06b8e61197ccc3ca300dba2a24"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.7,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 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":10,"reason":"30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/tests.yml:1","Info: no jobLevel write permissions found"],"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":"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":"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":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: misc/curl:1"],"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":"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":"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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/hjwp/Book-TDD-Web-Dev-Python/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/hjwp/Book-TDD-Web-Dev-Python/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:122: update your workflow using https://app.stepsecurity.io/secureworkflow/hjwp/Book-TDD-Web-Dev-Python/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:129: update your workflow using https://app.stepsecurity.io/secureworkflow/hjwp/Book-TDD-Web-Dev-Python/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:141: update your workflow using https://app.stepsecurity.io/secureworkflow/hjwp/Book-TDD-Web-Dev-Python/tests.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating python:slim to python:slim@sha256:2a928e11761872b12003515ea59b3c40bb5340e2e5ecc1108e043f92be7e473d","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:89","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:154","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned"],"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"}}]},"last_synced_at":"2025-08-19T12:31:48.637Z","repository_id":9642426,"created_at":"2025-08-19T12:31:48.638Z","updated_at":"2025-08-19T12:31:48.638Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273717767,"owners_count":25155482,"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","status":"online","status_checked_at":"2025-09-05T02:00:09.113Z","response_time":402,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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"}},"owner":{"login":"hjwp","name":"Harry Percival","uuid":"769730","kind":"user","description":"","email":"","website":"http://www.obeythetestinggoat.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/769730?u=bd5c113204c2557c6fa924bf6575eca767842170\u0026v=4","repositories_count":133,"last_synced_at":"2025-08-31T18:38:17.798Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/hjwp","funding_links":[],"total_stars":2865,"followers":1361,"following":3,"created_at":"2022-11-03T03:43:42.441Z","updated_at":"2025-08-31T18:38:17.798Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hjwp","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hjwp/repositories"},"packages":[],"commits":{"id":3471694,"full_name":"hjwp/book-tdd-web-dev-python","default_branch":"main","committers":[{"name":"Harry","email":"hjwp2@cantab.net","login":"hjwp","count":3617},{"name":"kristen@oreilly.com","email":"kristen@oreilly.com","login":"kristenORM","count":502},{"name":"kebrahim@oreilly.com","email":"kebrahim@oreilly.com","login":"karaebrahim","count":496},{"name":"judymcconville@roadrunner.com","email":"judymcconville@roadrunner.com","login":"IndexPro","count":490},{"name":"wendy@lastlookeditorial.com","email":"wendy@lastlookeditorial.com","login":null,"count":329},{"name":"Csanad Beres","email":"qed.csberes@gmail.com","login":"Xronophobe","count":193},{"name":"Matthew Hacker","email":"mhacker@oreilly.com","login":"hackermatthew","count":146},{"name":"cfaucher","email":"cfaucher@oreilly.com","login":"chris-faucher","count":69},{"name":"ritaf-ORM","email":"87783849+ritaf-ORM","login":"ritaf-ORM","count":34},{"name":"Sebastian Buczyński","email":"nnplaya@gmail.com","login":"Enforcer","count":26},{"name":"David Seddon","email":"david.seddon@octoenergy.com","login":"seddonym","count":26},{"name":"Jan Giacomelli","email":"jan.giacomelli@gmail.com","login":"jangia","count":23},{"name":"Jonathan Hartley","email":"tartley@tartley.com","login":"tartley","count":21},{"name":"Sarah Schneider","email":"sarahs@oreilly.com","login":null,"count":18},{"name":"zipperer","email":"zipperer.andrew@gmail.com","login":"zipperer","count":17},{"name":"Sam Lynch","email":"slynch@oreilly.com","login":"slynchoreilly","count":14},{"name":"James Evans","email":"jwm-evans","login":"jwm-evans","count":12},{"name":"dfauxsmith@touchstone.east.ora.com","email":"dfauxsmith@oreilly.com","login":"DanGitOreilly","count":9},{"name":"Meghanorm","email":"meghan@oreilly.com","login":"Meghanorm","count":8},{"name":"sarknohun","email":"shunter@oreilly.com","login":"sarknohun","count":6},{"name":"Sanders Kleinfeld","email":"sanders@oreilly.com","login":null,"count":5},{"name":"bhagerty","email":"b_hagerty@yahoo.com","login":"bhagerty","count":4},{"name":"Salmanul Farzy","email":"salmanulfarzy@gmail.com","login":"salmanulfarzy","count":4},{"name":"Andrew-Zipperer","email":"atzipperer@gmail.com","login":"Andrew-Zipperer","count":4},{"name":"Andrea Crotti","email":"andrea.crotti.0@gmail.com","login":"AndreaCrotti","count":4},{"name":"harry.percival@gmail.com","email":"harry.percival@gmail.com","login":null,"count":4},{"name":"Kristen Brown","email":"kristen@touchstone2.east.ora.com","login":null,"count":4},{"name":"Steve Nicholson","email":"ssteve@mac.com","login":"SSteve","count":3},{"name":"Chris Pappas","email":"cpappas@oreilly.com","login":null,"count":3},{"name":"Eric Henziger","email":"hemtillhenziger@gmail.com","login":"henziger","count":2},{"name":"Raphael Das Gupta","email":"raphael.das.gupta@hsr.ch","login":"das-g","count":2},{"name":"Teemu Viikeri","email":"teemu.viikeri@haltu.fi","login":"ttiikeri","count":2},{"name":"theresa jones","email":"tjones@oreilly.com","login":"theresa-jones","count":2},{"name":"xuan wang","email":"xuan.wang@kraken.tech","login":"mmxw","count":1},{"name":"ron@oreilly.com","email":"ron@oreilly.com","login":"Biladew","count":1},{"name":"myarbrough@oreilly.com","email":"myarbrough@oreilly.com","login":"myarbrough","count":1},{"name":"kt-0","email":"kenneth.j.tuten@gmail.com","login":"kt-0","count":1},{"name":"awdem","email":"wdemontmollin@gmail.com","login":"awdem","count":1},{"name":"ari abramowitz","email":"ari.abramowitz1@gmail.com","login":"AriAbr","count":1},{"name":"Will Lambeth","email":"wflambeth@gmail.com","login":"wflambeth","count":1},{"name":"Sam Lynch","email":"slynch@touchstone.east.ora.com","login":null,"count":1},{"name":"Wayne Adams","email":"wadams19@gmail.com","login":"wayneadams","count":1},{"name":"Stephanie","email":"104656459+StephanieAG","login":"StephanieAG","count":1},{"name":"Russ Hyde","email":"russHyde","login":"russHyde","count":1},{"name":"Rowan Molony","email":"rowanmolony@gmail.com","login":"rdmolony","count":1},{"name":"Ronnie","email":"48774425+Ronmabii","login":"Ronmabii","count":1},{"name":"NicolasGibaud7","email":"nicolas.gibaud7@gmail.com","login":"nicolasGibaud7","count":1},{"name":"Nick Nielsen","email":"70209373+nicknielsen","login":"nicknielsen","count":1},{"name":"Nicholas","email":"wasabigeek","login":"wasabigeek","count":1},{"name":"Michiel Beijen","email":"michiel.beijen@gmail.com","login":"mbeijen","count":1},{"name":"Lucie","email":"lucie.daeye@gmail.com","login":"patjouk","count":1},{"name":"Kara de la Marck","email":"karadelamarck@gmail.com","login":"MarckK","count":1},{"name":"Julian de Lorenzo","email":"delorenzo.ja@gmail.com","login":"julian-del","count":1},{"name":"Joshua Hunter","email":"hunterji@gmail.com","login":"hunterji","count":1},{"name":"Jeff","email":"bummmer","login":"bummmer","count":1},{"name":"Dmitry Plevkov","email":"wwarne@gmail.com","login":"wwarne","count":1},{"name":"David","email":"11855766+DavidATN","login":"DavidATN","count":1},{"name":"Cody Scot","email":"cody.j.b.scott@gmail.com","login":"Siecje","count":1},{"name":"Bilyan Hadzhi","email":"bilyanhadzhi@gmail.com","login":"bilyanhadzhi","count":1},{"name":"Alex Gontar","email":"mosegontar@gmail.com","login":"mosegontar","count":1}],"total_commits":6126,"total_committers":60,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":102.1,"dds":0.4095657851779302,"past_year_committers":[{"name":"Harry","email":"hjwp2@cantab.net","login":"hjwp","count":730},{"name":"Csanad Beres","email":"qed.csberes@gmail.com","login":"Xronophobe","count":73},{"name":"cfaucher","email":"cfaucher@oreilly.com","login":"chris-faucher","count":34},{"name":"rfernando","email":"rfernando@oreilly.com","login":"ritaf-ORM","count":25},{"name":"David Seddon","email":"david.seddon@octoenergy.com","login":"seddonym","count":14},{"name":"Sebastian Buczyński","email":"nnplaya@gmail.com","login":"Enforcer","count":13},{"name":"Jan Giacomelli","email":"jan.giacomelli@gmail.com","login":"jangia","count":9},{"name":"sarknohun","email":"shunter@oreilly.com","login":"sarknohun","count":6},{"name":"theresa jones","email":"tjones@oreilly.com","login":"theresa-jones","count":2},{"name":"xuan wang","email":"xuan.wang@kraken.tech","login":"mmxw","count":1},{"name":"Stephanie","email":"104656459+StephanieAG","login":"StephanieAG","count":1},{"name":"David","email":"11855766+DavidATN","login":"DavidATN","count":1}],"past_year_total_commits":909,"past_year_total_committers":12,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":75.75,"past_year_dds":0.1969196919691969,"last_synced_at":"2025-05-29T07:35:55.983Z","last_synced_commit":"0818f315cbf2271c2aa052b20a0c4d63c88323fa","created_at":"2024-10-15T09:56:33.986Z","updated_at":"2025-05-29T07:35:56.256Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/hjwp%2Fbook-tdd-web-dev-python/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-05T00:00:10.343Z","repositories_count":5480019,"commits_count":853389012,"contributors_count":31098138,"owners_count":906558,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"hjwp/book-tdd-web-dev-python","html_url":"https://github.com/hjwp/book-tdd-web-dev-python","last_synced_at":"2025-08-31T14:15:14.295Z","status":null,"issues_count":32,"pull_requests_count":169,"avg_time_to_close_issue":26458280.903225806,"avg_time_to_close_pull_request":2744188.354037267,"issues_closed_count":31,"pull_requests_closed_count":161,"pull_request_authors_count":40,"issue_authors_count":23,"avg_comments_per_issue":2.125,"avg_comments_per_pull_request":0.6745562130177515,"merged_pull_requests_count":135,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":3,"past_year_pull_requests_count":94,"past_year_avg_time_to_close_issue":226048.0,"past_year_avg_time_to_close_pull_request":2417946.88372093,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":86,"past_year_pull_request_authors_count":8,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.6666666666666666,"past_year_avg_comments_per_pull_request":0.2553191489361702,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":84,"created_at":"2024-10-15T09:56:34.248Z","updated_at":"2025-09-03T06:45:51.964Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/hjwp%2Fbook-tdd-web-dev-python","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/hjwp%2Fbook-tdd-web-dev-python/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":31,"CONTRIBUTOR":9,"OWNER":1},"pull_request_author_associations_count":{"CONTRIBUTOR":116,"COLLABORATOR":87,"OWNER":50,"NONE":29},"issue_authors":{"AndreaCrotti":8,"mshob23":4,"FlowFX":3,"artGonza":2,"shun-liang":1,"MarckK":1,"zecafig":1,"ScottMcCormack":1,"moritz-weber":1,"LeBodro":1,"arnieelkins":1,"sudoursa":1,"paatre":1,"stefanos82":1,"RivenSkaye":1,"RodrigoJacznik":1,"syyong":1,"ghost":1,"JonathanWillitts":1,"nicktimko":1,"zhuqunli":1,"wangzhaohe":1,"bosatsu":1,"rebortyang":1,"varjmes":1,"tunggnu":1,"arnlaugsson":1,"hjwp":1},"pull_request_authors":{"hjwp":50,"Xronophobe":42,"seddonym":29,"tartley":24,"Enforcer":24,"ritaf-ORM":19,"jangia":16,"jwm-evans":12,"sarknohun":8,"zipperer":4,"AndreaCrotti":4,"SSteve":3,"mshob23":3,"salmanulfarzy":3,"henziger":2,"gasull":2,"Meghanorm":2,"hunterji":2,"das-g":2,"wflambeth":1,"wwarne":1,"tntC4stl3":1,"paatre":1,"wayneadams":1,"StephanieAG":1,"Siecje":1,"vaibhavhrt":1,"GeoWill":1,"stsewd":1,"DarkSuniuM":1,"patjouk":1,"mmxw":1,"kt-0":1,"bilyanhadzhi":1,"mosegontar":1,"0LL13":1,"daniel-butler":1,"mbeijen":1,"nicknielsen":1,"lluxury":1,"ScottMcCormack":1,"harunyasar":1,"juanriaza":1,"Windsooon":1,"egonulates":1,"DavidATN":1,"sgrey513":1,"wasabigeek":1,"cgte":1,"theno":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-03T00:00:08.273Z","repositories_count":10072190,"issues_count":31273742,"pull_requests_count":95552220,"authors_count":10689719,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":5},"past_year_pull_request_author_associations_count":{"COLLABORATOR":55,"CONTRIBUTOR":36,"OWNER":21,"NONE":1},"past_year_issue_authors":{"mshob23":2,"rebortyang":1,"RodrigoJacznik":1,"tunggnu":1},"past_year_pull_request_authors":{"seddonym":25,"hjwp":21,"Xronophobe":18,"Enforcer":17,"jangia":12,"ritaf-ORM":10,"sarknohun":8,"sgrey513":1,"DavidATN":1},"maintainers":[{"login":"hjwp","count":51,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/hjwp"},{"login":"Xronophobe","count":42,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Xronophobe"},{"login":"seddonym","count":29,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/seddonym"},{"login":"jangia","count":16,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jangia"}],"active_maintainers":[{"login":"seddonym","count":25,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/seddonym"},{"login":"hjwp","count":21,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/hjwp"},{"login":"Xronophobe","count":18,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Xronophobe"},{"login":"jangia","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jangia"}]},"events":{"total":{"IssuesEvent":9,"WatchEvent":9,"DeleteEvent":2,"IssueCommentEvent":23,"PushEvent":272,"PullRequestEvent":91,"PullRequestReviewEvent":35,"PullRequestReviewCommentEvent":36,"ForkEvent":4,"CreateEvent":14},"last_year":{"IssuesEvent":9,"WatchEvent":9,"DeleteEvent":2,"IssueCommentEvent":23,"PushEvent":272,"PullRequestEvent":91,"PullRequestReviewEvent":35,"PullRequestReviewCommentEvent":36,"ForkEvent":4,"CreateEvent":14}},"keywords":[],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/tests.yml","sha":null,"kind":"manifest","created_at":"2023-01-11T20:12:59.481Z","updated_at":"2023-01-11T20:12:59.481Z","repository_link":"https://github.com/hjwp/Book-TDD-Web-Dev-Python/blob/main/.github/workflows/tests.yml","dependencies":[{"id":6870619753,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":6870619754,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2024-01-15T23:49:18.300Z","updated_at":"2024-01-15T23:49:18.300Z","repository_link":"https://github.com/hjwp/Book-TDD-Web-Dev-Python/blob/main/pyproject.toml","dependencies":[{"id":15634368844,"package_name":"requests","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":15634368845,"package_name":"lxml","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":15634368846,"package_name":"lxml-stubs","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":15634368850,"package_name":"cssselect","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":15634368851,"package_name":"django","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":15634368852,"package_name":"django-types","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":15634368856,"package_name":"pygments","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":15634368857,"package_name":"docopt","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":15634368858,"package_name":"selenium","ecosystem":"pypi","requirements":"\u003c5","direct":true,"kind":"runtime","optional":false},{"id":15634368859,"package_name":"pytest","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":15634368860,"package_name":"ruff","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":15634368861,"package_name":"black","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":15634368862,"package_name":"whitenoise","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]}],"score":10.340451327703663,"created_at":"2025-09-04T15:51:06.256Z","updated_at":"2025-10-07T08:13:57.192Z","avatar_url":"https://github.com/hjwp.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":0,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://science.ecosyste.ms/api/v1/projects/33030","html_url":"https://science.ecosyste.ms/projects/33030"}