| |
| <!doctype html> |
| <html lang="en" class="no-js"> |
| <head> |
| |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| |
| |
| |
| <link rel="canonical" href="https://py.iceberg.apache.org/how-to-release/"> |
| |
| |
| <link rel="prev" href="../verify-release/"> |
| |
| |
| <link rel="next" href="../nightly-build/"> |
| |
| |
| <link rel="icon" href="../assets/images/iceberg-logo-icon.png"> |
| <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.21"> |
| |
| |
| |
| <title>How to release - PyIceberg</title> |
| |
| |
| |
| <link rel="stylesheet" href="../assets/stylesheets/main.2a3383ac.min.css"> |
| |
| |
| <link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
| <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> |
| <style>:root{--md-text-font:"Lato";--md-code-font:"Roboto Mono"}</style> |
| |
| |
| |
| <link rel="stylesheet" href="../assets/_mkdocstrings.css"> |
| |
| <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> |
| |
| |
| |
| |
| |
| |
| |
| <!-- Matomo --> |
| <script> |
| var _paq = window._paq = window._paq || []; |
| /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ |
| _paq.push(["setDoNotTrack", true]); |
| _paq.push(["disableCookies"]); |
| _paq.push(['trackPageView']); |
| _paq.push(['enableLinkTracking']); |
| (function() { |
| var u="https://analytics.apache.org/"; |
| _paq.push(['setTrackerUrl', u+'matomo.php']); |
| _paq.push(['setSiteId', '82']); |
| var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; |
| g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); |
| })(); |
| </script> |
| <!-- End Matomo --> |
| |
| </head> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo"> |
| |
| |
| <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> |
| <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> |
| <label class="md-overlay" for="__drawer"></label> |
| <div data-md-component="skip"> |
| |
| |
| <a href="#how-to-release" class="md-skip"> |
| Skip to content |
| </a> |
| |
| </div> |
| <div data-md-component="announce"> |
| |
| </div> |
| |
| |
| |
| |
| |
| |
| <header class="md-header md-header--shadow md-header--lifted" data-md-component="header"> |
| <nav class="md-header__inner md-grid" aria-label="Header"> |
| <a href=".." title="PyIceberg" class="md-header__button md-logo" aria-label="PyIceberg" data-md-component="logo"> |
| |
| <img src="../assets/images/iceberg-logo-icon.png" alt="logo"> |
| |
| </a> |
| <label class="md-header__button md-icon" for="__drawer"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> |
| </label> |
| <div class="md-header__title" data-md-component="header-title"> |
| <div class="md-header__ellipsis"> |
| <div class="md-header__topic"> |
| <span class="md-ellipsis"> |
| PyIceberg |
| </span> |
| </div> |
| <div class="md-header__topic" data-md-component="header-topic"> |
| <span class="md-ellipsis"> |
| |
| How to release |
| |
| </span> |
| </div> |
| </div> |
| </div> |
| |
| |
| <form class="md-header__option" data-md-component="palette"> |
| |
| |
| |
| |
| <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0"> |
| |
| <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden> |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> |
| </label> |
| |
| |
| |
| |
| |
| <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1"> |
| |
| <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden> |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> |
| </label> |
| |
| |
| </form> |
| |
| |
| |
| <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> |
| |
| |
| |
| |
| |
| <label class="md-header__button md-icon" for="__search"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> |
| </label> |
| <div class="md-search" data-md-component="search" role="dialog"> |
| <label class="md-search__overlay" for="__search"></label> |
| <div class="md-search__inner" role="search"> |
| <form class="md-search__form" name="search"> |
| <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> |
| <label class="md-search__icon md-icon" for="__search"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> |
| </label> |
| <nav class="md-search__options" aria-label="Search"> |
| |
| <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> |
| </button> |
| </nav> |
| |
| </form> |
| <div class="md-search__output"> |
| <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix> |
| <div class="md-search-result" data-md-component="search-result"> |
| <div class="md-search-result__meta"> |
| Initializing search |
| </div> |
| <ol class="md-search-result__list" role="presentation"></ol> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <div class="md-header__source"> |
| <a href="https://github.com/apache/iceberg-python" title="Go to repository" class="md-source" data-md-component="source"> |
| <div class="md-source__icon md-icon"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg> |
| </div> |
| <div class="md-source__repository"> |
| apache/iceberg-python |
| </div> |
| </a> |
| </div> |
| |
| </nav> |
| |
| |
| |
| <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs"> |
| <div class="md-grid"> |
| <ul class="md-tabs__list"> |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href=".." class="md-tabs__link"> |
| |
| |
| |
| |
| |
| Getting started |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../configuration/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| Configuration |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../cli/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| CLI |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../api/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| API |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../contributing/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| Contributing |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../community/" class="md-tabs__link"> |
| |
| |
| |
| |
| |
| Community |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item md-tabs__item--active"> |
| <a href="../verify-release/" class="md-tabs__link"> |
| |
| |
| |
| Releases |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-tabs__item"> |
| <a href="../reference/pyiceberg/" class="md-tabs__link"> |
| |
| |
| |
| Code Reference |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </div> |
| </nav> |
| |
| |
| </header> |
| |
| <div class="md-container" data-md-component="container"> |
| |
| |
| |
| |
| <main class="md-main" data-md-component="main"> |
| <div class="md-main__inner md-grid"> |
| |
| |
| |
| <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > |
| <div class="md-sidebar__scrollwrap"> |
| <div class="md-sidebar__inner"> |
| |
| |
| |
| |
| |
| |
| <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0"> |
| <label class="md-nav__title" for="__drawer"> |
| <a href=".." title="PyIceberg" class="md-nav__button md-logo" aria-label="PyIceberg" data-md-component="logo"> |
| |
| <img src="../assets/images/iceberg-logo-icon.png" alt="logo"> |
| |
| </a> |
| PyIceberg |
| </label> |
| |
| <div class="md-nav__source"> |
| <a href="https://github.com/apache/iceberg-python" title="Go to repository" class="md-source" data-md-component="source"> |
| <div class="md-source__icon md-icon"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg> |
| </div> |
| <div class="md-source__repository"> |
| apache/iceberg-python |
| </div> |
| </a> |
| </div> |
| |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href=".." class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Getting started |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../configuration/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Configuration |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../cli/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| CLI |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" > |
| |
| |
| <div class="md-nav__link md-nav__container"> |
| <a href="../api/" class="md-nav__link "> |
| |
| |
| |
| <span class="md-ellipsis"> |
| API |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| <label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="0"> |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| </div> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_4"> |
| <span class="md-nav__icon md-icon"></span> |
| API |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../row-filter-syntax/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Row Filter Syntax |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../expression-dsl/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Expression DSL |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../contributing/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Contributing |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../community/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Community |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" checked> |
| |
| |
| <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex=""> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Releases |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="true"> |
| <label class="md-nav__title" for="__nav_7"> |
| <span class="md-nav__icon md-icon"></span> |
| Releases |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../verify-release/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Verify a release |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--active"> |
| |
| <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> |
| |
| |
| |
| |
| |
| <label class="md-nav__link md-nav__link--active" for="__toc"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| How to release |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <a href="./" class="md-nav__link md-nav__link--active"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| How to release |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| |
| <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> |
| |
| |
| |
| |
| |
| |
| <label class="md-nav__title" for="__toc"> |
| <span class="md-nav__icon md-icon"></span> |
| Table of contents |
| </label> |
| <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
| |
| <li class="md-nav__item"> |
| <a href="#requirements" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Requirements |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#preparing-for-a-release" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Preparing for a Release |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Preparing for a Release"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#remove-deprecated-apis" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Remove Deprecated APIs |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#update-library-version" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Update Library Version |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#publishing-a-release-candidate-rc" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Publishing a Release Candidate (RC) |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Publishing a Release Candidate (RC)"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#release-types" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Release Types |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Release Types"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#majorminor-release" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Major/Minor Release |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#patch-release" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Patch Release |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#create-tag" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Create Tag |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#create-artifacts" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Create Artifacts |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#publish-release-candidate-rc" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Publish Release Candidate (RC) |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Publish Release Candidate (RC)"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#upload-to-apache-dev-svn" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Upload to Apache Dev SVN |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Upload to Apache Dev SVN"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#download-artifacts-sign-and-generate-checksums" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Download Artifacts, Sign, and Generate Checksums |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#upload-artifacts-to-apache-dev-svn" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Upload Artifacts to Apache Dev SVN |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#remove-old-artifacts-from-apache-dev-svn" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Remove Old Artifacts From Apache Dev SVN |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#upload-to-pypi" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Upload to PyPi |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Upload to PyPi"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#download-artifacts" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Download Artifacts |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#upload-artifacts-to-pypi" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Upload Artifacts to PyPi |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#vote" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Vote |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Vote"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#generate-vote-email" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Generate Vote Email |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#send-vote-email" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Send Vote Email |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#vote-has-failed" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Vote has failed |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#publish-the-final-release-vote-has-passed" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Publish the Final Release (Vote has passed) |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Publish the Final Release (Vote has passed)"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#upload-the-accepted-rc-to-apache-release-svn" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Upload the accepted RC to Apache Release SVN |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#remove-old-artifacts-from-apache-release-svn" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Remove Old Artifacts From Apache Release SVN |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#upload-the-accepted-release-to-pypi" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Upload the accepted release to PyPi |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#post-release" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Post Release |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Post Release"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#send-out-release-announcement-email" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Send out Release Announcement Email |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#create-a-github-release-note" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Create a Github Release Note |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#release-the-docs" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Release the docs |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#update-the-github-template" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Update the Github template |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#misc" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Misc |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Misc"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#set-up-gpg-key-and-upload-to-apache-iceberg-keys-file" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Set up GPG key and Upload to Apache Iceberg KEYS file |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="https://github.com/apache/iceberg-python/releases" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Release Notes |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../nightly-build/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Nightly Build |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" > |
| |
| |
| <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| Code Reference |
| |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8"> |
| <span class="md-nav__icon md-icon"></span> |
| Code Reference |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1" > |
| |
| |
| <div class="md-nav__link md-nav__container"> |
| <a href="../reference/pyiceberg/" class="md-nav__link "> |
| |
| |
| |
| <span class="md-ellipsis"> |
| pyiceberg |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| <label class="md-nav__link " for="__nav_8_1" id="__nav_8_1_label" tabindex="0"> |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| </div> |
| |
| <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_1_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8_1"> |
| <span class="md-nav__icon md-icon"></span> |
| pyiceberg |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_1" > |
| |
| |
| <div class="md-nav__link md-nav__container"> |
| <a href="../reference/pyiceberg/avro/" class="md-nav__link "> |
| |
| |
| |
| <span class="md-ellipsis"> |
| avro |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| <label class="md-nav__link " for="__nav_8_1_1" id="__nav_8_1_1_label" tabindex="0"> |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| </div> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_1_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8_1_1"> |
| <span class="md-nav__icon md-icon"></span> |
| avro |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_1_1" > |
| |
| |
| <div class="md-nav__link md-nav__container"> |
| <a href="../reference/pyiceberg/avro/codecs/" class="md-nav__link "> |
| |
| |
| |
| <span class="md-ellipsis"> |
| codecs |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| <label class="md-nav__link " for="__nav_8_1_1_1" id="__nav_8_1_1_1_label" tabindex="0"> |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| </div> |
| |
| <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_8_1_1_1_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8_1_1_1"> |
| <span class="md-nav__icon md-icon"></span> |
| codecs |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/avro/codecs/bzip2/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| bzip2 |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/avro/codecs/codec/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| codec |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/avro/codecs/deflate/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| deflate |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/avro/codecs/snappy_codec/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| snappy_codec |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/avro/codecs/zstandard_codec/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| zstandard_codec |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/avro/decoder/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| decoder |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/avro/encoder/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| encoder |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/avro/file/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| file |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/avro/reader/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| reader |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/avro/resolver/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| resolver |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/avro/writer/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| writer |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_2" > |
| |
| |
| <div class="md-nav__link md-nav__container"> |
| <a href="../reference/pyiceberg/catalog/" class="md-nav__link "> |
| |
| |
| |
| <span class="md-ellipsis"> |
| catalog |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| <label class="md-nav__link " for="__nav_8_1_2" id="__nav_8_1_2_label" tabindex="0"> |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| </div> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_2_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8_1_2"> |
| <span class="md-nav__icon md-icon"></span> |
| catalog |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/catalog/bigquery_metastore/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| bigquery_metastore |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/catalog/dynamodb/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| dynamodb |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/catalog/glue/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| glue |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/catalog/hive/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| hive |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/catalog/memory/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| memory |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/catalog/noop/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| noop |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_2_7" > |
| |
| |
| <div class="md-nav__link md-nav__container"> |
| <a href="../reference/pyiceberg/catalog/rest/" class="md-nav__link "> |
| |
| |
| |
| <span class="md-ellipsis"> |
| rest |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| <label class="md-nav__link " for="__nav_8_1_2_7" id="__nav_8_1_2_7_label" tabindex="0"> |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| </div> |
| |
| <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_8_1_2_7_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8_1_2_7"> |
| <span class="md-nav__icon md-icon"></span> |
| rest |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/catalog/rest/auth/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| auth |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/catalog/rest/response/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| response |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/catalog/sql/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| sql |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_3" > |
| |
| |
| <div class="md-nav__link md-nav__container"> |
| <a href="../reference/pyiceberg/cli/" class="md-nav__link "> |
| |
| |
| |
| <span class="md-ellipsis"> |
| cli |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| <label class="md-nav__link " for="__nav_8_1_3" id="__nav_8_1_3_label" tabindex="0"> |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| </div> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_3_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8_1_3"> |
| <span class="md-nav__icon md-icon"></span> |
| cli |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/cli/console/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| console |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/cli/output/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| output |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/conversions/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| conversions |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/exceptions/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| exceptions |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_6" > |
| |
| |
| <div class="md-nav__link md-nav__container"> |
| <a href="../reference/pyiceberg/expressions/" class="md-nav__link "> |
| |
| |
| |
| <span class="md-ellipsis"> |
| expressions |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| <label class="md-nav__link " for="__nav_8_1_6" id="__nav_8_1_6_label" tabindex="0"> |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| </div> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_6_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8_1_6"> |
| <span class="md-nav__icon md-icon"></span> |
| expressions |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/expressions/literals/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| literals |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/expressions/parser/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| parser |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/expressions/visitors/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| visitors |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_7" > |
| |
| |
| <div class="md-nav__link md-nav__container"> |
| <a href="../reference/pyiceberg/io/" class="md-nav__link "> |
| |
| |
| |
| <span class="md-ellipsis"> |
| io |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| <label class="md-nav__link " for="__nav_8_1_7" id="__nav_8_1_7_label" tabindex="0"> |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| </div> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_7_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8_1_7"> |
| <span class="md-nav__icon md-icon"></span> |
| io |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/io/fsspec/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| fsspec |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/io/pyarrow/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| pyarrow |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/manifest/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| manifest |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/partitioning/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| partitioning |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/schema/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| schema |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/serializers/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| serializers |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_12" > |
| |
| |
| <div class="md-nav__link md-nav__container"> |
| <a href="../reference/pyiceberg/table/" class="md-nav__link "> |
| |
| |
| |
| <span class="md-ellipsis"> |
| table |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| <label class="md-nav__link " for="__nav_8_1_12" id="__nav_8_1_12_label" tabindex="0"> |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| </div> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_12_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8_1_12"> |
| <span class="md-nav__icon md-icon"></span> |
| table |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/inspect/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| inspect |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/locations/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| locations |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/maintenance/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| maintenance |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/metadata/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| metadata |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/name_mapping/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| name_mapping |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/puffin/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| puffin |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/refs/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| refs |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/snapshots/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| snapshots |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/sorting/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| sorting |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/statistics/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| statistics |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_12_11" > |
| |
| |
| <div class="md-nav__link md-nav__container"> |
| <a href="../reference/pyiceberg/table/update/" class="md-nav__link "> |
| |
| |
| |
| <span class="md-ellipsis"> |
| update |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| <label class="md-nav__link " for="__nav_8_1_12_11" id="__nav_8_1_12_11_label" tabindex="0"> |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| </div> |
| |
| <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_8_1_12_11_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8_1_12_11"> |
| <span class="md-nav__icon md-icon"></span> |
| update |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/update/schema/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| schema |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/update/snapshot/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| snapshot |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/update/sorting/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| sorting |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/update/spec/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| spec |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/update/statistics/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| statistics |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/update/validate/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| validate |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/table/upsert_util/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| upsert_util |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/transforms/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| transforms |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/typedef/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| typedef |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/types/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| types |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_16" > |
| |
| |
| <div class="md-nav__link md-nav__container"> |
| <a href="../reference/pyiceberg/utils/" class="md-nav__link "> |
| |
| |
| |
| <span class="md-ellipsis"> |
| utils |
| |
| </span> |
| |
| |
| </a> |
| |
| |
| <label class="md-nav__link " for="__nav_8_1_16" id="__nav_8_1_16_label" tabindex="0"> |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| </div> |
| |
| <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_16_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8_1_16"> |
| <span class="md-nav__icon md-icon"></span> |
| utils |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/utils/bin_packing/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| bin_packing |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/utils/concurrent/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| concurrent |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/utils/config/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| config |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/utils/datetime/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| datetime |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/utils/decimal/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| decimal |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/utils/deprecated/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| deprecated |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/utils/lazydict/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| lazydict |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/utils/parsing/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| parsing |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/utils/properties/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| properties |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/utils/schema_conversion/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| schema_conversion |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/utils/singleton/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| singleton |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../reference/pyiceberg/utils/truncate/" class="md-nav__link"> |
| |
| |
| |
| <span class="md-ellipsis"> |
| truncate |
| |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| </ul> |
| </nav> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > |
| <div class="md-sidebar__scrollwrap"> |
| <div class="md-sidebar__inner"> |
| |
| |
| <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> |
| |
| |
| |
| |
| |
| |
| <label class="md-nav__title" for="__toc"> |
| <span class="md-nav__icon md-icon"></span> |
| Table of contents |
| </label> |
| <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
| |
| <li class="md-nav__item"> |
| <a href="#requirements" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Requirements |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#preparing-for-a-release" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Preparing for a Release |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Preparing for a Release"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#remove-deprecated-apis" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Remove Deprecated APIs |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#update-library-version" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Update Library Version |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#publishing-a-release-candidate-rc" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Publishing a Release Candidate (RC) |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Publishing a Release Candidate (RC)"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#release-types" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Release Types |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Release Types"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#majorminor-release" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Major/Minor Release |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#patch-release" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Patch Release |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#create-tag" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Create Tag |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#create-artifacts" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Create Artifacts |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#publish-release-candidate-rc" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Publish Release Candidate (RC) |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Publish Release Candidate (RC)"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#upload-to-apache-dev-svn" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Upload to Apache Dev SVN |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Upload to Apache Dev SVN"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#download-artifacts-sign-and-generate-checksums" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Download Artifacts, Sign, and Generate Checksums |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#upload-artifacts-to-apache-dev-svn" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Upload Artifacts to Apache Dev SVN |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#remove-old-artifacts-from-apache-dev-svn" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Remove Old Artifacts From Apache Dev SVN |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#upload-to-pypi" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Upload to PyPi |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Upload to PyPi"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#download-artifacts" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Download Artifacts |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#upload-artifacts-to-pypi" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Upload Artifacts to PyPi |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#vote" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Vote |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Vote"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#generate-vote-email" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Generate Vote Email |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#send-vote-email" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Send Vote Email |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#vote-has-failed" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Vote has failed |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#publish-the-final-release-vote-has-passed" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Publish the Final Release (Vote has passed) |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Publish the Final Release (Vote has passed)"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#upload-the-accepted-rc-to-apache-release-svn" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Upload the accepted RC to Apache Release SVN |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#remove-old-artifacts-from-apache-release-svn" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Remove Old Artifacts From Apache Release SVN |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#upload-the-accepted-release-to-pypi" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Upload the accepted release to PyPi |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#post-release" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Post Release |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Post Release"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#send-out-release-announcement-email" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Send out Release Announcement Email |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#create-a-github-release-note" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Create a Github Release Note |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#release-the-docs" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Release the docs |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#update-the-github-template" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Update the Github template |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#misc" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Misc |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="Misc"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#set-up-gpg-key-and-upload-to-apache-iceberg-keys-file" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Set up GPG key and Upload to Apache Iceberg KEYS file |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| |
| </nav> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <div class="md-content" data-md-component="content"> |
| <article class="md-content__inner md-typeset"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <!-- |
| - Licensed to the Apache Software Foundation (ASF) under one |
| - or more contributor license agreements. See the NOTICE file |
| - distributed with this work for additional information |
| - regarding copyright ownership. The ASF licenses this file |
| - to you under the Apache License, Version 2.0 (the |
| - "License"); you may not use this file except in compliance |
| - with the License. You may obtain a copy of the License at |
| - |
| - http://www.apache.org/licenses/LICENSE-2.0 |
| - |
| - Unless required by applicable law or agreed to in writing, |
| - software distributed under the License is distributed on an |
| - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| - KIND, either express or implied. See the License for the |
| - specific language governing permissions and limitations |
| - under the License. |
| --> |
| |
| <h1 id="how-to-release">How to Release<a class="headerlink" href="#how-to-release" title="Permanent link">¶</a></h1> |
| <p>This guide outlines the process for releasing PyIceberg in accordance with the <a href="https://infra.apache.org/release-publishing.html">Apache Release Process</a>. The steps include:</p> |
| <ol> |
| <li>Preparing for a release</li> |
| <li>Publishing a Release Candidate (RC)</li> |
| <li>Community Voting and Validation</li> |
| <li>Publishing the Final Release (if the vote passes)</li> |
| <li>Post-Release Step</li> |
| </ol> |
| <h2 id="requirements">Requirements<a class="headerlink" href="#requirements" title="Permanent link">¶</a></h2> |
| <ul> |
| <li>A GPG key must be registered and published in the <a href="https://downloads.apache.org/iceberg/KEYS">Apache Iceberg KEYS file</a>. Follow <a href="#set-up-gpg-key-and-upload-to-apache-iceberg-keys-file">the instructions for setting up a GPG key and uploading it to the KEYS file</a>.</li> |
| <li>SVN Access<ul> |
| <li>Permission to upload artifacts to the <a href="https://dist.apache.org/repos/dist/dev/iceberg/">Apache development distribution</a> (requires Apache Committer access).</li> |
| <li>Permission to upload artifacts to the <a href="https://dist.apache.org/repos/dist/release/iceberg/">Apache release distribution</a> (requires Apache PMC access).</li> |
| </ul> |
| </li> |
| <li>PyPI Access<ul> |
| <li>The <code>twine</code> package must be installed for uploading releases to PyPi.</li> |
| <li>A PyPI account with publishing permissions for the <a href="https://pypi.org/project/pyiceberg/">pyiceberg project</a>.</li> |
| </ul> |
| </li> |
| </ul> |
| <h2 id="preparing-for-a-release">Preparing for a Release<a class="headerlink" href="#preparing-for-a-release" title="Permanent link">¶</a></h2> |
| <h3 id="remove-deprecated-apis">Remove Deprecated APIs<a class="headerlink" href="#remove-deprecated-apis" title="Permanent link">¶</a></h3> |
| <p>Before running the release candidate, we want to remove any APIs that were marked for removal under the <code>@deprecated</code> tag for this release. See <a href="https://github.com/apache/iceberg-python/pull/1269">#1269</a>.</p> |
| <p>For example, the API with the following deprecation tag should be removed when preparing for the 0.2.0 release.</p> |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nd">@deprecated</span><span class="p">(</span> |
| <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">deprecated_in</span><span class="o">=</span><span class="s2">"0.1.0"</span><span class="p">,</span> |
| <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">removed_in</span><span class="o">=</span><span class="s2">"0.2.0"</span><span class="p">,</span> |
| <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">help_message</span><span class="o">=</span><span class="s2">"Please use load_something_else() instead"</span><span class="p">,</span> |
| <a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="p">)</span> |
| </code></pre></div> |
| <p>We also have the <code>deprecation_message</code> function. We need to change the behavior according to what is noted in the message of that deprecation.</p> |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="n">deprecation_message</span><span class="p">(</span> |
| <a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a> <span class="n">deprecated_in</span><span class="o">=</span><span class="s2">"0.1.0"</span><span class="p">,</span> |
| <a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a> <span class="n">removed_in</span><span class="o">=</span><span class="s2">"0.2.0"</span><span class="p">,</span> |
| <a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a> <span class="n">help_message</span><span class="o">=</span><span class="s2">"The old_property is deprecated. Please use the something_else property instead."</span><span class="p">,</span> |
| <a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="p">)</span> |
| </code></pre></div> |
| <h3 id="update-library-version">Update Library Version<a class="headerlink" href="#update-library-version" title="Permanent link">¶</a></h3> |
| <p>Update the version in <code>pyproject.toml</code> and <code>pyiceberg/__init__.py</code> to match the release version. See <a href="https://github.com/apache/iceberg-python/pull/1276">#1276</a>.</p> |
| <h2 id="publishing-a-release-candidate-rc">Publishing a Release Candidate (RC)<a class="headerlink" href="#publishing-a-release-candidate-rc" title="Permanent link">¶</a></h2> |
| <h3 id="release-types">Release Types<a class="headerlink" href="#release-types" title="Permanent link">¶</a></h3> |
| <h4 id="majorminor-release">Major/Minor Release<a class="headerlink" href="#majorminor-release" title="Permanent link">¶</a></h4> |
| <ul> |
| <li>Use the <code>main</code> branch for the release.</li> |
| <li>Includes new features, enhancements, and any necessary backward-compatible changes.</li> |
| <li>Examples: <code>0.8.0</code>, <code>0.9.0</code>, <code>1.0.0</code>.</li> |
| </ul> |
| <h4 id="patch-release">Patch Release<a class="headerlink" href="#patch-release" title="Permanent link">¶</a></h4> |
| <ul> |
| <li>Use the branch corresponding to the patch version, such as <code>pyiceberg-0.8.x</code>.</li> |
| <li>Focuses on critical bug fixes or security patches that maintain backward compatibility.</li> |
| <li>Examples: <code>0.8.1</code>, <code>0.8.2</code>.</li> |
| </ul> |
| <p>To create a patch branch from the latest release tag:</p> |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="c1"># Fetch all tags</span> |
| <a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>git<span class="w"> </span>fetch<span class="w"> </span>--tags |
| <a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a> |
| <a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="c1"># Assuming 0.8.0 is the latest release tag</span> |
| <a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a>git<span class="w"> </span>checkout<span class="w"> </span>-b<span class="w"> </span>pyiceberg-0.8.x<span class="w"> </span>pyiceberg-0.8.0 |
| <a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a> |
| <a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a><span class="c1"># Cherry-pick commits for the upcoming patch release</span> |
| <a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a>git<span class="w"> </span>cherry-pick<span class="w"> </span><commit> |
| </code></pre></div> |
| <h3 id="create-tag">Create Tag<a class="headerlink" href="#create-tag" title="Permanent link">¶</a></h3> |
| <p>Ensure you are on the correct branch:</p> |
| <ul> |
| <li>For a major/minor release, use the <code>main</code> branch</li> |
| <li>For a patch release, use the branch corresponding to the patch version, i.e. <code>pyiceberg-0.6.x</code>.</li> |
| </ul> |
| <p>Create a signed tag:</p> |
| <p>Replace <code>VERSION</code> and <code>RC</code> with the appropriate values for the release.</p> |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="nb">export</span><span class="w"> </span><span class="nv">VERSION</span><span class="o">=</span><span class="m">0</span>.7.0 |
| <a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="nb">export</span><span class="w"> </span><span class="nv">RC</span><span class="o">=</span><span class="m">1</span> |
| <a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a> |
| <a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="nb">export</span><span class="w"> </span><span class="nv">VERSION_WITH_RC</span><span class="o">=</span><span class="si">${</span><span class="nv">VERSION</span><span class="si">}</span>rc<span class="si">${</span><span class="nv">RC</span><span class="si">}</span> |
| <a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a><span class="nb">export</span><span class="w"> </span><span class="nv">GIT_TAG</span><span class="o">=</span>pyiceberg-<span class="si">${</span><span class="nv">VERSION_WITH_RC</span><span class="si">}</span> |
| <a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a> |
| <a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a>git<span class="w"> </span>tag<span class="w"> </span>-s<span class="w"> </span><span class="si">${</span><span class="nv">GIT_TAG</span><span class="si">}</span><span class="w"> </span>-m<span class="w"> </span><span class="s2">"PyIceberg </span><span class="si">${</span><span class="nv">VERSION_WITH_RC</span><span class="si">}</span><span class="s2">"</span> |
| <a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a>git<span class="w"> </span>push<span class="w"> </span>git@github.com:apache/iceberg-python.git<span class="w"> </span><span class="si">${</span><span class="nv">GIT_TAG</span><span class="si">}</span> |
| </code></pre></div> |
| <h3 id="create-artifacts">Create Artifacts<a class="headerlink" href="#create-artifacts" title="Permanent link">¶</a></h3> |
| <p>The <a href="https://github.com/apache/iceberg-python/actions/workflows/python-release.yml"><code>Python Build Release Candidate</code> Github Action</a> will run automatically upon tag push.</p> |
| <p>This action will generate artifacts that will include both source distribution (<code>sdist</code>) and binary distributions (<code>wheels</code> using <a href="https://github.com/pypa/cibuildwheel"><code>cibuildwheel</code></a>) for each architectures.</p> |
| <p>This action will generate two final artifacts:</p> |
| <ul> |
| <li><code>svn-release-candidate-${VERSION}rc${RC}</code> for SVN</li> |
| <li><code>pypi-release-candidate-${VERSION}rc${RC}</code> for PyPi</li> |
| </ul> |
| <p>If <code>gh</code> is available, watch the GitHub Action progress using:</p> |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="nv">RUN_ID</span><span class="o">=</span><span class="k">$(</span>gh<span class="w"> </span>run<span class="w"> </span>list<span class="w"> </span>--repo<span class="w"> </span>apache/iceberg-python<span class="w"> </span>--workflow<span class="w"> </span><span class="s2">"Python Build Release Candidate"</span><span class="w"> </span>--branch<span class="w"> </span><span class="s2">"</span><span class="si">${</span><span class="nv">GIT_TAG</span><span class="si">}</span><span class="s2">"</span><span class="w"> </span>--event<span class="w"> </span>push<span class="w"> </span>--json<span class="w"> </span>databaseId<span class="w"> </span>-q<span class="w"> </span><span class="s1">'.[0].databaseId'</span><span class="k">)</span> |
| <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="nb">echo</span><span class="w"> </span><span class="s2">"Waiting for workflow to complete, this will take several minutes..."</span> |
| <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>gh<span class="w"> </span>run<span class="w"> </span>watch<span class="w"> </span><span class="nv">$RUN_ID</span><span class="w"> </span>--repo<span class="w"> </span>apache/iceberg-python |
| </code></pre></div> |
| <p>and download the artifacts using:</p> |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>gh<span class="w"> </span>run<span class="w"> </span>download<span class="w"> </span><span class="nv">$RUN_ID</span><span class="w"> </span>--repo<span class="w"> </span>apache/iceberg-python |
| </code></pre></div> |
| <h3 id="publish-release-candidate-rc">Publish Release Candidate (RC)<a class="headerlink" href="#publish-release-candidate-rc" title="Permanent link">¶</a></h3> |
| <h4 id="upload-to-apache-dev-svn">Upload to Apache Dev SVN<a class="headerlink" href="#upload-to-apache-dev-svn" title="Permanent link">¶</a></h4> |
| <h5 id="download-artifacts-sign-and-generate-checksums">Download Artifacts, Sign, and Generate Checksums<a class="headerlink" href="#download-artifacts-sign-and-generate-checksums" title="Permanent link">¶</a></h5> |
| <p>Download the SVN artifact from the GitHub Action and unzip it.</p> |
| <p>Navigate to the artifact directory. Generate signature and checksum files:</p> |
| <ul> |
| <li><code>.asc</code> files: GPG-signed versions of each artifact to ensure authenticity.</li> |
| <li><code>.sha512</code> files: SHA-512 checksums for verifying file integrity.</li> |
| </ul> |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="o">(</span> |
| <a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="w"> </span><span class="nb">cd</span><span class="w"> </span>svn-release-candidate-<span class="si">${</span><span class="nv">VERSION</span><span class="si">}</span>rc<span class="si">${</span><span class="nv">RC</span><span class="si">}</span> |
| <a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a> |
| <a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span>name<span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="k">$(</span>ls<span class="w"> </span>pyiceberg-*.whl<span class="w"> </span>pyiceberg-*.tar.gz<span class="k">)</span> |
| <a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a><span class="w"> </span><span class="k">do</span> |
| <a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a><span class="w"> </span>gpg<span class="w"> </span>--yes<span class="w"> </span>--armor<span class="w"> </span>--output<span class="w"> </span><span class="s2">"</span><span class="si">${</span><span class="nv">name</span><span class="si">}</span><span class="s2">.asc"</span><span class="w"> </span>--detach-sig<span class="w"> </span><span class="s2">"</span><span class="si">${</span><span class="nv">name</span><span class="si">}</span><span class="s2">"</span> |
| <a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a><span class="w"> </span>shasum<span class="w"> </span>-a<span class="w"> </span><span class="m">512</span><span class="w"> </span><span class="s2">"</span><span class="si">${</span><span class="nv">name</span><span class="si">}</span><span class="s2">"</span><span class="w"> </span>><span class="w"> </span><span class="s2">"</span><span class="si">${</span><span class="nv">name</span><span class="si">}</span><span class="s2">.sha512"</span> |
| <a id="__codelineno-6-8" name="__codelineno-6-8" href="#__codelineno-6-8"></a><span class="w"> </span><span class="k">done</span> |
| <a id="__codelineno-6-9" name="__codelineno-6-9" href="#__codelineno-6-9"></a><span class="o">)</span> |
| </code></pre></div> |
| <p>The parentheses <code>()</code> create a subshell. Any changes to the directory (<code>cd</code>) are limited to this subshell, so the current directory in the parent shell remains unchanged.</p> |
| <h5 id="upload-artifacts-to-apache-dev-svn">Upload Artifacts to Apache Dev SVN<a class="headerlink" href="#upload-artifacts-to-apache-dev-svn" title="Permanent link">¶</a></h5> |
| <p>Now, upload the files from the same directory:</p> |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="nb">export</span><span class="w"> </span><span class="nv">SVN_TMP_DIR</span><span class="o">=</span>/tmp/iceberg-<span class="si">${</span><span class="nv">VERSION</span><span class="si">}</span>/ |
| <a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a>svn<span class="w"> </span>checkout<span class="w"> </span>https://dist.apache.org/repos/dist/dev/iceberg<span class="w"> </span><span class="nv">$SVN_TMP_DIR</span> |
| <a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a> |
| <a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a><span class="nb">export</span><span class="w"> </span><span class="nv">SVN_TMP_DIR_VERSIONED</span><span class="o">=</span><span class="si">${</span><span class="nv">SVN_TMP_DIR</span><span class="si">}</span>pyiceberg-<span class="nv">$VERSION_WITH_RC</span>/ |
| <a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a>mkdir<span class="w"> </span>-p<span class="w"> </span><span class="nv">$SVN_TMP_DIR_VERSIONED</span> |
| <a id="__codelineno-7-6" name="__codelineno-7-6" href="#__codelineno-7-6"></a>cp<span class="w"> </span>svn-release-candidate-<span class="si">${</span><span class="nv">VERSION</span><span class="si">}</span>rc<span class="si">${</span><span class="nv">RC</span><span class="si">}</span>/*<span class="w"> </span><span class="nv">$SVN_TMP_DIR_VERSIONED</span> |
| <a id="__codelineno-7-7" name="__codelineno-7-7" href="#__codelineno-7-7"></a>svn<span class="w"> </span>add<span class="w"> </span><span class="nv">$SVN_TMP_DIR_VERSIONED</span> |
| <a id="__codelineno-7-8" name="__codelineno-7-8" href="#__codelineno-7-8"></a>svn<span class="w"> </span>ci<span class="w"> </span>-m<span class="w"> </span><span class="s2">"PyIceberg </span><span class="si">${</span><span class="nv">VERSION_WITH_RC</span><span class="si">}</span><span class="s2">"</span><span class="w"> </span><span class="si">${</span><span class="nv">SVN_TMP_DIR_VERSIONED</span><span class="si">}</span> |
| </code></pre></div> |
| <p>Verify the artifact is uploaded to <a href="https://dist.apache.org/repos/dist/dev/iceberg/">https://dist.apache.org/repos/dist/dev/iceberg</a>.</p> |
| <h5 id="remove-old-artifacts-from-apache-dev-svn">Remove Old Artifacts From Apache Dev SVN<a class="headerlink" href="#remove-old-artifacts-from-apache-dev-svn" title="Permanent link">¶</a></h5> |
| <p>Clean up old RC artifacts:</p> |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>svn<span class="w"> </span>delete<span class="w"> </span>https://dist.apache.org/repos/dist/dev/iceberg/pyiceberg-<OLD_RC_VERSION><span class="w"> </span>-m<span class="w"> </span><span class="s2">"Remove old RC artifacts"</span> |
| </code></pre></div> |
| <h4 id="upload-to-pypi">Upload to PyPi<a class="headerlink" href="#upload-to-pypi" title="Permanent link">¶</a></h4> |
| <h5 id="download-artifacts">Download Artifacts<a class="headerlink" href="#download-artifacts" title="Permanent link">¶</a></h5> |
| <p>Download the PyPi artifact from the GitHub Action and unzip it.</p> |
| <h5 id="upload-artifacts-to-pypi">Upload Artifacts to PyPi<a class="headerlink" href="#upload-artifacts-to-pypi" title="Permanent link">¶</a></h5> |
| <p>Update the artifact directory to PyPi using <code>twine</code>. This <strong>won't</strong> bump the version for everyone that hasn't pinned their version, since it is set to an RC <a href="https://packaging.python.org/en/latest/guides/distributing-packages-using-setuptools/#pre-release-versioning">pre-release and those are ignored</a>.</p> |
| <!-- prettier-ignore-start --> |
| |
| <div class="admonition note"> |
| <p class="admonition-title">Note</p> |
| <p><code>twine</code> might require an PyPi API token.</p> |
| </div> |
| <!-- prettier-ignore-end --> |
| |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>twine<span class="w"> </span>upload<span class="w"> </span>pypi-release-candidate-<span class="si">${</span><span class="nv">VERSION</span><span class="si">}</span>rc<span class="si">${</span><span class="nv">RC</span><span class="si">}</span>/* |
| </code></pre></div> |
| <p>Verify the artifact is uploaded to <a href="https://pypi.org/project/pyiceberg/#history">PyPi</a>.</p> |
| <h2 id="vote">Vote<a class="headerlink" href="#vote" title="Permanent link">¶</a></h2> |
| <h3 id="generate-vote-email">Generate Vote Email<a class="headerlink" href="#generate-vote-email" title="Permanent link">¶</a></h3> |
| <p>Final step is to generate the email to the dev mail list:</p> |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="nb">export</span><span class="w"> </span><span class="nv">GIT_TAG_REF</span><span class="o">=</span><span class="k">$(</span>git<span class="w"> </span>show-ref<span class="w"> </span><span class="si">${</span><span class="nv">GIT_TAG</span><span class="si">}</span><span class="k">)</span> |
| <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="nb">export</span><span class="w"> </span><span class="nv">GIT_TAG_HASH</span><span class="o">=</span><span class="si">${</span><span class="nv">GIT_TAG_REF</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">40</span><span class="si">}</span> |
| <a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="nb">export</span><span class="w"> </span><span class="nv">LAST_COMMIT_ID</span><span class="o">=</span><span class="k">$(</span>git<span class="w"> </span>rev-list<span class="w"> </span><span class="si">${</span><span class="nv">GIT_TAG</span><span class="si">}</span><span class="w"> </span><span class="m">2</span>><span class="w"> </span>/dev/null<span class="w"> </span><span class="p">|</span><span class="w"> </span>head<span class="w"> </span>-n<span class="w"> </span><span class="m">1</span><span class="k">)</span> |
| <a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a> |
| <a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a>cat<span class="w"> </span><span class="s"><< EOF > release-announcement-email.txt</span> |
| <a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a><span class="s">To: dev@iceberg.apache.org</span> |
| <a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a><span class="s">Subject: [VOTE] PyIceberg $VERSION_WITH_RC</span> |
| <a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a><span class="s">Hi Everyone,</span> |
| <a id="__codelineno-10-9" name="__codelineno-10-9" href="#__codelineno-10-9"></a> |
| <a id="__codelineno-10-10" name="__codelineno-10-10" href="#__codelineno-10-10"></a><span class="s">I propose that we release the following RC as the official PyIceberg $VERSION release.</span> |
| <a id="__codelineno-10-11" name="__codelineno-10-11" href="#__codelineno-10-11"></a> |
| <a id="__codelineno-10-12" name="__codelineno-10-12" href="#__codelineno-10-12"></a><span class="s">A summary of the high level features:</span> |
| <a id="__codelineno-10-13" name="__codelineno-10-13" href="#__codelineno-10-13"></a> |
| <a id="__codelineno-10-14" name="__codelineno-10-14" href="#__codelineno-10-14"></a><span class="s">* <Add summary by hand></span> |
| <a id="__codelineno-10-15" name="__codelineno-10-15" href="#__codelineno-10-15"></a> |
| <a id="__codelineno-10-16" name="__codelineno-10-16" href="#__codelineno-10-16"></a><span class="s">The commit ID is $LAST_COMMIT_ID</span> |
| <a id="__codelineno-10-17" name="__codelineno-10-17" href="#__codelineno-10-17"></a> |
| <a id="__codelineno-10-18" name="__codelineno-10-18" href="#__codelineno-10-18"></a><span class="s">* This corresponds to the tag: $GIT_TAG ($GIT_TAG_HASH)</span> |
| <a id="__codelineno-10-19" name="__codelineno-10-19" href="#__codelineno-10-19"></a><span class="s">* https://github.com/apache/iceberg-python/releases/tag/$GIT_TAG</span> |
| <a id="__codelineno-10-20" name="__codelineno-10-20" href="#__codelineno-10-20"></a><span class="s">* https://github.com/apache/iceberg-python/tree/$LAST_COMMIT_ID</span> |
| <a id="__codelineno-10-21" name="__codelineno-10-21" href="#__codelineno-10-21"></a> |
| <a id="__codelineno-10-22" name="__codelineno-10-22" href="#__codelineno-10-22"></a><span class="s">The release tarball, signature, and checksums are here:</span> |
| <a id="__codelineno-10-23" name="__codelineno-10-23" href="#__codelineno-10-23"></a> |
| <a id="__codelineno-10-24" name="__codelineno-10-24" href="#__codelineno-10-24"></a><span class="s">* https://dist.apache.org/repos/dist/dev/iceberg/pyiceberg-$VERSION_WITH_RC/</span> |
| <a id="__codelineno-10-25" name="__codelineno-10-25" href="#__codelineno-10-25"></a> |
| <a id="__codelineno-10-26" name="__codelineno-10-26" href="#__codelineno-10-26"></a><span class="s">You can find the KEYS file here:</span> |
| <a id="__codelineno-10-27" name="__codelineno-10-27" href="#__codelineno-10-27"></a> |
| <a id="__codelineno-10-28" name="__codelineno-10-28" href="#__codelineno-10-28"></a><span class="s">* https://downloads.apache.org/iceberg/KEYS</span> |
| <a id="__codelineno-10-29" name="__codelineno-10-29" href="#__codelineno-10-29"></a> |
| <a id="__codelineno-10-30" name="__codelineno-10-30" href="#__codelineno-10-30"></a><span class="s">Convenience binary artifacts are staged on pypi:</span> |
| <a id="__codelineno-10-31" name="__codelineno-10-31" href="#__codelineno-10-31"></a> |
| <a id="__codelineno-10-32" name="__codelineno-10-32" href="#__codelineno-10-32"></a><span class="s">https://pypi.org/project/pyiceberg/$VERSION_WITH_RC/</span> |
| <a id="__codelineno-10-33" name="__codelineno-10-33" href="#__codelineno-10-33"></a> |
| <a id="__codelineno-10-34" name="__codelineno-10-34" href="#__codelineno-10-34"></a><span class="s">And can be installed using: pip3 install pyiceberg==$VERSION_WITH_RC</span> |
| <a id="__codelineno-10-35" name="__codelineno-10-35" href="#__codelineno-10-35"></a> |
| <a id="__codelineno-10-36" name="__codelineno-10-36" href="#__codelineno-10-36"></a><span class="s">Instructions for verifying a release can be found here:</span> |
| <a id="__codelineno-10-37" name="__codelineno-10-37" href="#__codelineno-10-37"></a> |
| <a id="__codelineno-10-38" name="__codelineno-10-38" href="#__codelineno-10-38"></a><span class="s">* https://py.iceberg.apache.org/verify-release/</span> |
| <a id="__codelineno-10-39" name="__codelineno-10-39" href="#__codelineno-10-39"></a> |
| <a id="__codelineno-10-40" name="__codelineno-10-40" href="#__codelineno-10-40"></a><span class="s">Please download, verify, and test.</span> |
| <a id="__codelineno-10-41" name="__codelineno-10-41" href="#__codelineno-10-41"></a> |
| <a id="__codelineno-10-42" name="__codelineno-10-42" href="#__codelineno-10-42"></a><span class="s">Please vote in the next 72 hours.</span> |
| <a id="__codelineno-10-43" name="__codelineno-10-43" href="#__codelineno-10-43"></a><span class="s">[ ] +1 Release this as PyIceberg $VERSION</span> |
| <a id="__codelineno-10-44" name="__codelineno-10-44" href="#__codelineno-10-44"></a><span class="s">[ ] +0</span> |
| <a id="__codelineno-10-45" name="__codelineno-10-45" href="#__codelineno-10-45"></a><span class="s">[ ] -1 Do not release this because...</span> |
| <a id="__codelineno-10-46" name="__codelineno-10-46" href="#__codelineno-10-46"></a><span class="s">EOF</span> |
| </code></pre></div> |
| <h3 id="send-vote-email">Send Vote Email<a class="headerlink" href="#send-vote-email" title="Permanent link">¶</a></h3> |
| <p>Verify the content of <code>release-announcement-email.txt</code> and send it to <code>dev@iceberg.apache.org</code> with the corresponding subject line.</p> |
| <h2 id="vote-has-failed">Vote has failed<a class="headerlink" href="#vote-has-failed" title="Permanent link">¶</a></h2> |
| <p>If there are concerns with the RC, address the issues and generate another RC.</p> |
| <h2 id="publish-the-final-release-vote-has-passed">Publish the Final Release (Vote has passed)<a class="headerlink" href="#publish-the-final-release-vote-has-passed" title="Permanent link">¶</a></h2> |
| <p>A minimum of 3 binding +1 votes is required to pass an RC. |
| Once the vote has been passed, you can close the vote thread by concluding it:</p> |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>Thanks everyone for voting! The 72 hours have passed, and a minimum of 3 binding votes have been cast: |
| <a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a> |
| <a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a>+1 Foo Bar (non-binding) |
| <a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a>... |
| <a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a>+1 Fokko Driesprong (binding) |
| <a id="__codelineno-11-6" name="__codelineno-11-6" href="#__codelineno-11-6"></a> |
| <a id="__codelineno-11-7" name="__codelineno-11-7" href="#__codelineno-11-7"></a>The release candidate has been accepted as PyIceberg <VERSION>. Thanks everyone, when all artifacts are published the announcement will be sent out. |
| <a id="__codelineno-11-8" name="__codelineno-11-8" href="#__codelineno-11-8"></a> |
| <a id="__codelineno-11-9" name="__codelineno-11-9" href="#__codelineno-11-9"></a>Kind regards, |
| </code></pre></div> |
| <h3 id="upload-the-accepted-rc-to-apache-release-svn">Upload the accepted RC to Apache Release SVN<a class="headerlink" href="#upload-the-accepted-rc-to-apache-release-svn" title="Permanent link">¶</a></h3> |
| <!-- prettier-ignore-start --> |
| |
| <div class="admonition note"> |
| <p class="admonition-title">Note</p> |
| <p>Only a PMC member has the permission to upload an artifact to the SVN release dist.</p> |
| </div> |
| <!-- prettier-ignore-end --> |
| |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="nb">export</span><span class="w"> </span><span class="nv">SVN_DEV_DIR_VERSIONED</span><span class="o">=</span><span class="s2">"https://dist.apache.org/repos/dist/dev/iceberg/pyiceberg-</span><span class="si">${</span><span class="nv">VERSION_WITH_RC</span><span class="si">}</span><span class="s2">"</span> |
| <a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="nb">export</span><span class="w"> </span><span class="nv">SVN_RELEASE_DIR_VERSIONED</span><span class="o">=</span><span class="s2">"https://dist.apache.org/repos/dist/release/iceberg/pyiceberg-</span><span class="si">${</span><span class="nv">VERSION</span><span class="si">}</span><span class="s2">"</span> |
| <a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a> |
| <a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a>svn<span class="w"> </span>mv<span class="w"> </span><span class="si">${</span><span class="nv">SVN_DEV_DIR_VERSIONED</span><span class="si">}</span><span class="w"> </span><span class="si">${</span><span class="nv">SVN_RELEASE_DIR_VERSIONED</span><span class="si">}</span><span class="w"> </span>-m<span class="w"> </span><span class="s2">"PyIceberg: Add release </span><span class="si">${</span><span class="nv">VERSION</span><span class="si">}</span><span class="s2">"</span> |
| </code></pre></div> |
| <p>Verify the artifact is uploaded to <a href="https://dist.apache.org/repos/dist/release/iceberg/">https://dist.apache.org/repos/dist/release/iceberg</a>.</p> |
| <h3 id="remove-old-artifacts-from-apache-release-svn">Remove Old Artifacts From Apache Release SVN<a class="headerlink" href="#remove-old-artifacts-from-apache-release-svn" title="Permanent link">¶</a></h3> |
| <p>We only want to host the latest release. Clean up old release artifacts:</p> |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>svn<span class="w"> </span>delete<span class="w"> </span>https://dist.apache.org/repos/dist/release/iceberg/pyiceberg-<OLD_RELEASE_VERSION><span class="w"> </span>-m<span class="w"> </span><span class="s2">"Remove old release artifacts"</span> |
| </code></pre></div> |
| <h3 id="upload-the-accepted-release-to-pypi">Upload the accepted release to PyPi<a class="headerlink" href="#upload-the-accepted-release-to-pypi" title="Permanent link">¶</a></h3> |
| <p>The latest version can be pushed to PyPi. Check out the Apache SVN and make sure to publish the right version with <code>twine</code>:</p> |
| <!-- prettier-ignore-start --> |
| |
| <div class="admonition note"> |
| <p class="admonition-title">Note</p> |
| <p><code>twine</code> might require an PyPi API token.</p> |
| </div> |
| <!-- prettier-ignore-end --> |
| |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>svn<span class="w"> </span>checkout<span class="w"> </span>https://dist.apache.org/repos/dist/release/iceberg<span class="w"> </span>/tmp/iceberg-dist-release/ |
| <a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a><span class="nb">cd</span><span class="w"> </span>/tmp/iceberg-dist-release/pyiceberg-<span class="si">${</span><span class="nv">VERSION</span><span class="si">}</span> |
| <a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a>twine<span class="w"> </span>upload<span class="w"> </span>pyiceberg-*.whl<span class="w"> </span>pyiceberg-*.tar.gz |
| </code></pre></div> |
| <p>Verify the artifact is uploaded to <a href="https://pypi.org/project/pyiceberg/#history">PyPi</a>.</p> |
| <h2 id="post-release">Post Release<a class="headerlink" href="#post-release" title="Permanent link">¶</a></h2> |
| <h3 id="send-out-release-announcement-email">Send out Release Announcement Email<a class="headerlink" href="#send-out-release-announcement-email" title="Permanent link">¶</a></h3> |
| <p>Send out an announcement on the dev mail list:</p> |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>To: dev@iceberg.apache.org |
| <a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a>Subject: [ANNOUNCE] PyIceberg <VERSION> |
| <a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a> |
| <a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a>I'm pleased to announce the release of PyIceberg <VERSION>! |
| <a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a> |
| <a id="__codelineno-15-6" name="__codelineno-15-6" href="#__codelineno-15-6"></a>Apache Iceberg is an open table format for huge analytic datasets. Iceberg |
| <a id="__codelineno-15-7" name="__codelineno-15-7" href="#__codelineno-15-7"></a>delivers high query performance for tables with tens of petabytes of data, |
| <a id="__codelineno-15-8" name="__codelineno-15-8" href="#__codelineno-15-8"></a>along with atomic commits, concurrent writes, and SQL-compatible table |
| <a id="__codelineno-15-9" name="__codelineno-15-9" href="#__codelineno-15-9"></a>evolution. |
| <a id="__codelineno-15-10" name="__codelineno-15-10" href="#__codelineno-15-10"></a> |
| <a id="__codelineno-15-11" name="__codelineno-15-11" href="#__codelineno-15-11"></a>This Python release can be downloaded from: https://pypi.org/project/pyiceberg/<VERSION>/ |
| <a id="__codelineno-15-12" name="__codelineno-15-12" href="#__codelineno-15-12"></a> |
| <a id="__codelineno-15-13" name="__codelineno-15-13" href="#__codelineno-15-13"></a>Thanks to everyone for contributing! |
| </code></pre></div> |
| <h3 id="create-a-github-release-note">Create a Github Release Note<a class="headerlink" href="#create-a-github-release-note" title="Permanent link">¶</a></h3> |
| <p>Create a <a href="https://github.com/apache/iceberg-python/releases/new">new Release Note</a> on the iceberg-python Github repository.</p> |
| <p>Input the tag in <strong>Choose a tag</strong> with the newly approved released version (e.g. <code>0.7.0</code>) and set it to <strong>Create new tag</strong> on publish. Pick the target commit version as the commit ID the release was approved on. |
| For example: |
| <img alt="Generate Release Notes" src="../assets/images/gen-release-notes.jpg" /></p> |
| <p>Then, select the previous release version as the <strong>Previous tag</strong> to use the diff between the two versions in generating the release notes.</p> |
| <p><strong>Generate release notes</strong>.</p> |
| <p><strong>Set as the latest release</strong> and <strong>Publish</strong>.</p> |
| <p>Make sure to check the <code>changelog</code> label on GitHub to see if anything needs to be highlighted.</p> |
| <h3 id="release-the-docs">Release the docs<a class="headerlink" href="#release-the-docs" title="Permanent link">¶</a></h3> |
| <p>Run the <a href="https://github.com/apache/iceberg-python/actions/workflows/python-release-docs.yml"><code>Release Docs</code> Github Action</a>.</p> |
| <h3 id="update-the-github-template">Update the Github template<a class="headerlink" href="#update-the-github-template" title="Permanent link">¶</a></h3> |
| <p>Make sure to create a PR to update the <a href="https://github.com/apache/iceberg-python/blob/main/.github/ISSUE_TEMPLATE/iceberg_bug_report.yml">GitHub issues template</a> with the latest version.</p> |
| <h2 id="misc">Misc<a class="headerlink" href="#misc" title="Permanent link">¶</a></h2> |
| <h3 id="set-up-gpg-key-and-upload-to-apache-iceberg-keys-file">Set up GPG key and Upload to Apache Iceberg KEYS file<a class="headerlink" href="#set-up-gpg-key-and-upload-to-apache-iceberg-keys-file" title="Permanent link">¶</a></h3> |
| <p>To set up GPG key locally, see the <a href="http://www.apache.org/dev/openpgp.html#key-gen-generate-key">instructions</a>.</p> |
| <p>To install gpg on a M1 based Mac, a couple of additional steps are required: <a href="https://gist.github.com/phortuin/cf24b1cca3258720c71ad42977e1ba57">https://gist.github.com/phortuin/cf24b1cca3258720c71ad42977e1ba57</a>.</p> |
| <p>Then, published GPG key to the <a href="https://downloads.apache.org/iceberg/KEYS">Apache Iceberg KEYS file</a>:</p> |
| <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>svn<span class="w"> </span>co<span class="w"> </span>https://dist.apache.org/repos/dist/release/iceberg<span class="w"> </span>icebergsvn |
| <a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="nb">cd</span><span class="w"> </span>icebergsvn |
| <a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a><span class="nb">echo</span><span class="w"> </span><span class="s2">""</span><span class="w"> </span>>><span class="w"> </span>KEYS<span class="w"> </span><span class="c1"># append a newline</span> |
| <a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a>gpg<span class="w"> </span>--list-sigs<span class="w"> </span><YOUR<span class="w"> </span>KEY<span class="w"> </span>ID<span class="w"> </span>HERE><span class="w"> </span>>><span class="w"> </span>KEYS<span class="w"> </span><span class="c1"># append signatures</span> |
| <a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a>gpg<span class="w"> </span>--armor<span class="w"> </span>--export<span class="w"> </span><YOUR<span class="w"> </span>KEY<span class="w"> </span>ID<span class="w"> </span>HERE><span class="w"> </span>>><span class="w"> </span>KEYS<span class="w"> </span><span class="c1"># append public key block</span> |
| <a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a>svn<span class="w"> </span>commit<span class="w"> </span>-m<span class="w"> </span><span class="s2">"add key for <YOUR NAME HERE>"</span> |
| </code></pre></div> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| </article> |
| </div> |
| |
| |
| <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> |
| </div> |
| |
| <button type="button" class="md-top md-icon" data-md-component="top" hidden> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> |
| Back to top |
| </button> |
| |
| </main> |
| |
| <footer class="md-footer"> |
| |
| <div class="md-footer-meta md-typeset"> |
| <div class="md-footer-meta__inner md-grid"> |
| <div class="md-copyright"> |
| |
| |
| Made with |
| <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> |
| Material for MkDocs |
| </a> |
| |
| </div> |
| |
| </div> |
| </div> |
| </footer> |
| |
| </div> |
| <div class="md-dialog" data-md-component="dialog"> |
| <div class="md-dialog__inner md-typeset"></div> |
| </div> |
| |
| |
| |
| |
| <script id="__config" type="application/json">{"base": "..", "features": ["navigation.top", "navigation.tracking", "navigation.tabs", "navigation.tabs.sticky", "content.code.copy"], "search": "../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> |
| |
| |
| <script src="../assets/javascripts/bundle.f55a23d4.min.js"></script> |
| |
| |
| </body> |
| </html> |