forceupdate 0.1.0__tar.gz → 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {forceupdate-0.1.0 → forceupdate-1.0.0}/.gitignore +3 -0
- forceupdate-1.0.0/PKG-INFO +192 -0
- forceupdate-1.0.0/README.md +152 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/pyproject.toml +12 -3
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/__main__.py +2 -2
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/advisories/__init__.py +4 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/advisories/osv.py +10 -3
- forceupdate-1.0.0/src/forceupdate/advisories/packagist.py +257 -0
- forceupdate-1.0.0/src/forceupdate/checks/__init__.py +66 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/checks/base.py +33 -3
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/checks/deprecated.py +45 -10
- forceupdate-1.0.0/src/forceupdate/checks/eol.py +541 -0
- forceupdate-1.0.0/src/forceupdate/checks/outdated.py +330 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/checks/priority.py +17 -8
- forceupdate-1.0.0/src/forceupdate/checks/runtimes.py +137 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/checks/vulns.py +94 -6
- forceupdate-1.0.0/src/forceupdate/cli.py +527 -0
- forceupdate-1.0.0/src/forceupdate/config.py +564 -0
- forceupdate-1.0.0/src/forceupdate/detect/code.py +68 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/detect/languages.py +10 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/detect/manifests.py +185 -19
- forceupdate-1.0.0/src/forceupdate/endoflife.py +268 -0
- forceupdate-1.0.0/src/forceupdate/engine.py +815 -0
- forceupdate-1.0.0/src/forceupdate/forges/__init__.py +169 -0
- forceupdate-1.0.0/src/forceupdate/forges/accounts.py +486 -0
- forceupdate-1.0.0/src/forceupdate/forges/base.py +426 -0
- forceupdate-1.0.0/src/forceupdate/forges/bitbucket.py +1068 -0
- forceupdate-1.0.0/src/forceupdate/forges/git.py +540 -0
- forceupdate-1.0.0/src/forceupdate/forges/github.py +1003 -0
- forceupdate-1.0.0/src/forceupdate/forges/gitlab.py +925 -0
- forceupdate-1.0.0/src/forceupdate/managed.py +330 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/models.py +267 -28
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/net/__init__.py +2 -1
- forceupdate-1.0.0/src/forceupdate/net/auth.py +199 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/net/cache.py +65 -5
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/net/http.py +163 -22
- forceupdate-1.0.0/src/forceupdate/parsers/__init__.py +96 -0
- forceupdate-1.0.0/src/forceupdate/parsers/code.py +695 -0
- forceupdate-1.0.0/src/forceupdate/parsers/go.py +651 -0
- forceupdate-1.0.0/src/forceupdate/parsers/gradle.py +1166 -0
- forceupdate-1.0.0/src/forceupdate/parsers/gradle_spans.py +139 -0
- forceupdate-1.0.0/src/forceupdate/parsers/imports.py +475 -0
- forceupdate-1.0.0/src/forceupdate/parsers/java.py +35 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/parsers/lockfiles.py +63 -9
- forceupdate-1.0.0/src/forceupdate/parsers/maven.py +633 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/parsers/npm.py +187 -54
- forceupdate-1.0.0/src/forceupdate/parsers/nuget.py +1185 -0
- forceupdate-1.0.0/src/forceupdate/parsers/php.py +447 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/parsers/python.py +451 -4
- forceupdate-1.0.0/src/forceupdate/parsers/ruby.py +979 -0
- forceupdate-1.0.0/src/forceupdate/parsers/ruby_spans.py +292 -0
- forceupdate-1.0.0/src/forceupdate/parsers/runtimes.py +1000 -0
- forceupdate-1.0.0/src/forceupdate/parsers/rust.py +789 -0
- forceupdate-1.0.0/src/forceupdate/parsers/xml_spans.py +219 -0
- forceupdate-1.0.0/src/forceupdate/parsers/yaml_spans.py +99 -0
- forceupdate-1.0.0/src/forceupdate/preferences.py +237 -0
- forceupdate-1.0.0/src/forceupdate/processes.py +131 -0
- forceupdate-1.0.0/src/forceupdate/registries/__init__.py +106 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/registries/base.py +86 -16
- forceupdate-1.0.0/src/forceupdate/registries/composer.py +143 -0
- forceupdate-1.0.0/src/forceupdate/registries/crates.py +112 -0
- forceupdate-1.0.0/src/forceupdate/registries/goproxy.py +239 -0
- forceupdate-1.0.0/src/forceupdate/registries/maven.py +209 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/registries/npm.py +13 -0
- forceupdate-1.0.0/src/forceupdate/registries/nuget.py +241 -0
- forceupdate-1.0.0/src/forceupdate/registries/packagist.py +143 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/registries/pypi.py +107 -1
- forceupdate-1.0.0/src/forceupdate/registries/rubygems.py +154 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/report/__init__.py +120 -15
- forceupdate-1.0.0/src/forceupdate/report/json.py +70 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/report/markdown.py +39 -22
- forceupdate-1.0.0/src/forceupdate/report/spreadsheet.py +124 -0
- forceupdate-1.0.0/src/forceupdate/report/synthesis.py +79 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/report/terminal.py +209 -19
- forceupdate-1.0.0/src/forceupdate/routing/__init__.py +254 -0
- forceupdate-1.0.0/src/forceupdate/routing/cargo.py +406 -0
- forceupdate-1.0.0/src/forceupdate/routing/composer.py +200 -0
- forceupdate-1.0.0/src/forceupdate/routing/go.py +204 -0
- forceupdate-1.0.0/src/forceupdate/routing/maven.py +449 -0
- forceupdate-1.0.0/src/forceupdate/routing/netrc.py +88 -0
- forceupdate-1.0.0/src/forceupdate/routing/npm.py +315 -0
- forceupdate-1.0.0/src/forceupdate/routing/nuget.py +361 -0
- forceupdate-1.0.0/src/forceupdate/routing/python.py +529 -0
- forceupdate-1.0.0/src/forceupdate/routing/ruby.py +386 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/sources/base.py +29 -0
- forceupdate-1.0.0/src/forceupdate/sources/forge.py +263 -0
- forceupdate-1.0.0/src/forceupdate/sources/local.py +368 -0
- forceupdate-1.0.0/src/forceupdate/update/__init__.py +10 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/update/constraints.py +214 -20
- forceupdate-1.0.0/src/forceupdate/update/forge.py +481 -0
- forceupdate-1.0.0/src/forceupdate/update/git.py +83 -0
- forceupdate-1.0.0/src/forceupdate/update/local.py +116 -0
- forceupdate-1.0.0/src/forceupdate/update/lockfiles.py +3007 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/update/planner.py +353 -30
- forceupdate-1.0.0/src/forceupdate/update/project_npm.py +234 -0
- forceupdate-1.0.0/src/forceupdate/update/writers/__init__.py +683 -0
- forceupdate-1.0.0/src/forceupdate/update/writers/base.py +75 -0
- forceupdate-1.0.0/src/forceupdate/update/writers/go.py +38 -0
- forceupdate-1.0.0/src/forceupdate/update/writers/java.py +78 -0
- forceupdate-1.0.0/src/forceupdate/update/writers/npm.py +108 -0
- forceupdate-1.0.0/src/forceupdate/update/writers/nuget.py +233 -0
- forceupdate-1.0.0/src/forceupdate/update/writers/php.py +19 -0
- forceupdate-1.0.0/src/forceupdate/update/writers/python.py +129 -0
- forceupdate-1.0.0/src/forceupdate/update/writers/ruby.py +90 -0
- forceupdate-1.0.0/src/forceupdate/update/writers/rust.py +88 -0
- forceupdate-1.0.0/src/forceupdate/userfiles.py +115 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/versions/__init__.py +14 -2
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/versions/base.py +48 -2
- forceupdate-1.0.0/src/forceupdate/versions/cargo.py +314 -0
- forceupdate-1.0.0/src/forceupdate/versions/composer.py +666 -0
- forceupdate-1.0.0/src/forceupdate/versions/go.py +184 -0
- forceupdate-1.0.0/src/forceupdate/versions/maven.py +482 -0
- forceupdate-1.0.0/src/forceupdate/versions/nuget.py +612 -0
- forceupdate-1.0.0/src/forceupdate/versions/rubygems.py +256 -0
- forceupdate-1.0.0/src/forceupdate/web/__init__.py +21 -0
- forceupdate-1.0.0/src/forceupdate/web/app.py +223 -0
- forceupdate-1.0.0/src/forceupdate/web/connections.py +292 -0
- forceupdate-1.0.0/src/forceupdate/web/jobs.py +720 -0
- forceupdate-1.0.0/src/forceupdate/web/openapi.json +7457 -0
- forceupdate-1.0.0/src/forceupdate/web/openapi.py +104 -0
- forceupdate-1.0.0/src/forceupdate/web/picker.py +133 -0
- forceupdate-1.0.0/src/forceupdate/web/preferences.py +103 -0
- forceupdate-1.0.0/src/forceupdate/web/proposals.py +475 -0
- forceupdate-1.0.0/src/forceupdate/web/repositories.py +602 -0
- forceupdate-1.0.0/src/forceupdate/web/routes/__init__.py +86 -0
- forceupdate-1.0.0/src/forceupdate/web/routes/accounts.py +399 -0
- forceupdate-1.0.0/src/forceupdate/web/routes/files.py +95 -0
- forceupdate-1.0.0/src/forceupdate/web/routes/fs.py +183 -0
- forceupdate-1.0.0/src/forceupdate/web/routes/oauth.py +89 -0
- forceupdate-1.0.0/src/forceupdate/web/routes/proposals.py +80 -0
- forceupdate-1.0.0/src/forceupdate/web/routes/repositories.py +109 -0
- forceupdate-1.0.0/src/forceupdate/web/routes/scans.py +144 -0
- forceupdate-1.0.0/src/forceupdate/web/routes/settings.py +80 -0
- forceupdate-1.0.0/src/forceupdate/web/routes/updates.py +170 -0
- forceupdate-1.0.0/src/forceupdate/web/schemas.py +1103 -0
- forceupdate-1.0.0/src/forceupdate/web/security.py +212 -0
- forceupdate-1.0.0/src/forceupdate/web/sse.py +59 -0
- forceupdate-1.0.0/src/forceupdate/web/static/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2 +0 -0
- forceupdate-1.0.0/src/forceupdate/web/static/assets/index-BC2Th5dh.js +13 -0
- forceupdate-1.0.0/src/forceupdate/web/static/assets/index-BjeR_JJV.css +2 -0
- forceupdate-1.0.0/src/forceupdate/web/static/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- forceupdate-1.0.0/src/forceupdate/web/static/favicon.svg +1 -0
- forceupdate-1.0.0/src/forceupdate/web/static/index.html +17 -0
- forceupdate-1.0.0/src/forceupdate/web/static/licenses/LICENSE-lucide.txt +43 -0
- forceupdate-1.0.0/src/forceupdate/web/static/licenses/LICENSE-simple-icons.txt +10 -0
- forceupdate-1.0.0/src/forceupdate/web/static/licenses/OFL-IBM-Plex-Sans.txt +93 -0
- forceupdate-1.0.0/src/forceupdate/web/static/licenses/OFL-JetBrains-Mono.txt +93 -0
- forceupdate-1.0.0/src/forceupdate/web/static/theme.js +14 -0
- forceupdate-1.0.0/src/forceupdate/web/workdirs.py +123 -0
- forceupdate-1.0.0/tests/conftest.py +609 -0
- forceupdate-1.0.0/tests/e2e_server.py +409 -0
- forceupdate-1.0.0/tests/fake_bitbucket.py +545 -0
- forceupdate-1.0.0/tests/fake_bundler.py +97 -0
- forceupdate-1.0.0/tests/fake_forge.py +469 -0
- forceupdate-1.0.0/tests/fake_gitlab.py +493 -0
- forceupdate-1.0.0/tests/fixtures/crates/anyhow.jsonl +106 -0
- forceupdate-1.0.0/tests/fixtures/crates/log.jsonl +64 -0
- forceupdate-1.0.0/tests/fixtures/crates/rand.jsonl +94 -0
- forceupdate-1.0.0/tests/fixtures/crates/regex.jsonl +169 -0
- forceupdate-1.0.0/tests/fixtures/crates/smallvec.jsonl +86 -0
- forceupdate-1.0.0/tests/fixtures/crates/time.jsonl +135 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/angularjs.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/django.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/dotnet.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/dotnetfx.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/eclipse-temurin.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/electron.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/go.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/guzzle.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/log4j.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/nestjs.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/nodejs.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/numpy.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/php.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/python.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/react.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/ruby.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/spring-boot.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/spring-framework.json +1 -0
- forceupdate-1.0.0/tests/fixtures/endoflife/symfony.json +1 -0
- forceupdate-1.0.0/tests/fixtures/goproxy/github.com__BurntSushi__toml.json +17 -0
- forceupdate-1.0.0/tests/fixtures/goproxy/github.com__davecgh__go-spew.json +17 -0
- forceupdate-1.0.0/tests/fixtures/goproxy/github.com__go-chi__chi.json +37 -0
- forceupdate-1.0.0/tests/fixtures/goproxy/github.com__golang-jwt__jwt__v4.json +22 -0
- forceupdate-1.0.0/tests/fixtures/goproxy/github.com__golang__protobuf.json +17 -0
- forceupdate-1.0.0/tests/fixtures/goproxy/github.com__google__uuid.json +17 -0
- forceupdate-1.0.0/tests/fixtures/goproxy/github.com__mattn__go-sqlite3.json +17 -0
- forceupdate-1.0.0/tests/fixtures/goproxy/github.com__pmezard__go-difflib.json +17 -0
- forceupdate-1.0.0/tests/fixtures/goproxy/github.com__russross__blackfriday.json +22 -0
- forceupdate-1.0.0/tests/fixtures/goproxy/github.com__stretchr__testify.json +17 -0
- forceupdate-1.0.0/tests/fixtures/goproxy/golang.org__x__exp.json +22 -0
- forceupdate-1.0.0/tests/fixtures/goproxy/golang.org__x__text.json +17 -0
- forceupdate-1.0.0/tests/fixtures/goproxy/gopkg.in__yaml.v3.json +17 -0
- forceupdate-1.0.0/tests/fixtures/maven/androidx.annotation__annotation.xml +77 -0
- forceupdate-1.0.0/tests/fixtures/maven/com.fasterxml.jackson.core__jackson-databind.xml +250 -0
- forceupdate-1.0.0/tests/fixtures/maven/com.fasterxml.jackson__jackson-bom.xml +171 -0
- forceupdate-1.0.0/tests/fixtures/maven/com.github.ben-manes.versions.xml +14 -0
- forceupdate-1.0.0/tests/fixtures/maven/com.google.guava__guava.xml +172 -0
- forceupdate-1.0.0/tests/fixtures/maven/com.squareup.okhttp3__logging-interceptor.xml +122 -0
- forceupdate-1.0.0/tests/fixtures/maven/com.squareup.okhttp3__okhttp.xml +122 -0
- forceupdate-1.0.0/tests/fixtures/maven/javax.servlet__javax.servlet-api.xml +32 -0
- forceupdate-1.0.0/tests/fixtures/maven/junit__junit.xml +44 -0
- forceupdate-1.0.0/tests/fixtures/maven/org.apache.commons__commons-text.xml +30 -0
- forceupdate-1.0.0/tests/fixtures/maven/org.apache.logging.log4j__log4j-api.xml +89 -0
- forceupdate-1.0.0/tests/fixtures/maven/org.apache.logging.log4j__log4j-core.xml +90 -0
- forceupdate-1.0.0/tests/fixtures/maven/org.apache.maven.plugins__maven-compiler-plugin.xml +52 -0
- forceupdate-1.0.0/tests/fixtures/maven/org.apache.maven.plugins__maven-surefire-plugin.xml +85 -0
- forceupdate-1.0.0/tests/fixtures/maven/org.apache.maven.plugins__maven-war-plugin.xml +39 -0
- forceupdate-1.0.0/tests/fixtures/maven/org.apache__apache.xml +52 -0
- forceupdate-1.0.0/tests/fixtures/maven/org.mockito__mockito-core.xml +362 -0
- forceupdate-1.0.0/tests/fixtures/maven/org.springframework.boot.xml +14 -0
- forceupdate-1.0.0/tests/fixtures/maven/org.springframework__spring-webmvc.xml +349 -0
- forceupdate-1.0.0/tests/fixtures/maven/org.yaml__snakeyaml.xml +50 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/androidx.annotation__annotation__1.11.0.pom +58 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/com.fasterxml.jackson.core__jackson-databind__2.22.4.pom +608 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/com.fasterxml.jackson__jackson-bom__2.13.0.pom +423 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/com.fasterxml.jackson__jackson-bom__2.22.4.pom +490 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/com.fasterxml.jackson__jackson-parent__2.13.pom +191 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/com.fasterxml__oss-parent__43.pom +660 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/com.google.guava__guava__33.8.0-jre.pom +252 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/com.squareup.okhttp3__logging-interceptor__5.5.1.pom +46 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/com.squareup.okhttp3__okhttp__5.5.1.pom +47 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/javax.servlet__javax.servlet-api__4.0.1.pom +375 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/junit__junit__4.13.2.pom +633 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/org.apache.commons__commons-text__1.15.0.pom +639 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/org.apache.logging.log4j__log4j-api__2.26.1.pom +117 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/org.apache.logging.log4j__log4j-core__2.26.1.pom +248 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/org.apache.maven.plugins__maven-compiler-plugin__3.16.0.pom +277 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/org.apache.maven.plugins__maven-surefire-plugin__3.6.1.pom +138 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/org.apache.maven.plugins__maven-war-plugin__3.5.1.pom +293 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/org.apache__apache__23.pom +492 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/org.apache__apache__40.pom +656 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/org.mockito__mockito-core__5.24.0.pom +83 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/org.springframework__spring-webmvc__7.0.10.pom +80 -0
- forceupdate-1.0.0/tests/fixtures/maven/poms/org.yaml__snakeyaml__2.7.pom +518 -0
- forceupdate-1.0.0/tests/fixtures/npm/p-limit.json +1 -0
- forceupdate-1.0.0/tests/fixtures/nuget/Microsoft.AspNetCore.Http.json.gz +0 -0
- forceupdate-1.0.0/tests/fixtures/nuget/Microsoft.NET.Test.Sdk.json.gz +0 -0
- forceupdate-1.0.0/tests/fixtures/nuget/Microsoft.SourceLink.GitHub.json.gz +0 -0
- forceupdate-1.0.0/tests/fixtures/nuget/NUnit.json.gz +0 -0
- forceupdate-1.0.0/tests/fixtures/nuget/Newtonsoft.Json.json.gz +0 -0
- forceupdate-1.0.0/tests/fixtures/nuget/Serilog.json.gz +0 -0
- forceupdate-1.0.0/tests/fixtures/nuget/StyleCop.Analyzers.json.gz +0 -0
- forceupdate-1.0.0/tests/fixtures/nuget/System.Text.Encodings.Web.json.gz +0 -0
- forceupdate-1.0.0/tests/fixtures/nuget/log4net.json.gz +0 -0
- forceupdate-1.0.0/tests/fixtures/nuget/xunit.json.gz +0 -0
- forceupdate-1.0.0/tests/fixtures/nuget/xunit.runner.visualstudio.json.gz +0 -0
- forceupdate-1.0.0/tests/fixtures/osv/queries.json +1316 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-22f2-v57c-j9cx.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-25mq-v84q-4j7r.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-269g-pwp5-87pp.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-29wx-vh33-7x7r.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-2cwj-8chv-9pp9.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-2g2g-8p8h-fgwm.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-2vqw-3mp8-cgmx.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-2x8x-jmrp-phxw.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-34xg-wgjx-8xph.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-36p3-wjmg-h94x.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-3chg-m5w7-qfv5.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-3cqm-mf7h-prrj.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-3h57-hmj3-gj3p.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-3h9f-r86x-qvjx.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-3mc7-4q67-w48m.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-3pxv-7cmr-fjr4.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-3wrr-7qpf-2prh.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-3x8x-79m2-3w2w.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-43w2-9j62-hq99.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-4773-3jfm-qmx3.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-4f7c-pmjv-c25w.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-4j38-f5cw-54h7.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-529h-vh3j-85hq.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-52m2-vc4m-jj33.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-54rr-7fvw-6x8f.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-57j2-w4cx-62h2.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-599f-7c49-w659.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-5crp-9r3c-p9vr.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-5gvw-p9qm-jgwh.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-5jmj-h7xm-6q6v.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-5mg8-w23w-74h3.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-5prr-v3j2-97mh.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-5v5v-ww74-355v.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-5v8h-3h3q-446p.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-625h-95r8-8xpm.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-6377-hfv9-hqf6.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-65f5-mfpf-vfhj.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-68xg-gqqm-vgj8.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-69ch-w2m2-3vjp.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-6hcq-hmm3-jj3c.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-6hg6-v5c8-fphq.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-6j75-5wfj-gh66.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-6p4f-wcwh-5vvm.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-6w2r-r2m5-xq5w.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-6xw4-3v39-52mm.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-72pg-x5f8-j25j.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-7fxw-r6jv-74c8.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-7g2v-jj9q-g3rg.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-7g45-4rm6-3mm3.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-7mqq-6cf9-v2qp.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-7p85-w9px-jpjp.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-7phw-cxx7-q9vq.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-7rjr-3q55-vv33.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-7wqh-767x-r66v.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-7xr5-9hcq-chf9.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-8489-44mv-ggj8.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-8678-w3jw-xfc2.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-8cgq-6mh2-7j6v.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-8cjm-8mp7-r2xf.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-8qcx-xf44-272x.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-8vqr-qjwx-82mw.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-8x9c-rmqh-456c.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-923m-gv2p-w5qp.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-93pm-5p5f-3ghx.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-94pj-82f3-465w.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-957g-f97v-vppc.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-98wm-3w3q-mw94.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-9cv2-cfxc-v4v2.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-9hf4-67fc-4vf4.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-9w3m-gqgf-c4p9.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-c2f4-cvqm-65w2.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-c2w2-prh8-qm98.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-c4r9-r8fh-9vj2.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-c4rq-3m3g-8wgx.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-c6qg-cjj8-47qp.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-cjpg-rgq5-fr37.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-crhf-3pfg-w68w.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-cwmx-hcrq-mhc3.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-cwxw-98qj-8qjx.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-cx7f-g6mp-7hqm.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-cxp5-3px4-pw24.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-f283-ghqc-fg79.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-f2wf-25xc-69c9.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-f7vp-7xgx-4w4r.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-frmv-pr5f-9mcr.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-g446-98w2-8p5w.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-g5vr-rgqm-vf78.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-ghhp-997w-qr28.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-gjh7-p2fx-99vx.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-gx83-3vf8-gh7j.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-h2jq-g4cq-5ppq.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-h383-gmxw-35v2.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-h3qp-gqrc-q736.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-h7pc-vwp9-298g.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-h8vq-8gpg-mhcg.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-h95v-h523-3mw8.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-hgj6-7826-r7m5.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-hhhw-99gj-p3c3.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-hp87-p4gw-j4gq.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-hq7v-mx3g-29hw.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-hxqx-xwvh-44m2.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-hxrm-9w7p-39cc.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-hxx2-7vcw-mqr3.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-j3rv-43j4-c7qm.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-jfh8-c2jp-5v3q.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-jjjh-jjxp-wpff.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-jjxq-ff2g-95vh.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-m5pq-gvj9-9vr8.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-mh63-6h87-95cp.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-mjmj-j48q-9wg2.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-mq64-j8f9-9gcj.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-mr3q-g2mv-mr4q.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-mxw3-3hh2-x2mh.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-p42q-9prx-q5wq.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-p543-xpfm-54cp.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-p67v-3w7g-wjg7.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-p6xc-xr62-6r2g.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-pc63-qcmh-9cmg.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-phwj-rprq-35pp.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-pr2w-4gpj-cpq4.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-q238-5cxm-5c9h.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-q2ww-5357-x388.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-q4qf-9j86-f5mh.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-q559-8m2m-g699.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-q7rv-6hp3-vh96.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-qpgp-93vx-g8v8.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-qv7j-4883-hwh7.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-qv9r-c865-cp47.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-qw25-v68c-qjf3.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-r657-rxjc-j557.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-r936-gwx5-v52f.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-rgv9-q543-rqg4.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-rmj7-2vxq-3g9f.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-rqv2-275x-2jq5.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-rrqc-c2jx-6jgv.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-v2fc-qm4h-8hqv.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-v569-hp3g-36wr.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-v5mv-p594-2x33.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-vc5p-v9hr-52mj.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-vcc8-phrv-43wj.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-vgpv-f759-9wx3.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-vm85-hxw5-5432.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-vpfw-47h7-xj4g.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-vvgp-rfg2-7rr6.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-w248-ffj2-4v5q.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-w37g-rhq8-7m4j.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-w3c8-7r8f-9jp8.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-w9pc-fmgc-vxvw.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-wcg3-cvx6-7396.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-wfpw-mmfh-qq69.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-wg35-8jpf-2xv3.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-whrj-4476-wvmp.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-wjgm-6hv5-3cvf.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-wjv4-x9w8-wm3h.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-wm3w-8rrp-j577.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-wpv5-97wm-hp9c.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-wpwq-4j6v-78m3.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-wq4h-7r42-5hrr.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-wv8q-qhhj-9h54.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-wvqv-fj8w-qmhm.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-wx95-c6cv-8532.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-wxmh-65f7-jcvw.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-x23c-287f-qqv5.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-x8cg-fq8g-mxfx.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-xj5v-6v4g-jfw6.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GHSA-xxph-c9ww-hj94.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GO-2022-0603.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GO-2022-1059.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GO-2024-3250.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GO-2025-3553.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GO-2026-4316.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GO-2026-5970.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/GO-2026-6629.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/PYSEC-2026-1297.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/PYSEC-2026-3717.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/PYSEC-2026-4035.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/RUSTSEC-2020-0071.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/RUSTSEC-2021-0003.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/RUSTSEC-2022-0013.json +1 -0
- forceupdate-1.0.0/tests/fixtures/osv/vulns/RUSTSEC-2026-0190.json +1 -0
- forceupdate-1.0.0/tests/fixtures/packagist/doctrine__cache.json +1 -0
- forceupdate-1.0.0/tests/fixtures/packagist/guzzlehttp__guzzle.json +1 -0
- forceupdate-1.0.0/tests/fixtures/packagist/guzzlehttp__psr7.json +1 -0
- forceupdate-1.0.0/tests/fixtures/packagist/monolog__monolog.json +1 -0
- forceupdate-1.0.0/tests/fixtures/packagist/php-http__message-factory.json +1 -0
- forceupdate-1.0.0/tests/fixtures/packagist/psr__log.json +1 -0
- forceupdate-1.0.0/tests/fixtures/packagist/symfony__console.json +1 -0
- forceupdate-1.0.0/tests/fixtures/packagist/twig__twig.json +1 -0
- forceupdate-1.0.0/tests/fixtures/packagist-advisories.json +1110 -0
- forceupdate-1.0.0/tests/fixtures/pypi/django.json +1 -0
- forceupdate-1.0.0/tests/fixtures/pypi/python-dateutil.json +1 -0
- forceupdate-1.0.0/tests/fixtures/record.py +489 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/concurrent-ruby.txt +139 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/diff-lcs.txt +24 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/json.txt +250 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/minitest.txt +159 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/mustermann.txt +35 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/nio4r.txt +96 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/nokogiri.txt +1186 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/puma.txt +361 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/racc.txt +44 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/rack-protection.txt +54 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/rack.txt +185 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/rake.txt +97 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/rest-client.txt +114 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/rspec-core.txt +150 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/rspec-expectations.txt +127 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/rspec-mocks.txt +136 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/rspec-support.txt +54 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/rspec.txt +174 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/ruby2_keywords.txt +7 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/sinatra.txt +109 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/tilt.txt +49 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/tzinfo-data.txt +82 -0
- forceupdate-1.0.0/tests/fixtures/rubygems/tzinfo.txt +96 -0
- forceupdate-1.0.0/tests/fixtures/tls/ca.pem +19 -0
- forceupdate-1.0.0/tests/projects/README.md +49 -0
- forceupdate-1.0.0/tests/projects/bundler/Gemfile +19 -0
- forceupdate-1.0.0/tests/projects/bundler/Gemfile.lock +105 -0
- forceupdate-1.0.0/tests/projects/bundler/demo.gemspec +13 -0
- forceupdate-1.0.0/tests/projects/bundler/helper/helper.gemspec +11 -0
- forceupdate-1.0.0/tests/projects/bundler/helper/lib/helper.rb +8 -0
- forceupdate-1.0.0/tests/projects/bundler/lib/demo.rb +8 -0
- forceupdate-1.0.0/tests/projects/cargo/Cargo.lock +316 -0
- forceupdate-1.0.0/tests/projects/cargo/Cargo.toml +25 -0
- forceupdate-1.0.0/tests/projects/cargo/src/lib.rs +3 -0
- forceupdate-1.0.0/tests/projects/cargo/vendor/local-crate/Cargo.toml +7 -0
- forceupdate-1.0.0/tests/projects/cargo/vendor/local-crate/src/lib.rs +3 -0
- forceupdate-1.0.0/tests/projects/cargo-workspace/Cargo.lock +111 -0
- forceupdate-1.0.0/tests/projects/cargo-workspace/Cargo.toml +14 -0
- forceupdate-1.0.0/tests/projects/cargo-workspace/crates/app/Cargo.toml +13 -0
- forceupdate-1.0.0/tests/projects/cargo-workspace/crates/app/src/lib.rs +3 -0
- forceupdate-1.0.0/tests/projects/cargo-workspace/crates/core/Cargo.toml +9 -0
- forceupdate-1.0.0/tests/projects/cargo-workspace/crates/core/src/lib.rs +3 -0
- forceupdate-1.0.0/tests/projects/cargo-workspace/crates/excluded/Cargo.toml +7 -0
- forceupdate-1.0.0/tests/projects/cargo-workspace/crates/excluded/src/lib.rs +3 -0
- forceupdate-1.0.0/tests/projects/composer/composer.json +50 -0
- forceupdate-1.0.0/tests/projects/composer/composer.lock +1712 -0
- forceupdate-1.0.0/tests/projects/composer/src/App.php +22 -0
- forceupdate-1.0.0/tests/projects/composer/third_party/acme-tools/composer.json +15 -0
- forceupdate-1.0.0/tests/projects/composer/third_party/acme-tools/src/Slug.php +11 -0
- forceupdate-1.0.0/tests/projects/eol/.nvmrc +1 -0
- forceupdate-1.0.0/tests/projects/eol/.python-version +1 -0
- forceupdate-1.0.0/tests/projects/eol/Dockerfile +14 -0
- forceupdate-1.0.0/tests/projects/eol/app/__init__.py +5 -0
- forceupdate-1.0.0/tests/projects/eol/package.json +11 -0
- forceupdate-1.0.0/tests/projects/eol/pyproject.toml +7 -0
- forceupdate-1.0.0/tests/projects/exports/pdm/pdm.lock +286 -0
- forceupdate-1.0.0/tests/projects/exports/pdm/pyproject.toml +8 -0
- forceupdate-1.0.0/tests/projects/exports/pdm/requirements.txt +174 -0
- forceupdate-1.0.0/tests/projects/exports/pip-compile/pyproject.toml +5 -0
- forceupdate-1.0.0/tests/projects/exports/pip-compile/requirements.txt +16 -0
- forceupdate-1.0.0/tests/projects/exports/poetry/requirements.txt +239 -0
- forceupdate-1.0.0/tests/projects/exports/uv/pyproject.toml +8 -0
- forceupdate-1.0.0/tests/projects/exports/uv/requirements.txt +183 -0
- forceupdate-1.0.0/tests/projects/exports/uv/uv.lock +272 -0
- forceupdate-1.0.0/tests/projects/go/go.mod +28 -0
- forceupdate-1.0.0/tests/projects/go/go.sum +21 -0
- forceupdate-1.0.0/tests/projects/go/main.go +19 -0
- forceupdate-1.0.0/tests/projects/go/main_test.go +9 -0
- forceupdate-1.0.0/tests/projects/go/third_party/localmod/go.mod +3 -0
- forceupdate-1.0.0/tests/projects/go/third_party/localmod/localmod.go +5 -0
- forceupdate-1.0.0/tests/projects/go-workspace/app/go.mod +12 -0
- forceupdate-1.0.0/tests/projects/go-workspace/app/go.sum +4 -0
- forceupdate-1.0.0/tests/projects/go-workspace/app/main.go +11 -0
- forceupdate-1.0.0/tests/projects/go-workspace/go.work +9 -0
- forceupdate-1.0.0/tests/projects/go-workspace/go.work.sum +2 -0
- forceupdate-1.0.0/tests/projects/go-workspace/lib/go.mod +5 -0
- forceupdate-1.0.0/tests/projects/go-workspace/lib/go.sum +2 -0
- forceupdate-1.0.0/tests/projects/go-workspace/lib/lib.go +7 -0
- forceupdate-1.0.0/tests/projects/go-workspace/tools/go.mod +7 -0
- forceupdate-1.0.0/tests/projects/go-workspace/tools/go.sum +2 -0
- forceupdate-1.0.0/tests/projects/go-workspace/tools/main.go +10 -0
- forceupdate-1.0.0/tests/projects/gradle/app/build.gradle +12 -0
- forceupdate-1.0.0/tests/projects/gradle/app/src/main/java/demo/App.java +7 -0
- forceupdate-1.0.0/tests/projects/gradle/build.gradle.kts +16 -0
- forceupdate-1.0.0/tests/projects/gradle/gradle/libs.versions.toml +12 -0
- forceupdate-1.0.0/tests/projects/gradle/gradle.properties +2 -0
- forceupdate-1.0.0/tests/projects/gradle/settings.gradle.kts +3 -0
- forceupdate-1.0.0/tests/projects/maven/app/pom.xml +70 -0
- forceupdate-1.0.0/tests/projects/maven/app/src/main/java/demo/app/App.java +9 -0
- forceupdate-1.0.0/tests/projects/maven/lib/pom.xml +36 -0
- forceupdate-1.0.0/tests/projects/maven/lib/src/main/java/demo/lib/Greeter.java +7 -0
- forceupdate-1.0.0/tests/projects/maven/pom.xml +71 -0
- forceupdate-1.0.0/tests/projects/nuget/Directory.Build.props +6 -0
- forceupdate-1.0.0/tests/projects/nuget/Directory.Packages.props +17 -0
- forceupdate-1.0.0/tests/projects/nuget/legacy/packages.config +6 -0
- forceupdate-1.0.0/tests/projects/nuget/src/App/App.csproj +14 -0
- forceupdate-1.0.0/tests/projects/nuget/src/App/Greeter.cs +6 -0
- forceupdate-1.0.0/tests/projects/nuget/src/App/packages.lock.json +141 -0
- forceupdate-1.0.0/tests/projects/nuget/src/App.Tests/App.Tests.csproj +19 -0
- forceupdate-1.0.0/tests/projects/nuget/src/App.Tests/GreeterTests.cs +7 -0
- forceupdate-1.0.0/tests/projects/nuget/src/App.Tests/packages.lock.json +423 -0
- forceupdate-1.0.0/tests/projects/poetry/poetry.lock +405 -0
- forceupdate-1.0.0/tests/projects/poetry/pyproject.toml +21 -0
- forceupdate-1.0.0/tests/projects/scripts/helpers.py +1 -0
- forceupdate-1.0.0/tests/projects/scripts/imports.py +16 -0
- forceupdate-1.0.0/tests/projects/scripts/index.ts +12 -0
- forceupdate-1.0.0/tests/projects/scripts/locked.py +9 -0
- forceupdate-1.0.0/tests/projects/scripts/locked.py.lock +201 -0
- forceupdate-1.0.0/tests/projects/scripts/main.go +15 -0
- forceupdate-1.0.0/tests/projects/scripts/pep723.py +14 -0
- forceupdate-1.0.0/tests/test_advisories_packagist.py +208 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_checks.py +15 -1
- forceupdate-1.0.0/tests/test_checks_eol.py +350 -0
- forceupdate-1.0.0/tests/test_checks_runtimes.py +138 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_checks_vulns.py +7 -1
- forceupdate-1.0.0/tests/test_cli.py +593 -0
- forceupdate-1.0.0/tests/test_code_files.py +305 -0
- forceupdate-1.0.0/tests/test_config.py +520 -0
- forceupdate-1.0.0/tests/test_conftest.py +68 -0
- forceupdate-1.0.0/tests/test_downloads.py +281 -0
- forceupdate-1.0.0/tests/test_endoflife.py +161 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_engine.py +12 -2
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_engine_check.py +16 -5
- forceupdate-1.0.0/tests/test_eol_project.py +219 -0
- forceupdate-1.0.0/tests/test_exclude_newer.py +92 -0
- forceupdate-1.0.0/tests/test_forges_accounts.py +436 -0
- forceupdate-1.0.0/tests/test_forges_bitbucket.py +691 -0
- forceupdate-1.0.0/tests/test_forges_git.py +357 -0
- forceupdate-1.0.0/tests/test_forges_github.py +623 -0
- forceupdate-1.0.0/tests/test_forges_gitlab.py +603 -0
- forceupdate-1.0.0/tests/test_forges_repos.py +303 -0
- forceupdate-1.0.0/tests/test_forges_requests.py +310 -0
- forceupdate-1.0.0/tests/test_go_projects.py +340 -0
- forceupdate-1.0.0/tests/test_java_projects.py +302 -0
- forceupdate-1.0.0/tests/test_lockfile_retry.py +452 -0
- forceupdate-1.0.0/tests/test_lockfiles.py +2606 -0
- forceupdate-1.0.0/tests/test_managed.py +188 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_manifests.py +40 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_net_cache.py +42 -1
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_net_http.py +166 -1
- forceupdate-1.0.0/tests/test_nuget_projects.py +288 -0
- forceupdate-1.0.0/tests/test_nuget_references.py +336 -0
- forceupdate-1.0.0/tests/test_parsers_code.py +405 -0
- forceupdate-1.0.0/tests/test_parsers_go.py +394 -0
- forceupdate-1.0.0/tests/test_parsers_gradle.py +505 -0
- forceupdate-1.0.0/tests/test_parsers_imports.py +237 -0
- forceupdate-1.0.0/tests/test_parsers_maven.py +412 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_parsers_npm.py +127 -0
- forceupdate-1.0.0/tests/test_parsers_nuget.py +628 -0
- forceupdate-1.0.0/tests/test_parsers_php.py +434 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_parsers_python.py +20 -4
- forceupdate-1.0.0/tests/test_parsers_ruby.py +613 -0
- forceupdate-1.0.0/tests/test_parsers_runtimes.py +662 -0
- forceupdate-1.0.0/tests/test_parsers_rust.py +598 -0
- forceupdate-1.0.0/tests/test_pep723.py +206 -0
- forceupdate-1.0.0/tests/test_php_projects.py +342 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_planner.py +172 -2
- forceupdate-1.0.0/tests/test_preferences.py +324 -0
- forceupdate-1.0.0/tests/test_processes.py +148 -0
- forceupdate-1.0.0/tests/test_project_npm.py +564 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_registries.py +26 -3
- forceupdate-1.0.0/tests/test_registries_crates.py +199 -0
- forceupdate-1.0.0/tests/test_registries_goproxy.py +297 -0
- forceupdate-1.0.0/tests/test_registries_maven.py +309 -0
- forceupdate-1.0.0/tests/test_registries_nuget.py +199 -0
- forceupdate-1.0.0/tests/test_registries_packagist.py +212 -0
- forceupdate-1.0.0/tests/test_registries_rubygems.py +156 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_report.py +19 -0
- forceupdate-1.0.0/tests/test_report_synthesis.py +88 -0
- forceupdate-1.0.0/tests/test_requirements_exports.py +318 -0
- forceupdate-1.0.0/tests/test_robustness.py +334 -0
- forceupdate-1.0.0/tests/test_routing.py +267 -0
- forceupdate-1.0.0/tests/test_routing_cargo.py +306 -0
- forceupdate-1.0.0/tests/test_routing_composer.py +211 -0
- forceupdate-1.0.0/tests/test_routing_go.py +254 -0
- forceupdate-1.0.0/tests/test_routing_maven.py +370 -0
- forceupdate-1.0.0/tests/test_routing_npm.py +295 -0
- forceupdate-1.0.0/tests/test_routing_nuget.py +284 -0
- forceupdate-1.0.0/tests/test_routing_python.py +394 -0
- forceupdate-1.0.0/tests/test_routing_ruby.py +402 -0
- forceupdate-1.0.0/tests/test_ruby_projects.py +239 -0
- forceupdate-1.0.0/tests/test_rust_projects.py +232 -0
- forceupdate-1.0.0/tests/test_rust_version.py +118 -0
- forceupdate-1.0.0/tests/test_sources.py +344 -0
- forceupdate-1.0.0/tests/test_sources_code.py +140 -0
- forceupdate-1.0.0/tests/test_sources_forge.py +435 -0
- forceupdate-1.0.0/tests/test_tables_network.py +133 -0
- forceupdate-1.0.0/tests/test_update_constraints.py +508 -0
- forceupdate-1.0.0/tests/test_update_forge.py +449 -0
- forceupdate-1.0.0/tests/test_update_git.py +78 -0
- forceupdate-1.0.0/tests/test_update_local.py +95 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_versions.py +6 -4
- forceupdate-1.0.0/tests/test_versions_cargo.py +310 -0
- forceupdate-1.0.0/tests/test_versions_composer.py +462 -0
- forceupdate-1.0.0/tests/test_versions_go.py +182 -0
- forceupdate-1.0.0/tests/test_versions_maven.py +382 -0
- forceupdate-1.0.0/tests/test_versions_nuget.py +642 -0
- forceupdate-1.0.0/tests/test_versions_rubygems.py +262 -0
- forceupdate-1.0.0/tests/test_web_accounts.py +705 -0
- forceupdate-1.0.0/tests/test_web_api.py +912 -0
- forceupdate-1.0.0/tests/test_web_bitbucket.py +330 -0
- forceupdate-1.0.0/tests/test_web_gitlab.py +388 -0
- forceupdate-1.0.0/tests/test_web_proposals.py +529 -0
- forceupdate-1.0.0/tests/test_web_repositories.py +486 -0
- forceupdate-1.0.0/tests/test_web_security.py +299 -0
- forceupdate-1.0.0/tests/test_web_server.py +489 -0
- forceupdate-1.0.0/tests/test_web_workdirs.py +156 -0
- forceupdate-1.0.0/tests/test_writers.py +1374 -0
- forceupdate-1.0.0/tests/test_yaml_spans.py +80 -0
- forceupdate-0.1.0/PKG-INFO +0 -79
- forceupdate-0.1.0/README.md +0 -43
- forceupdate-0.1.0/src/forceupdate/checks/__init__.py +0 -49
- forceupdate-0.1.0/src/forceupdate/checks/outdated.py +0 -183
- forceupdate-0.1.0/src/forceupdate/cli.py +0 -309
- forceupdate-0.1.0/src/forceupdate/engine.py +0 -313
- forceupdate-0.1.0/src/forceupdate/parsers/__init__.py +0 -43
- forceupdate-0.1.0/src/forceupdate/registries/__init__.py +0 -52
- forceupdate-0.1.0/src/forceupdate/report/json.py +0 -34
- forceupdate-0.1.0/src/forceupdate/sources/local.py +0 -183
- forceupdate-0.1.0/src/forceupdate/update/__init__.py +0 -8
- forceupdate-0.1.0/tests/conftest.py +0 -187
- forceupdate-0.1.0/tests/fixtures/osv/queries.json +0 -321
- forceupdate-0.1.0/tests/fixtures/record.py +0 -160
- forceupdate-0.1.0/tests/projects/README.md +0 -29
- forceupdate-0.1.0/tests/test_cli.py +0 -299
- forceupdate-0.1.0/tests/test_conftest.py +0 -35
- forceupdate-0.1.0/tests/test_sources.py +0 -169
- forceupdate-0.1.0/tests/test_update_constraints.py +0 -184
- {forceupdate-0.1.0 → forceupdate-1.0.0}/LICENSE +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/__init__.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/advisories/cvss.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/detect/__init__.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/parsers/base.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/parsers/json_spans.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/parsers/toml_spans.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/sources/__init__.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/versions/npm.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/src/forceupdate/versions/pypi.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/npm/@hapi__joi.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/npm/colors.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/npm/crossenv.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/npm/left-pad.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/npm/lodash.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-29mw-wpgm-hmr9.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-29vq-49wr-vm6x.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-2g68-c3qc-8985.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-35jh-r3h4-6jhm.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-462w-v97r-4m45.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-562c-5r94-xh97.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-5wv5-4vpf-pj6m.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-652x-xj99-gmcc.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-68rp-wp8r-4726.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-87hc-h4r5-73f7.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-9hjg-9r4m-mvj7.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-9wx4-h78v-vm56.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-9x64-5r7x-2q53.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-c2m4-w5hm-vqjw.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-cfj3-7x9c-4p3h.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-cpwx-vrp4-4pq7.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-f23m-r3pf-42rh.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-f9vj-2wh5-fj8j.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-g3rq-g295-4j3m.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-g6x2-hccm-hh4m.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-gc5v-m9x4-r6x2.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-gq9m-qvpx-68hc.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-h5c8-rqwp-cp95.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-h75v-3vvj-5mfj.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-hgf8-39gv-g3f2.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-j544-7q9p-6xp8.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-m2qf-hxjv-5gpq.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-mh6f-8j2x-4483.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-p6mc-m468-83gw.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-pjwm-rvh2-c87w.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-px8h-6qxv-m22q.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-q2x7-8rv6-6q7h.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-r5fr-rjxr-66jc.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-x84v-xcm2-53pg.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-xg9f-g7g7-2323.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/GHSA-xxjr-mmjv-4gpg.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/MAL-2025-20690.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2014-13.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2014-14.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2015-17.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2018-28.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2018-66.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2019-140.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2019-179.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2019-217.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2021-66.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2022-203.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2023-221.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2023-57.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2023-58.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2023-62.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-1065.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-1471.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-1473.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-1474.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-1475.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-1872.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-1873.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-2043.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-2044.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-2045.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-2046.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-2151.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-2275.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-2320.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/osv/vulns/PYSEC-2026-4312.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/pypi/aioredis.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/pypi/flask.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/pypi/jinja2.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/pypi/requests.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/fixtures/pypi/werkzeug.json +0 -0
- {forceupdate-0.1.0/tests/projects → forceupdate-1.0.0/tests/projects/exports}/poetry/poetry.lock +0 -0
- {forceupdate-0.1.0/tests/projects → forceupdate-1.0.0/tests/projects/exports}/poetry/pyproject.toml +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/npm/package-lock.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/npm/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/npm/vendor/local-lib/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/npm-workspace/package-lock.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/npm-workspace/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/npm-workspace/packages/a/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/npm-workspace/packages/b/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/npm-workspace/tools/script/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pip/constraints.txt +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pip/requirements-dev.txt +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pip/requirements.txt +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pip-tools/requirements-dev.in +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pip-tools/requirements-dev.txt +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pip-tools/requirements.in +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pip-tools/requirements.txt +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pipenv/Pipfile +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pipenv/Pipfile.lock +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pnpm-catalog/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pnpm-catalog/packages/app/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pnpm-catalog/pnpm-lock.yaml +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pnpm-catalog/pnpm-workspace.yaml +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pnpm9/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pnpm9/packages/app/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pnpm9/packages/excluded/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pnpm9/packages/lib/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pnpm9/pnpm-lock.yaml +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/pnpm9/pnpm-workspace.yaml +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/setuptools/pyproject.toml +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/setuptools/setup.cfg +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/setuptools/setup.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/uv/packages/legacy/pyproject.toml +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/uv/packages/lib/pyproject.toml +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/uv/pyproject.toml +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/uv/tools/script/pyproject.toml +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/uv/uv.lock +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/vulnerable/package-lock.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/vulnerable/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/vulnerable/requirements.in +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/vulnerable/requirements.txt +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/yarn1/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/yarn1/vendor/local-lib/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/yarn1/yarn.lock +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/yarn4/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/yarn4/packages/lib/package.json +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/projects/yarn4/yarn.lock +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_cvss.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_json_spans.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_languages.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_models.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_npm_projects.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_osv.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_python_projects.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_registries_npm.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_registries_pypi.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_toml_spans.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_versions_npm.py +0 -0
- {forceupdate-0.1.0 → forceupdate-1.0.0}/tests/test_versions_pypi.py +0 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: forceupdate
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Trouve les dépendances à mettre à jour (versions, failles, fins de vie) et fait les mises à jour : en local, ou par pull request sur GitHub, GitLab et Bitbucket.
|
|
5
|
+
Project-URL: Homepage, https://github.com/Pauzzle-ozz/forceupdate
|
|
6
|
+
Project-URL: Repository, https://github.com/Pauzzle-ozz/forceupdate
|
|
7
|
+
Project-URL: Issues, https://github.com/Pauzzle-ozz/forceupdate/issues
|
|
8
|
+
Author: Pauzzle
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: dependencies,end-of-life,osv,outdated,pull-request,update,vulnerabilities
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Environment :: Web Environment
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Natural Language :: French
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
24
|
+
Classifier: Topic :: Security
|
|
25
|
+
Classifier: Topic :: Software Development
|
|
26
|
+
Classifier: Topic :: System :: Software Distribution
|
|
27
|
+
Classifier: Topic :: Utilities
|
|
28
|
+
Requires-Python: >=3.11
|
|
29
|
+
Requires-Dist: fastapi>=0.162.0
|
|
30
|
+
Requires-Dist: httpx>=0.28.1
|
|
31
|
+
Requires-Dist: keyring>=25.7.0
|
|
32
|
+
Requires-Dist: packaging>=26.3
|
|
33
|
+
Requires-Dist: platformdirs>=4.13.6
|
|
34
|
+
Requires-Dist: pyyaml>=6.0.3
|
|
35
|
+
Requires-Dist: rich>=15.0.0
|
|
36
|
+
Requires-Dist: truststore>=0.10.5
|
|
37
|
+
Requires-Dist: typer>=0.27.3
|
|
38
|
+
Requires-Dist: uvicorn>=0.54.0
|
|
39
|
+
Description-Content-Type: text/markdown
|
|
40
|
+
|
|
41
|
+
# forceupdate
|
|
42
|
+
|
|
43
|
+
On donne du code à forceupdate : un dossier, un fichier, ou tous ses dépôts GitHub, GitLab et
|
|
44
|
+
Bitbucket. Il repère les langages et les dépendances, et dit ce qui doit être mis à jour :
|
|
45
|
+
failles connues, fins de vie, versions retirées ou dépréciées, versions plus récentes. Puis il
|
|
46
|
+
fait les mises à jour cochées : en local, il réécrit les fichiers et régénère les lockfiles ;
|
|
47
|
+
sur une forge, il ouvre une pull request par dépôt.
|
|
48
|
+
|
|
49
|
+
Tout se passe dans une interface web qui tourne sur son ordinateur (`forceupdate ui`), ou en
|
|
50
|
+
ligne de commande (`forceupdate scan`, `forceupdate update`) pour les scripts et la CI. Huit
|
|
51
|
+
écosystèmes : Python, JavaScript (npm, Yarn, pnpm), Rust, Go, PHP, Ruby, Java (Maven, Gradle)
|
|
52
|
+
et .NET. Interface et messages en français. Licence MIT.
|
|
53
|
+
|
|
54
|
+

|
|
55
|
+
|
|
56
|
+
## Installation
|
|
57
|
+
|
|
58
|
+
Avec [uv](https://docs.astral.sh/uv/) :
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
uv tool install forceupdate
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
ou `pipx install forceupdate`. Python 3.11 ou plus récent ; Windows, Linux ou macOS. L'interface
|
|
65
|
+
est livrée dans le paquet : node n'est pas nécessaire.
|
|
66
|
+
|
|
67
|
+
Ce qu'il faut en plus, selon l'usage :
|
|
68
|
+
|
|
69
|
+
- **git**, pour ouvrir des PR (forceupdate clone, commite et pousse) et pour le garde-fou des
|
|
70
|
+
mises à jour locales ;
|
|
71
|
+
- **l'outil de chaque lockfile** (npm, pnpm, Yarn, uv, Poetry, PDM, pipenv, pip-compile, cargo,
|
|
72
|
+
go, Composer, Bundler, dotnet), pour le régénérer ; sans lui, forceupdate réécrit les
|
|
73
|
+
manifestes et donne la commande à lancer.
|
|
74
|
+
|
|
75
|
+
## Démarrer
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
forceupdate ui
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Le serveur démarre sur `127.0.0.1` (jamais sur le réseau), et le navigateur s'ouvre sur
|
|
82
|
+
l'interface. L'adresse porte un jeton de session : seul qui l'a peut s'en servir. Ctrl+C
|
|
83
|
+
l'arrête.
|
|
84
|
+
|
|
85
|
+
1. **Analyser** : choisir un dossier ou un fichier de l'ordinateur (ou le déposer sur la page).
|
|
86
|
+
Le rapport range les constats du plus grave au moins grave, avec le détail de chaque
|
|
87
|
+
dépendance.
|
|
88
|
+
2. **Mettre à jour** : les mises à jour sûres sont cochées d'office (correctifs, mineures,
|
|
89
|
+
corrections de failles), les majeures sont proposées sans être cochées (sauf si on le
|
|
90
|
+
règle). On lit le diff de chaque fichier et les lockfiles qui seront régénérés, puis on
|
|
91
|
+
applique.
|
|
92
|
+
3. **Mes dépôts** : connecter son compte GitHub, GitLab ou Bitbucket, analyser tous ses dépôts
|
|
93
|
+
sans les cloner, puis ouvrir une PR (une MR sur GitLab) par dépôt.
|
|
94
|
+
|
|
95
|
+

|
|
96
|
+
|
|
97
|
+

|
|
98
|
+
|
|
99
|
+
Avant l'envoi, le récapitulatif dit ce que chaque PR contiendra ; rien ne part avant
|
|
100
|
+
« Envoyer ». La PR vit sur la branche `forceupdate/dependencies`, jamais sur la branche par
|
|
101
|
+
défaut ; relancé, forceupdate met à jour la même PR.
|
|
102
|
+
|
|
103
|
+

|
|
104
|
+
|
|
105
|
+

|
|
106
|
+
|
|
107
|
+
Les captures viennent du serveur des tests de bout en bout (données enregistrées, forge
|
|
108
|
+
simulée), sauf la dernière : la description de la PR #1 du dépôt de test, rendue par GitHub.
|
|
109
|
+
|
|
110
|
+
## En ligne de commande
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
forceupdate scan . # le rapport dans le terminal
|
|
114
|
+
forceupdate scan . --format json -o rapport.json # ou --format md, ou csv (pour un tableur) ; en UTF-8
|
|
115
|
+
forceupdate scan . --fail-on vuln # code 1 si une faille est connue
|
|
116
|
+
|
|
117
|
+
forceupdate update . --dry-run # le plan et le diff, sans rien écrire
|
|
118
|
+
forceupdate update . # correctifs et mineures, après confirmation
|
|
119
|
+
forceupdate update . --security-only --yes # seulement les failles, sans demander
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Codes de retour : 0 rien à signaler, 1 seuil de `--fail-on` atteint, 2 erreur (dont un refus
|
|
123
|
+
du garde-fou git, ou un lockfile que son outil n'a pas pu régénérer). Toutes les options sont
|
|
124
|
+
dans [docs/USAGE.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/docs/USAGE.md#la-ligne-de-commande).
|
|
125
|
+
|
|
126
|
+
## Ce qui part sur le réseau
|
|
127
|
+
|
|
128
|
+
forceupdate ne lit le code que sur l'ordinateur. Il envoie les noms et les versions des
|
|
129
|
+
paquets aux registres (PyPI, npm, crates.io, proxy Go, Packagist, RubyGems, Maven Central,
|
|
130
|
+
nuget.org, ou les registres privés déclarés), à [OSV](https://osv.dev) pour les failles, et
|
|
131
|
+
les noms des runtimes et des frameworks à [endoflife.date](https://endoflife.date). Un
|
|
132
|
+
paquet privé n'est jamais demandé au registre public ni à OSV. Les tokens des forges restent
|
|
133
|
+
dans le trousseau du système, jamais dans le navigateur.
|
|
134
|
+
|
|
135
|
+
## Les écosystèmes
|
|
136
|
+
|
|
137
|
+
| Écosystème | Manifestes | Lockfiles régénérés par |
|
|
138
|
+
|---|---|---|
|
|
139
|
+
| Python | `requirements*.txt` et `.in`, `pyproject.toml` (PEP 621, Poetry, uv, PDM), `Pipfile`, `setup.cfg`, le bloc PEP 723 d'un script | uv, Poetry, PDM, pipenv, pip-compile |
|
|
140
|
+
| JavaScript | `package.json`, `pnpm-workspace.yaml` | npm, pnpm, Yarn 1 et 2+ |
|
|
141
|
+
| Rust | `Cargo.toml` | cargo |
|
|
142
|
+
| Go | `go.mod`, `go.work` | `go mod tidy` |
|
|
143
|
+
| PHP | `composer.json` | Composer |
|
|
144
|
+
| Ruby | `Gemfile`, `gems.rb`, `.gemspec` | Bundler |
|
|
145
|
+
| Java | `pom.xml`, `build.gradle(.kts)`, `settings.gradle(.kts)`, `libs.versions.toml` | aucun : Maven et Gradle ne sont jamais lancés |
|
|
146
|
+
| .NET | `.csproj`, `.fsproj`, `.vbproj`, `packages.config`, `Directory.Build.props`, `Directory.Packages.props` | `dotnet restore` |
|
|
147
|
+
|
|
148
|
+
Les manifestes sont lus sans être exécutés (`setup.py` n'est donc pas lu, ni un script Gradle
|
|
149
|
+
évalué), et les lockfiles régénérés sans les scripts du projet. Ce qu'un outil exécute quand
|
|
150
|
+
même, faute d'option pour l'en empêcher (le `Gemfile` pour Bundler, le code de construction
|
|
151
|
+
d'un paquet publié sans wheel pour uv…), est dit dans le plan, avant d'appliquer.
|
|
152
|
+
|
|
153
|
+
### Les principales limites
|
|
154
|
+
|
|
155
|
+
- **Python** : `setup.py` n'est pas lu (il faudrait l'exécuter) ; pipenv re-résout tout, et
|
|
156
|
+
peut monter plus haut que la version choisie ; une contrainte continuée sur la ligne suivante
|
|
157
|
+
se réécrit à la main.
|
|
158
|
+
- **JavaScript** : Yarn monte à la plus haute version que la contrainte permet ; un intervalle
|
|
159
|
+
dépassé, `*` ou une étiquette se réécrivent à la main.
|
|
160
|
+
- **Rust** : sans `rust-version` ni `rust-toolchain`, la version de Rust du projet n'est pas
|
|
161
|
+
connue (forceupdate ne lance pas `rustc`) ; un index de registre en git n'est pas lu.
|
|
162
|
+
- **Go** : les `go.mod` des dépendances ne sont pas lus (une indirecte peut être construite
|
|
163
|
+
plus haut) ; une majeure est un autre module, à faire à la main (`go get …/vN`).
|
|
164
|
+
- **PHP** : seules des versions stables sont proposées ; `vendor/` n'est pas refait (lancer
|
|
165
|
+
`composer install` ensuite).
|
|
166
|
+
- **Ruby** : le `Gemfile` est lu, pas exécuté : une condition n'est pas évaluée, le fichier
|
|
167
|
+
d'un `eval_gemfile` n'est pas lu.
|
|
168
|
+
- **Java** : aucun lockfile n'est régénéré (Maven et Gradle ne sont jamais lancés) ; une
|
|
169
|
+
version de `buildSrc`, d'un catalogue publié ou d'une expression ne se lit pas ; une version
|
|
170
|
+
gérée par un parent ou un BOM se met à jour avec lui, à la main.
|
|
171
|
+
- **.NET** : les conditions MSBuild ne sont pas évaluées ; NuGet prend la plus basse version
|
|
172
|
+
qui convient, donc une mise à jour réécrit la borne basse.
|
|
173
|
+
|
|
174
|
+
Toutes les limites, écosystème par écosystème : [docs/USAGE.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/docs/USAGE.md#les-écosystèmes).
|
|
175
|
+
|
|
176
|
+
## Documentation
|
|
177
|
+
|
|
178
|
+
- [docs/USAGE.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/docs/USAGE.md) : l'interface écran par écran, toutes les commandes et options,
|
|
179
|
+
la configuration, chaque écosystème et ses limites, les registres privés, le réseau
|
|
180
|
+
d'entreprise ;
|
|
181
|
+
- [docs/FORGES.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/docs/FORGES.md) : connecter GitHub, GitLab et Bitbucket, les droits, ce que
|
|
182
|
+
contient une PR, enregistrer sa propre application OAuth ;
|
|
183
|
+
- [docs/JSON_FORMAT.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/docs/JSON_FORMAT.md) : le format du rapport JSON, et l'API de
|
|
184
|
+
l'interface ;
|
|
185
|
+
- [CHANGELOG.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/CHANGELOG.md) : les versions.
|
|
186
|
+
|
|
187
|
+
Pour contribuer : [PLAN.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/PLAN.md) (l'avancement), [docs/BRIEF.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/docs/BRIEF.md) (les
|
|
188
|
+
décisions), et les commandes de développement dans [CLAUDE.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/CLAUDE.md#commandes).
|
|
189
|
+
|
|
190
|
+
## Licence
|
|
191
|
+
|
|
192
|
+
[MIT](https://github.com/Pauzzle-ozz/forceupdate/blob/main/LICENSE), © 2026 Pauzzle.
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# forceupdate
|
|
2
|
+
|
|
3
|
+
On donne du code à forceupdate : un dossier, un fichier, ou tous ses dépôts GitHub, GitLab et
|
|
4
|
+
Bitbucket. Il repère les langages et les dépendances, et dit ce qui doit être mis à jour :
|
|
5
|
+
failles connues, fins de vie, versions retirées ou dépréciées, versions plus récentes. Puis il
|
|
6
|
+
fait les mises à jour cochées : en local, il réécrit les fichiers et régénère les lockfiles ;
|
|
7
|
+
sur une forge, il ouvre une pull request par dépôt.
|
|
8
|
+
|
|
9
|
+
Tout se passe dans une interface web qui tourne sur son ordinateur (`forceupdate ui`), ou en
|
|
10
|
+
ligne de commande (`forceupdate scan`, `forceupdate update`) pour les scripts et la CI. Huit
|
|
11
|
+
écosystèmes : Python, JavaScript (npm, Yarn, pnpm), Rust, Go, PHP, Ruby, Java (Maven, Gradle)
|
|
12
|
+
et .NET. Interface et messages en français. Licence MIT.
|
|
13
|
+
|
|
14
|
+

|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
Avec [uv](https://docs.astral.sh/uv/) :
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
uv tool install forceupdate
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
ou `pipx install forceupdate`. Python 3.11 ou plus récent ; Windows, Linux ou macOS. L'interface
|
|
25
|
+
est livrée dans le paquet : node n'est pas nécessaire.
|
|
26
|
+
|
|
27
|
+
Ce qu'il faut en plus, selon l'usage :
|
|
28
|
+
|
|
29
|
+
- **git**, pour ouvrir des PR (forceupdate clone, commite et pousse) et pour le garde-fou des
|
|
30
|
+
mises à jour locales ;
|
|
31
|
+
- **l'outil de chaque lockfile** (npm, pnpm, Yarn, uv, Poetry, PDM, pipenv, pip-compile, cargo,
|
|
32
|
+
go, Composer, Bundler, dotnet), pour le régénérer ; sans lui, forceupdate réécrit les
|
|
33
|
+
manifestes et donne la commande à lancer.
|
|
34
|
+
|
|
35
|
+
## Démarrer
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
forceupdate ui
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Le serveur démarre sur `127.0.0.1` (jamais sur le réseau), et le navigateur s'ouvre sur
|
|
42
|
+
l'interface. L'adresse porte un jeton de session : seul qui l'a peut s'en servir. Ctrl+C
|
|
43
|
+
l'arrête.
|
|
44
|
+
|
|
45
|
+
1. **Analyser** : choisir un dossier ou un fichier de l'ordinateur (ou le déposer sur la page).
|
|
46
|
+
Le rapport range les constats du plus grave au moins grave, avec le détail de chaque
|
|
47
|
+
dépendance.
|
|
48
|
+
2. **Mettre à jour** : les mises à jour sûres sont cochées d'office (correctifs, mineures,
|
|
49
|
+
corrections de failles), les majeures sont proposées sans être cochées (sauf si on le
|
|
50
|
+
règle). On lit le diff de chaque fichier et les lockfiles qui seront régénérés, puis on
|
|
51
|
+
applique.
|
|
52
|
+
3. **Mes dépôts** : connecter son compte GitHub, GitLab ou Bitbucket, analyser tous ses dépôts
|
|
53
|
+
sans les cloner, puis ouvrir une PR (une MR sur GitLab) par dépôt.
|
|
54
|
+
|
|
55
|
+

|
|
56
|
+
|
|
57
|
+

|
|
58
|
+
|
|
59
|
+
Avant l'envoi, le récapitulatif dit ce que chaque PR contiendra ; rien ne part avant
|
|
60
|
+
« Envoyer ». La PR vit sur la branche `forceupdate/dependencies`, jamais sur la branche par
|
|
61
|
+
défaut ; relancé, forceupdate met à jour la même PR.
|
|
62
|
+
|
|
63
|
+

|
|
64
|
+
|
|
65
|
+

|
|
66
|
+
|
|
67
|
+
Les captures viennent du serveur des tests de bout en bout (données enregistrées, forge
|
|
68
|
+
simulée), sauf la dernière : la description de la PR #1 du dépôt de test, rendue par GitHub.
|
|
69
|
+
|
|
70
|
+
## En ligne de commande
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
forceupdate scan . # le rapport dans le terminal
|
|
74
|
+
forceupdate scan . --format json -o rapport.json # ou --format md, ou csv (pour un tableur) ; en UTF-8
|
|
75
|
+
forceupdate scan . --fail-on vuln # code 1 si une faille est connue
|
|
76
|
+
|
|
77
|
+
forceupdate update . --dry-run # le plan et le diff, sans rien écrire
|
|
78
|
+
forceupdate update . # correctifs et mineures, après confirmation
|
|
79
|
+
forceupdate update . --security-only --yes # seulement les failles, sans demander
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Codes de retour : 0 rien à signaler, 1 seuil de `--fail-on` atteint, 2 erreur (dont un refus
|
|
83
|
+
du garde-fou git, ou un lockfile que son outil n'a pas pu régénérer). Toutes les options sont
|
|
84
|
+
dans [docs/USAGE.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/docs/USAGE.md#la-ligne-de-commande).
|
|
85
|
+
|
|
86
|
+
## Ce qui part sur le réseau
|
|
87
|
+
|
|
88
|
+
forceupdate ne lit le code que sur l'ordinateur. Il envoie les noms et les versions des
|
|
89
|
+
paquets aux registres (PyPI, npm, crates.io, proxy Go, Packagist, RubyGems, Maven Central,
|
|
90
|
+
nuget.org, ou les registres privés déclarés), à [OSV](https://osv.dev) pour les failles, et
|
|
91
|
+
les noms des runtimes et des frameworks à [endoflife.date](https://endoflife.date). Un
|
|
92
|
+
paquet privé n'est jamais demandé au registre public ni à OSV. Les tokens des forges restent
|
|
93
|
+
dans le trousseau du système, jamais dans le navigateur.
|
|
94
|
+
|
|
95
|
+
## Les écosystèmes
|
|
96
|
+
|
|
97
|
+
| Écosystème | Manifestes | Lockfiles régénérés par |
|
|
98
|
+
|---|---|---|
|
|
99
|
+
| Python | `requirements*.txt` et `.in`, `pyproject.toml` (PEP 621, Poetry, uv, PDM), `Pipfile`, `setup.cfg`, le bloc PEP 723 d'un script | uv, Poetry, PDM, pipenv, pip-compile |
|
|
100
|
+
| JavaScript | `package.json`, `pnpm-workspace.yaml` | npm, pnpm, Yarn 1 et 2+ |
|
|
101
|
+
| Rust | `Cargo.toml` | cargo |
|
|
102
|
+
| Go | `go.mod`, `go.work` | `go mod tidy` |
|
|
103
|
+
| PHP | `composer.json` | Composer |
|
|
104
|
+
| Ruby | `Gemfile`, `gems.rb`, `.gemspec` | Bundler |
|
|
105
|
+
| Java | `pom.xml`, `build.gradle(.kts)`, `settings.gradle(.kts)`, `libs.versions.toml` | aucun : Maven et Gradle ne sont jamais lancés |
|
|
106
|
+
| .NET | `.csproj`, `.fsproj`, `.vbproj`, `packages.config`, `Directory.Build.props`, `Directory.Packages.props` | `dotnet restore` |
|
|
107
|
+
|
|
108
|
+
Les manifestes sont lus sans être exécutés (`setup.py` n'est donc pas lu, ni un script Gradle
|
|
109
|
+
évalué), et les lockfiles régénérés sans les scripts du projet. Ce qu'un outil exécute quand
|
|
110
|
+
même, faute d'option pour l'en empêcher (le `Gemfile` pour Bundler, le code de construction
|
|
111
|
+
d'un paquet publié sans wheel pour uv…), est dit dans le plan, avant d'appliquer.
|
|
112
|
+
|
|
113
|
+
### Les principales limites
|
|
114
|
+
|
|
115
|
+
- **Python** : `setup.py` n'est pas lu (il faudrait l'exécuter) ; pipenv re-résout tout, et
|
|
116
|
+
peut monter plus haut que la version choisie ; une contrainte continuée sur la ligne suivante
|
|
117
|
+
se réécrit à la main.
|
|
118
|
+
- **JavaScript** : Yarn monte à la plus haute version que la contrainte permet ; un intervalle
|
|
119
|
+
dépassé, `*` ou une étiquette se réécrivent à la main.
|
|
120
|
+
- **Rust** : sans `rust-version` ni `rust-toolchain`, la version de Rust du projet n'est pas
|
|
121
|
+
connue (forceupdate ne lance pas `rustc`) ; un index de registre en git n'est pas lu.
|
|
122
|
+
- **Go** : les `go.mod` des dépendances ne sont pas lus (une indirecte peut être construite
|
|
123
|
+
plus haut) ; une majeure est un autre module, à faire à la main (`go get …/vN`).
|
|
124
|
+
- **PHP** : seules des versions stables sont proposées ; `vendor/` n'est pas refait (lancer
|
|
125
|
+
`composer install` ensuite).
|
|
126
|
+
- **Ruby** : le `Gemfile` est lu, pas exécuté : une condition n'est pas évaluée, le fichier
|
|
127
|
+
d'un `eval_gemfile` n'est pas lu.
|
|
128
|
+
- **Java** : aucun lockfile n'est régénéré (Maven et Gradle ne sont jamais lancés) ; une
|
|
129
|
+
version de `buildSrc`, d'un catalogue publié ou d'une expression ne se lit pas ; une version
|
|
130
|
+
gérée par un parent ou un BOM se met à jour avec lui, à la main.
|
|
131
|
+
- **.NET** : les conditions MSBuild ne sont pas évaluées ; NuGet prend la plus basse version
|
|
132
|
+
qui convient, donc une mise à jour réécrit la borne basse.
|
|
133
|
+
|
|
134
|
+
Toutes les limites, écosystème par écosystème : [docs/USAGE.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/docs/USAGE.md#les-écosystèmes).
|
|
135
|
+
|
|
136
|
+
## Documentation
|
|
137
|
+
|
|
138
|
+
- [docs/USAGE.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/docs/USAGE.md) : l'interface écran par écran, toutes les commandes et options,
|
|
139
|
+
la configuration, chaque écosystème et ses limites, les registres privés, le réseau
|
|
140
|
+
d'entreprise ;
|
|
141
|
+
- [docs/FORGES.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/docs/FORGES.md) : connecter GitHub, GitLab et Bitbucket, les droits, ce que
|
|
142
|
+
contient une PR, enregistrer sa propre application OAuth ;
|
|
143
|
+
- [docs/JSON_FORMAT.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/docs/JSON_FORMAT.md) : le format du rapport JSON, et l'API de
|
|
144
|
+
l'interface ;
|
|
145
|
+
- [CHANGELOG.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/CHANGELOG.md) : les versions.
|
|
146
|
+
|
|
147
|
+
Pour contribuer : [PLAN.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/PLAN.md) (l'avancement), [docs/BRIEF.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/docs/BRIEF.md) (les
|
|
148
|
+
décisions), et les commandes de développement dans [CLAUDE.md](https://github.com/Pauzzle-ozz/forceupdate/blob/main/CLAUDE.md#commandes).
|
|
149
|
+
|
|
150
|
+
## Licence
|
|
151
|
+
|
|
152
|
+
[MIT](https://github.com/Pauzzle-ozz/forceupdate/blob/main/LICENSE), © 2026 Pauzzle.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "forceupdate"
|
|
3
|
-
version = "
|
|
3
|
+
version = "1.0.0"
|
|
4
4
|
description = "Trouve les dépendances à mettre à jour (versions, failles, fins de vie) et fait les mises à jour : en local, ou par pull request sur GitHub, GitLab et Bitbucket."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
@@ -17,7 +17,7 @@ keywords = [
|
|
|
17
17
|
"pull-request",
|
|
18
18
|
]
|
|
19
19
|
classifiers = [
|
|
20
|
-
"Development Status ::
|
|
20
|
+
"Development Status :: 5 - Production/Stable",
|
|
21
21
|
"Environment :: Console",
|
|
22
22
|
"Environment :: Web Environment",
|
|
23
23
|
"Intended Audience :: Developers",
|
|
@@ -35,12 +35,16 @@ classifiers = [
|
|
|
35
35
|
"Topic :: Utilities",
|
|
36
36
|
]
|
|
37
37
|
dependencies = [
|
|
38
|
+
"fastapi>=0.162.0",
|
|
38
39
|
"httpx>=0.28.1",
|
|
40
|
+
"keyring>=25.7.0",
|
|
39
41
|
"packaging>=26.3",
|
|
40
42
|
"platformdirs>=4.13.6",
|
|
41
43
|
"pyyaml>=6.0.3",
|
|
42
44
|
"rich>=15.0.0",
|
|
45
|
+
"truststore>=0.10.5",
|
|
43
46
|
"typer>=0.27.3",
|
|
47
|
+
"uvicorn>=0.54.0",
|
|
44
48
|
]
|
|
45
49
|
|
|
46
50
|
[project.urls]
|
|
@@ -49,10 +53,11 @@ Repository = "https://github.com/Pauzzle-ozz/forceupdate"
|
|
|
49
53
|
Issues = "https://github.com/Pauzzle-ozz/forceupdate/issues"
|
|
50
54
|
|
|
51
55
|
[project.scripts]
|
|
52
|
-
forceupdate = "forceupdate.cli:
|
|
56
|
+
forceupdate = "forceupdate.cli:run"
|
|
53
57
|
|
|
54
58
|
[dependency-groups]
|
|
55
59
|
dev = [
|
|
60
|
+
"httpx2>=2.16.0",
|
|
56
61
|
"pytest>=9.1.1",
|
|
57
62
|
"respx>=0.23.1",
|
|
58
63
|
"ruff>=0.17.3",
|
|
@@ -64,9 +69,13 @@ build-backend = "hatchling.build"
|
|
|
64
69
|
|
|
65
70
|
[tool.hatch.build.targets.wheel]
|
|
66
71
|
packages = ["src/forceupdate"]
|
|
72
|
+
# Le front construit (npm run build), ignoré par git mais livré : pas besoin de node pour
|
|
73
|
+
# utiliser l'outil.
|
|
74
|
+
artifacts = ["src/forceupdate/web/static/"]
|
|
67
75
|
|
|
68
76
|
[tool.hatch.build.targets.sdist]
|
|
69
77
|
include = ["/src", "/tests"]
|
|
78
|
+
artifacts = ["src/forceupdate/web/static/"]
|
|
70
79
|
|
|
71
80
|
[tool.ruff]
|
|
72
81
|
line-length = 100
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
- ``osv.py`` : le client d'OSV (``Osv``), et ``Advisory``, un avis réduit à ce qui sert,
|
|
4
4
|
avec la version qui corrige la faille (``Advisory.fixed_in``) ;
|
|
5
|
+
- ``packagist.py`` : les avis de Packagist (GitHub et FriendsOfPHP, ceux de ``composer audit``),
|
|
6
|
+
ajoutés à ceux d'OSV pour les paquets PHP (E34) ;
|
|
5
7
|
- ``cvss.py`` : le score CVSS 3 d'un vecteur, et la gravité qui va avec.
|
|
6
8
|
|
|
7
9
|
Les constats qu'on en tire sont dans ``checks/vulns.py``, qui ne parle pas au réseau.
|
|
@@ -17,6 +19,7 @@ from forceupdate.advisories.osv import (
|
|
|
17
19
|
Vulnerabilities,
|
|
18
20
|
parse_vuln,
|
|
19
21
|
)
|
|
22
|
+
from forceupdate.advisories.packagist import PackagistAdvisories
|
|
20
23
|
|
|
21
24
|
__all__ = [
|
|
22
25
|
"Advisory",
|
|
@@ -24,6 +27,7 @@ __all__ = [
|
|
|
24
27
|
"AffectedRange",
|
|
25
28
|
"Osv",
|
|
26
29
|
"OsvError",
|
|
30
|
+
"PackagistAdvisories",
|
|
27
31
|
"Query",
|
|
28
32
|
"Vulnerabilities",
|
|
29
33
|
"parse_vuln",
|
|
@@ -127,10 +127,14 @@ class Advisory:
|
|
|
127
127
|
unavailable: str | None = None
|
|
128
128
|
"""Pourquoi l'avis complet n'a pas pu être lu (réseau, hors ligne…) ; ``None`` s'il l'a
|
|
129
129
|
été. Un avis indisponible reste une faille : on n'en connaît que l'identifiant."""
|
|
130
|
+
link: str | None = None
|
|
131
|
+
"""La page de l'avis quand il ne vient pas d'OSV (un avis de Packagist, E34)."""
|
|
130
132
|
|
|
131
133
|
@property
|
|
132
134
|
def url(self) -> str:
|
|
133
|
-
"""La page de l'avis sur osv.dev."""
|
|
135
|
+
"""La page de l'avis : sur osv.dev, ou celle que donne sa base (``link``)."""
|
|
136
|
+
if self.link is not None:
|
|
137
|
+
return self.link
|
|
134
138
|
return f"https://osv.dev/vulnerability/{quote(self.id, safe='')}"
|
|
135
139
|
|
|
136
140
|
def fixed_in(self, ecosystem: Ecosystem, name: str, version: str) -> str | None:
|
|
@@ -140,7 +144,8 @@ class Advisory:
|
|
|
140
144
|
|
|
141
145
|
Avec deux branches corrigées (Flask : ``< 2.2.5`` et ``>= 2.3.0, < 2.3.2``), depuis
|
|
142
146
|
0.12 c'est 2.2.5, depuis 2.3.0 c'est 2.3.2. ``None`` si l'avis n'en donne pas : faille
|
|
143
|
-
jamais corrigée, seulement une dernière version concernée, paquet malveillant.
|
|
147
|
+
jamais corrigée, seulement une dernière version concernée, paquet malveillant. Écrite
|
|
148
|
+
comme dans le manifeste (``VersionScheme.written`` : ``v0.3.8`` pour Go).
|
|
144
149
|
"""
|
|
145
150
|
scheme = versions.for_ecosystem(ecosystem)
|
|
146
151
|
try:
|
|
@@ -163,7 +168,7 @@ class Advisory:
|
|
|
163
168
|
fixes.sort(key=lambda fix: fix[0])
|
|
164
169
|
for parsed, text in fixes:
|
|
165
170
|
if not _concerned(scheme, entries, parsed):
|
|
166
|
-
return text
|
|
171
|
+
return scheme.written(text)
|
|
167
172
|
return None
|
|
168
173
|
|
|
169
174
|
def affects(self, ecosystem: Ecosystem, name: str, version: str) -> bool:
|
|
@@ -501,6 +506,8 @@ def _same_time(first: str, second: str) -> bool:
|
|
|
501
506
|
def _same_name(ecosystem: Ecosystem, first: str, second: str) -> bool:
|
|
502
507
|
if ecosystem is Ecosystem.PYPI:
|
|
503
508
|
return canonicalize_name(first) == canonicalize_name(second)
|
|
509
|
+
if ecosystem in (Ecosystem.PACKAGIST, Ecosystem.NUGET): # ni Composer ni NuGet ne tiennent
|
|
510
|
+
return first.lower() == second.lower() # compte de la casse
|
|
504
511
|
return first == second
|
|
505
512
|
|
|
506
513
|
|