{"id":8978,"name":"nova-tutorial","description":"Carpentry-based tutorial on developing using the NOVA libraries","url":"https://github.com/nova-model/nova-tutorial","last_synced_at":"2025-09-04T20:20:12.764Z","repository":{"id":292409267,"uuid":"980813878","full_name":"nova-model/nova-tutorial","owner":"nova-model","description":"Carpentry-based tutorial on developing using the NOVA libraries","archived":false,"fork":false,"pushed_at":"2025-07-08T17:03:40.000Z","size":123173,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-08T18:27:04.669Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://nova.ornl.gov/tutorial","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/nova-model.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-09T19:01:55.000Z","updated_at":"2025-06-20T14:46:47.000Z","dependencies_parsed_at":"2025-05-09T20:37:36.293Z","dependency_job_id":null,"html_url":"https://github.com/nova-model/nova-tutorial","commit_stats":null,"previous_names":["nova-model/nova-tutorial"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/nova-model/nova-tutorial","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nova-model%2Fnova-tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nova-model%2Fnova-tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nova-model%2Fnova-tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nova-model%2Fnova-tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nova-model","download_url":"https://codeload.github.com/nova-model/nova-tutorial/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nova-model%2Fnova-tutorial/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273666876,"owners_count":25146473,"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-04T02:00:08.968Z","response_time":61,"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":"nova-model","name":"NOVA","uuid":"210903964","kind":"organization","description":"NOVA Application Framework","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/210903964?v=4","repositories_count":1,"last_synced_at":"2025-05-09T20:22:51.400Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/nova-model","funding_links":[],"total_stars":0,"followers":0,"following":0,"created_at":"2025-05-09T20:22:51.420Z","updated_at":"2025-05-09T20:22:51.420Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nova-model","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nova-model/repositories"},"packages":null,"commits":{"message":"Repository syncing started."},"issues_stats":{"full_name":"nova-model/nova-tutorial","html_url":"https://github.com/nova-model/nova-tutorial","last_synced_at":null,"status":null,"issues_count":null,"pull_requests_count":null,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":null,"issues_closed_count":null,"pull_requests_closed_count":null,"pull_request_authors_count":null,"issue_authors_count":null,"avg_comments_per_issue":null,"avg_comments_per_pull_request":null,"merged_pull_requests_count":null,"bot_issues_count":null,"bot_pull_requests_count":null,"past_year_issues_count":null,"past_year_pull_requests_count":null,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":null,"past_year_pull_requests_closed_count":null,"past_year_pull_request_authors_count":null,"past_year_issue_authors_count":null,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":null,"past_year_bot_pull_requests_count":null,"past_year_merged_pull_requests_count":null,"created_at":"2025-08-29T18:11:15.073Z","updated_at":"2025-08-29T23:26:51.801Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/nova-model%2Fnova-tutorial","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/nova-model%2Fnova-tutorial/issues","issue_labels_count":{"gitlab merge request":17,"docs":4,"status::backlog":1,"status::to review":1},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":17,"CONTRIBUTOR":1},"pull_request_author_associations_count":{"NONE":1,"CONTRIBUTOR":1},"issue_authors":{"jarrah42":17,"evilkermit":1},"pull_request_authors":{"andrewfayres":1,"evilkermit":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-04T00:00:25.939Z","repositories_count":10081099,"issues_count":31282489,"pull_requests_count":96115222,"authors_count":10693655,"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":{"gitlab merge request":17,"docs":4,"status::backlog":1,"status::to review":1},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":17,"CONTRIBUTOR":1},"past_year_pull_request_author_associations_count":{"NONE":1,"CONTRIBUTOR":1},"past_year_issue_authors":{"jarrah42":17,"evilkermit":1},"past_year_pull_request_authors":{"evilkermit":1,"andrewfayres":1},"maintainers":[],"active_maintainers":[]},"events":{"total":{"IssuesEvent":18,"IssueCommentEvent":35,"PushEvent":2,"PullRequestReviewEvent":1,"PullRequestEvent":3,"CreateEvent":10},"last_year":{"IssuesEvent":18,"IssueCommentEvent":35,"PushEvent":2,"PullRequestReviewEvent":1,"PullRequestEvent":3,"CreateEvent":10}},"keywords":[],"dependencies":[{"ecosystem":"docker","filepath":"code/episode_6/advanced_pydantic/dockerfiles/Dockerfile","sha":null,"kind":"manifest","created_at":"2025-05-09T20:37:22.211Z","updated_at":"2025-05-09T20:37:22.211Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_6/advanced_pydantic/dockerfiles/Dockerfile","dependencies":[{"id":23058605565,"package_name":"regproxy.ornl.gov/hub_proxy/python","ecosystem":"docker","requirements":"3.10-slim","direct":true,"kind":"build","optional":false},{"id":23058605566,"package_name":"$SOURCE_IMAGE","ecosystem":"docker","requirements":"latest","direct":true,"kind":"build","optional":false},{"id":23058606861,"package_name":"regproxy.ornl.gov/hub_proxy/ubuntu","ecosystem":"docker","requirements":"22.04","direct":true,"kind":"build","optional":false}]},{"ecosystem":"docker","filepath":"code/episode_6/pydantic_mvvm/dockerfiles/Dockerfile","sha":null,"kind":"manifest","created_at":"2025-05-09T20:37:26.459Z","updated_at":"2025-05-09T20:37:26.459Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_6/pydantic_mvvm/dockerfiles/Dockerfile","dependencies":[{"id":23058606925,"package_name":"regproxy.ornl.gov/hub_proxy/python","ecosystem":"docker","requirements":"3.10-slim","direct":true,"kind":"build","optional":false},{"id":23058606926,"package_name":"$SOURCE_IMAGE","ecosystem":"docker","requirements":"latest","direct":true,"kind":"build","optional":false},{"id":23058606927,"package_name":"regproxy.ornl.gov/hub_proxy/ubuntu","ecosystem":"docker","requirements":"22.04","direct":true,"kind":"build","optional":false}]},{"ecosystem":"docker","filepath":"dockerfiles/Dockerfile","sha":null,"kind":"manifest","created_at":"2025-05-09T20:37:26.729Z","updated_at":"2025-05-09T20:37:26.729Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/dockerfiles/Dockerfile","dependencies":[{"id":23058606933,"package_name":"savannah.ornl.gov/ndip/nova/carpentry_base","ecosystem":"docker","requirements":"latest","direct":true,"kind":"build","optional":false}]},{"ecosystem":"pypi","filepath":"code/episode_2/poetry.lock","sha":null,"kind":"lockfile","created_at":"2025-05-09T20:37:28.484Z","updated_at":"2025-05-09T20:37:28.484Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_2/poetry.lock","dependencies":[{"id":23058607847,"package_name":"aiohappyeyeballs","ecosystem":"pypi","requirements":"2.4.4","direct":false,"kind":"runtime","optional":false},{"id":23058607848,"package_name":"aiohttp","ecosystem":"pypi","requirements":"3.11.11","direct":false,"kind":"runtime","optional":false},{"id":23058607849,"package_name":"aiosignal","ecosystem":"pypi","requirements":"1.3.2","direct":false,"kind":"runtime","optional":false},{"id":23058607850,"package_name":"alabaster","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058607851,"package_name":"annotated-types","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":23058607852,"package_name":"async-timeout","ecosystem":"pypi","requirements":"5.0.1","direct":false,"kind":"runtime","optional":false},{"id":23058607853,"package_name":"attrs","ecosystem":"pypi","requirements":"25.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058607854,"package_name":"babel","ecosystem":"pypi","requirements":"2.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058607855,"package_name":"certifi","ecosystem":"pypi","requirements":"2025.1.31","direct":false,"kind":"runtime","optional":false},{"id":23058607856,"package_name":"cfgv","ecosystem":"pypi","requirements":"3.4.0","direct":false,"kind":"runtime","optional":false},{"id":23058607857,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"3.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058607858,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":23058607859,"package_name":"copier","ecosystem":"pypi","requirements":"9.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058607860,"package_name":"coverage","ecosystem":"pypi","requirements":"7.6.10","direct":false,"kind":"runtime","optional":false},{"id":23058607861,"package_name":"deepdiff","ecosystem":"pypi","requirements":"8.2.0","direct":false,"kind":"runtime","optional":false},{"id":23058607862,"package_name":"distlib","ecosystem":"pypi","requirements":"0.3.9","direct":false,"kind":"runtime","optional":false},{"id":23058607863,"package_name":"docutils","ecosystem":"pypi","requirements":"0.21.2","direct":false,"kind":"runtime","optional":false},{"id":23058607864,"package_name":"dunamai","ecosystem":"pypi","requirements":"1.23.0","direct":false,"kind":"runtime","optional":false},{"id":23058607865,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":23058607866,"package_name":"filelock","ecosystem":"pypi","requirements":"3.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058607867,"package_name":"frozenlist","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058607868,"package_name":"funcy","ecosystem":"pypi","requirements":"2.0","direct":false,"kind":"runtime","optional":false},{"id":23058607869,"package_name":"identify","ecosystem":"pypi","requirements":"2.6.6","direct":false,"kind":"runtime","optional":false},{"id":23058607870,"package_name":"idna","ecosystem":"pypi","requirements":"3.10","direct":false,"kind":"runtime","optional":false},{"id":23058607871,"package_name":"imagesize","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058607872,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058607873,"package_name":"jinja2","ecosystem":"pypi","requirements":"3.1.5","direct":false,"kind":"runtime","optional":false},{"id":23058607874,"package_name":"jinja2-ansible-filters","ecosystem":"pypi","requirements":"1.3.2","direct":false,"kind":"runtime","optional":false},{"id":23058607875,"package_name":"libsass","ecosystem":"pypi","requirements":"0.23.0","direct":false,"kind":"runtime","optional":false},{"id":23058607876,"package_name":"markupsafe","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058607877,"package_name":"mergedeep","ecosystem":"pypi","requirements":"1.3.4","direct":false,"kind":"runtime","optional":false},{"id":23058607878,"package_name":"more-itertools","ecosystem":"pypi","requirements":"10.6.0","direct":false,"kind":"runtime","optional":false},{"id":23058607879,"package_name":"msgpack","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058607880,"package_name":"multidict","ecosystem":"pypi","requirements":"6.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058607881,"package_name":"mypy","ecosystem":"pypi","requirements":"1.15.0","direct":false,"kind":"runtime","optional":false},{"id":23058607882,"package_name":"mypy-extensions","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058607883,"package_name":"nodeenv","ecosystem":"pypi","requirements":"1.9.1","direct":false,"kind":"runtime","optional":false},{"id":23058607884,"package_name":"nova-mvvm","ecosystem":"pypi","requirements":"0.9.0","direct":false,"kind":"runtime","optional":false},{"id":23058607885,"package_name":"nova-trame","ecosystem":"pypi","requirements":"0.14.2","direct":false,"kind":"runtime","optional":false},{"id":23058608811,"package_name":"orderly-set","ecosystem":"pypi","requirements":"5.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058608815,"package_name":"packaging","ecosystem":"pypi","requirements":"24.2","direct":false,"kind":"runtime","optional":false},{"id":23058608817,"package_name":"pathspec","ecosystem":"pypi","requirements":"0.12.1","direct":false,"kind":"runtime","optional":false},{"id":23058608819,"package_name":"platformdirs","ecosystem":"pypi","requirements":"4.3.6","direct":false,"kind":"runtime","optional":false},{"id":23058608821,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058608823,"package_name":"plumbum","ecosystem":"pypi","requirements":"1.9.0","direct":false,"kind":"runtime","optional":false},{"id":23058608825,"package_name":"pockets","ecosystem":"pypi","requirements":"0.9.1","direct":false,"kind":"runtime","optional":false},{"id":23058608828,"package_name":"pre-commit","ecosystem":"pypi","requirements":"4.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058608830,"package_name":"prompt-toolkit","ecosystem":"pypi","requirements":"3.0.50","direct":false,"kind":"runtime","optional":false},{"id":23058608832,"package_name":"propcache","ecosystem":"pypi","requirements":"0.2.1","direct":false,"kind":"runtime","optional":false},{"id":23058608833,"package_name":"pydantic","ecosystem":"pypi","requirements":"2.10.6","direct":false,"kind":"runtime","optional":false},{"id":23058608835,"package_name":"pydantic-core","ecosystem":"pypi","requirements":"2.27.2","direct":false,"kind":"runtime","optional":false},{"id":23058608838,"package_name":"pygments","ecosystem":"pypi","requirements":"2.19.1","direct":false,"kind":"runtime","optional":false},{"id":23058608840,"package_name":"pytest","ecosystem":"pypi","requirements":"8.3.4","direct":false,"kind":"runtime","optional":false},{"id":23058608842,"package_name":"pytest-asyncio","ecosystem":"pypi","requirements":"0.25.3","direct":false,"kind":"runtime","optional":false},{"id":23058608844,"package_name":"pywin32","ecosystem":"pypi","requirements":"308","direct":false,"kind":"runtime","optional":false},{"id":23058608845,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058608847,"package_name":"questionary","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058608850,"package_name":"requests","ecosystem":"pypi","requirements":"2.32.3","direct":false,"kind":"runtime","optional":false},{"id":23058608852,"package_name":"ruff","ecosystem":"pypi","requirements":"0.9.4","direct":false,"kind":"runtime","optional":false},{"id":23058608855,"package_name":"six","ecosystem":"pypi","requirements":"1.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058608857,"package_name":"snowballstemmer","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"runtime","optional":false},{"id":23058608859,"package_name":"sphinx","ecosystem":"pypi","requirements":"8.1.3","direct":false,"kind":"runtime","optional":false},{"id":23058608862,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058608864,"package_name":"sphinxcontrib-applehelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058608866,"package_name":"sphinxcontrib-devhelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058608869,"package_name":"sphinxcontrib-htmlhelp","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058608871,"package_name":"sphinxcontrib-jquery","ecosystem":"pypi","requirements":"4.1","direct":false,"kind":"runtime","optional":false},{"id":23058608874,"package_name":"sphinxcontrib-jsmath","ecosystem":"pypi","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":23058608875,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"0.7","direct":false,"kind":"runtime","optional":false},{"id":23058608877,"package_name":"sphinxcontrib-qthelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058608880,"package_name":"sphinxcontrib-serializinghtml","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058608883,"package_name":"tomli","ecosystem":"pypi","requirements":"2.2.1","direct":false,"kind":"runtime","optional":false},{"id":23058608885,"package_name":"trame","ecosystem":"pypi","requirements":"3.8.0","direct":false,"kind":"runtime","optional":false},{"id":23058609571,"package_name":"trame-client","ecosystem":"pypi","requirements":"3.5.2","direct":false,"kind":"runtime","optional":false},{"id":23058609679,"package_name":"trame-server","ecosystem":"pypi","requirements":"3.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058609784,"package_name":"trame-vega","ecosystem":"pypi","requirements":"2.1.1","direct":false,"kind":"runtime","optional":false},{"id":23058609786,"package_name":"trame-vuetify","ecosystem":"pypi","requirements":"2.8.1","direct":false,"kind":"runtime","optional":false},{"id":23058609861,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.12.2","direct":false,"kind":"runtime","optional":false},{"id":23058609864,"package_name":"urllib3","ecosystem":"pypi","requirements":"2.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058609866,"package_name":"virtualenv","ecosystem":"pypi","requirements":"20.29.1","direct":false,"kind":"runtime","optional":false},{"id":23058609869,"package_name":"wcwidth","ecosystem":"pypi","requirements":"0.2.13","direct":false,"kind":"runtime","optional":false},{"id":23058609871,"package_name":"wslink","ecosystem":"pypi","requirements":"2.2.2","direct":false,"kind":"runtime","optional":false},{"id":23058610739,"package_name":"yarl","ecosystem":"pypi","requirements":"1.18.3","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"code/episode_2/pyproject.toml","sha":null,"kind":"manifest","created_at":"2025-05-09T20:37:34.416Z","updated_at":"2025-05-09T20:37:34.416Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_2/pyproject.toml","dependencies":[{"id":23058610934,"package_name":"python","ecosystem":"pypi","requirements":"^3.10","direct":true,"kind":"runtime","optional":false},{"id":23058610935,"package_name":"nova-trame","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":23058610937,"package_name":"mypy","ecosystem":"pypi","requirements":"\u003e=1.10.0","direct":true,"kind":"develop","optional":false},{"id":23058610938,"package_name":"pre-commit","ecosystem":"pypi","requirements":"\u003e=2.20.0","direct":true,"kind":"develop","optional":false},{"id":23058610940,"package_name":"coverage","ecosystem":"pypi","requirements":"\u003e=6.4.3","direct":true,"kind":"develop","optional":false},{"id":23058610942,"package_name":"pytest","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058610944,"package_name":"ruff","ecosystem":"pypi","requirements":"\u003e=0.6.2","direct":true,"kind":"develop","optional":false},{"id":23058610946,"package_name":"copier","ecosystem":"pypi","requirements":"\u003e=9.3","direct":true,"kind":"develop","optional":false},{"id":23058610948,"package_name":"sphinx","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058610950,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058610952,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058610954,"package_name":"tomli","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false}]},{"ecosystem":"pypi","filepath":"code/episode_3/poetry.lock","sha":null,"kind":"lockfile","created_at":"2025-05-09T20:37:34.471Z","updated_at":"2025-05-09T20:37:34.471Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_3/poetry.lock","dependencies":[{"id":23058610970,"package_name":"aiohappyeyeballs","ecosystem":"pypi","requirements":"2.4.4","direct":false,"kind":"runtime","optional":false},{"id":23058610971,"package_name":"aiohttp","ecosystem":"pypi","requirements":"3.11.12","direct":false,"kind":"runtime","optional":false},{"id":23058610972,"package_name":"aiosignal","ecosystem":"pypi","requirements":"1.3.2","direct":false,"kind":"runtime","optional":false},{"id":23058610973,"package_name":"alabaster","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"develop","optional":false},{"id":23058610974,"package_name":"annotated-types","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":23058610975,"package_name":"async-timeout","ecosystem":"pypi","requirements":"5.0.1","direct":false,"kind":"runtime","optional":false},{"id":23058610976,"package_name":"attrs","ecosystem":"pypi","requirements":"25.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058610977,"package_name":"babel","ecosystem":"pypi","requirements":"2.17.0","direct":false,"kind":"develop","optional":false},{"id":23058610978,"package_name":"bioblend","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":"runtime","optional":false},{"id":23058610979,"package_name":"certifi","ecosystem":"pypi","requirements":"2025.1.31","direct":false,"kind":"runtime","optional":false},{"id":23058610980,"package_name":"cfgv","ecosystem":"pypi","requirements":"3.4.0","direct":false,"kind":"develop","optional":false},{"id":23058610981,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"3.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058610982,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":23058610983,"package_name":"copier","ecosystem":"pypi","requirements":"9.4.1","direct":false,"kind":"develop","optional":false},{"id":23058610984,"package_name":"coverage","ecosystem":"pypi","requirements":"7.6.10","direct":false,"kind":"develop","optional":false},{"id":23058610985,"package_name":"deepdiff","ecosystem":"pypi","requirements":"8.2.0","direct":false,"kind":"runtime","optional":false},{"id":23058610986,"package_name":"distlib","ecosystem":"pypi","requirements":"0.3.9","direct":false,"kind":"develop","optional":false},{"id":23058610987,"package_name":"docutils","ecosystem":"pypi","requirements":"0.21.2","direct":false,"kind":"develop","optional":false},{"id":23058610988,"package_name":"dunamai","ecosystem":"pypi","requirements":"1.23.0","direct":false,"kind":"develop","optional":false},{"id":23058610989,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":23058610990,"package_name":"filelock","ecosystem":"pypi","requirements":"3.17.0","direct":false,"kind":"develop","optional":false},{"id":23058610991,"package_name":"frozenlist","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058610992,"package_name":"funcy","ecosystem":"pypi","requirements":"2.0","direct":false,"kind":"develop","optional":false},{"id":23058610993,"package_name":"identify","ecosystem":"pypi","requirements":"2.6.6","direct":false,"kind":"develop","optional":false},{"id":23058610994,"package_name":"idna","ecosystem":"pypi","requirements":"3.10","direct":false,"kind":"runtime","optional":false},{"id":23058610995,"package_name":"imagesize","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":"develop","optional":false},{"id":23058610996,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058610997,"package_name":"jinja2","ecosystem":"pypi","requirements":"3.1.5","direct":false,"kind":"develop","optional":false},{"id":23058610998,"package_name":"jinja2-ansible-filters","ecosystem":"pypi","requirements":"1.3.2","direct":false,"kind":"develop","optional":false},{"id":23058610999,"package_name":"libsass","ecosystem":"pypi","requirements":"0.23.0","direct":false,"kind":"runtime","optional":false},{"id":23058611000,"package_name":"markupsafe","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"develop","optional":false},{"id":23058611001,"package_name":"mergedeep","ecosystem":"pypi","requirements":"1.3.4","direct":false,"kind":"runtime","optional":false},{"id":23058611002,"package_name":"more-itertools","ecosystem":"pypi","requirements":"10.6.0","direct":false,"kind":"runtime","optional":false},{"id":23058611003,"package_name":"msgpack","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611004,"package_name":"multidict","ecosystem":"pypi","requirements":"6.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611005,"package_name":"mypy","ecosystem":"pypi","requirements":"1.15.0","direct":false,"kind":"develop","optional":false},{"id":23058611006,"package_name":"mypy-extensions","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"develop","optional":false},{"id":23058611007,"package_name":"nodeenv","ecosystem":"pypi","requirements":"1.9.1","direct":false,"kind":"develop","optional":false},{"id":23058611008,"package_name":"nova-galaxy","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":23058611056,"package_name":"nova-mvvm","ecosystem":"pypi","requirements":"0.9.0","direct":false,"kind":"runtime","optional":false},{"id":23058611057,"package_name":"nova-trame","ecosystem":"pypi","requirements":"0.14.2","direct":false,"kind":"runtime","optional":false},{"id":23058611058,"package_name":"orderly-set","ecosystem":"pypi","requirements":"5.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611059,"package_name":"packaging","ecosystem":"pypi","requirements":"24.2","direct":false,"kind":"runtime","optional":false},{"id":23058611060,"package_name":"pathspec","ecosystem":"pypi","requirements":"0.12.1","direct":false,"kind":"develop","optional":false},{"id":23058611061,"package_name":"platformdirs","ecosystem":"pypi","requirements":"4.3.6","direct":false,"kind":"develop","optional":false},{"id":23058611062,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058611063,"package_name":"plumbum","ecosystem":"pypi","requirements":"1.9.0","direct":false,"kind":"develop","optional":false},{"id":23058611064,"package_name":"pockets","ecosystem":"pypi","requirements":"0.9.1","direct":false,"kind":"develop","optional":false},{"id":23058611065,"package_name":"pre-commit","ecosystem":"pypi","requirements":"4.1.0","direct":false,"kind":"develop","optional":false},{"id":23058611066,"package_name":"prompt-toolkit","ecosystem":"pypi","requirements":"3.0.50","direct":false,"kind":"develop","optional":false},{"id":23058611067,"package_name":"propcache","ecosystem":"pypi","requirements":"0.2.1","direct":false,"kind":"runtime","optional":false},{"id":23058611068,"package_name":"pydantic","ecosystem":"pypi","requirements":"2.10.6","direct":false,"kind":"runtime","optional":false},{"id":23058611069,"package_name":"pydantic-core","ecosystem":"pypi","requirements":"2.27.2","direct":false,"kind":"runtime","optional":false},{"id":23058611070,"package_name":"pygments","ecosystem":"pypi","requirements":"2.19.1","direct":false,"kind":"develop","optional":false},{"id":23058611071,"package_name":"pytest","ecosystem":"pypi","requirements":"8.3.4","direct":false,"kind":"runtime","optional":false},{"id":23058611072,"package_name":"pytest-asyncio","ecosystem":"pypi","requirements":"0.25.3","direct":false,"kind":"runtime","optional":false},{"id":23058611073,"package_name":"pywin32","ecosystem":"pypi","requirements":"308","direct":false,"kind":"develop","optional":false},{"id":23058611074,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0.2","direct":false,"kind":"develop","optional":false},{"id":23058611075,"package_name":"questionary","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"develop","optional":false},{"id":23058611076,"package_name":"requests","ecosystem":"pypi","requirements":"2.32.3","direct":false,"kind":"runtime","optional":false},{"id":23058611077,"package_name":"requests-toolbelt","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611078,"package_name":"ruff","ecosystem":"pypi","requirements":"0.9.4","direct":false,"kind":"develop","optional":false},{"id":23058611079,"package_name":"six","ecosystem":"pypi","requirements":"1.17.0","direct":false,"kind":"develop","optional":false},{"id":23058611080,"package_name":"snowballstemmer","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"develop","optional":false},{"id":23058611081,"package_name":"sphinx","ecosystem":"pypi","requirements":"8.1.3","direct":false,"kind":"develop","optional":false},{"id":23058611082,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"develop","optional":false},{"id":23058611083,"package_name":"sphinxcontrib-applehelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"develop","optional":false},{"id":23058611084,"package_name":"sphinxcontrib-devhelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"develop","optional":false},{"id":23058611085,"package_name":"sphinxcontrib-htmlhelp","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"develop","optional":false},{"id":23058611086,"package_name":"sphinxcontrib-jquery","ecosystem":"pypi","requirements":"4.1","direct":false,"kind":"develop","optional":false},{"id":23058611087,"package_name":"sphinxcontrib-jsmath","ecosystem":"pypi","requirements":"1.0.1","direct":false,"kind":"develop","optional":false},{"id":23058611088,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"0.7","direct":false,"kind":"develop","optional":false},{"id":23058611089,"package_name":"sphinxcontrib-qthelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"develop","optional":false},{"id":23058611090,"package_name":"sphinxcontrib-serializinghtml","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"develop","optional":false},{"id":23058611091,"package_name":"tinydb","ecosystem":"pypi","requirements":"4.8.2","direct":false,"kind":"runtime","optional":false},{"id":23058611092,"package_name":"tomli","ecosystem":"pypi","requirements":"2.2.1","direct":false,"kind":"runtime","optional":false},{"id":23058611093,"package_name":"trame","ecosystem":"pypi","requirements":"3.8.0","direct":false,"kind":"runtime","optional":false},{"id":23058611094,"package_name":"trame-client","ecosystem":"pypi","requirements":"3.5.2","direct":false,"kind":"runtime","optional":false},{"id":23058611095,"package_name":"trame-server","ecosystem":"pypi","requirements":"3.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611096,"package_name":"trame-vega","ecosystem":"pypi","requirements":"2.1.1","direct":false,"kind":"runtime","optional":false},{"id":23058611097,"package_name":"trame-vuetify","ecosystem":"pypi","requirements":"2.8.1","direct":false,"kind":"runtime","optional":false},{"id":23058611098,"package_name":"tuspy","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611099,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.12.2","direct":false,"kind":"runtime","optional":false},{"id":23058611100,"package_name":"urllib3","ecosystem":"pypi","requirements":"2.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611101,"package_name":"virtualenv","ecosystem":"pypi","requirements":"20.29.1","direct":false,"kind":"develop","optional":false},{"id":23058611102,"package_name":"wcwidth","ecosystem":"pypi","requirements":"0.2.13","direct":false,"kind":"develop","optional":false},{"id":23058611103,"package_name":"wslink","ecosystem":"pypi","requirements":"2.2.2","direct":false,"kind":"runtime","optional":false},{"id":23058611104,"package_name":"yarl","ecosystem":"pypi","requirements":"1.18.3","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"code/episode_3/pyproject.toml","sha":null,"kind":"manifest","created_at":"2025-05-09T20:37:35.589Z","updated_at":"2025-05-09T20:37:35.589Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_3/pyproject.toml","dependencies":[{"id":23058611105,"package_name":"python","ecosystem":"pypi","requirements":"^3.10","direct":true,"kind":"runtime","optional":false},{"id":23058611106,"package_name":"nova-trame","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":23058611107,"package_name":"nova-galaxy","ecosystem":"pypi","requirements":"^0.7.0","direct":true,"kind":"runtime","optional":false},{"id":23058611108,"package_name":"mypy","ecosystem":"pypi","requirements":"\u003e=1.10.0","direct":true,"kind":"develop","optional":false},{"id":23058611109,"package_name":"pre-commit","ecosystem":"pypi","requirements":"\u003e=2.20.0","direct":true,"kind":"develop","optional":false},{"id":23058611110,"package_name":"coverage","ecosystem":"pypi","requirements":"\u003e=6.4.3","direct":true,"kind":"develop","optional":false},{"id":23058611111,"package_name":"pytest","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611112,"package_name":"ruff","ecosystem":"pypi","requirements":"\u003e=0.6.2","direct":true,"kind":"develop","optional":false},{"id":23058611113,"package_name":"copier","ecosystem":"pypi","requirements":"\u003e=9.3","direct":true,"kind":"develop","optional":false},{"id":23058611114,"package_name":"sphinx","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611115,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611116,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611117,"package_name":"tomli","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false}]},{"ecosystem":"pypi","filepath":"code/episode_4/poetry.lock","sha":null,"kind":"lockfile","created_at":"2025-05-09T20:37:35.644Z","updated_at":"2025-05-09T20:37:35.644Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_4/poetry.lock","dependencies":[{"id":23058611118,"package_name":"aiohappyeyeballs","ecosystem":"pypi","requirements":"2.4.4","direct":false,"kind":"runtime","optional":false},{"id":23058611119,"package_name":"aiohttp","ecosystem":"pypi","requirements":"3.11.12","direct":false,"kind":"runtime","optional":false},{"id":23058611120,"package_name":"aiosignal","ecosystem":"pypi","requirements":"1.3.2","direct":false,"kind":"runtime","optional":false},{"id":23058611121,"package_name":"alabaster","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611122,"package_name":"annotated-types","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":23058611123,"package_name":"async-timeout","ecosystem":"pypi","requirements":"5.0.1","direct":false,"kind":"runtime","optional":false},{"id":23058611124,"package_name":"attrs","ecosystem":"pypi","requirements":"25.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611125,"package_name":"babel","ecosystem":"pypi","requirements":"2.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058611126,"package_name":"bioblend","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":"runtime","optional":false},{"id":23058611127,"package_name":"certifi","ecosystem":"pypi","requirements":"2025.1.31","direct":false,"kind":"runtime","optional":false},{"id":23058611128,"package_name":"cfgv","ecosystem":"pypi","requirements":"3.4.0","direct":false,"kind":"runtime","optional":false},{"id":23058611129,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"3.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611130,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":23058611131,"package_name":"copier","ecosystem":"pypi","requirements":"9.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611132,"package_name":"coverage","ecosystem":"pypi","requirements":"7.6.10","direct":false,"kind":"runtime","optional":false},{"id":23058611133,"package_name":"deepdiff","ecosystem":"pypi","requirements":"8.2.0","direct":false,"kind":"runtime","optional":false},{"id":23058611134,"package_name":"distlib","ecosystem":"pypi","requirements":"0.3.9","direct":false,"kind":"runtime","optional":false},{"id":23058611135,"package_name":"docutils","ecosystem":"pypi","requirements":"0.21.2","direct":false,"kind":"runtime","optional":false},{"id":23058611136,"package_name":"dunamai","ecosystem":"pypi","requirements":"1.23.0","direct":false,"kind":"runtime","optional":false},{"id":23058611137,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":23058611138,"package_name":"filelock","ecosystem":"pypi","requirements":"3.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058611139,"package_name":"frozenlist","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058611140,"package_name":"funcy","ecosystem":"pypi","requirements":"2.0","direct":false,"kind":"runtime","optional":false},{"id":23058611141,"package_name":"identify","ecosystem":"pypi","requirements":"2.6.6","direct":false,"kind":"runtime","optional":false},{"id":23058611142,"package_name":"idna","ecosystem":"pypi","requirements":"3.10","direct":false,"kind":"runtime","optional":false},{"id":23058611143,"package_name":"imagesize","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611144,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611145,"package_name":"jinja2","ecosystem":"pypi","requirements":"3.1.5","direct":false,"kind":"runtime","optional":false},{"id":23058611146,"package_name":"jinja2-ansible-filters","ecosystem":"pypi","requirements":"1.3.2","direct":false,"kind":"runtime","optional":false},{"id":23058611147,"package_name":"libsass","ecosystem":"pypi","requirements":"0.23.0","direct":false,"kind":"runtime","optional":false},{"id":23058611148,"package_name":"markupsafe","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611149,"package_name":"mergedeep","ecosystem":"pypi","requirements":"1.3.4","direct":false,"kind":"runtime","optional":false},{"id":23058611150,"package_name":"more-itertools","ecosystem":"pypi","requirements":"10.6.0","direct":false,"kind":"runtime","optional":false},{"id":23058611151,"package_name":"msgpack","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611152,"package_name":"multidict","ecosystem":"pypi","requirements":"6.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611153,"package_name":"mypy","ecosystem":"pypi","requirements":"1.15.0","direct":false,"kind":"runtime","optional":false},{"id":23058611154,"package_name":"mypy-extensions","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611155,"package_name":"nodeenv","ecosystem":"pypi","requirements":"1.9.1","direct":false,"kind":"runtime","optional":false},{"id":23058611156,"package_name":"nova-galaxy","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":23058611157,"package_name":"nova-mvvm","ecosystem":"pypi","requirements":"0.9.0","direct":false,"kind":"runtime","optional":false},{"id":23058611158,"package_name":"nova-trame","ecosystem":"pypi","requirements":"0.14.2","direct":false,"kind":"runtime","optional":false},{"id":23058611159,"package_name":"orderly-set","ecosystem":"pypi","requirements":"5.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611160,"package_name":"packaging","ecosystem":"pypi","requirements":"24.2","direct":false,"kind":"runtime","optional":false},{"id":23058611161,"package_name":"pathspec","ecosystem":"pypi","requirements":"0.12.1","direct":false,"kind":"runtime","optional":false},{"id":23058611162,"package_name":"platformdirs","ecosystem":"pypi","requirements":"4.3.6","direct":false,"kind":"runtime","optional":false},{"id":23058611163,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058611164,"package_name":"plumbum","ecosystem":"pypi","requirements":"1.9.0","direct":false,"kind":"runtime","optional":false},{"id":23058611165,"package_name":"pockets","ecosystem":"pypi","requirements":"0.9.1","direct":false,"kind":"runtime","optional":false},{"id":23058611166,"package_name":"pre-commit","ecosystem":"pypi","requirements":"4.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611167,"package_name":"prompt-toolkit","ecosystem":"pypi","requirements":"3.0.50","direct":false,"kind":"runtime","optional":false},{"id":23058611168,"package_name":"propcache","ecosystem":"pypi","requirements":"0.2.1","direct":false,"kind":"runtime","optional":false},{"id":23058611169,"package_name":"pydantic","ecosystem":"pypi","requirements":"2.10.6","direct":false,"kind":"runtime","optional":false},{"id":23058611170,"package_name":"pydantic-core","ecosystem":"pypi","requirements":"2.27.2","direct":false,"kind":"runtime","optional":false},{"id":23058611171,"package_name":"pygments","ecosystem":"pypi","requirements":"2.19.1","direct":false,"kind":"runtime","optional":false},{"id":23058611172,"package_name":"pytest","ecosystem":"pypi","requirements":"8.3.4","direct":false,"kind":"runtime","optional":false},{"id":23058611173,"package_name":"pytest-asyncio","ecosystem":"pypi","requirements":"0.25.3","direct":false,"kind":"runtime","optional":false},{"id":23058611174,"package_name":"pywin32","ecosystem":"pypi","requirements":"308","direct":false,"kind":"runtime","optional":false},{"id":23058611175,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611176,"package_name":"questionary","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611177,"package_name":"requests","ecosystem":"pypi","requirements":"2.32.3","direct":false,"kind":"runtime","optional":false},{"id":23058611178,"package_name":"requests-toolbelt","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611179,"package_name":"ruff","ecosystem":"pypi","requirements":"0.9.5","direct":false,"kind":"runtime","optional":false},{"id":23058611180,"package_name":"six","ecosystem":"pypi","requirements":"1.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058611181,"package_name":"snowballstemmer","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"runtime","optional":false},{"id":23058611182,"package_name":"sphinx","ecosystem":"pypi","requirements":"8.1.3","direct":false,"kind":"runtime","optional":false},{"id":23058611183,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611184,"package_name":"sphinxcontrib-applehelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611185,"package_name":"sphinxcontrib-devhelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611186,"package_name":"sphinxcontrib-htmlhelp","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611187,"package_name":"sphinxcontrib-jquery","ecosystem":"pypi","requirements":"4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611188,"package_name":"sphinxcontrib-jsmath","ecosystem":"pypi","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":23058611189,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"0.7","direct":false,"kind":"runtime","optional":false},{"id":23058611190,"package_name":"sphinxcontrib-qthelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611191,"package_name":"sphinxcontrib-serializinghtml","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611192,"package_name":"tinydb","ecosystem":"pypi","requirements":"4.8.2","direct":false,"kind":"runtime","optional":false},{"id":23058611193,"package_name":"tomli","ecosystem":"pypi","requirements":"2.2.1","direct":false,"kind":"runtime","optional":false},{"id":23058611194,"package_name":"trame","ecosystem":"pypi","requirements":"3.8.0","direct":false,"kind":"runtime","optional":false},{"id":23058611195,"package_name":"trame-client","ecosystem":"pypi","requirements":"3.5.2","direct":false,"kind":"runtime","optional":false},{"id":23058611196,"package_name":"trame-server","ecosystem":"pypi","requirements":"3.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611197,"package_name":"trame-vega","ecosystem":"pypi","requirements":"2.1.1","direct":false,"kind":"runtime","optional":false},{"id":23058611198,"package_name":"trame-vuetify","ecosystem":"pypi","requirements":"2.8.1","direct":false,"kind":"runtime","optional":false},{"id":23058611199,"package_name":"tuspy","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611200,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.12.2","direct":false,"kind":"runtime","optional":false},{"id":23058611201,"package_name":"urllib3","ecosystem":"pypi","requirements":"2.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611202,"package_name":"virtualenv","ecosystem":"pypi","requirements":"20.29.1","direct":false,"kind":"runtime","optional":false},{"id":23058611203,"package_name":"wcwidth","ecosystem":"pypi","requirements":"0.2.13","direct":false,"kind":"runtime","optional":false},{"id":23058611204,"package_name":"wslink","ecosystem":"pypi","requirements":"2.2.2","direct":false,"kind":"runtime","optional":false},{"id":23058611205,"package_name":"yarl","ecosystem":"pypi","requirements":"1.18.3","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"code/episode_4/pyproject.toml","sha":null,"kind":"manifest","created_at":"2025-05-09T20:37:35.713Z","updated_at":"2025-05-09T20:37:35.713Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_4/pyproject.toml","dependencies":[{"id":23058611206,"package_name":"python","ecosystem":"pypi","requirements":"^3.10","direct":true,"kind":"runtime","optional":false},{"id":23058611207,"package_name":"nova-trame","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":23058611208,"package_name":"nova-galaxy","ecosystem":"pypi","requirements":"^0.7.0","direct":true,"kind":"runtime","optional":false},{"id":23058611209,"package_name":"mypy","ecosystem":"pypi","requirements":"\u003e=1.10.0","direct":true,"kind":"develop","optional":false},{"id":23058611210,"package_name":"pre-commit","ecosystem":"pypi","requirements":"\u003e=2.20.0","direct":true,"kind":"develop","optional":false},{"id":23058611211,"package_name":"coverage","ecosystem":"pypi","requirements":"\u003e=6.4.3","direct":true,"kind":"develop","optional":false},{"id":23058611212,"package_name":"pytest","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611213,"package_name":"ruff","ecosystem":"pypi","requirements":"\u003e=0.6.2","direct":true,"kind":"develop","optional":false},{"id":23058611214,"package_name":"copier","ecosystem":"pypi","requirements":"\u003e=9.3","direct":true,"kind":"develop","optional":false},{"id":23058611215,"package_name":"sphinx","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611216,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611217,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611218,"package_name":"tomli","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false}]},{"ecosystem":"pypi","filepath":"code/episode_5/poetry.lock","sha":null,"kind":"lockfile","created_at":"2025-05-09T20:37:35.768Z","updated_at":"2025-05-09T20:37:35.768Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_5/poetry.lock","dependencies":[{"id":23058611219,"package_name":"aiohappyeyeballs","ecosystem":"pypi","requirements":"2.6.1","direct":false,"kind":"runtime","optional":false},{"id":23058611220,"package_name":"aiohttp","ecosystem":"pypi","requirements":"3.11.16","direct":false,"kind":"runtime","optional":false},{"id":23058611221,"package_name":"aiosignal","ecosystem":"pypi","requirements":"1.3.2","direct":false,"kind":"runtime","optional":false},{"id":23058611222,"package_name":"alabaster","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611223,"package_name":"altair","ecosystem":"pypi","requirements":"5.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058611224,"package_name":"annotated-types","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":23058611225,"package_name":"async-timeout","ecosystem":"pypi","requirements":"5.0.1","direct":false,"kind":"runtime","optional":false},{"id":23058611226,"package_name":"attrs","ecosystem":"pypi","requirements":"25.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611227,"package_name":"babel","ecosystem":"pypi","requirements":"2.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058611228,"package_name":"bioblend","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058611229,"package_name":"certifi","ecosystem":"pypi","requirements":"2025.1.31","direct":false,"kind":"runtime","optional":false},{"id":23058611230,"package_name":"cfgv","ecosystem":"pypi","requirements":"3.4.0","direct":false,"kind":"runtime","optional":false},{"id":23058611231,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"3.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611232,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":23058611233,"package_name":"contourpy","ecosystem":"pypi","requirements":"1.3.1","direct":false,"kind":"runtime","optional":false},{"id":23058611234,"package_name":"copier","ecosystem":"pypi","requirements":"9.6.0","direct":false,"kind":"runtime","optional":false},{"id":23058611235,"package_name":"coverage","ecosystem":"pypi","requirements":"7.8.0","direct":false,"kind":"runtime","optional":false},{"id":23058611236,"package_name":"cycler","ecosystem":"pypi","requirements":"0.12.1","direct":false,"kind":"runtime","optional":false},{"id":23058611237,"package_name":"deepdiff","ecosystem":"pypi","requirements":"8.4.2","direct":false,"kind":"runtime","optional":false},{"id":23058611238,"package_name":"distlib","ecosystem":"pypi","requirements":"0.3.9","direct":false,"kind":"runtime","optional":false},{"id":23058611239,"package_name":"docutils","ecosystem":"pypi","requirements":"0.21.2","direct":false,"kind":"runtime","optional":false},{"id":23058611240,"package_name":"dunamai","ecosystem":"pypi","requirements":"1.23.1","direct":false,"kind":"runtime","optional":false},{"id":23058611241,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":23058611242,"package_name":"filelock","ecosystem":"pypi","requirements":"3.18.0","direct":false,"kind":"runtime","optional":false},{"id":23058611243,"package_name":"fonttools","ecosystem":"pypi","requirements":"4.57.0","direct":false,"kind":"runtime","optional":false},{"id":23058611244,"package_name":"frozenlist","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058611245,"package_name":"funcy","ecosystem":"pypi","requirements":"2.0","direct":false,"kind":"runtime","optional":false},{"id":23058611246,"package_name":"identify","ecosystem":"pypi","requirements":"2.6.9","direct":false,"kind":"runtime","optional":false},{"id":23058611247,"package_name":"idna","ecosystem":"pypi","requirements":"3.10","direct":false,"kind":"runtime","optional":false},{"id":23058611248,"package_name":"imagesize","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611249,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611250,"package_name":"jinja2","ecosystem":"pypi","requirements":"3.1.6","direct":false,"kind":"runtime","optional":false},{"id":23058611251,"package_name":"jinja2-ansible-filters","ecosystem":"pypi","requirements":"1.3.2","direct":false,"kind":"runtime","optional":false},{"id":23058611252,"package_name":"jsonschema","ecosystem":"pypi","requirements":"4.23.0","direct":false,"kind":"runtime","optional":false},{"id":23058611253,"package_name":"jsonschema-specifications","ecosystem":"pypi","requirements":"2024.10.1","direct":false,"kind":"runtime","optional":false},{"id":23058611254,"package_name":"kiwisolver","ecosystem":"pypi","requirements":"1.4.8","direct":false,"kind":"runtime","optional":false},{"id":23058611255,"package_name":"libsass","ecosystem":"pypi","requirements":"0.23.0","direct":false,"kind":"runtime","optional":false},{"id":23058611256,"package_name":"markupsafe","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611257,"package_name":"matplotlib","ecosystem":"pypi","requirements":"3.10.1","direct":false,"kind":"runtime","optional":false},{"id":23058611258,"package_name":"mergedeep","ecosystem":"pypi","requirements":"1.3.4","direct":false,"kind":"runtime","optional":false},{"id":23058611259,"package_name":"more-itertools","ecosystem":"pypi","requirements":"10.6.0","direct":false,"kind":"runtime","optional":false},{"id":23058611260,"package_name":"mpld3","ecosystem":"pypi","requirements":"0.5.10","direct":false,"kind":"runtime","optional":false},{"id":23058611261,"package_name":"msgpack","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611262,"package_name":"multidict","ecosystem":"pypi","requirements":"6.3.2","direct":false,"kind":"runtime","optional":false},{"id":23058611263,"package_name":"mypy","ecosystem":"pypi","requirements":"1.15.0","direct":false,"kind":"runtime","optional":false},{"id":23058611264,"package_name":"mypy-extensions","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611265,"package_name":"narwhals","ecosystem":"pypi","requirements":"1.33.0","direct":false,"kind":"runtime","optional":false},{"id":23058611266,"package_name":"nodeenv","ecosystem":"pypi","requirements":"1.9.1","direct":false,"kind":"runtime","optional":false},{"id":23058611267,"package_name":"nova-galaxy","ecosystem":"pypi","requirements":"0.7.2","direct":false,"kind":"runtime","optional":false},{"id":23058611268,"package_name":"nova-mvvm","ecosystem":"pypi","requirements":"0.10.0","direct":false,"kind":"runtime","optional":false},{"id":23058611269,"package_name":"nova-trame","ecosystem":"pypi","requirements":"0.16.0","direct":false,"kind":"runtime","optional":false},{"id":23058611270,"package_name":"numpy","ecosystem":"pypi","requirements":"2.2.4","direct":false,"kind":"runtime","optional":false},{"id":23058611271,"package_name":"orderly-set","ecosystem":"pypi","requirements":"5.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611272,"package_name":"packaging","ecosystem":"pypi","requirements":"24.2","direct":false,"kind":"runtime","optional":false},{"id":23058611273,"package_name":"pathspec","ecosystem":"pypi","requirements":"0.12.1","direct":false,"kind":"runtime","optional":false},{"id":23058611274,"package_name":"pillow","ecosystem":"pypi","requirements":"11.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611275,"package_name":"platformdirs","ecosystem":"pypi","requirements":"4.3.7","direct":false,"kind":"runtime","optional":false},{"id":23058611276,"package_name":"plotly","ecosystem":"pypi","requirements":"6.0.1","direct":false,"kind":"runtime","optional":false},{"id":23058611277,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058611278,"package_name":"plumbum","ecosystem":"pypi","requirements":"1.9.0","direct":false,"kind":"runtime","optional":false},{"id":23058611279,"package_name":"pockets","ecosystem":"pypi","requirements":"0.9.1","direct":false,"kind":"runtime","optional":false},{"id":23058611280,"package_name":"pre-commit","ecosystem":"pypi","requirements":"4.2.0","direct":false,"kind":"runtime","optional":false},{"id":23058611281,"package_name":"prompt-toolkit","ecosystem":"pypi","requirements":"3.0.50","direct":false,"kind":"runtime","optional":false},{"id":23058611282,"package_name":"propcache","ecosystem":"pypi","requirements":"0.3.1","direct":false,"kind":"runtime","optional":false},{"id":23058611283,"package_name":"pydantic","ecosystem":"pypi","requirements":"2.11.2","direct":false,"kind":"runtime","optional":false},{"id":23058611284,"package_name":"pydantic-core","ecosystem":"pypi","requirements":"2.33.1","direct":false,"kind":"runtime","optional":false},{"id":23058611285,"package_name":"pygments","ecosystem":"pypi","requirements":"2.19.1","direct":false,"kind":"runtime","optional":false},{"id":23058611286,"package_name":"pyparsing","ecosystem":"pypi","requirements":"3.2.3","direct":false,"kind":"runtime","optional":false},{"id":23058611287,"package_name":"pytest","ecosystem":"pypi","requirements":"8.3.5","direct":false,"kind":"runtime","optional":false},{"id":23058611288,"package_name":"pytest-asyncio","ecosystem":"pypi","requirements":"0.25.3","direct":false,"kind":"runtime","optional":false},{"id":23058611289,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"2.9.0.post0","direct":false,"kind":"runtime","optional":false},{"id":23058611290,"package_name":"pywin32","ecosystem":"pypi","requirements":"310","direct":false,"kind":"runtime","optional":false},{"id":23058611291,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611292,"package_name":"questionary","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611293,"package_name":"referencing","ecosystem":"pypi","requirements":"0.36.2","direct":false,"kind":"runtime","optional":false},{"id":23058611294,"package_name":"requests","ecosystem":"pypi","requirements":"2.32.3","direct":false,"kind":"runtime","optional":false},{"id":23058611295,"package_name":"requests-toolbelt","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611296,"package_name":"rpds-py","ecosystem":"pypi","requirements":"0.24.0","direct":false,"kind":"runtime","optional":false},{"id":23058611297,"package_name":"ruff","ecosystem":"pypi","requirements":"0.11.3","direct":false,"kind":"runtime","optional":false},{"id":23058611298,"package_name":"six","ecosystem":"pypi","requirements":"1.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058611299,"package_name":"snowballstemmer","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"runtime","optional":false},{"id":23058611300,"package_name":"sphinx","ecosystem":"pypi","requirements":"8.1.3","direct":false,"kind":"runtime","optional":false},{"id":23058611301,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611302,"package_name":"sphinxcontrib-applehelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611303,"package_name":"sphinxcontrib-devhelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611304,"package_name":"sphinxcontrib-htmlhelp","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611305,"package_name":"sphinxcontrib-jquery","ecosystem":"pypi","requirements":"4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611306,"package_name":"sphinxcontrib-jsmath","ecosystem":"pypi","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":23058611307,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"0.7","direct":false,"kind":"runtime","optional":false},{"id":23058611308,"package_name":"sphinxcontrib-qthelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611309,"package_name":"sphinxcontrib-serializinghtml","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611310,"package_name":"tinydb","ecosystem":"pypi","requirements":"4.8.2","direct":false,"kind":"runtime","optional":false},{"id":23058611311,"package_name":"tomli","ecosystem":"pypi","requirements":"2.2.1","direct":false,"kind":"runtime","optional":false},{"id":23058611312,"package_name":"tornado","ecosystem":"pypi","requirements":"6.4.2","direct":false,"kind":"runtime","optional":false},{"id":23058611313,"package_name":"trame","ecosystem":"pypi","requirements":"3.8.1","direct":false,"kind":"runtime","optional":false},{"id":23058611314,"package_name":"trame-client","ecosystem":"pypi","requirements":"3.6.1","direct":false,"kind":"runtime","optional":false},{"id":23058611315,"package_name":"trame-matplotlib","ecosystem":"pypi","requirements":"2.0.3","direct":false,"kind":"runtime","optional":false},{"id":23058611316,"package_name":"trame-plotly","ecosystem":"pypi","requirements":"3.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611317,"package_name":"trame-server","ecosystem":"pypi","requirements":"3.4.0","direct":false,"kind":"runtime","optional":false},{"id":23058611318,"package_name":"trame-vega","ecosystem":"pypi","requirements":"2.1.1","direct":false,"kind":"runtime","optional":false},{"id":23058611319,"package_name":"trame-vuetify","ecosystem":"pypi","requirements":"2.9.0","direct":false,"kind":"runtime","optional":false},{"id":23058611320,"package_name":"tuspy","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611321,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.13.1","direct":false,"kind":"runtime","optional":false},{"id":23058611322,"package_name":"typing-inspection","ecosystem":"pypi","requirements":"0.4.0","direct":false,"kind":"runtime","optional":false},{"id":23058611323,"package_name":"urllib3","ecosystem":"pypi","requirements":"2.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611324,"package_name":"virtualenv","ecosystem":"pypi","requirements":"20.30.0","direct":false,"kind":"runtime","optional":false},{"id":23058611325,"package_name":"wcwidth","ecosystem":"pypi","requirements":"0.2.13","direct":false,"kind":"runtime","optional":false},{"id":23058611326,"package_name":"wslink","ecosystem":"pypi","requirements":"2.3.3","direct":false,"kind":"runtime","optional":false},{"id":23058611327,"package_name":"yarl","ecosystem":"pypi","requirements":"1.18.3","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"code/episode_5/pyproject.toml","sha":null,"kind":"manifest","created_at":"2025-05-09T20:37:35.843Z","updated_at":"2025-05-09T20:37:35.843Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_5/pyproject.toml","dependencies":[{"id":23058611328,"package_name":"python","ecosystem":"pypi","requirements":"^3.10","direct":true,"kind":"runtime","optional":false},{"id":23058611329,"package_name":"nova-trame","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":23058611330,"package_name":"nova-galaxy","ecosystem":"pypi","requirements":"^0.7.0","direct":true,"kind":"runtime","optional":false},{"id":23058611331,"package_name":"mypy","ecosystem":"pypi","requirements":"\u003e=1.10.0","direct":true,"kind":"develop","optional":false},{"id":23058611332,"package_name":"pre-commit","ecosystem":"pypi","requirements":"\u003e=2.20.0","direct":true,"kind":"develop","optional":false},{"id":23058611333,"package_name":"coverage","ecosystem":"pypi","requirements":"\u003e=6.4.3","direct":true,"kind":"develop","optional":false},{"id":23058611334,"package_name":"pytest","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611335,"package_name":"ruff","ecosystem":"pypi","requirements":"\u003e=0.6.2","direct":true,"kind":"develop","optional":false},{"id":23058611336,"package_name":"copier","ecosystem":"pypi","requirements":"\u003e=9.3","direct":true,"kind":"develop","optional":false},{"id":23058611337,"package_name":"sphinx","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611338,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611339,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611340,"package_name":"tomli","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false}]},{"ecosystem":"pypi","filepath":"code/episode_6/advanced_pydantic/poetry.lock","sha":null,"kind":"lockfile","created_at":"2025-05-09T20:37:35.898Z","updated_at":"2025-05-09T20:37:35.898Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_6/advanced_pydantic/poetry.lock","dependencies":[{"id":23058611342,"package_name":"alabaster","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611343,"package_name":"annotated-types","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":23058611344,"package_name":"babel","ecosystem":"pypi","requirements":"2.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058611345,"package_name":"certifi","ecosystem":"pypi","requirements":"2025.1.31","direct":false,"kind":"runtime","optional":false},{"id":23058611346,"package_name":"cfgv","ecosystem":"pypi","requirements":"3.4.0","direct":false,"kind":"runtime","optional":false},{"id":23058611347,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"3.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611348,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":23058611349,"package_name":"copier","ecosystem":"pypi","requirements":"9.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611350,"package_name":"coverage","ecosystem":"pypi","requirements":"7.6.11","direct":false,"kind":"runtime","optional":false},{"id":23058611351,"package_name":"distlib","ecosystem":"pypi","requirements":"0.3.9","direct":false,"kind":"runtime","optional":false},{"id":23058611352,"package_name":"docutils","ecosystem":"pypi","requirements":"0.21.2","direct":false,"kind":"runtime","optional":false},{"id":23058611353,"package_name":"dunamai","ecosystem":"pypi","requirements":"1.23.0","direct":false,"kind":"runtime","optional":false},{"id":23058611354,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":23058611355,"package_name":"filelock","ecosystem":"pypi","requirements":"3.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058611356,"package_name":"funcy","ecosystem":"pypi","requirements":"2.0","direct":false,"kind":"runtime","optional":false},{"id":23058611357,"package_name":"identify","ecosystem":"pypi","requirements":"2.6.7","direct":false,"kind":"runtime","optional":false},{"id":23058611358,"package_name":"idna","ecosystem":"pypi","requirements":"3.10","direct":false,"kind":"runtime","optional":false},{"id":23058611359,"package_name":"imagesize","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611360,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611361,"package_name":"jinja2","ecosystem":"pypi","requirements":"3.1.5","direct":false,"kind":"runtime","optional":false},{"id":23058611362,"package_name":"jinja2-ansible-filters","ecosystem":"pypi","requirements":"1.3.2","direct":false,"kind":"runtime","optional":false},{"id":23058611363,"package_name":"markupsafe","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611364,"package_name":"mypy","ecosystem":"pypi","requirements":"1.15.0","direct":false,"kind":"runtime","optional":false},{"id":23058611365,"package_name":"mypy-extensions","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611366,"package_name":"nodeenv","ecosystem":"pypi","requirements":"1.9.1","direct":false,"kind":"runtime","optional":false},{"id":23058611367,"package_name":"packaging","ecosystem":"pypi","requirements":"24.2","direct":false,"kind":"runtime","optional":false},{"id":23058611368,"package_name":"pathspec","ecosystem":"pypi","requirements":"0.12.1","direct":false,"kind":"runtime","optional":false},{"id":23058611369,"package_name":"platformdirs","ecosystem":"pypi","requirements":"4.3.6","direct":false,"kind":"runtime","optional":false},{"id":23058611370,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058611371,"package_name":"plumbum","ecosystem":"pypi","requirements":"1.9.0","direct":false,"kind":"runtime","optional":false},{"id":23058611372,"package_name":"pockets","ecosystem":"pypi","requirements":"0.9.1","direct":false,"kind":"runtime","optional":false},{"id":23058611373,"package_name":"pre-commit","ecosystem":"pypi","requirements":"4.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611374,"package_name":"prompt-toolkit","ecosystem":"pypi","requirements":"3.0.50","direct":false,"kind":"runtime","optional":false},{"id":23058611375,"package_name":"pydantic","ecosystem":"pypi","requirements":"2.10.6","direct":false,"kind":"runtime","optional":false},{"id":23058611376,"package_name":"pydantic-core","ecosystem":"pypi","requirements":"2.27.2","direct":false,"kind":"runtime","optional":false},{"id":23058611377,"package_name":"pygments","ecosystem":"pypi","requirements":"2.19.1","direct":false,"kind":"runtime","optional":false},{"id":23058611378,"package_name":"pytest","ecosystem":"pypi","requirements":"8.3.4","direct":false,"kind":"runtime","optional":false},{"id":23058611379,"package_name":"pywin32","ecosystem":"pypi","requirements":"308","direct":false,"kind":"runtime","optional":false},{"id":23058611380,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611381,"package_name":"questionary","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611382,"package_name":"requests","ecosystem":"pypi","requirements":"2.32.3","direct":false,"kind":"runtime","optional":false},{"id":23058611383,"package_name":"ruff","ecosystem":"pypi","requirements":"0.9.6","direct":false,"kind":"runtime","optional":false},{"id":23058611384,"package_name":"six","ecosystem":"pypi","requirements":"1.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058611385,"package_name":"snowballstemmer","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"runtime","optional":false},{"id":23058611386,"package_name":"sphinx","ecosystem":"pypi","requirements":"8.1.3","direct":false,"kind":"runtime","optional":false},{"id":23058611387,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611388,"package_name":"sphinxcontrib-applehelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611389,"package_name":"sphinxcontrib-devhelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611390,"package_name":"sphinxcontrib-htmlhelp","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611391,"package_name":"sphinxcontrib-jquery","ecosystem":"pypi","requirements":"4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611392,"package_name":"sphinxcontrib-jsmath","ecosystem":"pypi","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":23058611393,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"0.7","direct":false,"kind":"runtime","optional":false},{"id":23058611394,"package_name":"sphinxcontrib-qthelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611395,"package_name":"sphinxcontrib-serializinghtml","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611396,"package_name":"tomli","ecosystem":"pypi","requirements":"2.2.1","direct":false,"kind":"runtime","optional":false},{"id":23058611397,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.12.2","direct":false,"kind":"runtime","optional":false},{"id":23058611398,"package_name":"urllib3","ecosystem":"pypi","requirements":"2.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611399,"package_name":"virtualenv","ecosystem":"pypi","requirements":"20.29.1","direct":false,"kind":"runtime","optional":false},{"id":23058611400,"package_name":"wcwidth","ecosystem":"pypi","requirements":"0.2.13","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"code/episode_6/advanced_pydantic/pyproject.toml","sha":null,"kind":"manifest","created_at":"2025-05-09T20:37:35.971Z","updated_at":"2025-05-09T20:37:35.971Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_6/advanced_pydantic/pyproject.toml","dependencies":[{"id":23058611401,"package_name":"python","ecosystem":"pypi","requirements":"^3.10","direct":true,"kind":"runtime","optional":false},{"id":23058611402,"package_name":"mypy","ecosystem":"pypi","requirements":"\u003e=1.10.0","direct":true,"kind":"develop","optional":false},{"id":23058611403,"package_name":"pre-commit","ecosystem":"pypi","requirements":"\u003e=2.20.0","direct":true,"kind":"develop","optional":false},{"id":23058611404,"package_name":"coverage","ecosystem":"pypi","requirements":"\u003e=6.4.3","direct":true,"kind":"develop","optional":false},{"id":23058611405,"package_name":"pytest","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611406,"package_name":"ruff","ecosystem":"pypi","requirements":"\u003e=0.6.2","direct":true,"kind":"develop","optional":false},{"id":23058611407,"package_name":"copier","ecosystem":"pypi","requirements":"\u003e=9.3","direct":true,"kind":"develop","optional":false},{"id":23058611408,"package_name":"sphinx","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611409,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611410,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611411,"package_name":"tomli","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false}]},{"ecosystem":"pypi","filepath":"code/episode_6/pydantic_mvvm/poetry.lock","sha":null,"kind":"lockfile","created_at":"2025-05-09T20:37:36.027Z","updated_at":"2025-05-09T20:37:36.027Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_6/pydantic_mvvm/poetry.lock","dependencies":[{"id":23058611413,"package_name":"aiohappyeyeballs","ecosystem":"pypi","requirements":"2.4.6","direct":false,"kind":"runtime","optional":false},{"id":23058611414,"package_name":"aiohttp","ecosystem":"pypi","requirements":"3.11.12","direct":false,"kind":"runtime","optional":false},{"id":23058611415,"package_name":"aiosignal","ecosystem":"pypi","requirements":"1.3.2","direct":false,"kind":"runtime","optional":false},{"id":23058611416,"package_name":"alabaster","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611417,"package_name":"annotated-types","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":23058611418,"package_name":"async-timeout","ecosystem":"pypi","requirements":"5.0.1","direct":false,"kind":"runtime","optional":false},{"id":23058611419,"package_name":"attrs","ecosystem":"pypi","requirements":"25.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611420,"package_name":"babel","ecosystem":"pypi","requirements":"2.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058611421,"package_name":"certifi","ecosystem":"pypi","requirements":"2025.1.31","direct":false,"kind":"runtime","optional":false},{"id":23058611422,"package_name":"cfgv","ecosystem":"pypi","requirements":"3.4.0","direct":false,"kind":"runtime","optional":false},{"id":23058611423,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"3.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611424,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":23058611425,"package_name":"copier","ecosystem":"pypi","requirements":"9.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611426,"package_name":"coverage","ecosystem":"pypi","requirements":"7.6.11","direct":false,"kind":"runtime","optional":false},{"id":23058611427,"package_name":"deepdiff","ecosystem":"pypi","requirements":"8.2.0","direct":false,"kind":"runtime","optional":false},{"id":23058611428,"package_name":"distlib","ecosystem":"pypi","requirements":"0.3.9","direct":false,"kind":"runtime","optional":false},{"id":23058611429,"package_name":"docutils","ecosystem":"pypi","requirements":"0.21.2","direct":false,"kind":"runtime","optional":false},{"id":23058611430,"package_name":"dunamai","ecosystem":"pypi","requirements":"1.23.0","direct":false,"kind":"runtime","optional":false},{"id":23058611431,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":23058611432,"package_name":"filelock","ecosystem":"pypi","requirements":"3.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058611433,"package_name":"frozenlist","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058611434,"package_name":"funcy","ecosystem":"pypi","requirements":"2.0","direct":false,"kind":"runtime","optional":false},{"id":23058611435,"package_name":"identify","ecosystem":"pypi","requirements":"2.6.7","direct":false,"kind":"runtime","optional":false},{"id":23058611436,"package_name":"idna","ecosystem":"pypi","requirements":"3.10","direct":false,"kind":"runtime","optional":false},{"id":23058611437,"package_name":"imagesize","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611438,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611439,"package_name":"jinja2","ecosystem":"pypi","requirements":"3.1.5","direct":false,"kind":"runtime","optional":false},{"id":23058611440,"package_name":"jinja2-ansible-filters","ecosystem":"pypi","requirements":"1.3.2","direct":false,"kind":"runtime","optional":false},{"id":23058611441,"package_name":"libsass","ecosystem":"pypi","requirements":"0.23.0","direct":false,"kind":"runtime","optional":false},{"id":23058611442,"package_name":"markupsafe","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611443,"package_name":"mergedeep","ecosystem":"pypi","requirements":"1.3.4","direct":false,"kind":"runtime","optional":false},{"id":23058611444,"package_name":"more-itertools","ecosystem":"pypi","requirements":"10.6.0","direct":false,"kind":"runtime","optional":false},{"id":23058611445,"package_name":"msgpack","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611446,"package_name":"multidict","ecosystem":"pypi","requirements":"6.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611447,"package_name":"mypy","ecosystem":"pypi","requirements":"1.15.0","direct":false,"kind":"runtime","optional":false},{"id":23058611448,"package_name":"mypy-extensions","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611449,"package_name":"nodeenv","ecosystem":"pypi","requirements":"1.9.1","direct":false,"kind":"runtime","optional":false},{"id":23058611450,"package_name":"nova-mvvm","ecosystem":"pypi","requirements":"0.9.0","direct":false,"kind":"runtime","optional":false},{"id":23058611451,"package_name":"nova-trame","ecosystem":"pypi","requirements":"0.14.2","direct":false,"kind":"runtime","optional":false},{"id":23058611452,"package_name":"orderly-set","ecosystem":"pypi","requirements":"5.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611453,"package_name":"packaging","ecosystem":"pypi","requirements":"24.2","direct":false,"kind":"runtime","optional":false},{"id":23058611454,"package_name":"pathspec","ecosystem":"pypi","requirements":"0.12.1","direct":false,"kind":"runtime","optional":false},{"id":23058611455,"package_name":"platformdirs","ecosystem":"pypi","requirements":"4.3.6","direct":false,"kind":"runtime","optional":false},{"id":23058611456,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058611457,"package_name":"plumbum","ecosystem":"pypi","requirements":"1.9.0","direct":false,"kind":"runtime","optional":false},{"id":23058611458,"package_name":"pockets","ecosystem":"pypi","requirements":"0.9.1","direct":false,"kind":"runtime","optional":false},{"id":23058611459,"package_name":"pre-commit","ecosystem":"pypi","requirements":"4.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611460,"package_name":"prompt-toolkit","ecosystem":"pypi","requirements":"3.0.50","direct":false,"kind":"runtime","optional":false},{"id":23058611461,"package_name":"propcache","ecosystem":"pypi","requirements":"0.2.1","direct":false,"kind":"runtime","optional":false},{"id":23058611462,"package_name":"pydantic","ecosystem":"pypi","requirements":"2.10.6","direct":false,"kind":"runtime","optional":false},{"id":23058611463,"package_name":"pydantic-core","ecosystem":"pypi","requirements":"2.27.2","direct":false,"kind":"runtime","optional":false},{"id":23058611464,"package_name":"pygments","ecosystem":"pypi","requirements":"2.19.1","direct":false,"kind":"runtime","optional":false},{"id":23058611465,"package_name":"pytest","ecosystem":"pypi","requirements":"8.3.4","direct":false,"kind":"runtime","optional":false},{"id":23058611466,"package_name":"pytest-asyncio","ecosystem":"pypi","requirements":"0.25.3","direct":false,"kind":"runtime","optional":false},{"id":23058611467,"package_name":"pywin32","ecosystem":"pypi","requirements":"308","direct":false,"kind":"runtime","optional":false},{"id":23058611468,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611469,"package_name":"questionary","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611470,"package_name":"requests","ecosystem":"pypi","requirements":"2.32.3","direct":false,"kind":"runtime","optional":false},{"id":23058611471,"package_name":"ruff","ecosystem":"pypi","requirements":"0.9.6","direct":false,"kind":"runtime","optional":false},{"id":23058611472,"package_name":"six","ecosystem":"pypi","requirements":"1.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058611473,"package_name":"snowballstemmer","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"runtime","optional":false},{"id":23058611474,"package_name":"sphinx","ecosystem":"pypi","requirements":"8.1.3","direct":false,"kind":"runtime","optional":false},{"id":23058611475,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611476,"package_name":"sphinxcontrib-applehelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611477,"package_name":"sphinxcontrib-devhelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611478,"package_name":"sphinxcontrib-htmlhelp","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611479,"package_name":"sphinxcontrib-jquery","ecosystem":"pypi","requirements":"4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611480,"package_name":"sphinxcontrib-jsmath","ecosystem":"pypi","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":23058611481,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"0.7","direct":false,"kind":"runtime","optional":false},{"id":23058611482,"package_name":"sphinxcontrib-qthelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611483,"package_name":"sphinxcontrib-serializinghtml","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611484,"package_name":"tomli","ecosystem":"pypi","requirements":"2.2.1","direct":false,"kind":"runtime","optional":false},{"id":23058611485,"package_name":"trame","ecosystem":"pypi","requirements":"3.8.0","direct":false,"kind":"runtime","optional":false},{"id":23058611486,"package_name":"trame-client","ecosystem":"pypi","requirements":"3.5.2","direct":false,"kind":"runtime","optional":false},{"id":23058611487,"package_name":"trame-server","ecosystem":"pypi","requirements":"3.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611488,"package_name":"trame-vega","ecosystem":"pypi","requirements":"2.1.1","direct":false,"kind":"runtime","optional":false},{"id":23058611489,"package_name":"trame-vuetify","ecosystem":"pypi","requirements":"2.8.1","direct":false,"kind":"runtime","optional":false},{"id":23058611490,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.12.2","direct":false,"kind":"runtime","optional":false},{"id":23058611491,"package_name":"urllib3","ecosystem":"pypi","requirements":"2.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611492,"package_name":"virtualenv","ecosystem":"pypi","requirements":"20.29.1","direct":false,"kind":"runtime","optional":false},{"id":23058611493,"package_name":"wcwidth","ecosystem":"pypi","requirements":"0.2.13","direct":false,"kind":"runtime","optional":false},{"id":23058611494,"package_name":"wslink","ecosystem":"pypi","requirements":"2.2.2","direct":false,"kind":"runtime","optional":false},{"id":23058611495,"package_name":"yarl","ecosystem":"pypi","requirements":"1.18.3","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"code/episode_6/pydantic_mvvm/pyproject.toml","sha":null,"kind":"manifest","created_at":"2025-05-09T20:37:36.094Z","updated_at":"2025-05-09T20:37:36.094Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_6/pydantic_mvvm/pyproject.toml","dependencies":[{"id":23058611498,"package_name":"python","ecosystem":"pypi","requirements":"^3.10","direct":true,"kind":"runtime","optional":false},{"id":23058611499,"package_name":"nova-trame","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":23058611500,"package_name":"mypy","ecosystem":"pypi","requirements":"\u003e=1.10.0","direct":true,"kind":"develop","optional":false},{"id":23058611501,"package_name":"pre-commit","ecosystem":"pypi","requirements":"\u003e=2.20.0","direct":true,"kind":"develop","optional":false},{"id":23058611502,"package_name":"coverage","ecosystem":"pypi","requirements":"\u003e=6.4.3","direct":true,"kind":"develop","optional":false},{"id":23058611503,"package_name":"pytest","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611504,"package_name":"ruff","ecosystem":"pypi","requirements":"\u003e=0.6.2","direct":true,"kind":"develop","optional":false},{"id":23058611505,"package_name":"copier","ecosystem":"pypi","requirements":"\u003e=9.3","direct":true,"kind":"develop","optional":false},{"id":23058611506,"package_name":"sphinx","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611507,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611508,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611509,"package_name":"tomli","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false}]},{"ecosystem":"pypi","filepath":"code/episode_7/poetry.lock","sha":null,"kind":"lockfile","created_at":"2025-05-09T20:37:36.149Z","updated_at":"2025-05-09T20:37:36.149Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_7/poetry.lock","dependencies":[{"id":23058611510,"package_name":"aiohappyeyeballs","ecosystem":"pypi","requirements":"2.6.1","direct":false,"kind":"runtime","optional":false},{"id":23058611511,"package_name":"aiohttp","ecosystem":"pypi","requirements":"3.11.16","direct":false,"kind":"runtime","optional":false},{"id":23058611512,"package_name":"aiosignal","ecosystem":"pypi","requirements":"1.3.2","direct":false,"kind":"runtime","optional":false},{"id":23058611513,"package_name":"alabaster","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611514,"package_name":"altair","ecosystem":"pypi","requirements":"5.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058611515,"package_name":"annotated-types","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":23058611516,"package_name":"async-timeout","ecosystem":"pypi","requirements":"5.0.1","direct":false,"kind":"runtime","optional":false},{"id":23058611517,"package_name":"attrs","ecosystem":"pypi","requirements":"25.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611518,"package_name":"babel","ecosystem":"pypi","requirements":"2.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058611519,"package_name":"bioblend","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058611520,"package_name":"certifi","ecosystem":"pypi","requirements":"2025.1.31","direct":false,"kind":"runtime","optional":false},{"id":23058611521,"package_name":"cfgv","ecosystem":"pypi","requirements":"3.4.0","direct":false,"kind":"runtime","optional":false},{"id":23058611522,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"3.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611523,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":23058611524,"package_name":"contourpy","ecosystem":"pypi","requirements":"1.3.1","direct":false,"kind":"runtime","optional":false},{"id":23058611525,"package_name":"copier","ecosystem":"pypi","requirements":"9.6.0","direct":false,"kind":"runtime","optional":false},{"id":23058611526,"package_name":"coverage","ecosystem":"pypi","requirements":"7.8.0","direct":false,"kind":"runtime","optional":false},{"id":23058611527,"package_name":"cycler","ecosystem":"pypi","requirements":"0.12.1","direct":false,"kind":"runtime","optional":false},{"id":23058611528,"package_name":"deepdiff","ecosystem":"pypi","requirements":"8.4.2","direct":false,"kind":"runtime","optional":false},{"id":23058611529,"package_name":"distlib","ecosystem":"pypi","requirements":"0.3.9","direct":false,"kind":"runtime","optional":false},{"id":23058611530,"package_name":"docutils","ecosystem":"pypi","requirements":"0.21.2","direct":false,"kind":"runtime","optional":false},{"id":23058611531,"package_name":"dunamai","ecosystem":"pypi","requirements":"1.23.1","direct":false,"kind":"runtime","optional":false},{"id":23058611532,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":23058611533,"package_name":"filelock","ecosystem":"pypi","requirements":"3.18.0","direct":false,"kind":"runtime","optional":false},{"id":23058611534,"package_name":"fonttools","ecosystem":"pypi","requirements":"4.57.0","direct":false,"kind":"runtime","optional":false},{"id":23058611535,"package_name":"frozenlist","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058611536,"package_name":"funcy","ecosystem":"pypi","requirements":"2.0","direct":false,"kind":"runtime","optional":false},{"id":23058611537,"package_name":"identify","ecosystem":"pypi","requirements":"2.6.9","direct":false,"kind":"runtime","optional":false},{"id":23058611538,"package_name":"idna","ecosystem":"pypi","requirements":"3.10","direct":false,"kind":"runtime","optional":false},{"id":23058611539,"package_name":"imagesize","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611540,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611541,"package_name":"jinja2","ecosystem":"pypi","requirements":"3.1.6","direct":false,"kind":"runtime","optional":false},{"id":23058611542,"package_name":"jinja2-ansible-filters","ecosystem":"pypi","requirements":"1.3.2","direct":false,"kind":"runtime","optional":false},{"id":23058611543,"package_name":"jsonschema","ecosystem":"pypi","requirements":"4.23.0","direct":false,"kind":"runtime","optional":false},{"id":23058611544,"package_name":"jsonschema-specifications","ecosystem":"pypi","requirements":"2024.10.1","direct":false,"kind":"runtime","optional":false},{"id":23058611545,"package_name":"kiwisolver","ecosystem":"pypi","requirements":"1.4.8","direct":false,"kind":"runtime","optional":false},{"id":23058611546,"package_name":"libsass","ecosystem":"pypi","requirements":"0.23.0","direct":false,"kind":"runtime","optional":false},{"id":23058611547,"package_name":"markupsafe","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611548,"package_name":"matplotlib","ecosystem":"pypi","requirements":"3.10.1","direct":false,"kind":"runtime","optional":false},{"id":23058611549,"package_name":"mergedeep","ecosystem":"pypi","requirements":"1.3.4","direct":false,"kind":"runtime","optional":false},{"id":23058611550,"package_name":"more-itertools","ecosystem":"pypi","requirements":"10.6.0","direct":false,"kind":"runtime","optional":false},{"id":23058611551,"package_name":"mpld3","ecosystem":"pypi","requirements":"0.5.10","direct":false,"kind":"runtime","optional":false},{"id":23058611552,"package_name":"msgpack","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611553,"package_name":"multidict","ecosystem":"pypi","requirements":"6.3.2","direct":false,"kind":"runtime","optional":false},{"id":23058611554,"package_name":"mypy","ecosystem":"pypi","requirements":"1.15.0","direct":false,"kind":"runtime","optional":false},{"id":23058611555,"package_name":"mypy-extensions","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611556,"package_name":"narwhals","ecosystem":"pypi","requirements":"1.33.0","direct":false,"kind":"runtime","optional":false},{"id":23058611557,"package_name":"nodeenv","ecosystem":"pypi","requirements":"1.9.1","direct":false,"kind":"runtime","optional":false},{"id":23058611558,"package_name":"nova-galaxy","ecosystem":"pypi","requirements":"0.7.2","direct":false,"kind":"runtime","optional":false},{"id":23058611559,"package_name":"nova-mvvm","ecosystem":"pypi","requirements":"0.9.0","direct":false,"kind":"runtime","optional":false},{"id":23058611560,"package_name":"nova-trame","ecosystem":"pypi","requirements":"0.16.0","direct":false,"kind":"runtime","optional":false},{"id":23058611561,"package_name":"numpy","ecosystem":"pypi","requirements":"2.2.4","direct":false,"kind":"runtime","optional":false},{"id":23058611562,"package_name":"orderly-set","ecosystem":"pypi","requirements":"5.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611563,"package_name":"packaging","ecosystem":"pypi","requirements":"24.2","direct":false,"kind":"runtime","optional":false},{"id":23058611564,"package_name":"pandas","ecosystem":"pypi","requirements":"2.2.3","direct":false,"kind":"runtime","optional":false},{"id":23058611565,"package_name":"pathspec","ecosystem":"pypi","requirements":"0.12.1","direct":false,"kind":"runtime","optional":false},{"id":23058611566,"package_name":"pillow","ecosystem":"pypi","requirements":"11.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611567,"package_name":"platformdirs","ecosystem":"pypi","requirements":"4.3.7","direct":false,"kind":"runtime","optional":false},{"id":23058611568,"package_name":"plotly","ecosystem":"pypi","requirements":"5.24.1","direct":false,"kind":"runtime","optional":false},{"id":23058611569,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":23058611570,"package_name":"plumbum","ecosystem":"pypi","requirements":"1.9.0","direct":false,"kind":"runtime","optional":false},{"id":23058611571,"package_name":"pockets","ecosystem":"pypi","requirements":"0.9.1","direct":false,"kind":"runtime","optional":false},{"id":23058611572,"package_name":"pooch","ecosystem":"pypi","requirements":"1.8.2","direct":false,"kind":"runtime","optional":false},{"id":23058611573,"package_name":"pre-commit","ecosystem":"pypi","requirements":"4.2.0","direct":false,"kind":"runtime","optional":false},{"id":23058611574,"package_name":"prompt-toolkit","ecosystem":"pypi","requirements":"3.0.50","direct":false,"kind":"runtime","optional":false},{"id":23058611575,"package_name":"propcache","ecosystem":"pypi","requirements":"0.3.1","direct":false,"kind":"runtime","optional":false},{"id":23058611576,"package_name":"pydantic","ecosystem":"pypi","requirements":"2.11.2","direct":false,"kind":"runtime","optional":false},{"id":23058611577,"package_name":"pydantic-core","ecosystem":"pypi","requirements":"2.33.1","direct":false,"kind":"runtime","optional":false},{"id":23058611578,"package_name":"pygments","ecosystem":"pypi","requirements":"2.19.1","direct":false,"kind":"runtime","optional":false},{"id":23058611579,"package_name":"pyparsing","ecosystem":"pypi","requirements":"3.2.3","direct":false,"kind":"runtime","optional":false},{"id":23058611580,"package_name":"pytest","ecosystem":"pypi","requirements":"8.3.5","direct":false,"kind":"runtime","optional":false},{"id":23058611581,"package_name":"pytest-asyncio","ecosystem":"pypi","requirements":"0.25.3","direct":false,"kind":"runtime","optional":false},{"id":23058611582,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"2.9.0.post0","direct":false,"kind":"runtime","optional":false},{"id":23058611583,"package_name":"pytz","ecosystem":"pypi","requirements":"2025.2","direct":false,"kind":"runtime","optional":false},{"id":23058611584,"package_name":"pyvista","ecosystem":"pypi","requirements":"0.44.2","direct":false,"kind":"runtime","optional":false},{"id":23058611585,"package_name":"pywin32","ecosystem":"pypi","requirements":"310","direct":false,"kind":"runtime","optional":false},{"id":23058611586,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611587,"package_name":"questionary","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611588,"package_name":"referencing","ecosystem":"pypi","requirements":"0.36.2","direct":false,"kind":"runtime","optional":false},{"id":23058611589,"package_name":"requests","ecosystem":"pypi","requirements":"2.32.3","direct":false,"kind":"runtime","optional":false},{"id":23058611590,"package_name":"requests-toolbelt","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611591,"package_name":"rpds-py","ecosystem":"pypi","requirements":"0.24.0","direct":false,"kind":"runtime","optional":false},{"id":23058611592,"package_name":"ruff","ecosystem":"pypi","requirements":"0.11.3","direct":false,"kind":"runtime","optional":false},{"id":23058611593,"package_name":"scooby","ecosystem":"pypi","requirements":"0.10.0","direct":false,"kind":"runtime","optional":false},{"id":23058611594,"package_name":"six","ecosystem":"pypi","requirements":"1.17.0","direct":false,"kind":"runtime","optional":false},{"id":23058611595,"package_name":"snowballstemmer","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"runtime","optional":false},{"id":23058611596,"package_name":"sphinx","ecosystem":"pypi","requirements":"8.1.3","direct":false,"kind":"runtime","optional":false},{"id":23058611597,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611598,"package_name":"sphinxcontrib-applehelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611599,"package_name":"sphinxcontrib-devhelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611600,"package_name":"sphinxcontrib-htmlhelp","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611601,"package_name":"sphinxcontrib-jquery","ecosystem":"pypi","requirements":"4.1","direct":false,"kind":"runtime","optional":false},{"id":23058611602,"package_name":"sphinxcontrib-jsmath","ecosystem":"pypi","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":23058611603,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"0.7","direct":false,"kind":"runtime","optional":false},{"id":23058611604,"package_name":"sphinxcontrib-qthelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611605,"package_name":"sphinxcontrib-serializinghtml","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":23058611606,"package_name":"tenacity","ecosystem":"pypi","requirements":"9.1.2","direct":false,"kind":"runtime","optional":false},{"id":23058611607,"package_name":"tinydb","ecosystem":"pypi","requirements":"4.8.2","direct":false,"kind":"runtime","optional":false},{"id":23058611608,"package_name":"tomli","ecosystem":"pypi","requirements":"2.2.1","direct":false,"kind":"runtime","optional":false},{"id":23058611609,"package_name":"tornado","ecosystem":"pypi","requirements":"6.4.2","direct":false,"kind":"runtime","optional":false},{"id":23058611610,"package_name":"trame","ecosystem":"pypi","requirements":"3.8.1","direct":false,"kind":"runtime","optional":false},{"id":23058611611,"package_name":"trame-client","ecosystem":"pypi","requirements":"3.6.1","direct":false,"kind":"runtime","optional":false},{"id":23058611612,"package_name":"trame-matplotlib","ecosystem":"pypi","requirements":"2.0.3","direct":false,"kind":"runtime","optional":false},{"id":23058611613,"package_name":"trame-plotly","ecosystem":"pypi","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":23058611614,"package_name":"trame-server","ecosystem":"pypi","requirements":"3.4.0","direct":false,"kind":"runtime","optional":false},{"id":23058611615,"package_name":"trame-vega","ecosystem":"pypi","requirements":"2.1.1","direct":false,"kind":"runtime","optional":false},{"id":23058611616,"package_name":"trame-vtk","ecosystem":"pypi","requirements":"2.8.15","direct":false,"kind":"runtime","optional":false},{"id":23058611617,"package_name":"trame-vuetify","ecosystem":"pypi","requirements":"2.9.0","direct":false,"kind":"runtime","optional":false},{"id":23058611618,"package_name":"tuspy","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":23058611619,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.13.1","direct":false,"kind":"runtime","optional":false},{"id":23058611620,"package_name":"typing-inspection","ecosystem":"pypi","requirements":"0.4.0","direct":false,"kind":"runtime","optional":false},{"id":23058611621,"package_name":"tzdata","ecosystem":"pypi","requirements":"2025.2","direct":false,"kind":"runtime","optional":false},{"id":23058611622,"package_name":"urllib3","ecosystem":"pypi","requirements":"2.3.0","direct":false,"kind":"runtime","optional":false},{"id":23058611623,"package_name":"virtualenv","ecosystem":"pypi","requirements":"20.30.0","direct":false,"kind":"runtime","optional":false},{"id":23058611624,"package_name":"vtk","ecosystem":"pypi","requirements":"9.3.1","direct":false,"kind":"runtime","optional":false},{"id":23058611625,"package_name":"wcwidth","ecosystem":"pypi","requirements":"0.2.13","direct":false,"kind":"runtime","optional":false},{"id":23058611626,"package_name":"wslink","ecosystem":"pypi","requirements":"2.3.3","direct":false,"kind":"runtime","optional":false},{"id":23058611627,"package_name":"yarl","ecosystem":"pypi","requirements":"1.18.3","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"code/episode_7/pyproject.toml","sha":null,"kind":"manifest","created_at":"2025-05-09T20:37:36.227Z","updated_at":"2025-05-09T20:37:36.227Z","repository_link":"https://github.com/nova-model/nova-tutorial/blob/main/code/episode_7/pyproject.toml","dependencies":[{"id":23058611628,"package_name":"python","ecosystem":"pypi","requirements":"^3.10","direct":true,"kind":"runtime","optional":false},{"id":23058611629,"package_name":"nova-galaxy","ecosystem":"pypi","requirements":"^0.7.0","direct":true,"kind":"runtime","optional":false},{"id":23058611630,"package_name":"nova-mvvm","ecosystem":"pypi","requirements":"0.9.0","direct":true,"kind":"runtime","optional":false},{"id":23058611631,"package_name":"nova-trame","ecosystem":"pypi","requirements":"0.16.0","direct":true,"kind":"runtime","optional":false},{"id":23058611632,"package_name":"pandas","ecosystem":"pypi","requirements":"^2.2.3","direct":true,"kind":"runtime","optional":false},{"id":23058611633,"package_name":"plotly","ecosystem":"pypi","requirements":"^5.24.1","direct":true,"kind":"runtime","optional":false},{"id":23058611634,"package_name":"pyvista","ecosystem":"pypi","requirements":"^0.44.2","direct":true,"kind":"runtime","optional":false},{"id":23058611635,"package_name":"trame-plotly","ecosystem":"pypi","requirements":"^3.0.2","direct":true,"kind":"runtime","optional":false},{"id":23058611636,"package_name":"trame-vtk","ecosystem":"pypi","requirements":"^2.8.14","direct":true,"kind":"runtime","optional":false},{"id":23058611637,"package_name":"mypy","ecosystem":"pypi","requirements":"\u003e=1.10.0","direct":true,"kind":"develop","optional":false},{"id":23058611638,"package_name":"pre-commit","ecosystem":"pypi","requirements":"\u003e=2.20.0","direct":true,"kind":"develop","optional":false},{"id":23058611639,"package_name":"coverage","ecosystem":"pypi","requirements":"\u003e=6.4.3","direct":true,"kind":"develop","optional":false},{"id":23058611640,"package_name":"pytest","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611641,"package_name":"ruff","ecosystem":"pypi","requirements":"\u003e=0.6.2","direct":true,"kind":"develop","optional":false},{"id":23058611642,"package_name":"copier","ecosystem":"pypi","requirements":"\u003e=9.3","direct":true,"kind":"develop","optional":false},{"id":23058611643,"package_name":"sphinx","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611644,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611645,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":23058611646,"package_name":"tomli","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false}]}],"score":null,"created_at":"2025-09-04T15:50:29.744Z","updated_at":"2025-10-07T08:06:26.271Z","avatar_url":"https://github.com/nova-model.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/8978","html_url":"https://science.ecosyste.ms/projects/8978","bibtex_url":"https://science.ecosyste.ms/projects/8978/export.bibtex","apalike_url":"https://science.ecosyste.ms/projects/8978/export.apalike"}