{"id":102,"name":null,"description":"[DISCONTINUED ] Attributes on Steroids for Plain Old Ruby Objects","url":"https://github.com/solnic/virtus","last_synced_at":"2026-04-30T16:30:31.514Z","repository":{"id":427679,"uuid":"1559931","full_name":"solnic/virtus","owner":"solnic","description":"[DISCONTINUED ] Attributes on Steroids for Plain Old Ruby Objects","archived":false,"fork":false,"pushed_at":"2021-08-10T13:39:34.000Z","size":1853,"stargazers_count":3749,"open_issues_count":71,"forks_count":228,"subscribers_count":60,"default_branch":"master","last_synced_at":"2026-04-21T12:05:45.097Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/solnic.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-04-02T16:23:50.000Z","updated_at":"2026-04-07T13:45:12.000Z","dependencies_parsed_at":"2022-07-14T12:50:53.555Z","dependency_job_id":null,"html_url":"https://github.com/solnic/virtus","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/solnic/virtus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solnic","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/sbom","scorecard":{"id":837142,"data":{"date":"2025-08-11","repo":{"name":"github.com/solnic/virtus","commit":"fce56bd6676d767f287e4051176d3d323e48902f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 2/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 3 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T19:23:42.744Z","repository_id":427679,"created_at":"2025-08-23T19:23:42.744Z","updated_at":"2025-08-23T19:23:42.744Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32117802,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T00:31:26.853Z","status":"online","status_checked_at":"2026-04-22T02:00:05.693Z","response_time":58,"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":"solnic","name":"Peter Solnica","uuid":"1066","kind":"user","description":"@hanami • @dry-rb • @rom-rb","email":"","website":"https://solnic.dev","location":null,"twitter":"solnic_dev","company":"@valued-app","icon_url":"https://avatars.githubusercontent.com/u/1066?v=4","repositories_count":63,"last_synced_at":"2024-05-01T10:48:39.843Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/solnic","funding_links":["https://github.com/sponsors/solnic"],"total_stars":5311,"followers":1334,"following":6,"created_at":"2022-11-02T16:34:34.556Z","updated_at":"2024-05-01T10:48:47.187Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solnic","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solnic/repositories"},"packages":[{"id":13531175,"name":"ruby-virtus","ecosystem":"debian","description":null,"homepage":"https://github.com/solnic/virtus","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/solnic/virtus","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-10T23:41:21.793Z","latest_release_published_at":"2026-02-10T23:41:21.793Z","latest_release_number":"1.0.5-3","last_synced_at":"2026-03-13T10:28:28.856Z","created_at":"2026-02-10T23:41:21.608Z","updated_at":"2026-03-13T10:28:28.857Z","registry_url":"https://tracker.debian.org/pkg/ruby-virtus","install_command":"apt-get install ruby-virtus","documentation_url":"https://packages.debian.org/bullseye/ruby-virtus","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-virtus","standards_version":"3.9.8","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-axiom-types (\u003e= 0.1.1~), ruby-bogus, ruby-coercible, ruby-descendants-tracker, ruby-equalizer, ruby-inflecto, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:27:09.012Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-virtus?arch=source\u0026distro=debian-11\u0026repository_url=https://packages.debian.org/bullseye","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-virtus","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-virtus","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-virtus/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-virtus/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-virtus/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-virtus/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-virtus/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-virtus/codemeta","maintainers":[],"registry":{"name":"debian-11","url":"https://packages.debian.org/bullseye","ecosystem":"debian","default":false,"packages_count":31268,"maintainers_count":0,"namespaces_count":3,"keywords_count":0,"github":"debian","metadata":{"codename":"bullseye","funded_packages_count":77},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:49.702Z","updated_at":"2026-04-01T06:53:20.333Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/namespaces"}},{"id":13606233,"name":"ruby-virtus","ecosystem":"debian","description":null,"homepage":"https://github.com/solnic/virtus","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/solnic/virtus","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-11T11:29:17.282Z","latest_release_published_at":"2026-02-11T11:29:17.282Z","latest_release_number":"1.0.5-3","last_synced_at":"2026-03-13T05:03:25.358Z","created_at":"2026-02-11T11:29:17.109Z","updated_at":"2026-03-13T05:03:25.358Z","registry_url":"https://tracker.debian.org/pkg/ruby-virtus","install_command":"apt-get install ruby-virtus","documentation_url":"https://packages.debian.org/buster/ruby-virtus","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-virtus","standards_version":"3.9.8","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-axiom-types (\u003e= 0.1.1~), ruby-bogus, ruby-coercible, ruby-descendants-tracker, ruby-equalizer, ruby-inflecto, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T15:15:29.776Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-virtus?arch=source\u0026distro=debian-10\u0026repository_url=https://packages.debian.org/buster","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-virtus","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-virtus","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-virtus/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-virtus/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-virtus/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-virtus/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-virtus/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-virtus/codemeta","maintainers":[],"registry":{"name":"debian-10","url":"https://packages.debian.org/buster","ecosystem":"debian","default":false,"packages_count":28836,"maintainers_count":0,"namespaces_count":3,"keywords_count":915,"github":"debian","metadata":{"codename":"buster","mirror":"http://archive.debian.org/debian","funded_packages_count":76},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:50.156Z","updated_at":"2026-04-05T05:09:11.700Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/namespaces"}},{"id":13805543,"name":"ruby-virtus","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/solnic/virtus","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/solnic/virtus","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T18:35:33.226Z","latest_release_published_at":"2026-02-13T18:35:33.226Z","latest_release_number":"2.0.0-1","last_synced_at":"2026-03-13T19:24:58.351Z","created_at":"2026-02-13T18:35:32.986Z","updated_at":"2026-03-13T19:24:58.352Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-virtus","install_command":"apt-get install ruby-virtus","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-virtus","standards_version":"4.6.1","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"gem2deb, ruby-axiom-types, ruby-bogus, ruby-coercible, ruby-descendants-tracker, ruby-dry-inflector, ruby-equalizer, ruby-inflecto, ruby-rspec, debhelper-compat (= 13)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T18:35:35.184Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-virtus?arch=source\u0026distro=ubuntu-23.10\u0026repository_url=https://launchpad.net/ubuntu/mantic","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-virtus","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-virtus","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-virtus/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-virtus/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-virtus/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-virtus/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-virtus/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-virtus/codemeta","maintainers":[],"registry":{"name":"ubuntu-23.10","url":"https://launchpad.net/ubuntu/mantic","ecosystem":"ubuntu","default":false,"packages_count":36642,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"mantic","mirror":"http://old-releases.ubuntu.com/ubuntu","funded_packages_count":412},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:48.636Z","updated_at":"2026-04-01T06:53:18.736Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/namespaces"}},{"id":13567367,"name":"ruby-virtus","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/solnic/virtus","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/solnic/virtus","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-11T06:52:23.374Z","latest_release_published_at":"2026-02-11T06:52:23.374Z","latest_release_number":"2.0.0-1","last_synced_at":"2026-03-11T15:30:59.573Z","created_at":"2026-02-11T06:52:23.120Z","updated_at":"2026-03-11T15:30:59.573Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-virtus","install_command":"apt-get install ruby-virtus","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-virtus","standards_version":"4.6.1","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"gem2deb, ruby-axiom-types, ruby-bogus, ruby-coercible, ruby-descendants-tracker, ruby-dry-inflector, ruby-equalizer, ruby-inflecto, ruby-rspec, debhelper-compat (= 13)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:57:19.406Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-virtus?arch=source\u0026distro=ubuntu-23.04\u0026repository_url=https://launchpad.net/ubuntu/lunar","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-virtus","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-virtus","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-virtus/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-virtus/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-virtus/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-virtus/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-virtus/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-virtus/codemeta","maintainers":[],"registry":{"name":"ubuntu-23.04","url":"https://launchpad.net/ubuntu/lunar","ecosystem":"ubuntu","default":false,"packages_count":36116,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"lunar","mirror":"http://old-releases.ubuntu.com/ubuntu","funded_packages_count":99},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:49.117Z","updated_at":"2026-04-01T06:53:19.375Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/namespaces"}},{"id":13751898,"name":"ruby-virtus","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/solnic/virtus","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/solnic/virtus","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T07:25:24.783Z","latest_release_published_at":"2026-02-13T07:25:24.783Z","latest_release_number":"1.0.5-3","last_synced_at":"2026-03-13T20:23:20.018Z","created_at":"2026-02-13T07:25:23.291Z","updated_at":"2026-03-13T20:23:20.018Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-virtus","install_command":"apt-get install ruby-virtus","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-virtus","standards_version":"3.9.8","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-axiom-types (\u003e= 0.1.1~), ruby-bogus, ruby-coercible, ruby-descendants-tracker, ruby-equalizer, ruby-inflecto, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T07:25:25.338Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-virtus?arch=source\u0026distro=ubuntu-20.04\u0026repository_url=https://launchpad.net/ubuntu/focal","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-virtus","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-virtus","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-virtus/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-virtus/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-virtus/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-virtus/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-virtus/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-virtus/codemeta","maintainers":[],"registry":{"name":"ubuntu-20.04","url":"https://launchpad.net/ubuntu/focal","ecosystem":"ubuntu","default":false,"packages_count":30789,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"focal","funded_packages_count":142},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:47.233Z","updated_at":"2026-04-01T06:53:15.590Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/namespaces"}},{"id":8616003,"name":"github.com/solnic/virtus","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/solnic/virtus","keywords_array":[],"namespace":null,"versions_count":28,"first_release_published_at":"2023-12-03T01:58:47.217Z","latest_release_published_at":"2021-06-07T13:21:50.000Z","latest_release_number":"v2.0.0+incompatible","last_synced_at":"2026-04-07T05:00:54.812Z","created_at":"2023-12-03T01:57:02.372Z","updated_at":"2026-04-07T05:00:54.812Z","registry_url":"https://pkg.go.dev/github.com/solnic/virtus","install_command":"go get github.com/solnic/virtus","documentation_url":"https://pkg.go.dev/github.com/solnic/virtus#section-documentation","metadata":{},"repo_metadata":{"id":427679,"uuid":"1559931","full_name":"solnic/virtus","owner":"solnic","description":"[DISCONTINUED ] Attributes on Steroids for Plain Old Ruby Objects","archived":false,"fork":false,"pushed_at":"2021-08-10T13:39:34.000Z","size":1853,"stargazers_count":3760,"open_issues_count":71,"forks_count":229,"subscribers_count":62,"default_branch":"master","last_synced_at":"2025-09-27T04:16:21.001Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/solnic.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-04-02T16:23:50.000Z","updated_at":"2025-08-18T17:57:04.000Z","dependencies_parsed_at":"2022-07-14T12:50:53.555Z","dependency_job_id":null,"html_url":"https://github.com/solnic/virtus","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/solnic/virtus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solnic","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/sbom","scorecard":{"id":837142,"data":{"date":"2025-08-11","repo":{"name":"github.com/solnic/virtus","commit":"fce56bd6676d767f287e4051176d3d323e48902f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 2/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 3 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T19:23:42.744Z","repository_id":427679,"created_at":"2025-08-23T19:23:42.744Z","updated_at":"2025-08-23T19:23:42.744Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278143892,"owners_count":25937208,"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-10-03T02:00:06.070Z","response_time":53,"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_record":{"login":"solnic","name":"Peter Solnica","uuid":"1066","kind":"user","description":"@hanami • @dry-rb • @rom-rb","email":"","website":"https://solnic.dev","location":null,"twitter":"solnic_dev","company":"@valued-app","icon_url":"https://avatars.githubusercontent.com/u/1066?v=4","repositories_count":63,"last_synced_at":"2024-05-01T10:48:39.843Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/solnic","funding_links":["https://github.com/sponsors/solnic"],"total_stars":5311,"followers":1334,"following":6,"created_at":"2022-11-02T16:34:34.556Z","updated_at":"2024-05-01T10:48:47.187Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solnic","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solnic/repositories"},"tags":[{"name":"v2.0.0","sha":"9e4f56fe825932e6ada0632d7fe2ba68a6324e63","kind":"tag","published_at":"2021-06-07T13:26:28.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v2.0.0","html_url":"https://github.com/solnic/virtus/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v2.0.0/manifests"},{"name":"v1.0.5","sha":"2a5bc3284f067dcd5556e5b1271a65e5fc924330","kind":"tag","published_at":"2015-03-18T11:48:54.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.5","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.5/manifests"},{"name":"v1.0.4","sha":"54ee3ee213b8158f5923d32440242be060b5da10","kind":"tag","published_at":"2015-01-03T15:12:55.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.4","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.4/manifests"},{"name":"v1.0.3","sha":"1def974bcb65749122e62862eb2e5e649c1f2ba6","kind":"tag","published_at":"2014-07-24T17:42:12.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.3","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.3/manifests"},{"name":"v1.0.2","sha":"a0cda972ea582b4e03695c56a77aa8399137c48a","kind":"tag","published_at":"2014-03-12T15:14:38.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.2","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"a1bee16e4b5ca6a369bd64e169a9237892a2aeea","kind":"tag","published_at":"2013-12-10T12:23:58.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.1","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"8c8263b4d5a14a816f7c8d2f407609615f839702","kind":"tag","published_at":"2013-10-16T21:47:12.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.0","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.0/manifests"},{"name":"v1.0.0.beta0","sha":"a9717573dc0ceb5ff7ca40f8c25e89a366304b80","kind":"tag","published_at":"2013-06-04T10:21:57.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.0.beta0","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.0.beta0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.0.beta0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.0.beta0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.0.beta0/manifests"},{"name":"v0.5.4","sha":"940c3c9c4ddc2b1dab60ce9806b44a2f05474fa1","kind":"tag","published_at":"2012-12-20T09:33:30.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.4","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.4/manifests"},{"name":"v0.5.3","sha":"d98d2441e3adc78516a712705249f967ea9ec4a2","kind":"tag","published_at":"2012-12-13T09:27:02.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.3","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.3/manifests"},{"name":"v0.5.2","sha":"273dfbc4c6b54e3aa033d2b5241f82e1ef358a16","kind":"tag","published_at":"2012-09-01T06:11:48.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.2","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.2/manifests"},{"name":"v0.5.1","sha":"dcdbb3c7e1e5996a4032cd9d7d9e173fe6fe4591","kind":"tag","published_at":"2012-06-11T16:15:44.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.1","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.1/manifests"},{"name":"v0.5.0","sha":"c28f9a6163a26008fd1d190615459cf4d99ebd87","kind":"tag","published_at":"2012-06-08T11:44:11.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.0/manifests"},{"name":"v0.4.2","sha":"558709d5a23d35708dd2e0f7c8063588c34edb67","kind":"tag","published_at":"2012-05-08T10:52:40.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.4.2","html_url":"https://github.com/solnic/virtus/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"c1179db31d7eb21bfafcf7dd91b89afa3c3413a7","kind":"tag","published_at":"2012-05-06T13:49:01.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.4.1","html_url":"https://github.com/solnic/virtus/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"3fc107b5f342e79de9cdfbeb9e6cba859d4eea50","kind":"tag","published_at":"2012-03-22T11:27:57.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.4.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"41862720c448469ffd7c63f94ef48fd666ea587f","kind":"tag","published_at":"2012-02-25T12:01:27.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.3.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.3.0/manifests"},{"name":"v0.2.0","sha":"8969475b37f9ae4fedea3468cd4ef1e935a4f230","kind":"tag","published_at":"2012-02-08T09:36:31.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.2.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"01e104bc1720aca1b517b7a6b7f11761d2fba0f8","kind":"tag","published_at":"2012-02-05T22:12:33.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.1.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.1.0/manifests"},{"name":"v0.0.10","sha":"be08ce2471469b80f3ba2a18b1152b12858522d9","kind":"tag","published_at":"2011-11-21T10:43:51.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.10","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.10","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.10","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.10/manifests"},{"name":"v0.0.9","sha":"31ada2831d02cea57fe583d44c90f142cdb9e5cb","kind":"commit","published_at":"2011-10-11T15:55:03.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.9","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.9/manifests"},{"name":"v0.0.8","sha":"b98afec5450e31d2270bf5126a16d0eba2535d68","kind":"commit","published_at":"2011-08-25T08:30:57.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.8","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.8/manifests"},{"name":"v0.0.7","sha":"b5465fbc58fc56a8527c9e63fbe63f016129f027","kind":"commit","published_at":"2011-07-31T18:28:38.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.7","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.7/manifests"},{"name":"v0.0.6","sha":"25795a8a964e077c7cfd10d66a3a96cc821f4415","kind":"commit","published_at":"2011-07-30T10:31:11.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.6","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.6/manifests"},{"name":"v0.0.5","sha":"54c194bd270b3bba2f2106b900afe4d348a143f1","kind":"commit","published_at":"2011-07-10T10:00:23.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.5","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.5/manifests"},{"name":"v0.0.4","sha":"8926d103d246a872b511d0059875aac291cc98b0","kind":"commit","published_at":"2011-07-08T10:07:26.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.4","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.4/manifests"},{"name":"v0.0.3","sha":"9ae5e3c85799f398e1a7d376571cc67f054b1fb1","kind":"commit","published_at":"2011-06-09T12:01:50.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.3","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.3/manifests"},{"name":"v0.0.2","sha":"412aba52dc67bf25d40590e780c6c97ec342c799","kind":"commit","published_at":"2011-06-06T11:46:01.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.2","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.2/manifests"},{"name":"v0.0.1","sha":"060edcaea89e700e7819f4eb598de523a877860b","kind":"commit","published_at":"2011-06-04T15:30:16.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.1","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2025-10-13T13:42:48.247Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":10.77902998550931,"dependent_packages_count":9.55954712080186,"stargazers_count":1.0922406654377124,"forks_count":1.8248650642059883,"docker_downloads_count":null,"average":5.813920708988717},"purl":"pkg:golang/github.com/solnic/virtus","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/solnic/virtus","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/solnic/virtus","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/solnic/virtus/dependencies","status":null,"funding_links":["https://github.com/sponsors/solnic"],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T18:09:22.091Z","issues_count":69,"pull_requests_count":32,"avg_time_to_close_issue":35287941.4,"avg_time_to_close_pull_request":47308834.85714286,"issues_closed_count":20,"pull_requests_closed_count":14,"pull_request_authors_count":32,"issue_authors_count":64,"avg_comments_per_issue":3.63768115942029,"avg_comments_per_pull_request":2.3125,"merged_pull_requests_count":7,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/issues","maintainers":[{"login":"solnic","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/solnic"},{"login":"elskwid","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/elskwid"},{"login":"dkubb","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dkubb"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsolnic%2Fvirtus/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsolnic%2Fvirtus/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsolnic%2Fvirtus/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsolnic%2Fvirtus/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsolnic%2Fvirtus/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2090664,"maintainers_count":0,"namespaces_count":780333,"keywords_count":112764,"github":"golang","metadata":{"funded_packages_count":53458},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-09T05:03:48.640Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":13780042,"name":"ruby-virtus","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/solnic/virtus","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/solnic/virtus","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T13:28:25.424Z","latest_release_published_at":"2026-02-13T13:28:25.424Z","latest_release_number":"1.0.5-3","last_synced_at":"2026-03-13T22:41:44.753Z","created_at":"2026-02-13T13:28:25.198Z","updated_at":"2026-03-13T22:41:44.754Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-virtus","install_command":"apt-get install ruby-virtus","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-virtus","standards_version":"3.9.8","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-axiom-types (\u003e= 0.1.1~), ruby-bogus, ruby-coercible, ruby-descendants-tracker, ruby-equalizer, ruby-inflecto, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T13:28:25.950Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-virtus?arch=source\u0026distro=ubuntu-22.04\u0026repository_url=https://launchpad.net/ubuntu/jammy","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-virtus","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-virtus","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-virtus/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-virtus/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-virtus/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-virtus/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-virtus/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-virtus/codemeta","maintainers":[],"registry":{"name":"ubuntu-22.04","url":"https://launchpad.net/ubuntu/jammy","ecosystem":"ubuntu","default":false,"packages_count":34289,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"jammy","funded_packages_count":142},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:46.486Z","updated_at":"2026-04-01T06:53:21.644Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/namespaces"}},{"id":13467482,"name":"ruby-virtus","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/solnic/virtus","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/solnic/virtus","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-09T17:32:40.035Z","latest_release_published_at":"2026-02-09T17:32:40.035Z","latest_release_number":"2.0.0-2","last_synced_at":"2026-03-09T18:23:48.953Z","created_at":"2026-02-09T17:32:39.418Z","updated_at":"2026-03-09T18:32:54.918Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-virtus","install_command":"apt-get install ruby-virtus","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-virtus","standards_version":"4.6.2","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"gem2deb, ruby-axiom-types, ruby-bogus, ruby-coercible, ruby-descendants-tracker, ruby-dry-inflector, ruby-equalizer, ruby-inflecto, ruby-rspec, debhelper-compat (= 13)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":null,"dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-virtus?arch=source\u0026distro=ubuntu-24.10\u0026repository_url=https://launchpad.net/ubuntu/oracular","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-virtus","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-virtus","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-virtus/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-virtus/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-virtus/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-virtus/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-virtus/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-virtus/codemeta","maintainers":[],"registry":{"name":"ubuntu-24.10","url":"https://launchpad.net/ubuntu/oracular","ecosystem":"ubuntu","default":false,"packages_count":38437,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"oracular","mirror":"http://old-releases.ubuntu.com/ubuntu","funded_packages_count":177},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:48.028Z","updated_at":"2026-03-31T06:41:18.525Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/namespaces"}},{"id":13713571,"name":"ruby-virtus","ecosystem":"debian","description":null,"homepage":"https://github.com/solnic/virtus","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/solnic/virtus","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T23:44:04.869Z","latest_release_published_at":"2026-02-12T23:44:04.869Z","latest_release_number":"2.0.0-1","last_synced_at":"2026-03-13T23:45:20.597Z","created_at":"2026-02-12T23:44:04.670Z","updated_at":"2026-03-13T23:45:20.598Z","registry_url":"https://tracker.debian.org/pkg/ruby-virtus","install_command":"apt-get install ruby-virtus","documentation_url":"https://packages.debian.org/bookworm/ruby-virtus","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-virtus","standards_version":"4.6.1","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"gem2deb, ruby-axiom-types, ruby-bogus, ruby-coercible, ruby-descendants-tracker, ruby-dry-inflector, ruby-equalizer, ruby-inflecto, ruby-rspec, debhelper-compat (= 13)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T23:44:05.445Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-virtus?arch=source\u0026distro=debian-12","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-virtus","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-virtus","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-virtus/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-virtus/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-virtus/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-virtus/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-virtus/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-virtus/codemeta","maintainers":[],"registry":{"name":"debian-12","url":"https://packages.debian.org/bookworm","ecosystem":"debian","default":true,"packages_count":34734,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"debian","metadata":{"codename":"bookworm","funded_packages_count":364},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:49.459Z","updated_at":"2026-04-01T06:53:23.701Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/namespaces"}},{"id":12351974,"name":"virtus","ecosystem":"rubygems","description":"Attributes on Steroids for Plain Old Ruby Objects","homepage":"https://github.com/solnic/virtus","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/solnic/virtus","keywords_array":[],"namespace":null,"versions_count":37,"first_release_published_at":"2011-06-04T15:31:15.872Z","latest_release_published_at":"2021-06-07T13:34:28.303Z","latest_release_number":"2.0.0","last_synced_at":"2026-04-08T05:18:06.715Z","created_at":"2025-10-07T06:49:31.961Z","updated_at":"2026-04-08T09:59:08.332Z","registry_url":"https://gem.coop/gems/virtus","install_command":"gem install virtus -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/virtus/","metadata":{"funding":null},"repo_metadata":{"id":427679,"uuid":"1559931","full_name":"solnic/virtus","owner":"solnic","description":"[DISCONTINUED ] Attributes on Steroids for Plain Old Ruby Objects","archived":false,"fork":false,"pushed_at":"2021-08-10T13:39:34.000Z","size":1853,"stargazers_count":3749,"open_issues_count":71,"forks_count":228,"subscribers_count":60,"default_branch":"master","last_synced_at":"2026-03-27T13:49:48.652Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/solnic.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-04-02T16:23:50.000Z","updated_at":"2026-03-25T08:31:54.000Z","dependencies_parsed_at":"2022-07-14T12:50:53.555Z","dependency_job_id":null,"html_url":"https://github.com/solnic/virtus","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/solnic/virtus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solnic","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/sbom","scorecard":{"id":837142,"data":{"date":"2025-08-11","repo":{"name":"github.com/solnic/virtus","commit":"fce56bd6676d767f287e4051176d3d323e48902f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 2/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 3 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T19:23:42.744Z","repository_id":427679,"created_at":"2025-08-23T19:23:42.744Z","updated_at":"2025-08-23T19:23:42.744Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31172543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-29T21:28:10.185Z","status":"online","status_checked_at":"2026-03-30T02:00:06.831Z","response_time":138,"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_record":{"login":"solnic","name":"Peter Solnica","uuid":"1066","kind":"user","description":"@hanami • @dry-rb • @rom-rb","email":"","website":"https://solnic.dev","location":null,"twitter":"solnic_dev","company":"@valued-app","icon_url":"https://avatars.githubusercontent.com/u/1066?v=4","repositories_count":63,"last_synced_at":"2024-05-01T10:48:39.843Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/solnic","funding_links":["https://github.com/sponsors/solnic"],"total_stars":5311,"followers":1334,"following":6,"created_at":"2022-11-02T16:34:34.556Z","updated_at":"2024-05-01T10:48:47.187Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solnic","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solnic/repositories"},"tags":[{"name":"v2.0.0","sha":"9e4f56fe825932e6ada0632d7fe2ba68a6324e63","kind":"tag","published_at":"2021-06-07T13:26:28.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v2.0.0","html_url":"https://github.com/solnic/virtus/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v2.0.0/manifests"},{"name":"v1.0.5","sha":"2a5bc3284f067dcd5556e5b1271a65e5fc924330","kind":"tag","published_at":"2015-03-18T11:48:54.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.5","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.5/manifests"},{"name":"v1.0.4","sha":"54ee3ee213b8158f5923d32440242be060b5da10","kind":"tag","published_at":"2015-01-03T15:12:55.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.4","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.4/manifests"},{"name":"v1.0.3","sha":"1def974bcb65749122e62862eb2e5e649c1f2ba6","kind":"tag","published_at":"2014-07-24T17:42:12.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.3","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.3/manifests"},{"name":"v1.0.2","sha":"a0cda972ea582b4e03695c56a77aa8399137c48a","kind":"tag","published_at":"2014-03-12T15:14:38.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.2","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"a1bee16e4b5ca6a369bd64e169a9237892a2aeea","kind":"tag","published_at":"2013-12-10T12:23:58.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.1","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"8c8263b4d5a14a816f7c8d2f407609615f839702","kind":"tag","published_at":"2013-10-16T21:47:12.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.0","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.0/manifests"},{"name":"v1.0.0.beta0","sha":"a9717573dc0ceb5ff7ca40f8c25e89a366304b80","kind":"tag","published_at":"2013-06-04T10:21:57.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.0.beta0","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.0.beta0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.0.beta0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.0.beta0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.0.beta0/manifests"},{"name":"v0.5.4","sha":"940c3c9c4ddc2b1dab60ce9806b44a2f05474fa1","kind":"tag","published_at":"2012-12-20T09:33:30.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.4","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.4/manifests"},{"name":"v0.5.3","sha":"d98d2441e3adc78516a712705249f967ea9ec4a2","kind":"tag","published_at":"2012-12-13T09:27:02.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.3","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.3/manifests"},{"name":"v0.5.2","sha":"273dfbc4c6b54e3aa033d2b5241f82e1ef358a16","kind":"tag","published_at":"2012-09-01T06:11:48.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.2","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.2/manifests"},{"name":"v0.5.1","sha":"dcdbb3c7e1e5996a4032cd9d7d9e173fe6fe4591","kind":"tag","published_at":"2012-06-11T16:15:44.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.1","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.1/manifests"},{"name":"v0.5.0","sha":"c28f9a6163a26008fd1d190615459cf4d99ebd87","kind":"tag","published_at":"2012-06-08T11:44:11.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.0/manifests"},{"name":"v0.4.2","sha":"558709d5a23d35708dd2e0f7c8063588c34edb67","kind":"tag","published_at":"2012-05-08T10:52:40.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.4.2","html_url":"https://github.com/solnic/virtus/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"c1179db31d7eb21bfafcf7dd91b89afa3c3413a7","kind":"tag","published_at":"2012-05-06T13:49:01.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.4.1","html_url":"https://github.com/solnic/virtus/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"3fc107b5f342e79de9cdfbeb9e6cba859d4eea50","kind":"tag","published_at":"2012-03-22T11:27:57.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.4.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"41862720c448469ffd7c63f94ef48fd666ea587f","kind":"tag","published_at":"2012-02-25T12:01:27.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.3.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.3.0/manifests"},{"name":"v0.2.0","sha":"8969475b37f9ae4fedea3468cd4ef1e935a4f230","kind":"tag","published_at":"2012-02-08T09:36:31.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.2.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"01e104bc1720aca1b517b7a6b7f11761d2fba0f8","kind":"tag","published_at":"2012-02-05T22:12:33.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.1.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.1.0/manifests"},{"name":"v0.0.10","sha":"be08ce2471469b80f3ba2a18b1152b12858522d9","kind":"tag","published_at":"2011-11-21T10:43:51.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.10","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.10","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.10","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.10/manifests"},{"name":"v0.0.9","sha":"31ada2831d02cea57fe583d44c90f142cdb9e5cb","kind":"commit","published_at":"2011-10-11T15:55:03.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.9","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.9/manifests"},{"name":"v0.0.8","sha":"b98afec5450e31d2270bf5126a16d0eba2535d68","kind":"commit","published_at":"2011-08-25T08:30:57.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.8","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.8/manifests"},{"name":"v0.0.7","sha":"b5465fbc58fc56a8527c9e63fbe63f016129f027","kind":"commit","published_at":"2011-07-31T18:28:38.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.7","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.7/manifests"},{"name":"v0.0.6","sha":"25795a8a964e077c7cfd10d66a3a96cc821f4415","kind":"commit","published_at":"2011-07-30T10:31:11.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.6","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.6/manifests"},{"name":"v0.0.5","sha":"54c194bd270b3bba2f2106b900afe4d348a143f1","kind":"commit","published_at":"2011-07-10T10:00:23.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.5","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.5/manifests"},{"name":"v0.0.4","sha":"8926d103d246a872b511d0059875aac291cc98b0","kind":"commit","published_at":"2011-07-08T10:07:26.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.4","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.4/manifests"},{"name":"v0.0.3","sha":"9ae5e3c85799f398e1a7d376571cc67f054b1fb1","kind":"commit","published_at":"2011-06-09T12:01:50.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.3","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.3/manifests"},{"name":"v0.0.2","sha":"412aba52dc67bf25d40590e780c6c97ec342c799","kind":"commit","published_at":"2011-06-06T11:46:01.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.2","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.2/manifests"},{"name":"v0.0.1","sha":"060edcaea89e700e7819f4eb598de523a877860b","kind":"commit","published_at":"2011-06-04T15:30:16.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.1","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2026-04-08T09:59:08.300Z","dependent_packages_count":0,"downloads":125423944,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":0.19733249714813994,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":0.06577749904937998},"purl":"pkg:gem/virtus?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/virtus","docker_dependents_count":187,"docker_downloads_count":552455328,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/virtus","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/virtus/dependencies","status":null,"funding_links":["https://github.com/sponsors/solnic"],"critical":null,"issue_metadata":{"last_synced_at":"2026-01-13T12:00:54.372Z","issues_count":69,"pull_requests_count":32,"avg_time_to_close_issue":35287941.4,"avg_time_to_close_pull_request":47308834.85714286,"issues_closed_count":20,"pull_requests_closed_count":14,"pull_request_authors_count":32,"issue_authors_count":64,"avg_comments_per_issue":3.63768115942029,"avg_comments_per_pull_request":2.3125,"merged_pull_requests_count":7,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/issues","maintainers":[{"login":"solnic","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/solnic"},{"login":"elskwid","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/elskwid"},{"login":"dkubb","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dkubb"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/virtus/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/virtus/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/virtus/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/virtus/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/virtus/codemeta","maintainers":[{"uuid":"56381","login":"envygeeks","name":null,"email":null,"url":null,"packages_count":32,"html_url":"https://gem.coop/profiles/envygeeks","role":null,"created_at":"2025-10-10T00:54:51.597Z","updated_at":"2025-10-10T00:54:51.597Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/envygeeks/packages"},{"uuid":"43616","login":"solnic","name":null,"email":null,"url":null,"packages_count":105,"html_url":"https://gem.coop/profiles/solnic","role":null,"created_at":"2025-10-10T00:54:51.475Z","updated_at":"2025-10-10T00:54:51.475Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/solnic/packages"},{"uuid":"61769","login":"CraigBuchek","name":null,"email":null,"url":null,"packages_count":8,"html_url":"https://gem.coop/profiles/CraigBuchek","role":null,"created_at":"2025-10-10T00:54:51.545Z","updated_at":"2025-10-10T00:54:51.545Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/CraigBuchek/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":189733,"maintainers_count":67294,"namespaces_count":0,"keywords_count":0,"github":"gem-coop","metadata":{"funded_packages_count":6507},"icon_url":"https://github.com/gem-coop.png","created_at":"2025-10-06T17:24:20.932Z","updated_at":"2026-04-03T06:45:05.763Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/namespaces"}},{"id":325679,"name":"virtus","ecosystem":"rubygems","description":"Attributes on Steroids for Plain Old Ruby Objects","homepage":"https://github.com/solnic/virtus","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/solnic/virtus","keywords_array":[],"namespace":null,"versions_count":37,"first_release_published_at":"2011-06-04T15:31:15.872Z","latest_release_published_at":"2021-06-07T13:34:28.303Z","latest_release_number":"2.0.0","last_synced_at":"2026-04-08T14:00:41.073Z","created_at":"2022-04-06T12:14:24.193Z","updated_at":"2026-04-08T14:08:46.641Z","registry_url":"https://rubygems.org/gems/virtus","install_command":"gem install virtus -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/virtus/","metadata":{"funding":null},"repo_metadata":{"id":427679,"uuid":"1559931","full_name":"solnic/virtus","owner":"solnic","description":"[DISCONTINUED ] Attributes on Steroids for Plain Old Ruby Objects","archived":false,"fork":false,"pushed_at":"2021-08-10T13:39:34.000Z","size":1853,"stargazers_count":3749,"open_issues_count":71,"forks_count":228,"subscribers_count":60,"default_branch":"master","last_synced_at":"2026-03-27T13:49:48.652Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/solnic.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-04-02T16:23:50.000Z","updated_at":"2026-03-25T08:31:54.000Z","dependencies_parsed_at":"2022-07-14T12:50:53.555Z","dependency_job_id":null,"html_url":"https://github.com/solnic/virtus","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/solnic/virtus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solnic","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/sbom","scorecard":{"id":837142,"data":{"date":"2025-08-11","repo":{"name":"github.com/solnic/virtus","commit":"fce56bd6676d767f287e4051176d3d323e48902f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 2/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 3 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T19:23:42.744Z","repository_id":427679,"created_at":"2025-08-23T19:23:42.744Z","updated_at":"2025-08-23T19:23:42.744Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31172543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-29T21:28:10.185Z","status":"online","status_checked_at":"2026-03-30T02:00:06.831Z","response_time":138,"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_record":{"login":"solnic","name":"Peter Solnica","uuid":"1066","kind":"user","description":"@hanami • @dry-rb • @rom-rb","email":"","website":"https://solnic.dev","location":null,"twitter":"solnic_dev","company":"@valued-app","icon_url":"https://avatars.githubusercontent.com/u/1066?v=4","repositories_count":63,"last_synced_at":"2024-05-01T10:48:39.843Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/solnic","funding_links":["https://github.com/sponsors/solnic"],"total_stars":5311,"followers":1334,"following":6,"created_at":"2022-11-02T16:34:34.556Z","updated_at":"2024-05-01T10:48:47.187Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solnic","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solnic/repositories"},"tags":[{"name":"v2.0.0","sha":"9e4f56fe825932e6ada0632d7fe2ba68a6324e63","kind":"tag","published_at":"2021-06-07T13:26:28.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v2.0.0","html_url":"https://github.com/solnic/virtus/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v2.0.0/manifests"},{"name":"v1.0.5","sha":"2a5bc3284f067dcd5556e5b1271a65e5fc924330","kind":"tag","published_at":"2015-03-18T11:48:54.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.5","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.5/manifests"},{"name":"v1.0.4","sha":"54ee3ee213b8158f5923d32440242be060b5da10","kind":"tag","published_at":"2015-01-03T15:12:55.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.4","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.4/manifests"},{"name":"v1.0.3","sha":"1def974bcb65749122e62862eb2e5e649c1f2ba6","kind":"tag","published_at":"2014-07-24T17:42:12.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.3","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.3/manifests"},{"name":"v1.0.2","sha":"a0cda972ea582b4e03695c56a77aa8399137c48a","kind":"tag","published_at":"2014-03-12T15:14:38.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.2","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"a1bee16e4b5ca6a369bd64e169a9237892a2aeea","kind":"tag","published_at":"2013-12-10T12:23:58.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.1","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"8c8263b4d5a14a816f7c8d2f407609615f839702","kind":"tag","published_at":"2013-10-16T21:47:12.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.0","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.0/manifests"},{"name":"v1.0.0.beta0","sha":"a9717573dc0ceb5ff7ca40f8c25e89a366304b80","kind":"tag","published_at":"2013-06-04T10:21:57.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v1.0.0.beta0","html_url":"https://github.com/solnic/virtus/releases/tag/v1.0.0.beta0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v1.0.0.beta0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.0.beta0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v1.0.0.beta0/manifests"},{"name":"v0.5.4","sha":"940c3c9c4ddc2b1dab60ce9806b44a2f05474fa1","kind":"tag","published_at":"2012-12-20T09:33:30.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.4","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.4/manifests"},{"name":"v0.5.3","sha":"d98d2441e3adc78516a712705249f967ea9ec4a2","kind":"tag","published_at":"2012-12-13T09:27:02.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.3","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.3/manifests"},{"name":"v0.5.2","sha":"273dfbc4c6b54e3aa033d2b5241f82e1ef358a16","kind":"tag","published_at":"2012-09-01T06:11:48.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.2","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.2/manifests"},{"name":"v0.5.1","sha":"dcdbb3c7e1e5996a4032cd9d7d9e173fe6fe4591","kind":"tag","published_at":"2012-06-11T16:15:44.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.1","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.1/manifests"},{"name":"v0.5.0","sha":"c28f9a6163a26008fd1d190615459cf4d99ebd87","kind":"tag","published_at":"2012-06-08T11:44:11.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.5.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.5.0/manifests"},{"name":"v0.4.2","sha":"558709d5a23d35708dd2e0f7c8063588c34edb67","kind":"tag","published_at":"2012-05-08T10:52:40.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.4.2","html_url":"https://github.com/solnic/virtus/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"c1179db31d7eb21bfafcf7dd91b89afa3c3413a7","kind":"tag","published_at":"2012-05-06T13:49:01.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.4.1","html_url":"https://github.com/solnic/virtus/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"3fc107b5f342e79de9cdfbeb9e6cba859d4eea50","kind":"tag","published_at":"2012-03-22T11:27:57.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.4.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"41862720c448469ffd7c63f94ef48fd666ea587f","kind":"tag","published_at":"2012-02-25T12:01:27.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.3.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.3.0/manifests"},{"name":"v0.2.0","sha":"8969475b37f9ae4fedea3468cd4ef1e935a4f230","kind":"tag","published_at":"2012-02-08T09:36:31.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.2.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"01e104bc1720aca1b517b7a6b7f11761d2fba0f8","kind":"tag","published_at":"2012-02-05T22:12:33.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.1.0","html_url":"https://github.com/solnic/virtus/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.1.0/manifests"},{"name":"v0.0.10","sha":"be08ce2471469b80f3ba2a18b1152b12858522d9","kind":"tag","published_at":"2011-11-21T10:43:51.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.10","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.10","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.10","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.10/manifests"},{"name":"v0.0.9","sha":"31ada2831d02cea57fe583d44c90f142cdb9e5cb","kind":"commit","published_at":"2011-10-11T15:55:03.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.9","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.9/manifests"},{"name":"v0.0.8","sha":"b98afec5450e31d2270bf5126a16d0eba2535d68","kind":"commit","published_at":"2011-08-25T08:30:57.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.8","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.8/manifests"},{"name":"v0.0.7","sha":"b5465fbc58fc56a8527c9e63fbe63f016129f027","kind":"commit","published_at":"2011-07-31T18:28:38.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.7","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.7/manifests"},{"name":"v0.0.6","sha":"25795a8a964e077c7cfd10d66a3a96cc821f4415","kind":"commit","published_at":"2011-07-30T10:31:11.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.6","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.6/manifests"},{"name":"v0.0.5","sha":"54c194bd270b3bba2f2106b900afe4d348a143f1","kind":"commit","published_at":"2011-07-10T10:00:23.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.5","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.5/manifests"},{"name":"v0.0.4","sha":"8926d103d246a872b511d0059875aac291cc98b0","kind":"commit","published_at":"2011-07-08T10:07:26.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.4","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.4/manifests"},{"name":"v0.0.3","sha":"9ae5e3c85799f398e1a7d376571cc67f054b1fb1","kind":"commit","published_at":"2011-06-09T12:01:50.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.3","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.3/manifests"},{"name":"v0.0.2","sha":"412aba52dc67bf25d40590e780c6c97ec342c799","kind":"commit","published_at":"2011-06-06T11:46:01.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.2","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.2/manifests"},{"name":"v0.0.1","sha":"060edcaea89e700e7819f4eb598de523a877860b","kind":"commit","published_at":"2011-06-04T15:30:16.000Z","download_url":"https://codeload.github.com/solnic/virtus/tar.gz/v0.0.1","html_url":"https://github.com/solnic/virtus/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/solnic/virtus@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2026-04-08T14:08:46.640Z","dependent_packages_count":602,"downloads":125442989,"downloads_period":"total","dependent_repos_count":12589,"rankings":{"downloads":0.19402103009556093,"dependent_repos_count":0.3055273692309408,"dependent_packages_count":0.0758243106120583,"stargazers_count":0.34399705623264687,"forks_count":1.7623576900346785,"docker_downloads_count":0.2090743858788372,"average":0.4818003070141204},"purl":"pkg:gem/virtus","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/virtus","docker_dependents_count":187,"docker_downloads_count":552455328,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/virtus","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/virtus/dependencies","status":null,"funding_links":["https://github.com/sponsors/solnic"],"critical":true,"issue_metadata":{"last_synced_at":"2026-01-13T12:00:54.372Z","issues_count":69,"pull_requests_count":32,"avg_time_to_close_issue":35287941.4,"avg_time_to_close_pull_request":47308834.85714286,"issues_closed_count":20,"pull_requests_closed_count":14,"pull_request_authors_count":32,"issue_authors_count":64,"avg_comments_per_issue":3.63768115942029,"avg_comments_per_pull_request":2.3125,"merged_pull_requests_count":7,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/issues","maintainers":[{"login":"solnic","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/solnic"},{"login":"elskwid","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/elskwid"},{"login":"dkubb","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dkubb"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/virtus/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/virtus/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/virtus/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/virtus/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/virtus/codemeta","maintainers":[{"uuid":"56381","login":"envygeeks","name":null,"email":null,"url":null,"packages_count":32,"html_url":"https://rubygems.org/profiles/envygeeks","role":null,"created_at":"2022-11-09T09:56:00.373Z","updated_at":"2022-11-09T09:56:00.373Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/envygeeks/packages"},{"uuid":"43616","login":"solnic","name":null,"email":null,"url":null,"packages_count":110,"html_url":"https://rubygems.org/profiles/solnic","role":null,"created_at":"2022-11-09T09:56:00.343Z","updated_at":"2022-11-09T09:56:00.343Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/solnic/packages"},{"uuid":"61769","login":"CraigBuchek","name":null,"email":null,"url":null,"packages_count":8,"html_url":"https://rubygems.org/profiles/CraigBuchek","role":null,"created_at":"2022-11-09T09:56:00.366Z","updated_at":"2022-11-09T09:56:00.366Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/CraigBuchek/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":204882,"maintainers_count":68287,"namespaces_count":0,"keywords_count":0,"github":"rubygems","metadata":{"funded_packages_count":7260},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-04-03T06:42:17.024Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}},{"id":13407488,"name":"ruby-virtus","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/solnic/virtus","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/solnic/virtus","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-06T16:12:58.089Z","latest_release_published_at":"2026-02-06T16:12:58.089Z","latest_release_number":"2.0.0-2","last_synced_at":"2026-03-06T16:42:40.402Z","created_at":"2026-02-06T16:12:57.788Z","updated_at":"2026-03-06T16:42:40.403Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-virtus","install_command":"apt-get install ruby-virtus","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-virtus","standards_version":"4.6.2","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"gem2deb, ruby-axiom-types, ruby-bogus, ruby-coercible, ruby-descendants-tracker, ruby-dry-inflector, ruby-equalizer, ruby-inflecto, ruby-rspec, debhelper-compat (= 13)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":null,"dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{},"purl":"pkg:deb/ubuntu/ruby-virtus?arch=source\u0026distro=ubuntu-24.04","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-virtus","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-virtus","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-virtus/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-virtus/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-virtus/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-virtus/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-virtus/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-virtus/codemeta","maintainers":[],"registry":{"name":"ubuntu-24.04","url":"https://launchpad.net/ubuntu/noble","ecosystem":"ubuntu","default":true,"packages_count":37306,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"noble","funded_packages_count":161},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:45.928Z","updated_at":"2026-04-01T06:53:16.927Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/namespaces"}},{"id":13669719,"name":"ruby-virtus","ecosystem":"debian","description":null,"homepage":"https://github.com/solnic/virtus","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/solnic/virtus","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T12:48:04.852Z","latest_release_published_at":"2026-02-12T12:48:04.852Z","latest_release_number":"2.0.0-2","last_synced_at":"2026-03-14T18:12:15.187Z","created_at":"2026-02-12T12:48:04.640Z","updated_at":"2026-03-14T18:12:15.187Z","registry_url":"https://tracker.debian.org/pkg/ruby-virtus","install_command":"apt-get install ruby-virtus","documentation_url":"https://packages.debian.org/trixie/ruby-virtus","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-virtus","standards_version":"4.6.2","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"gem2deb, ruby-axiom-types, ruby-bogus, ruby-coercible, ruby-descendants-tracker, ruby-dry-inflector, ruby-equalizer, ruby-inflecto, ruby-rspec, debhelper-compat (= 13)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T12:48:05.482Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-virtus?arch=source\u0026distro=debian-13\u0026repository_url=https://packages.debian.org/trixie","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-virtus","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-virtus","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-virtus/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-virtus/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-virtus/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-virtus/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-virtus/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-virtus/codemeta","maintainers":[],"registry":{"name":"debian-13","url":"https://packages.debian.org/trixie","ecosystem":"debian","default":false,"packages_count":38024,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"debian","metadata":{"codename":"trixie","funded_packages_count":282},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:50.448Z","updated_at":"2026-03-31T06:41:13.743Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/namespaces"}}],"commits":{"id":3488,"full_name":"solnic/virtus","default_branch":"master","total_commits":1531,"total_committers":62,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":24.693548387096776,"dds":0.41214892227302413,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-04-08T14:11:47.818Z","last_synced_commit":"fce56bd6676d767f287e4051176d3d323e48902f","created_at":"2023-03-07T09:17:53.505Z","updated_at":"2026-04-08T14:09:46.661Z","committers":[{"name":"Piotr Solnica","email":"piotr.solnica@gmail.com","login":"solnic","count":900},{"name":"Dan Kubb","email":"dan.kubb@gmail.com","login":"dkubb","count":400},{"name":"Emmanuel Gomez","email":"emmanuel.gomez@gmail.com","login":"emmanuel","count":53},{"name":"Don Morrison","email":"elskwid@gmail.com","login":"elskwid","count":26},{"name":"Fabio Rehm","email":"fgrehm@gmail.com","login":"fgrehm","count":21},{"name":"Potapov Sergey","email":"blake131313@gmail.com","login":"greyblake","count":12},{"name":"Yves Senn","email":"yves.senn@gmail.com","login":"senny","count":11},{"name":"Markus Schirp","email":"mbj@seonic.net","login":null,"count":11},{"name":"Aaron Tinio","email":"aptinio@gmail.com","login":"aptinio","count":7},{"name":"Sergey Novik","email":"konnigun@gmail.com","login":"novikserg","count":5},{"name":"Rafael George","email":"george.rafael@gmail.com","login":"cored","count":5},{"name":"Piotr Szotkowski","email":"chastell@chastell.net","login":"chastell","count":4},{"name":"Mauro Asprea","email":"mauroasprea@gmail.com","login":"brutuscat","count":4},{"name":"Jordon Bedwell","email":"jordon@envygeeks.io","login":"envygeeks","count":4},{"name":"Jamie Gaskins","email":"jgaskins@gmail.com","login":"jgaskins","count":4},{"name":"Cyril Mougel","email":"cyril.mougel@gmail.com","login":"shingara","count":4},{"name":"Yves Senn","email":"yves.senn@garaio.com","login":null,"count":4},{"name":"Andrew Marshall","email":"andrew@johnandrewmarshall.com","login":"amarshall","count":3},{"name":"Postmodern","email":"postmodern.mod3@gmail.com","login":"postmodern","count":3},{"name":"Tomasz Pewiński","email":"pewniak747@gmail.com","login":"pewniak747","count":3},{"name":"Colin Jones","email":"trptcolin@gmail.com","login":"trptcolin","count":2},{"name":"Indrek Juhkam","email":"indrek@urgas.eu","login":"indrekj","count":2},{"name":"René Föhring","email":"rf@bamaru.de","login":"rrrene","count":2},{"name":"snusnu","email":"gamsnjaga@gmail.com","login":"snusnu","count":2},{"name":"Blanka Kulik","email":"kulik.blanka@gmail.com","login":null,"count":2},{"name":"Andrii Dmytrenko","email":"andrey@reevoo.com","login":null,"count":1},{"name":"Izumiya Keisuke","email":"izumiya.keisuke@moneyforward.co.jp","login":null,"count":1},{"name":"Kurtis Rainbolt-Greene","email":"kurtisrainboltgreene@gmail.com","login":null,"count":1},{"name":"Rich Grundy","email":"rich@27smiles.com","login":null,"count":1},{"name":"slainer68","email":"slainer68@gmail.com","login":null,"count":1},{"name":"Ryan Closner","email":"ryan@ryanclosner.com","login":null,"count":1},{"name":"xescuGC","email":"xescugil@gmail.com","login":"xescugc","count":1},{"name":"ntl","email":"nathanladd+github@gmail.com","login":"ntl","count":1},{"name":"codesnik","email":"aronaxis@gmail.com","login":"codesnik","count":1},{"name":"aarondcohen","email":"aarondcohen@gmail.com","login":"aarondcohen","count":1},{"name":"Stuart Nelson","email":"stuartnelson3@gmail.com","login":"stuartnelson3","count":1},{"name":"Steve Richert","email":"steve.richert@gmail.com","login":"laserlemon","count":1},{"name":"Simeon Manolov","email":"simeon.manolov@sumup.com","login":"smanolloff","count":1},{"name":"Saverio Trioni","email":"saverio.trioni@gmail.com","login":"rewritten","count":1},{"name":"RKushnir","email":"broilerster@gmail.com","login":"RKushnir","count":1},{"name":"Nuno Costa","email":"nuno.mmc@gmail.com","login":"nunommc","count":1},{"name":"Nick Sutterer","email":"apotonick@gmail.com","login":"apotonick","count":1},{"name":"Nando Vieira","email":"fnando.vieira@gmail.com","login":"fnando","count":1},{"name":"Matthew DuVall","email":"mduvall89@gmail.com","login":"mduvall","count":1},{"name":"Marcin Kulik","email":"marcin.kulik@gmail.com","login":"sickill","count":1},{"name":"Luke Fender","email":"lfender6445@gmail.com","login":"lfender6445","count":1},{"name":"Lucas Mazza","email":"lucastmazza@gmail.com","login":"lucasmazza","count":1},{"name":"Logan Hasson","email":"logan.hasson@gmail.com","login":"loganhasson","count":1},{"name":"Kris Leech","email":"kris.leech@gmail.com","login":"krisleech","count":1},{"name":"Julien Ammous","email":"schmurfy@gmail.com","login":"schmurfy","count":1},{"name":"Johnny","email":"jdongelmans","login":"jdongelmans","count":1},{"name":"Henk","email":"henk.van.der.veen@gmail.com","login":"Hampei","count":1},{"name":"Hendrik Kleinwaechter","email":"hendrik.kleinwaechter@gmail.com","login":"hendricius","count":1},{"name":"Gildo Fiorito","email":"fiorito.g@gmail.com","login":"gildo","count":1},{"name":"Ed Gibbs","email":"edward_gibbs@yahoo.com","login":"edgibbs","count":1},{"name":"Doug Hammond","email":"d.lakehammond@gmail.com","login":"dslh","count":1},{"name":"Craig Little","email":"craiglttl@gmail.com","login":"craiglittle","count":1},{"name":"Craig Buchek","email":"github@craigbuchek.com","login":"booch","count":1},{"name":"Chun-wei Kuo","email":"Dendoh@gmail.com","login":"Domon","count":1},{"name":"Chris Flipse","email":"cflipse@gmail.com","login":"cflipse","count":1},{"name":"Chris Corbyn","email":"chris@w3style.co.uk","login":"d11wtq","count":1},{"name":"Antoine Lyset","email":"antoinelyset+github@gmail.com","login":"antoinelyset","count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-09T00:00:23.197Z","repositories_count":6212692,"commits_count":914220673,"contributors_count":35302249,"owners_count":1143377,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"solnic/virtus","html_url":"https://github.com/solnic/virtus","last_synced_at":"2026-01-13T12:00:54.372Z","status":"error","issues_count":69,"pull_requests_count":32,"avg_time_to_close_issue":35287941.4,"avg_time_to_close_pull_request":47308834.85714286,"issues_closed_count":20,"pull_requests_closed_count":14,"pull_request_authors_count":32,"issue_authors_count":64,"avg_comments_per_issue":3.63768115942029,"avg_comments_per_pull_request":2.3125,"merged_pull_requests_count":7,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-05-12T19:03:33.783Z","updated_at":"2026-01-13T12:00:54.372Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/solnic%2Fvirtus/issues","issue_labels_count":{"feature":7,"suggestion":5,"question":3,"bug":3,"docs":2},"pull_request_labels_count":{"feature":1},"issue_author_associations_count":{"NONE":58,"CONTRIBUTOR":6,"OWNER":3,"COLLABORATOR":2},"pull_request_author_associations_count":{"NONE":24,"CONTRIBUTOR":9},"issue_authors":{"solnic":3,"postmodern":3,"neumachen":2,"bumble-bee-chuna":1,"lessless":1,"mattyb":1,"ifesdjeen":1,"swistaczek":1,"jayceef":1,"cesarjr":1,"tonobo":1,"pnomolos":1,"ErinCall":1,"mattwynne":1,"radvc":1,"ktimothy":1,"alaibe":1,"valscion":1,"tanapoln":1,"twhaples":1,"anoam":1,"jaimerson":1,"k3rni":1,"prasadsurase":1,"arianf":1,"joshco":1,"smanolloff":1,"dkubb":1,"murphyslaw":1,"Kukunin":1,"abaird":1,"techthumb":1,"sqrrrl":1,"csokol":1,"ravicious":1,"mirasrael":1,"jasonkarns":1,"simonhildebrandt":1,"tramuntanal":1,"jbodah":1,"endersonmaia":1,"elskwid":1,"jasonenglish":1,"rafayet-monon":1,"dredozubov":1,"chinshr":1,"mensfeld":1,"serixscorpio":1,"adz":1,"GreenFomo":1,"vladra":1,"doughsay":1,"herwinw":1,"Domon":1,"ivanovaleksey":1,"samstickland":1,"michaelachrisco":1,"askl56":1,"bijrails":1,"lessan":1,"codesnik":1,"stephenprater":1,"natesholland":1,"migu0":1},"pull_request_authors":{"JasonnnW3000":2,"nunommc":1,"xescugc":1,"fr33z3":1,"dslh":1,"Bartuz":1,"JuanitoFatas":1,"bradrobertson":1,"DamirSvrtan":1,"tracyloisel":1,"mltsy":1,"envygeeks":1,"JanDintel":1,"mherold":1,"syguer":1,"dblock":1,"natesholland":1,"danielbecker":1,"diogobenica":1,"knappe":1,"sickill":1,"eregon":1,"dylan-chong":1,"ktimothy":1,"aarondcohen":1,"MissingHandle":1,"postmodern":1,"mirasrael":1,"EdwardBetts":1,"smanolloff":1,"skippy":1,"lime":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-09T00:00:10.509Z","repositories_count":14156605,"issues_count":34509404,"pull_requests_count":112850910,"authors_count":11231349,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"solnic","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/solnic"},{"login":"elskwid","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/elskwid"},{"login":"dkubb","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dkubb"}],"active_maintainers":[]},"events":{"total":{"PullRequestEvent":1,"ForkEvent":1,"WatchEvent":8},"last_year":{"WatchEvent":2}},"keywords":[],"dependencies":[],"score":33.402791087237155,"created_at":"2024-12-15T21:38:06.993Z","updated_at":"2026-04-30T16:30:31.515Z","avatar_url":"https://github.com/solnic.png","language":"Ruby","monthly_downloads":0,"readme":"[gem]: https://rubygems.org/gems/virtus\n[travis]: https://travis-ci.org/solnic/virtus\n[codeclimate]: https://codeclimate.com/github/solnic/virtus\n[coveralls]: https://coveralls.io/r/solnic/virtus\n[inchpages]: http://inch-ci.org/github/solnic/virtus/\n\nDISCONTINUED\n------------\n\n\u003e Working on virtus taught me a lot about handling data in Ruby, which involves coercions, type safety and validation (amongst other things). Even though the project has been successful, and serving well for many people, I decided to build something better. As a result, [dry-types](https://github.com/dry-rb/dry-types), [dry-struct](https://github.com/dry-rb/dry-struct) and [dry-schema](https://github.com/dry-rb/dry-schema) were born. These projects should be considered as virtus' successors, with better separation of concerns and better features. If you're interested in a modern take on same problems that virtus tried to solve, please check out these projects!\n\u003e\n\u003e @solnic\n\nVirtus\n======\n\n[![Gem Version](https://badge.fury.io/rb/virtus.svg)][gem]\n[![Build Status](https://travis-ci.org/solnic/virtus.svg?branch=master)][travis]\n[![Code Climate](https://codeclimate.com/github/solnic/virtus/badges/gpa.svg)][codeclimate]\n[![Test Coverage](https://codeclimate.com/github/solnic/virtus/badges/coverage.svg)][codeclimate]\n[![Inline docs](http://inch-ci.org/github/solnic/virtus.svg?branch=master)][inchpages]\n\nVirtus allows you to define attributes on classes, modules or class instances with\noptional information about types, reader/writer method visibility and coercion\nbehavior. It supports a lot of coercions and advanced mapping of embedded objects\nand collections.\n\nYou can use it in many different contexts like:\n\n* Input parameter sanitization and coercion in web applications\n* Mapping JSON to domain objects\n* Encapsulating data-access in Value Objects\n* Domain model prototyping\n\nAnd probably more.\n\nInstallation\n------------\n\n``` terminal\n$ gem install virtus\n```\n\nor in your **Gemfile**\n\n``` ruby\ngem 'virtus'\n```\n\nExamples\n--------\n\n### Using Virtus with Classes\n\nYou can create classes extended with Virtus and define attributes:\n\n``` ruby\nclass User\n  include Virtus.model\n\n  attribute :name, String\n  attribute :age, Integer\n  attribute :birthday, DateTime\nend\n\nuser = User.new(:name =\u003e 'Piotr', :age =\u003e 31)\nuser.attributes # =\u003e { :name =\u003e \"Piotr\", :age =\u003e 31, :birthday =\u003e nil }\n\nuser.name # =\u003e \"Piotr\"\n\nuser.age = '31' # =\u003e 31\nuser.age.class # =\u003e Fixnum\n\nuser.birthday = 'November 18th, 1983' # =\u003e #\u003cDateTime: 1983-11-18T00:00:00+00:00 (4891313/2,0/1,2299161)\u003e\n\n# mass-assignment\nuser.attributes = { :name =\u003e 'Jane', :age =\u003e 21 }\nuser.name # =\u003e \"Jane\"\nuser.age  # =\u003e 21\n```\n\n### Cherry-picking extensions\n\n``` ruby\n# include attribute DSL + constructor + mass-assignment\nclass User\n  include Virtus.model\n\n  attribute :name, String\nend\n\nuser = User.new(:name =\u003e 'Piotr')\nuser.attributes = { :name =\u003e 'John' }\nuser.attributes\n# =\u003e {:name =\u003e 'John'}\n\n# include attribute DSL + constructor\nclass User\n  include Virtus.model(:mass_assignment =\u003e false)\n\n  attribute :name, String\nend\n\nUser.new(:name =\u003e 'Piotr')\n\n# include just the attribute DSL\nclass User\n  include Virtus.model(:constructor =\u003e false, :mass_assignment =\u003e false)\n\n  attribute :name, String\nend\n\nuser = User.new\nuser.name = 'Piotr'\n```\n\n### Using Virtus with Modules\n\nYou can create modules extended with Virtus and define attributes for later\ninclusion in your classes:\n\n```ruby\nmodule Name\n  include Virtus.module\n\n  attribute :name, String\nend\n\nmodule Age\n  include Virtus.module(:coerce =\u003e false)\n\n  attribute :age, Integer\nend\n\nclass User\n  include Name, Age\nend\n\nuser = User.new(:name =\u003e 'John', :age =\u003e 30)\n```\n\n### Dynamically Extending Instances\n\nIt's also possible to dynamically extend an object with Virtus:\n\n```ruby\nclass User\n  # nothing here\nend\n\nuser = User.new\nuser.extend(Virtus.model)\nuser.attribute :name, String\nuser.name = 'John'\nuser.name # =\u003e 'John'\n```\n\n### Default Values\n\n``` ruby\nclass Page\n  include Virtus.model\n\n  attribute :title, String\n\n  # default from a singleton value (integer in this case)\n  attribute :views, Integer, :default =\u003e 0\n\n  # default from a singleton value (boolean in this case)\n  attribute :published, Boolean, :default =\u003e false\n\n  # default from a callable object (proc in this case)\n  attribute :slug, String, :default =\u003e lambda { |page, attribute| page.title.downcase.gsub(' ', '-') }\n\n  # default from a method name as symbol\n  attribute :editor_title, String,  :default =\u003e :default_editor_title\n\n  def default_editor_title\n    published? ? title : \"UNPUBLISHED: #{title}\"\n  end\nend\n\npage = Page.new(:title =\u003e 'Virtus README')\npage.slug         # =\u003e 'virtus-readme'\npage.views        # =\u003e 0\npage.published    # =\u003e false\npage.editor_title # =\u003e \"UNPUBLISHED: Virtus README\"\n\npage.views = 10\npage.views                    # =\u003e 10\npage.reset_attribute(:views)  # =\u003e 0\npage.views                    # =\u003e 0\n```\n\n### Default values on dynamically extended instances\n\nThis requires you to set `:lazy` option because default values are set in the\nconstructor if it's set to false (which is the default setting):\n\n``` ruby\nUser = Class.new\nuser = User.new\nuser.extend(Virtus.model)\nuser.attribute :name, String, default: 'jane', lazy: true\nuser.name # =\u003e \"jane\"\n```\n\n### Embedded Value\n\n``` ruby\nclass City\n  include Virtus.model\n\n  attribute :name, String\nend\n\nclass Address\n  include Virtus.model\n\n  attribute :street,  String\n  attribute :zipcode, String\n  attribute :city,    City\nend\n\nclass User\n  include Virtus.model\n\n  attribute :name,    String\n  attribute :address, Address\nend\n\nuser = User.new(:address =\u003e {\n  :street =\u003e 'Street 1/2', :zipcode =\u003e '12345', :city =\u003e { :name =\u003e 'NYC' } })\n\nuser.address.street # =\u003e \"Street 1/2\"\nuser.address.city.name # =\u003e \"NYC\"\n```\n\n### Collection Member Coercions\n\n``` ruby\n# Support \"primitive\" classes\nclass Book\n  include Virtus.model\n\n  attribute :page_numbers, Array[Integer]\nend\n\nbook = Book.new(:page_numbers =\u003e %w[1 2 3])\nbook.page_numbers # =\u003e [1, 2, 3]\n\n# Support EmbeddedValues, too!\nclass Address\n  include Virtus.model\n\n  attribute :address,     String\n  attribute :locality,    String\n  attribute :region,      String\n  attribute :postal_code, String\nend\n\nclass PhoneNumber\n  include Virtus.model\n\n  attribute :number, String\nend\n\nclass User\n  include Virtus.model\n\n  attribute :phone_numbers, Array[PhoneNumber]\n  attribute :addresses,     Set[Address]\nend\n\nuser = User.new(\n  :phone_numbers =\u003e [\n    { :number =\u003e '212-555-1212' },\n    { :number =\u003e '919-444-3265' } ],\n  :addresses =\u003e [\n    { :address =\u003e '1234 Any St.', :locality =\u003e 'Anytown', :region =\u003e \"DC\", :postal_code =\u003e \"21234\" } ])\n\nuser.phone_numbers # =\u003e [#\u003cPhoneNumber:0x007fdb2d3bef88 @number=\"212-555-1212\"\u003e, #\u003cPhoneNumber:0x007fdb2d3beb00 @number=\"919-444-3265\"\u003e]\n\nuser.addresses # =\u003e #\u003cSet: {#\u003cAddress:0x007fdb2d3be448 @address=\"1234 Any St.\", @locality=\"Anytown\", @region=\"DC\", @postal_code=\"21234\"\u003e}\u003e\n```\n\n### Hash attributes coercion\n\n``` ruby\nclass Package\n  include Virtus.model\n\n  attribute :dimensions, Hash[Symbol =\u003e Float]\nend\n\npackage = Package.new(:dimensions =\u003e { 'width' =\u003e \"2.2\", :height =\u003e 2, \"length\" =\u003e 4.5 })\npackage.dimensions # =\u003e { :width =\u003e 2.2, :height =\u003e 2.0, :length =\u003e 4.5 }\n```\n\n### IMPORTANT note about Boolean type\n\nBe aware that some libraries may do a terrible thing and define a global Boolean\nconstant which breaks virtus' constant type lookup, if you see issues with the\nboolean type you can workaround it like that:\n\n``` ruby\nclass User\n  include Virtus.model\n\n  attribute :admin, Axiom::Types::Boolean\nend\n```\n\nThis will be improved in Virtus 2.0.\n\n### IMPORTANT note about member coercions\n\nVirtus performs coercions only when a value is being assigned. If you mutate the value later on using its own\ninterfaces then coercion won't be triggered.\n\nHere's an example:\n\n``` ruby\nclass Book\n  include Virtus.model\n\n  attribute :title, String\nend\n\nclass Library\n  include Virtus.model\n\n  attribute :books, Array[Book]\nend\n\nlibrary = Library.new\n\n# This will coerce Hash to a Book instance\nlibrary.books = [ { :title =\u003e 'Introduction to Virtus' } ]\n\n# This WILL NOT COERCE the value because you mutate the books array with Array#\u003c\u003c\nlibrary.books \u003c\u003c { :title =\u003e 'Another Introduction to Virtus' }\n```\n\nA suggested solution to this problem would be to introduce your own class instead of using Array and implement\nmutation methods that perform coercions. For example:\n\n``` ruby\nclass Book\n  include Virtus.model\n\n  attribute :title, String\nend\n\nclass BookCollection \u003c Array\n  def \u003c\u003c(book)\n   if book.kind_of?(Hash)\n    super(Book.new(book))\n   else\n     super\n   end\n  end\nend\n\nclass Library\n  include Virtus.model\n\n  attribute :books, BookCollection[Book]\nend\n\nlibrary = Library.new\nlibrary.books \u003c\u003c { :title =\u003e 'Another Introduction to Virtus' }\n```\n\n### Value Objects\n\n``` ruby\nclass GeoLocation\n  include Virtus.value_object\n\n  values do\n    attribute :latitude,  Float\n    attribute :longitude, Float\n  end\nend\n\nclass Venue\n  include Virtus.value_object\n\n  values do\n    attribute :name,     String\n    attribute :location, GeoLocation\n  end\nend\n\nvenue = Venue.new(\n  :name     =\u003e 'Pub',\n  :location =\u003e { :latitude =\u003e 37.160317, :longitude =\u003e -98.437500 })\n\nvenue.location.latitude # =\u003e 37.160317\nvenue.location.longitude # =\u003e -98.4375\n\n# Supports object's equality\n\nvenue_other = Venue.new(\n  :name     =\u003e 'Other Pub',\n  :location =\u003e { :latitude =\u003e 37.160317, :longitude =\u003e -98.437500 })\n\nvenue.location === venue_other.location # =\u003e true\n```\n\n### Custom Coercions\n\n``` ruby\nrequire 'json'\n\nclass Json \u003c Virtus::Attribute\n  def coerce(value)\n    value.is_a?(::Hash) ? value : JSON.parse(value)\n  end\nend\n\nclass User\n  include Virtus.model\n\n  attribute :info, Json, default: {}\nend\n\nuser = User.new\nuser.info = '{\"email\":\"john@domain.com\"}' # =\u003e {\"email\"=\u003e\"john@domain.com\"}\nuser.info.class # =\u003e Hash\n\n# With a custom attribute encapsulating coercion-specific configuration\nclass NoisyString \u003c Virtus::Attribute\n  def coerce(value)\n    value.to_s.upcase\n  end\nend\n\nclass User\n  include Virtus.model\n\n  attribute :scream, NoisyString\nend\n\nuser = User.new(:scream =\u003e 'hello world!')\nuser.scream # =\u003e \"HELLO WORLD!\"\n```\n\n### Private Attributes\n\n``` ruby\nclass User\n  include Virtus.model\n\n  attribute :unique_id, String, :writer =\u003e :private\n\n  def set_unique_id(id)\n    self.unique_id = id\n  end\nend\n\nuser = User.new(:unique_id =\u003e '1234-1234')\nuser.unique_id # =\u003e nil\n\nuser.unique_id = '1234-1234' # =\u003e NoMethodError: private method `unique_id='\n\nuser.set_unique_id('1234-1234')\nuser.unique_id # =\u003e '1234-1234'\n```\n\n### Overriding setters\n\n``` ruby\nclass User\n  include Virtus.model\n\n  attribute :name, String\n\n  def name=(new_name)\n    custom_name = nil\n    if new_name == \"Godzilla\"\n      custom_name = \"Can't tell\"\n    end\n    super custom_name || new_name\n  end\nend\n\nuser = User.new(name: \"Frank\")\nuser.name # =\u003e 'Frank'\n\nuser = User.new(name: \"Godzilla\")\nuser.name # =\u003e 'Can't tell'\n\n```\n\n## Strict Coercion Mode\n\nBy default Virtus returns the input value even when it couldn't coerce it to the expected type.\nIf you want to catch such cases in a noisy way you can use the strict mode in which\nVirtus raises an exception when it failed to coerce an input value.\n\n``` ruby\nclass User\n  include Virtus.model(:strict =\u003e true)\n\n  attribute :admin, Boolean\nend\n\n# this will raise an error\nUser.new :admin =\u003e \"can't really say if true or false\"\n```\n\n## Nullify Blank Strings Mode\n\nIf you want to replace empty Strings with `nil` values (since they can't be\ncoerced into the expected type), you can use the `:nullify_blank` option.\n\n``` ruby\nclass User\n  include Virtus.model(:nullify_blank =\u003e true)\n\n  attribute :birthday, Date\nend\n\nUser.new(:birthday =\u003e \"\").birthday # =\u003e nil\n```\n\n\n## Building modules with custom configuration\n\nYou can also build Virtus modules that contain their own configuration.\n\n```ruby\nYupNopeBooleans = Virtus.model { |mod|\n  mod.coerce = true\n  mod.coercer.config.string.boolean_map = { 'nope' =\u003e false, 'yup' =\u003e true }\n}\n\nclass User\n  include YupNopeBooleans\n\n  attribute :name, String\n  attribute :admin, Boolean\nend\n\n# Or just include the module straight away ...\nclass User\n  include Virtus.model(:coerce =\u003e false)\n\n  attribute :name, String\n  attribute :admin, Boolean\nend\n```\n\n## Attribute Finalization and Circular Dependencies\n\nIf a type references another type which happens to not be available yet you need\nto use lazy-finalization of attributes and finalize virtus manually after all\ntypes have been already loaded:\n\n``` ruby\n# in blog.rb\nclass Blog\n  include Virtus.model(:finalize =\u003e false)\n\n  attribute :posts, Array['Post']\nend\n\n# in post.rb\nclass Post\n  include Virtus.model(:finalize =\u003e false)\n\n  attribute :blog, 'Blog'\nend\n\n# after loading both files just do:\nVirtus.finalize\n\n# constants will be resolved:\nBlog.attribute_set[:posts].member_type.primitive # =\u003e Post\nPost.attribute_set[:blog].type.primitive # =\u003e Blog\n```\n\n## Plugins / Extensions\n\nList of plugins/extensions that add features to Virtus:\n\n* [virtus-localized](https://github.com/XescuGC/virtus-localized): Localize the attributes\n* [virtus-relations](https://github.com/smanolloff/virtus-relations): Add relations to Virtus objects\n\nRuby version support\n--------------------\n\nVirtus is known to work correctly with the following rubies:\n\n* 1.9.3\n* 2.0.0\n* 2.1.2\n* jruby\n* (probably) rbx\n\nCredits\n-------\n\n* Dan Kubb ([dkubb](https://github.com/dkubb))\n* Chris Corbyn ([d11wtq](https://github.com/d11wtq))\n* Emmanuel Gomez ([emmanuel](https://github.com/emmanuel))\n* Fabio Rehm ([fgrehm](https://github.com/fgrehm))\n* Ryan Closner ([rclosner](https://github.com/rclosner))\n* Markus Schirp ([mbj](https://github.com/mbj))\n* Yves Senn ([senny](https://github.com/senny))\n\nContributing\n-------------\n\n* Fork the project.\n* Make your feature addition or bug fix.\n* Add tests for it. This is important so I don't break it in a\n  future version unintentionally.\n* Commit, do not mess with Rakefile or version\n  (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)\n* Send me a pull request. Bonus points for topic branches.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["activerecord","activejob","mvc","rubygems","rack","dry-rb","sinatra","rspec","dsl","feature-flag"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/102","html_url":"https://ruby.ecosyste.ms/projects/102"}