[{"data":1,"prerenderedAt":1012},["ShallowReactive",2],{"docs-navigation":3,"-docs-guides-package-types-pypi":410,"-docs-guides-package-types-pypi-surround":1007},[4,19,166,319,333,397],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":18},"Overview","i-lucide-compass","\u002Fdocs\u002Foverview","docs\u002F1.overview",[10,14],{"title":11,"path":12,"stem":13},"Introduction","\u002Fdocs\u002Foverview\u002Fintroduction","docs\u002F1.overview\u002F1.introduction",{"title":15,"path":16,"stem":17},"JFrog compatibility","\u002Fdocs\u002Foverview\u002Fjfrog-compatibility","docs\u002F1.overview\u002F2.jfrog-compatibility",false,{"title":20,"icon":21,"path":22,"stem":23,"children":24,"page":18},"Installation","i-lucide-download","\u002Fdocs\u002Finstallation","docs\u002F2.installation",[25,29,43,68,108,112,116,162],{"title":26,"path":27,"stem":28},"Choosing a method","\u002Fdocs\u002Finstallation\u002Foverview","docs\u002F2.installation\u002F1.overview",{"title":30,"icon":31,"path":32,"stem":33,"children":34,"page":18},"Single binary","i-lucide-terminal","\u002Fdocs\u002Finstallation\u002Fsingle-binary","docs\u002F2.installation\u002F2.single-binary",[35,39],{"title":36,"path":37,"stem":38},"Quick start","\u002Fdocs\u002Finstallation\u002Fsingle-binary\u002Fquick-start","docs\u002F2.installation\u002F2.single-binary\u002F1.quick-start",{"title":40,"path":41,"stem":42},"Limits and backups","\u002Fdocs\u002Finstallation\u002Fsingle-binary\u002Foperations","docs\u002F2.installation\u002F2.single-binary\u002F2.operations",{"title":44,"icon":45,"path":46,"stem":47,"children":48,"page":18},"Docker","i-simple-icons-docker","\u002Fdocs\u002Finstallation\u002Fdocker","docs\u002F2.installation\u002F3.docker",[49,52,56,60,64],{"title":36,"path":50,"stem":51},"\u002Fdocs\u002Finstallation\u002Fdocker\u002Fquick-start","docs\u002F2.installation\u002F3.docker\u002F1.quick-start",{"title":53,"path":54,"stem":55},"PostgreSQL and S3","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fpostgresql-and-s3","docs\u002F2.installation\u002F3.docker\u002F2.postgresql-and-s3",{"title":57,"path":58,"stem":59},"Docker Compose","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose","docs\u002F2.installation\u002F3.docker\u002F3.compose",{"title":61,"path":62,"stem":63},"Compose settings","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose-settings","docs\u002F2.installation\u002F3.docker\u002F4.compose-settings",{"title":65,"path":66,"stem":67},"Compose with another object store","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose-other-object-storage","docs\u002F2.installation\u002F3.docker\u002F5.compose-other-object-storage",{"title":69,"icon":70,"path":71,"stem":72,"children":73,"page":18},"Kubernetes","i-simple-icons-kubernetes","\u002Fdocs\u002Finstallation\u002Fkubernetes","docs\u002F2.installation\u002F4.kubernetes",[74,77,80,84,88,92,96,100,104],{"title":5,"path":75,"stem":76},"\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Foverview","docs\u002F2.installation\u002F4.kubernetes\u002F1.overview",{"title":36,"path":78,"stem":79},"\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fquick-start","docs\u002F2.installation\u002F4.kubernetes\u002F2.quick-start",{"title":81,"path":82,"stem":83},"External PostgreSQL","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexternal-postgresql","docs\u002F2.installation\u002F4.kubernetes\u002F3.external-postgresql",{"title":85,"path":86,"stem":87},"External object storage","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexternal-object-storage","docs\u002F2.installation\u002F4.kubernetes\u002F4.external-object-storage",{"title":89,"path":90,"stem":91},"Exposing Relic","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexposing","docs\u002F2.installation\u002F4.kubernetes\u002F5.exposing",{"title":93,"path":94,"stem":95},"Values","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fvalues","docs\u002F2.installation\u002F4.kubernetes\u002F6.values",{"title":97,"path":98,"stem":99},"Upgrades and removal","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fupgrades","docs\u002F2.installation\u002F4.kubernetes\u002F7.upgrades",{"title":101,"path":102,"stem":103},"Hardening and probes","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fhardening","docs\u002F2.installation\u002F4.kubernetes\u002F8.hardening",{"title":105,"path":106,"stem":107},"Monitoring","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fmonitoring","docs\u002F2.installation\u002F4.kubernetes\u002F9.monitoring",{"title":109,"path":110,"stem":111},"Cloudflare","\u002Fdocs\u002Finstallation\u002Fcloudflare","docs\u002F2.installation\u002F5.cloudflare",{"title":113,"path":114,"stem":115},"Configuration reference","\u002Fdocs\u002Finstallation\u002Fconfiguration","docs\u002F2.installation\u002F6.configuration",{"title":117,"icon":118,"path":119,"stem":120,"children":121,"page":18},"Storage","i-lucide-hard-drive","\u002Fdocs\u002Finstallation\u002Fstorage","docs\u002F2.installation\u002F7.storage",[122,126,130,134,138,142,146,150,154,158],{"title":123,"path":124,"stem":125},"Storage overview","\u002Fdocs\u002Finstallation\u002Fstorage\u002Foverview","docs\u002F2.installation\u002F7.storage\u002F1.overview",{"title":127,"path":128,"stem":129},"Azure Blob Storage","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fazure-blob-storage","docs\u002F2.installation\u002F7.storage\u002F10.azure-blob-storage",{"title":131,"path":132,"stem":133},"SeaweedFS","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fseaweedfs","docs\u002F2.installation\u002F7.storage\u002F2.seaweedfs",{"title":135,"path":136,"stem":137},"Amazon S3","\u002Fdocs\u002Finstallation\u002Fstorage\u002Famazon-s3","docs\u002F2.installation\u002F7.storage\u002F3.amazon-s3",{"title":139,"path":140,"stem":141},"Cloudflare R2","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fcloudflare-r2","docs\u002F2.installation\u002F7.storage\u002F4.cloudflare-r2",{"title":143,"path":144,"stem":145},"MinIO","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fminio","docs\u002F2.installation\u002F7.storage\u002F5.minio",{"title":147,"path":148,"stem":149},"Google Cloud Storage","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fgoogle-cloud-storage","docs\u002F2.installation\u002F7.storage\u002F6.google-cloud-storage",{"title":151,"path":152,"stem":153},"Backblaze B2","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fbackblaze-b2","docs\u002F2.installation\u002F7.storage\u002F7.backblaze-b2",{"title":155,"path":156,"stem":157},"Other S3-compatible services","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fother","docs\u002F2.installation\u002F7.storage\u002F8.other",{"title":159,"path":160,"stem":161},"Filesystem","\u002Fdocs\u002Finstallation\u002Fstorage\u002Ffilesystem","docs\u002F2.installation\u002F7.storage\u002F9.filesystem",{"title":163,"path":164,"stem":165},"Development","\u002Fdocs\u002Finstallation\u002Fdevelopment","docs\u002F2.installation\u002F8.development",{"title":167,"icon":168,"path":169,"stem":170,"children":171,"page":18},"Guides","i-lucide-book-open","\u002Fdocs\u002Fguides","docs\u002F3.guides",[172,176,180,254,296,300,303,307,311,315],{"title":173,"path":174,"stem":175},"Repositories","\u002Fdocs\u002Fguides\u002Frepositories","docs\u002F3.guides\u002F1.repositories",{"title":177,"path":178,"stem":179},"Replication","\u002Fdocs\u002Fguides\u002Freplication","docs\u002F3.guides\u002F10.replication",{"title":181,"icon":182,"path":183,"stem":184,"children":185,"page":18},"Package types","i-lucide-package","\u002Fdocs\u002Fguides\u002Fpackage-types","docs\u002F3.guides\u002F2.package-types",[186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250],{"title":187,"path":188,"stem":189},"npm, yarn and pnpm","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnpm","docs\u002F3.guides\u002F2.package-types\u002F01.npm",{"title":191,"path":192,"stem":193},"Maven and Gradle","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fmaven-gradle","docs\u002F3.guides\u002F2.package-types\u002F02.maven-gradle",{"title":195,"path":196,"stem":197},"Docker and OCI","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fdocker","docs\u002F3.guides\u002F2.package-types\u002F03.docker",{"title":199,"path":200,"stem":201},"Go","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fgo","docs\u002F3.guides\u002F2.package-types\u002F04.go",{"title":203,"path":204,"stem":205},"PyPI","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fpypi","docs\u002F3.guides\u002F2.package-types\u002F05.pypi",{"title":207,"path":208,"stem":209},"Helm","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fhelm","docs\u002F3.guides\u002F2.package-types\u002F06.helm",{"title":211,"path":212,"stem":213},"NuGet","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnuget","docs\u002F3.guides\u002F2.package-types\u002F07.nuget",{"title":215,"path":216,"stem":217},"RubyGems","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Frubygems","docs\u002F3.guides\u002F2.package-types\u002F08.rubygems",{"title":219,"path":220,"stem":221},"Cargo","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fcargo","docs\u002F3.guides\u002F2.package-types\u002F09.cargo",{"title":223,"path":224,"stem":225},"Conan","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fconan","docs\u002F3.guides\u002F2.package-types\u002F10.conan",{"title":227,"path":228,"stem":229},"Terraform and OpenTofu","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fterraform","docs\u002F3.guides\u002F2.package-types\u002F11.terraform",{"title":231,"path":232,"stem":233},"Hugging Face","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fhugging-face","docs\u002F3.guides\u002F2.package-types\u002F12.hugging-face",{"title":235,"path":236,"stem":237},"Generic files","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fgeneric","docs\u002F3.guides\u002F2.package-types\u002F13.generic",{"title":239,"path":240,"stem":241},"RPM","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Frpm","docs\u002F3.guides\u002F2.package-types\u002F14.rpm",{"title":243,"path":244,"stem":245},"Debian","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fdebian","docs\u002F3.guides\u002F2.package-types\u002F15.debian",{"title":247,"path":248,"stem":249},"Alpine","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Falpine","docs\u002F3.guides\u002F2.package-types\u002F16.alpine",{"title":251,"path":252,"stem":253},"Nix","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnix","docs\u002F3.guides\u002F2.package-types\u002F17.nix",{"title":255,"icon":256,"path":257,"stem":258,"children":259,"page":18},"Security","i-lucide-shield","\u002Fdocs\u002Fguides\u002Fsecurity","docs\u002F3.guides\u002F3.security",[260,264,268,272,276,280,284,288,292],{"title":261,"path":262,"stem":263},"Permissions","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fpermissions","docs\u002F3.guides\u002F3.security\u002F1.permissions",{"title":265,"path":266,"stem":267},"LDAP","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fldap","docs\u002F3.guides\u002F3.security\u002F2.ldap",{"title":269,"path":270,"stem":271},"Access tokens","\u002Fdocs\u002Fguides\u002Fsecurity\u002Ftokens","docs\u002F3.guides\u002F3.security\u002F3.tokens",{"title":273,"path":274,"stem":275},"Relic Scan","\u002Fdocs\u002Fguides\u002Fsecurity\u002Frelic-scan","docs\u002F3.guides\u002F3.security\u002F4.relic-scan",{"title":277,"path":278,"stem":279},"CVE intelligence","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fcve-intelligence","docs\u002F3.guides\u002F3.security\u002F5.cve-intelligence",{"title":281,"path":282,"stem":283},"Audit log","\u002Fdocs\u002Fguides\u002Fsecurity\u002Faudit-log","docs\u002F3.guides\u002F3.security\u002F6.audit-log",{"title":285,"path":286,"stem":287},"Single sign-on","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fsingle-sign-on","docs\u002F3.guides\u002F3.security\u002F7.single-sign-on",{"title":289,"path":290,"stem":291},"SCIM provisioning","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fscim","docs\u002F3.guides\u002F3.security\u002F8.scim",{"title":293,"path":294,"stem":295},"Workload identities","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fworkload-identities","docs\u002F3.guides\u002F3.security\u002F9.workload-identities",{"title":297,"path":298,"stem":299},"Operations","\u002Fdocs\u002Fguides\u002Foperations","docs\u002F3.guides\u002F4.operations",{"title":105,"path":301,"stem":302},"\u002Fdocs\u002Fguides\u002Fmonitoring","docs\u002F3.guides\u002F5.monitoring",{"title":304,"path":305,"stem":306},"Metrics reference","\u002Fdocs\u002Fguides\u002Fmetrics-reference","docs\u002F3.guides\u002F6.metrics-reference",{"title":308,"path":309,"stem":310},"Webhooks","\u002Fdocs\u002Fguides\u002Fwebhooks","docs\u002F3.guides\u002F7.webhooks",{"title":312,"path":313,"stem":314},"Projects","\u002Fdocs\u002Fguides\u002Fprojects","docs\u002F3.guides\u002F8.projects",{"title":316,"path":317,"stem":318},"AI agents","\u002Fdocs\u002Fguides\u002Fai-agents","docs\u002F3.guides\u002F9.ai-agents",{"title":320,"icon":321,"path":322,"stem":323,"children":324,"page":18},"API","i-lucide-braces","\u002Fdocs\u002Fapi","docs\u002F4.api",[325,329],{"title":326,"path":327,"stem":328},"API usage","\u002Fdocs\u002Fapi\u002Foverview","docs\u002F4.api\u002F1.overview",{"title":330,"path":331,"stem":332},"Relic API","\u002Fdocs\u002Fapi\u002Frelic-api","docs\u002F4.api\u002F2.relic-api",{"title":334,"icon":31,"path":335,"stem":336,"children":337,"page":18},"CLI","\u002Fdocs\u002Fcli","docs\u002F5.cli",[338,341,345,349,353,357,361,365,369,373,377,381,385,389,393],{"title":5,"path":339,"stem":340},"\u002Fdocs\u002Fcli\u002Foverview","docs\u002F5.cli\u002F01.overview",{"title":342,"path":343,"stem":344},"Sign in and contexts","\u002Fdocs\u002Fcli\u002Fsign-in","docs\u002F5.cli\u002F02.sign-in",{"title":346,"path":347,"stem":348},"Resources","\u002Fdocs\u002Fcli\u002Fresources","docs\u002F5.cli\u002F03.resources",{"title":350,"path":351,"stem":352},"apply, diff and delete","\u002Fdocs\u002Fcli\u002Fapply","docs\u002F5.cli\u002F04.apply",{"title":354,"path":355,"stem":356},"Artifacts","\u002Fdocs\u002Fcli\u002Ffiles","docs\u002F5.cli\u002F05.files",{"title":358,"path":359,"stem":360},"Server, API and tokens","\u002Fdocs\u002Fcli\u002Fplatform","docs\u002F5.cli\u002F06.platform",{"title":362,"path":363,"stem":364},"Builds and images","\u002Fdocs\u002Fcli\u002Fbuilds","docs\u002F5.cli\u002F07.builds",{"title":366,"path":367,"stem":368},"Scanning and auditing","\u002Fdocs\u002Fcli\u002Fsecurity","docs\u002F5.cli\u002F08.security",{"title":370,"path":371,"stem":372},"Releases","\u002Fdocs\u002Fcli\u002Freleases","docs\u002F5.cli\u002F09.releases",{"title":374,"path":375,"stem":376},"Evidence","\u002Fdocs\u002Fcli\u002Fevidence","docs\u002F5.cli\u002F10.evidence",{"title":378,"path":379,"stem":380},"Package managers","\u002Fdocs\u002Fcli\u002Fpackage-managers","docs\u002F5.cli\u002F11.package-managers",{"title":382,"path":383,"stem":384},"Scan reports and VEX","\u002Fdocs\u002Fcli\u002Freports-and-vex","docs\u002F5.cli\u002F12.reports-and-vex",{"title":386,"path":387,"stem":388},"Migrating from Artifactory","\u002Fdocs\u002Fcli\u002Fimport","docs\u002F5.cli\u002F13.import",{"title":390,"path":391,"stem":392},"Database","\u002Fdocs\u002Fcli\u002Fdatabase","docs\u002F5.cli\u002F14.database",{"title":394,"path":395,"stem":396},"Machine setup","\u002Fdocs\u002Fcli\u002Fsetup","docs\u002F5.cli\u002F15.setup",{"title":398,"icon":399,"path":400,"stem":401,"children":402,"page":18},"SDK","i-lucide-boxes","\u002Fdocs\u002Fsdk","docs\u002F6.sdk",[403,406],{"title":5,"path":404,"stem":405},"\u002Fdocs\u002Fsdk\u002Foverview","docs\u002F6.sdk\u002F1.overview",{"title":407,"path":408,"stem":409},"Relic API clients","\u002Fdocs\u002Fsdk\u002Frelic-api-clients","docs\u002F6.sdk\u002F2.relic-api-clients",{"id":411,"title":203,"body":412,"description":1000,"extension":1001,"links":1002,"meta":1003,"navigation":1004,"path":204,"seo":1005,"stem":205,"__hash__":1006},"docs\u002Fdocs\u002F3.guides\u002F2.package-types\u002F05.pypi.md",{"type":413,"value":414,"toc":993},"minimark",[415,424,459,462,478,484,505,508,533,553,558,564,592,595,601,673,676,711,714,726,729,744,748,751,775,778,814,818,832,927,942,946,989],[416,417,418,419,423],"p",{},"This command writes the index URL to pip's configuration file and your credentials to ",[420,421,422],"code",{},"~\u002F.netrc",":",[425,426,431],"pre",{"className":427,"code":428,"language":429,"meta":430,"style":430},"language-bash shiki shiki-themes material-theme-lighter github-light-default github-dark-default","relic package setup pip pypi --write\n","bash","",[420,432,433],{"__ignoreMap":430},[434,435,438,442,446,449,452,455],"span",{"class":436,"line":437},"line",1,[434,439,441],{"class":440},"seIyd","relic",[434,443,445],{"class":444},"sasMN"," package",[434,447,448],{"class":444}," setup",[434,450,451],{"class":444}," pip",[434,453,454],{"class":444}," pypi",[434,456,458],{"class":457},"smky3"," --write\n",[416,460,461],{},"Install a package:",[425,463,465],{"className":427,"code":464,"language":429,"meta":430,"style":430},"pip install requests\n",[420,466,467],{"__ignoreMap":430},[434,468,469,472,475],{"class":436,"line":437},[434,470,471],{"class":440},"pip",[434,473,474],{"class":444}," install",[434,476,477],{"class":444}," requests\n",[416,479,480,481,423],{},"This command configures twine in ",[420,482,483],{},"~\u002F.pypirc",[425,485,487],{"className":427,"code":486,"language":429,"meta":430,"style":430},"relic package setup twine pypi-local --write\n",[420,488,489],{"__ignoreMap":430},[434,490,491,493,495,497,500,503],{"class":436,"line":437},[434,492,441],{"class":440},[434,494,445],{"class":444},[434,496,448],{"class":444},[434,498,499],{"class":444}," twine",[434,501,502],{"class":444}," pypi-local",[434,504,458],{"class":457},[416,506,507],{},"Upload with twine:",[425,509,511],{"className":427,"code":510,"language":429,"meta":430,"style":430},"twine upload --repository pypi-local dist\u002F*\n",[420,512,513],{"__ignoreMap":430},[434,514,515,518,521,524,526,529],{"class":436,"line":437},[434,516,517],{"class":440},"twine",[434,519,520],{"class":444}," upload",[434,522,523],{"class":457}," --repository",[434,525,502],{"class":444},[434,527,528],{"class":444}," dist\u002F",[434,530,532],{"class":531},"sum78","*\n",[416,534,535,538,539,542,543,546,547,549,552],{},[420,536,537],{},"relic package setup poetry"," and ",[420,540,541],{},"relic package setup pipenv"," configure Poetry and Pipenv.\nPoetry reserves the name ",[420,544,545],{},"pypi"," for PyPI, so setup names a repository called ",[420,548,545],{},[420,550,551],{},"relic-pypi"," in Poetry's configuration.",[554,555,557],"h2",{"id":556},"pip-by-hand","pip by hand",[416,559,560,561,423],{},"In ",[420,562,563],{},"pip.conf",[425,565,569],{"className":566,"code":567,"language":568,"meta":430,"style":430},"language-ini shiki shiki-themes material-theme-lighter github-light-default github-dark-default","[global]\nindex-url = https:\u002F\u002F\u003Cyou>:\u003Ctoken>@relic.example.com\u002Fpypi\u002Fpypi\u002Fsimple\n","ini",[420,570,571,577],{"__ignoreMap":430},[434,572,573],{"class":436,"line":437},[434,574,576],{"class":575},"sTlLh","[global]\n",[434,578,580,584,588],{"class":436,"line":579},2,[434,581,583],{"class":582},"s03VG","index-url",[434,585,587],{"class":586},"sWneD"," =",[434,589,591],{"class":590},"saDVj"," https:\u002F\u002F\u003Cyou>:\u003Ctoken>@relic.example.com\u002Fpypi\u002Fpypi\u002Fsimple\n",[554,593,594],{"id":594},"uv",[416,596,597,598,423],{},"Add the index to ",[420,599,600],{},"pyproject.toml",[425,602,606],{"className":603,"code":604,"language":605,"meta":430,"style":430},"language-toml shiki shiki-themes material-theme-lighter github-light-default github-dark-default","[[tool.uv.index]]\nname = \"relic\"\nurl = \"https:\u002F\u002Frelic.example.com\u002Fpypi\u002Fpypi\u002Fsimple\"\ndefault = true\n","toml",[420,607,608,629,646,661],{"__ignoreMap":430},[434,609,610,613,616,619,621,623,626],{"class":436,"line":437},[434,611,612],{"class":586},"[[",[434,614,615],{"class":440},"tool",[434,617,618],{"class":590},".",[434,620,594],{"class":440},[434,622,618],{"class":590},[434,624,625],{"class":440},"index",[434,627,628],{"class":586},"]]\n",[434,630,631,634,637,641,643],{"class":436,"line":579},[434,632,633],{"class":590},"name ",[434,635,636],{"class":586},"=",[434,638,640],{"class":639},"sX5mu"," \"",[434,642,441],{"class":444},[434,644,645],{"class":639},"\"\n",[434,647,649,652,654,656,659],{"class":436,"line":648},3,[434,650,651],{"class":590},"url ",[434,653,636],{"class":586},[434,655,640],{"class":639},[434,657,658],{"class":444},"https:\u002F\u002Frelic.example.com\u002Fpypi\u002Fpypi\u002Fsimple",[434,660,645],{"class":639},[434,662,664,667,669],{"class":436,"line":663},4,[434,665,666],{"class":590},"default ",[434,668,636],{"class":586},[434,670,672],{"class":671},"sH4kE"," true\n",[416,674,675],{},"Set the credentials:",[425,677,679],{"className":427,"code":678,"language":429,"meta":430,"style":430},"export UV_INDEX_RELIC_USERNAME=\u003Cyou> UV_INDEX_RELIC_PASSWORD=\u003Ctoken>\n",[420,680,681],{"__ignoreMap":430},[434,682,683,687,690,694,697,700,703,705,708],{"class":436,"line":437},[434,684,686],{"class":685},"s4vtu","export",[434,688,689],{"class":590}," UV_INDEX_RELIC_USERNAME",[434,691,693],{"class":692},"s8eFF","=\u003C",[434,695,696],{"class":590},"you",[434,698,699],{"class":692},">",[434,701,702],{"class":590}," UV_INDEX_RELIC_PASSWORD",[434,704,693],{"class":692},[434,706,707],{"class":590},"token",[434,709,710],{"class":692},">\n",[416,712,713],{},"Lock the dependencies:",[425,715,717],{"className":427,"code":716,"language":429,"meta":430,"style":430},"uv lock\n",[420,718,719],{"__ignoreMap":430},[434,720,721,723],{"class":436,"line":437},[434,722,594],{"class":440},[434,724,725],{"class":444}," lock\n",[416,727,728],{},"Install them:",[425,730,732],{"className":427,"code":731,"language":429,"meta":430,"style":430},"uv sync --frozen\n",[420,733,734],{"__ignoreMap":430},[434,735,736,738,741],{"class":436,"line":437},[434,737,594],{"class":440},[434,739,740],{"class":444}," sync",[434,742,743],{"class":457}," --frozen\n",[554,745,747],{"id":746},"poetry","Poetry",[416,749,750],{},"Add the primary source:",[425,752,754],{"className":427,"code":753,"language":429,"meta":430,"style":430},"poetry source add --priority=primary relic https:\u002F\u002Frelic.example.com\u002Fpypi\u002Fpypi\u002Fsimple\n",[420,755,756],{"__ignoreMap":430},[434,757,758,760,763,766,769,772],{"class":436,"line":437},[434,759,746],{"class":440},[434,761,762],{"class":444}," source",[434,764,765],{"class":444}," add",[434,767,768],{"class":457}," --priority=primary",[434,770,771],{"class":444}," relic",[434,773,774],{"class":444}," https:\u002F\u002Frelic.example.com\u002Fpypi\u002Fpypi\u002Fsimple\n",[416,776,777],{},"Store your credentials:",[425,779,781],{"className":427,"code":780,"language":429,"meta":430,"style":430},"poetry config http-basic.relic \u003Cyou> \u003Ctoken>\n",[420,782,783],{"__ignoreMap":430},[434,784,785,787,790,793,796,799,802,804,806,809,812],{"class":436,"line":437},[434,786,746],{"class":440},[434,788,789],{"class":444}," config",[434,791,792],{"class":444}," http-basic.relic",[434,794,795],{"class":692}," \u003C",[434,797,798],{"class":444},"yo",[434,800,801],{"class":590},"u",[434,803,699],{"class":692},[434,805,795],{"class":692},[434,807,808],{"class":444},"toke",[434,810,811],{"class":590},"n",[434,813,710],{"class":692},[554,815,817],{"id":816},"a-remote-of-pypi","A remote of PyPI",[416,819,820,821,824,825,828,829,423],{},"A remote of PyPI has the file host as ",[420,822,823],{},"url","; ",[420,826,827],{},"indexUrl"," defaults to ",[420,830,831],{},"https:\u002F\u002Fpypi.org",[425,833,837],{"className":834,"code":835,"language":836,"meta":430,"style":430},"language-yaml shiki shiki-themes material-theme-lighter github-light-default github-dark-default","apiVersion: relic.build\u002Fv1\nkind: Repository\nmetadata:\n  name: pypi-remote\nspec:\n  class: remote\n  format: pypi\n  remote:\n    url: https:\u002F\u002Ffiles.pythonhosted.org\n","yaml",[420,838,839,850,860,868,878,886,897,908,916],{"__ignoreMap":430},[434,840,841,845,847],{"class":436,"line":437},[434,842,844],{"class":843},"smKOL","apiVersion",[434,846,423],{"class":586},[434,848,849],{"class":444}," relic.build\u002Fv1\n",[434,851,852,855,857],{"class":436,"line":579},[434,853,854],{"class":843},"kind",[434,856,423],{"class":586},[434,858,859],{"class":444}," Repository\n",[434,861,862,865],{"class":436,"line":648},[434,863,864],{"class":843},"metadata",[434,866,867],{"class":586},":\n",[434,869,870,873,875],{"class":436,"line":663},[434,871,872],{"class":843},"  name",[434,874,423],{"class":586},[434,876,877],{"class":444}," pypi-remote\n",[434,879,881,884],{"class":436,"line":880},5,[434,882,883],{"class":843},"spec",[434,885,867],{"class":586},[434,887,889,892,894],{"class":436,"line":888},6,[434,890,891],{"class":843},"  class",[434,893,423],{"class":586},[434,895,896],{"class":444}," remote\n",[434,898,900,903,905],{"class":436,"line":899},7,[434,901,902],{"class":843},"  format",[434,904,423],{"class":586},[434,906,907],{"class":444}," pypi\n",[434,909,911,914],{"class":436,"line":910},8,[434,912,913],{"class":843},"  remote",[434,915,867],{"class":586},[434,917,919,922,924],{"class":436,"line":918},9,[434,920,921],{"class":843},"    url",[434,923,423],{"class":586},[434,925,926],{"class":444}," https:\u002F\u002Ffiles.pythonhosted.org\n",[416,928,929,930,932,933,935,936,938,939,941],{},"A ",[420,931,823],{}," of ",[420,934,831],{}," also works. For another index, set ",[420,937,823],{}," to its file host and ",[420,940,827],{}," to the index.",[554,943,945],{"id":944},"notes","Notes",[947,948,949,961],"ul",{},[950,951,952,953,956,957,960],"li",{},"Replacing an existing file needs delete permission; without it the server answers ",[420,954,955],{},"409",",\nwhich ",[420,958,959],{},"twine upload --skip-existing"," skips.",[950,962,963,964,969,970,973,974,977,978,981,982,985,986,618],{},"For a private CA (",[965,966,968],"a",{"href":967},"\u002Fdocs\u002Finstallation\u002Fconfiguration#tls","TLS","): pip takes ",[420,971,972],{},"--cert"," or\n",[420,975,976],{},"PIP_CERT",", uv ",[420,979,980],{},"SSL_CERT_FILE"," or ",[420,983,984],{},"UV_NATIVE_TLS=1",", twine and Poetry ",[420,987,988],{},"REQUESTS_CA_BUNDLE",[990,991,992],"style",{},"html pre.shiki code .seIyd, html code.shiki .seIyd{--shiki-light:#E2931D;--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .sasMN, html code.shiki .sasMN{--shiki-light:#91B859;--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .smky3, html code.shiki .smky3{--shiki-light:#91B859;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sum78, html code.shiki .sum78{--shiki-light:#90A4AE;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sTlLh, html code.shiki .sTlLh{--shiki-light:#39ADB5;--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .s03VG, html code.shiki .s03VG{--shiki-light:#E53935;--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .sWneD, html code.shiki .sWneD{--shiki-light:#39ADB5;--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .saDVj, html code.shiki .saDVj{--shiki-light:#90A4AE;--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .s4vtu, html code.shiki .s4vtu{--shiki-light:#9C3EDA;--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .s8eFF, html code.shiki .s8eFF{--shiki-light:#39ADB5;--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .smKOL, html code.shiki .smKOL{--shiki-light:#E53935;--shiki-default:#116329;--shiki-dark:#7EE787}html pre.shiki code .sX5mu, html code.shiki .sX5mu{--shiki-light:#39ADB5;--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sH4kE, html code.shiki .sH4kE{--shiki-light:#FF5370;--shiki-default:#0550AE;--shiki-dark:#79C0FF}",{"title":430,"searchDepth":579,"depth":579,"links":994},[995,996,997,998,999],{"id":556,"depth":579,"text":557},{"id":594,"depth":579,"text":594},{"id":746,"depth":579,"text":747},{"id":816,"depth":579,"text":817},{"id":944,"depth":579,"text":945},"Install and upload Python packages through a PyPI repository, with pip, uv, Poetry or twine.","md",null,{},true,{"title":203,"description":1000},"_b1syGKG2s-8uNMHhlBh-qO8FE0wWI_gLIpmyzGRNhc",[1008,1010],{"title":199,"path":200,"stem":201,"description":1009,"children":-1},"Use a Go repository as your GOPROXY, with checksum verification, and publish modules to it.",{"title":207,"path":208,"stem":209,"description":1011,"children":-1},"Serve Helm charts from a repository with a generated index.yaml, or from an OCI registry.",1793857352785]