CINXE.COM

Python Software Foundation News: 2022

<!DOCTYPE html> <html class='v2' dir='ltr' lang='en' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'> <head> <link href='https://www.blogger.com/static/v1/widgets/3566091532-css_bundle_v2.css' rel='stylesheet' type='text/css'/> <!-- Google tag (gtag.js) --> <script async='async' src='https://www.googletagmanager.com/gtag/js?id=G-H6ZX4B41B7'></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-H6ZX4B41B7'); </script> <meta content='Python Software Foundation Blog' property='og:site_name'/> <meta content='https://pyfound.blogspot.com' property='og:url'/> <meta content='' property='og:description'/> <meta content='' property='og:type'/> <meta content='https://s3.dualstack.us-east-2.amazonaws.com/pythondotorg-assets/media/psf/grants/report-2006-10/psf-logo.png' property='og:image'/> <meta content='width=1100' name='viewport'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='blogger' name='generator'/> <link href='https://pyfound.blogspot.com/favicon.ico' rel='icon' type='image/x-icon'/> <link href='https://pyfound.blogspot.com/2022/' rel='canonical'/> <link rel="alternate" type="application/atom+xml" title="Python Software Foundation News - Atom" href="https://pyfound.blogspot.com/feeds/posts/default" /> <link rel="alternate" type="application/rss+xml" title="Python Software Foundation News - RSS" href="https://pyfound.blogspot.com/feeds/posts/default?alt=rss" /> <link rel="service.post" type="application/atom+xml" title="Python Software Foundation News - Atom" href="https://www.blogger.com/feeds/8520/posts/default" /> <!--Can't find substitution for tag [blog.ieCssRetrofitLinks]--> <meta content='https://pyfound.blogspot.com/2022/' property='og:url'/> <meta content='Python Software Foundation News' property='og:title'/> <meta content='聽聽News from the Python Software Foundation' property='og:description'/> <title>Python Software Foundation News: 2022</title> <style id='page-skin-1' type='text/css'><!-- /* ----------------------------------------------- Blogger Template Style Name: Simple Designer: Blogger URL: www.blogger.com ----------------------------------------------- */ /* Variable definitions ==================== <Variable name="keycolor" description="Main Color" type="color" default="#66bbdd"/> <Group description="Page Text" selector="body"> <Variable name="body.font" description="Font" type="font" default="normal normal 12px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="body.text.color" description="Text Color" type="color" default="#222222"/> </Group> <Group description="Backgrounds" selector=".body-fauxcolumns-outer"> <Variable name="body.background.color" description="Outer Background" type="color" default="#66bbdd"/> <Variable name="content.background.color" description="Main Background" type="color" default="#ffffff"/> <Variable name="header.background.color" description="Header Background" type="color" default="transparent"/> </Group> <Group description="Links" selector=".main-outer"> <Variable name="link.color" description="Link Color" type="color" default="#2288bb"/> <Variable name="link.visited.color" description="Visited Color" type="color" default="#888888"/> <Variable name="link.hover.color" description="Hover Color" type="color" default="#33aaff"/> </Group> <Group description="Blog Title" selector=".header h1"> <Variable name="header.font" description="Font" type="font" default="normal normal 60px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="header.text.color" description="Title Color" type="color" default="#3399bb" /> </Group> <Group description="Blog Description" selector=".header .description"> <Variable name="description.text.color" description="Description Color" type="color" default="#777777" /> </Group> <Group description="Tabs Text" selector=".tabs-inner .widget li a"> <Variable name="tabs.font" description="Font" type="font" default="normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="tabs.text.color" description="Text Color" type="color" default="#999999"/> <Variable name="tabs.selected.text.color" description="Selected Color" type="color" default="#000000"/> </Group> <Group description="Tabs Background" selector=".tabs-outer .PageList"> <Variable name="tabs.background.color" description="Background Color" type="color" default="#f5f5f5"/> <Variable name="tabs.selected.background.color" description="Selected Color" type="color" default="#eeeeee"/> </Group> <Group description="Post Title" selector="h3.post-title, .comments h4"> <Variable name="post.title.font" description="Font" type="font" default="normal normal 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> </Group> <Group description="Date Header" selector=".date-header"> <Variable name="date.header.color" description="Text Color" type="color" default="#666666"/> <Variable name="date.header.background.color" description="Background Color" type="color" default="transparent"/> <Variable name="date.header.font" description="Text Font" type="font" default="normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="date.header.padding" description="Date Header Padding" type="string" default="inherit"/> <Variable name="date.header.letterspacing" description="Date Header Letter Spacing" type="string" default="inherit"/> <Variable name="date.header.margin" description="Date Header Margin" type="string" default="inherit"/> </Group> <Group description="Post Footer" selector=".post-footer"> <Variable name="post.footer.text.color" description="Text Color" type="color" default="#666666"/> <Variable name="post.footer.background.color" description="Background Color" type="color" default="#f9f9f9"/> <Variable name="post.footer.border.color" description="Shadow Color" type="color" default="#eeeeee"/> </Group> <Group description="Gadgets" selector="h2"> <Variable name="widget.title.font" description="Title Font" type="font" default="normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="widget.title.text.color" description="Title Color" type="color" default="#000000"/> <Variable name="widget.alternate.text.color" description="Alternate Color" type="color" default="#999999"/> </Group> <Group description="Images" selector=".main-inner"> <Variable name="image.background.color" description="Background Color" type="color" default="#ffffff"/> <Variable name="image.border.color" description="Border Color" type="color" default="#eeeeee"/> <Variable name="image.text.color" description="Caption Text Color" type="color" default="#666666"/> </Group> <Group description="Accents" selector=".content-inner"> <Variable name="body.rule.color" description="Separator Line Color" type="color" default="#eeeeee"/> <Variable name="tabs.border.color" description="Tabs Border Color" type="color" default="#ffd343"/> </Group> <Variable name="body.background" description="Body Background" type="background" color="#eeeeee" default="$(color) none repeat scroll top left"/> <Variable name="body.background.override" description="Body Background Override" type="string" default=""/> <Variable name="body.background.gradient.cap" description="Body Gradient Cap" type="url" default="url(https://resources.blogblog.com/blogblog/data/1kt/simple/gradients_light.png)"/> <Variable name="body.background.gradient.tile" description="Body Gradient Tile" type="url" default="url(https://resources.blogblog.com/blogblog/data/1kt/simple/body_gradient_tile_light.png)"/> <Variable name="content.background.color.selector" description="Content Background Color Selector" type="string" default=".content-inner"/> <Variable name="content.padding" description="Content Padding" type="length" default="10px" min="0" max="100px"/> <Variable name="content.padding.horizontal" description="Content Horizontal Padding" type="length" default="10px" min="0" max="100px"/> <Variable name="content.shadow.spread" description="Content Shadow Spread" type="length" default="40px" min="0" max="100px"/> <Variable name="content.shadow.spread.webkit" description="Content Shadow Spread (WebKit)" type="length" default="5px" min="0" max="100px"/> <Variable name="content.shadow.spread.ie" description="Content Shadow Spread (IE)" type="length" default="10px" min="0" max="100px"/> <Variable name="main.border.width" description="Main Border Width" type="length" default="0" min="0" max="10px"/> <Variable name="header.background.gradient" description="Header Gradient" type="url" default="none"/> <Variable name="header.shadow.offset.left" description="Header Shadow Offset Left" type="length" default="-1px" min="-50px" max="50px"/> <Variable name="header.shadow.offset.top" description="Header Shadow Offset Top" type="length" default="-1px" min="-50px" max="50px"/> <Variable name="header.shadow.spread" description="Header Shadow Spread" type="length" default="1px" min="0" max="100px"/> <Variable name="header.padding" description="Header Padding" type="length" default="30px" min="0" max="100px"/> <Variable name="header.border.size" description="Header Border Size" type="length" default="1px" min="0" max="10px"/> <Variable name="header.bottom.border.size" description="Header Bottom Border Size" type="length" default="1px" min="0" max="10px"/> <Variable name="header.border.horizontalsize" description="Header Horizontal Border Size" type="length" default="0" min="0" max="10px"/> <Variable name="description.text.size" description="Description Text Size" type="string" default="140%"/> <Variable name="tabs.margin.top" description="Tabs Margin Top" type="length" default="0" min="0" max="100px"/> <Variable name="tabs.margin.side" description="Tabs Side Margin" type="length" default="30px" min="0" max="100px"/> <Variable name="tabs.background.gradient" description="Tabs Background Gradient" type="url" default="url(https://resources.blogblog.com/blogblog/data/1kt/simple/gradients_light.png)"/> <Variable name="tabs.border.width" description="Tabs Border Width" type="length" default="1px" min="0" max="10px"/> <Variable name="tabs.bevel.border.width" description="Tabs Bevel Border Width" type="length" default="1px" min="0" max="10px"/> <Variable name="post.margin.bottom" description="Post Bottom Margin" type="length" default="25px" min="0" max="100px"/> <Variable name="image.border.small.size" description="Image Border Small Size" type="length" default="2px" min="0" max="10px"/> <Variable name="image.border.large.size" description="Image Border Large Size" type="length" default="5px" min="0" max="10px"/> <Variable name="page.width.selector" description="Page Width Selector" type="string" default=".region-inner"/> <Variable name="page.width" description="Page Width" type="string" default="auto"/> <Variable name="main.section.margin" description="Main Section Margin" type="length" default="15px" min="0" max="100px"/> <Variable name="main.padding" description="Main Padding" type="length" default="15px" min="0" max="100px"/> <Variable name="main.padding.top" description="Main Padding Top" type="length" default="30px" min="0" max="100px"/> <Variable name="main.padding.bottom" description="Main Padding Bottom" type="length" default="30px" min="0" max="100px"/> <Variable name="paging.background" color="#ffffff" description="Background of blog paging area" type="background" default="transparent none no-repeat scroll top center"/> <Variable name="footer.bevel" description="Bevel border length of footer" type="length" default="0" min="0" max="10px"/> <Variable name="mobile.background.overlay" description="Mobile Background Overlay" type="string" default="transparent none repeat scroll top left"/> <Variable name="mobile.background.size" description="Mobile Background Size" type="string" default="auto"/> <Variable name="mobile.button.color" description="Mobile Button Color" type="color" default="#ffffff" /> <Variable name="startSide" description="Side where text starts in blog language" type="automatic" default="left"/> <Variable name="endSide" description="Side where text ends in blog language" type="automatic" default="right"/> */ /* Content ----------------------------------------------- */ body { font: normal normal 12px 'Trebuchet MS', Trebuchet, Verdana, sans-serif; color: #666666; background: #eeeeee none repeat scroll top left; padding: 0 0 0 0; } html body .region-inner { min-width: 0; max-width: 100%; width: auto; } h2 { font-size: 22px; } a:link { text-decoration:none; color: #2b5b84; } a:visited { text-decoration:none; color: #2b5b84; } a:hover { text-decoration:underline; color: #3776ab; } .body-fauxcolumn-outer .fauxcolumn-inner { background: transparent none repeat scroll top left; _background-image: none; } .body-fauxcolumn-outer .cap-top { position: absolute; z-index: 1; height: 400px; width: 100%; } .body-fauxcolumn-outer .cap-top .cap-left { width: 100%; background: transparent none repeat-x scroll top left; _background-image: none; } .content-outer { -moz-box-shadow: 0 0 0 rgba(0, 0, 0, .15); -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, .15); -goog-ms-box-shadow: 0 0 0 #333333; box-shadow: 0 0 0 rgba(0, 0, 0, .15); margin-bottom: 1px; } .content-inner { padding: 10px 40px; } .content-inner { background-color: #ffffff; } /* Header ----------------------------------------------- */ .header-outer { background: #2b5b84 none repeat-x scroll 0 -400px; _background-image: none; } .Header h1 { font: normal normal 40px 'Trebuchet MS',Trebuchet,Verdana,sans-serif; color: #000000; text-shadow: 0 0 0 rgba(0, 0, 0, .2); } .Header h1 a { color: #000000; } .Header .description { font-size: 18px; color: #ffd343; } .header-inner .Header .titlewrapper { padding: 22px 0; } .header-inner .Header .descriptionwrapper { padding: 0 0; } /* Tabs ----------------------------------------------- */ .tabs-inner .section:first-child { border-top: 0 solid #dddddd; } .tabs-inner .section:first-child ul { margin-top: -1px; border-top: 1px solid #dddddd; border-left: 1px solid #dddddd; border-right: 1px solid #dddddd; } .tabs-inner .widget ul { background: transparent none repeat-x scroll 0 -800px; _background-image: none; border-bottom: 1px solid #dddddd; margin-top: 0; margin-left: -30px; margin-right: -30px; } .tabs-inner .widget li a { display: inline-block; padding: .6em 1em; font: normal normal 12px 'Trebuchet MS', Trebuchet, Verdana, sans-serif; color: #000000; border-left: 1px solid #ffffff; border-right: 1px solid #dddddd; } .tabs-inner .widget li:first-child a { border-left: none; } .tabs-inner .widget li.selected a, .tabs-inner .widget li a:hover { color: #000000; background-color: #eeeeee; text-decoration: none; } /* Columns ----------------------------------------------- */ .main-outer { border-top: 0 solid #ffd343; } .fauxcolumn-left-outer .fauxcolumn-inner { border-right: 1px solid #ffd343; } .fauxcolumn-right-outer .fauxcolumn-inner { border-left: 1px solid #ffd343; } /* Headings ----------------------------------------------- */ div.widget > h2, div.widget h2.title { margin: 0 0 1em 0; font: normal bold 11px 'Trebuchet MS',Trebuchet,Verdana,sans-serif; color: #000000; } /* Widgets ----------------------------------------------- */ .widget .zippy { color: #999999; text-shadow: 2px 2px 1px rgba(0, 0, 0, .1); } .widget .popular-posts ul { list-style: none; } /* Posts ----------------------------------------------- */ h2.date-header { font: normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif; } .date-header span { background-color: #bbbbbb; color: #ffffff; padding: 0.4em; letter-spacing: 3px; margin: inherit; } .main-inner { padding-top: 35px; padding-bottom: 65px; } .main-inner .column-center-inner { padding: 0 0; } .main-inner .column-center-inner .section { margin: 0 1em; } .post { margin: 0 0 45px 0; } h3.post-title, .comments h4 { font: normal normal 22px 'Trebuchet MS',Trebuchet,Verdana,sans-serif; margin: .75em 0 0; } .post-body { font-size: 110%; line-height: 1.4; position: relative; } .post-body img, .post-body .tr-caption-container, .Profile img, .Image img, .BlogList .item-thumbnail img { padding: 2px; background: #ffffff; border: 1px solid #eeeeee; -moz-box-shadow: 1px 1px 5px rgba(0, 0, 0, .1); -webkit-box-shadow: 1px 1px 5px rgba(0, 0, 0, .1); box-shadow: 1px 1px 5px rgba(0, 0, 0, .1); } .post-body img, .post-body .tr-caption-container { padding: 5px; } .post-body .tr-caption-container { color: #666666; } .post-body .tr-caption-container img { padding: 0; background: transparent; border: none; -moz-box-shadow: 0 0 0 rgba(0, 0, 0, .1); -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, .1); box-shadow: 0 0 0 rgba(0, 0, 0, .1); } .post-header { margin: 0 0 1.5em; line-height: 1.6; font-size: 90%; } .post-footer { margin: 20px -2px 0; padding: 5px 10px; color: #666666; background-color: #eeeeee; border-bottom: 1px solid #eeeeee; line-height: 1.6; font-size: 90%; } #comments .comment-author { padding-top: 1.5em; border-top: 1px solid #ffd343; background-position: 0 1.5em; } #comments .comment-author:first-child { padding-top: 0; border-top: none; } .avatar-image-container { margin: .2em 0 0; } #comments .avatar-image-container img { border: 1px solid #eeeeee; } /* Comments ----------------------------------------------- */ .comments .comments-content .icon.blog-author { background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sLFwMeCjjhcOMAAAD+SURBVDjLtZSvTgNBEIe/WRRnm3U8RC1neQdsm1zSBIU9VVF1FkUguQQsD9ITmD7ECZIJSE4OZo9stoVjC/zc7ky+zH9hXwVwDpTAWWLrgS3QAe8AZgaAJI5zYAmc8r0G4AHYHQKVwII8PZrZFsBFkeRCABYiMh9BRUhnSkPTNCtVXYXURi1FpBDgArj8QU1eVXUzfnjv7yP7kwu1mYrkWlU33vs1QNu2qU8pwN0UpKoqokjWwCztrMuBhEhmh8bD5UDqur75asbcX0BGUB9/HAMB+r32hznJgXy2v0sGLBcyAJ1EK3LFcbo1s91JeLwAbwGYu7TP/3ZGfnXYPgAVNngtqatUNgAAAABJRU5ErkJggg==); } .comments .comments-content .loadmore a { border-top: 1px solid #999999; border-bottom: 1px solid #999999; } .comments .comment-thread.inline-thread { background-color: #eeeeee; } .comments .continue { border-top: 2px solid #999999; } /* Accents ---------------------------------------------- */ .section-columns td.columns-cell { border-left: 1px solid #ffd343; } .blog-pager { background: transparent url(//www.blogblog.com/1kt/simple/paging_dot.png) repeat-x scroll top center; } .blog-pager-older-link, .home-link, .blog-pager-newer-link { background-color: #ffffff; padding: 5px; } .footer-outer { border-top: 1px dashed #bbbbbb; } /* Mobile ----------------------------------------------- */ body.mobile { background-size: auto; } .mobile .body-fauxcolumn-outer { background: transparent none repeat scroll top left; } .mobile .body-fauxcolumn-outer .cap-top { background-size: 100% auto; } .mobile .content-outer { -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, .15); box-shadow: 0 0 3px rgba(0, 0, 0, .15); } .mobile .tabs-inner .widget ul { margin-left: 0; margin-right: 0; } .mobile .post { margin: 0; } .mobile .main-inner .column-center-inner .section { margin: 0; } .mobile .date-header span { padding: 0.1em 10px; margin: 0 -10px; } .mobile h3.post-title { margin: 0; } .mobile .blog-pager { background: transparent none no-repeat scroll top center; } .mobile .footer-outer { border-top: none; } .mobile .main-inner, .mobile .footer-inner { background-color: #ffffff; } .mobile-index-contents { color: #666666; } .mobile-link-button { background-color: #2b5b84; } .mobile-link-button a:link, .mobile-link-button a:visited { color: #ffffff; } .mobile .tabs-inner .section:first-child { border-top: none; } .mobile .tabs-inner .PageList .widget-content { background-color: #eeeeee; color: #000000; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; } .mobile .tabs-inner .PageList .widget-content .pagelist-arrow { border-left: 1px solid #dddddd; } --></style> <style id='template-skin-1' type='text/css'><!-- body { min-width: 960px; } .content-outer, .content-fauxcolumn-outer, .region-inner { min-width: 960px; max-width: 960px; _width: 960px; } .main-inner .columns { padding-left: 0; padding-right: 310px; } .main-inner .fauxcolumn-center-outer { left: 0; right: 310px; /* IE6 does not respect left and right together */ _width: expression(this.parentNode.offsetWidth - parseInt("0") - parseInt("310px") + 'px'); } .main-inner .fauxcolumn-left-outer { width: 0; } .main-inner .fauxcolumn-right-outer { width: 310px; } .main-inner .column-left-outer { width: 0; right: 100%; margin-left: -0; } .main-inner .column-right-outer { width: 310px; margin-right: -310px; } #layout { min-width: 0; } #layout .content-outer { min-width: 0; width: 800px; } #layout .region-inner { min-width: 0; width: auto; } body#layout div.add_widget { padding: 8px; } body#layout div.add_widget a { margin-left: 32px; } --></style> <script type='text/javascript'> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-55961911-3', 'auto', 'blogger'); ga('blogger.send', 'pageview'); </script> <link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=8520&amp;zx=7547d5f6-cd79-4bb2-bfe6-e96898f630ac' media='none' onload='if(media!=&#39;all&#39;)media=&#39;all&#39;' rel='stylesheet'/><noscript><link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=8520&amp;zx=7547d5f6-cd79-4bb2-bfe6-e96898f630ac' rel='stylesheet'/></noscript> <meta name='google-adsense-platform-account' content='ca-host-pub-1556223355139109'/> <meta name='google-adsense-platform-domain' content='blogspot.com'/> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?display=swap&family=Montserrat"></head> <body class='loading'> <div class='navbar section' id='navbar' name='Navbar'><div class='widget Navbar' data-version='1' id='Navbar1'><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/platform.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar/8520?origin\x3dhttps://pyfound.blogspot.com', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script><script type="text/javascript"> (function() { var script = document.createElement('script'); script.type = 'text/javascript'; script.src = '//pagead2.googlesyndication.com/pagead/js/google_top_exp.js'; var head = document.getElementsByTagName('head')[0]; if (head) { head.appendChild(script); }})(); </script> </div></div> <div class='body-fauxcolumns'> <div class='fauxcolumn-outer body-fauxcolumn-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </div> <div class='content'> <div class='content-fauxcolumns'> <div class='fauxcolumn-outer content-fauxcolumn-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </div> <div class='content-outer'> <div class='content-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left content-fauxborder-left'> <div class='fauxborder-right content-fauxborder-right'></div> <div class='content-inner'> <header> <div class='header-outer'> <div class='header-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left header-fauxborder-left'> <div class='fauxborder-right header-fauxborder-right'></div> <div class='region-inner header-inner'> <div class='header section' id='header' name='Header'><div class='widget Header' data-version='1' id='Header1'> <div id='header-inner'> <a href='https://pyfound.blogspot.com/' style='display: block'> <img alt='Python Software Foundation News' height='82px; ' id='Header1_headerimg' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD_WIGHsseqGaGnsXVjcNYZ5g6EIb1XoDEmltAoM6Bi6_R9uDS1BPJP9oPJKj1k4I5R8ALUVZZfy4_DLjEDs6i2GxsCDnf3xO5eo54utZQ5E2pyUhtbQGOiiwBrmLU5asONQ/s1600-r/psf-logo.png' style='display: block' width='334px; '/> </a> <div class='descriptionwrapper'> <p class='description'><span>&#160;&#160;News from the Python Software Foundation</span></p> </div> </div> </div></div> </div> </div> <div class='header-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </header> <div class='tabs-outer'> <div class='tabs-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left tabs-fauxborder-left'> <div class='fauxborder-right tabs-fauxborder-right'></div> <div class='region-inner tabs-inner'> <div class='tabs no-items section' id='crosscol' name='Cross-Column'></div> <div class='tabs no-items section' id='crosscol-overflow' name='Cross-Column 2'></div> </div> </div> <div class='tabs-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <div class='main-outer'> <div class='main-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left main-fauxborder-left'> <div class='fauxborder-right main-fauxborder-right'></div> <div class='region-inner main-inner'> <div class='columns fauxcolumns'> <div class='fauxcolumn-outer fauxcolumn-center-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <div class='fauxcolumn-outer fauxcolumn-left-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <div class='fauxcolumn-outer fauxcolumn-right-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <!-- corrects IE6 width calculation --> <div class='columns-inner'> <div class='column-center-outer'> <div class='column-center-inner'> <div class='main section' id='main' name='Main'><div class='widget Blog' data-version='1' id='Blog1'> <div class='blog-posts hfeed'> <div class="date-outer"> <h2 class='date-header'><span>Thursday, December 22, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='8742258711052423417' itemprop='postId'/> <a name='8742258711052423417'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/12/more-python-everywhere-all-at-once.html'>More Python Everywhere, All at Once: Looking Forward to 2023</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-8742258711052423417' itemprop='description articleBody'> The PSF works hard throughout the year to put on <a href="https://us.pycon.org/2023/">PyCon US</a>, support smaller Python events around the world through our <a href="https://www.python.org/psf/grants/">Grants program</a> and of course to provide the critical infrastructure and expertise that keep CPython and PyPI running smoothly for the 8 million (and growing!) worldwide base of Python users. We want to invest more deeply in education and outreach in 2023, and donations from individuals (like you) can make sure we have the resources to start new projects and sustain them alongside our critical community functions. <br /><br /><a href="https://www.python.org/psf/donations/2022-q4-drive/">Supporting Membership</a> is a particularly great way to contribute to the PSF. By becoming a Supporting Member, you join a core group of PSF stakeholders, and since Supporting Members are eligible to vote in our Board and bylaws elections, you gain a voice in the future of the PSF. And we have just introduced <a href="https://pyfound.blogspot.com/2022/12/introducing-new-sliding-scale-membership.html">a new sliding scale rate for Supporting Members</a>, so you can join at the standard rate of an annual $99 contribution, or for as little as $25 annually if that works better for you. We are about three quarters of the way to our goal of 100 new supporting members by the end of 2022 &#8211; Can you <a href="https://psfmember.org/civicrm/contribute/transact/?reset=1&amp;id=1">sign up today</a> and help push us over the edge?<br /><br />Thank you for reading and for being a part of the one-of-a-kind community that makes Python and the PSF so special.<br /><br />With warmest wishes to you and yours for a happy and healthy new year,<br />Deb <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/06173618710147431813' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/06173618710147431813' rel='author' title='author profile'> <span itemprop='name'>Deb Nicholson</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/12/more-python-everywhere-all-at-once.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/12/more-python-everywhere-all-at-once.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-12-22T11:08:00-05:00'>12/22/2022 11:08:00 AM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-1723525585'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=8742258711052423417&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Thursday, December 08, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='6662724120809588607' itemprop='postId'/> <a name='6662724120809588607'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/12/introducing-new-sliding-scale-membership.html'>Introducing a New Sliding Scale Membership</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-6662724120809588607' itemprop='description articleBody'> The Python Software Foundation (PSF) has made a sliding scale option available for Supporting Membership, because we want to make membership more accessible for more people and to increase the size and diversity of our voting membership. New Supporting Members can join the PSF for as little as $25. Our goal is to make our Membership program more accessible to Supporters who live in a country with lower average incomes than the US or Western Europe or those who are currently students or are currently unemployed or under-employed. We are relying on Members to self-select their rate, so anyone who finds our suggested $99 membership rate a financial burden can choose a Membership rate that works for them, starting at $25.<br /><br />Part of our mission at the PSF is to &#8220;facilitate the growth of a <a href="https://www.python.org/psf/diversity/">diverse</a> and international community of Python programmers.&#8221; Our community <a href="https://www.python.org/psf/grants/">Grants Program</a> and our <a href="https://us.pycon.org/2023/attend/travel-grants/">Travel Grants</a> for PyCon US have paved the way for a lot of growth, both internationally and amongst populations that are otherwise under-indexed in Python specifically, and open source generally. One area where this outreach hasn&#8217;t &#8220;trickled up&#8221; as much as we&#8217;d like is our leadership. Supporting Members can vote for our Board of Directors. If our roster of voting members can more accurately represent the entire Python community, then we can more reasonably expect the make-up of the Board to follow. <br /><br />There are of course many other things we could consider doing to increase the diversity of the Python community. We <a href="mailto:psf-donations@python.org">welcome your thoughts</a> on how we can continue to improve. <br /><br />In the meantime, our annual membership and fundraising drive is <a href="https://www.python.org/psf/donations/2022-q4-drive/">happening right now</a> and we hope that you will consider becoming a Supporting Member at $25, $99, or anything in between (or more if you have the means.) A second task you could do to support our membership drive is to share it on social media or with your friends and colleagues who use Python. We prefer to rely on word of mouth, rather than purchasing leads or haunting people with ads all over the internet, so thanks in advance for your help! <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/06173618710147431813' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/06173618710147431813' rel='author' title='author profile'> <span itemprop='name'>Deb Nicholson</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/12/introducing-new-sliding-scale-membership.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/12/introducing-new-sliding-scale-membership.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-12-08T14:16:00-05:00'>12/08/2022 02:16:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-1723525585'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=6662724120809588607&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Wednesday, November 23, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='6078703836775413923' itemprop='postId'/> <a name='6078703836775413923'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/11/where-is-psf.html'>Where is the PSF?</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-6078703836775413923' itemprop='description articleBody'> <p style="text-align: left;"></p><h2 style="text-align: left;">Where to Find the PSF Online<br /></h2><p style="text-align: left;">One of the main ways we reach people for news and information about the PSF and Python is Twitter. There&#8217;s been a lot of uncertainty around that platform recently, so we wanted to share a brief round up of other places you can find us:<br /></p><ul style="text-align: left;"><li><b>Read our blog</b>: It&#8217;s here! You found it! You can always find our latest updates here at <a href="http://pyfound.blogspot.com">pyfound.blogspot.com</a>.</li><li><b>Subscribe to our newsletter</b>: We send out an email newsletter about every other month.&nbsp; You can sign up here: <a href="https://www.python.org/psf/newsletter/">https://www.python.org/psf/newsletter/</a><br /></li><li><b>Follow us on LinkedIn</b>: <a href="https://www.linkedin.com/company/python-software-foundation">https://www.linkedin.com/company/python-software-foundation</a></li><li><b>Follow us on Mastodon</b>: <a href="https://fosstodon.org/@thepsf">https://fosstodon.org/@thepsf</a></li><li><b>We're still on Twitter: </b><a href="https://twitter.com/ThePSF">https://twitter.com/ThePSF</a> <br /></li></ul><p style="text-align: left;">As always, if you are looking for technical support rather than news about the foundation, we have collected links and resources here for people who are new or looking to get deeper into the Python programming language: <a href="https://www.python.org/about/gettingstarted/">https://www.python.org/about/gettingstarted/</a><br /><br />You can also ask questions about Python or the PSF at<a href="https://discuss.python.org/"> discuss.python.org</a><br /></p><h2 style="text-align: left;">Where to Find PyCon US Online<br /></h2><p style="text-align: left;">Here&#8217;s where you can go for updates and information specific to PyCon US:<br /></p><ul style="text-align: left;"><li><b>Read the PyCon US blog</b>: <a href="https://pycon.blogspot.com/">https://pycon.blogspot.com/</a> </li><li><b>Subscribe to the PyCon US Newsletter</b>. We send out an email newsletter about four times a year, during the run up to PyCon US. You can sign up here: <a href="http://bit.ly/3ElTPzv">bit.ly/3ElTPzv</a></li><li><b>Follow PyCon US on Mastodon</b>: <a href="https://fosstodon.org/@pycon">https://fosstodon.org/@pycon</a></li><li><b>Follow PyCon US on Twitter: </b><a href="https://twitter.com/PyCon">https://twitter.com/PyCon</a> <br /></li></ul><p style="text-align: left;">&nbsp;</p><p style="text-align: left;">&nbsp;Thank you for keeping in touch, and see you around the Internet!<br /></p><p style="text-align: left;"><br /></p><p style="text-align: left;"><br /></p> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/06125752284896762014' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/06125752284896762014' rel='author' title='author profile'> <span itemprop='name'>Loren Crary</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/11/where-is-psf.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/11/where-is-psf.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-11-23T18:47:00-05:00'>11/23/2022 06:47:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-1348026682'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=6078703836775413923&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Monday, November 07, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='https://s3.dualstack.us-east-2.amazonaws.com/pythondotorg-assets/media/psf/donations/2022-q4-drive/DSGN-14794_PyCharm_PSF_campaign_Blog_Social_share_image_1280x720.png' itemprop='image_url'/> <meta content='8520' itemprop='blogId'/> <meta content='3278231725287843334' itemprop='postId'/> <a name='3278231725287843334'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/11/its-time-for-our-annual-year-end-psf.html'>It's time for our annual year-end PSF fundraiser and membership drive 馃帀</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-3278231725287843334' itemprop='description articleBody'> <h3 style="text-align: left;"><span style="font-size: large;">Support Python in 2022!</span><br></h3><h3 style="text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://s3.dualstack.us-east-2.amazonaws.com/pythondotorg-assets/media/psf/donations/2022-q4-drive/DSGN-14794_PyCharm_PSF_campaign_Blog_Social_share_image_1280x720.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="800" height="294" src="https://s3.dualstack.us-east-2.amazonaws.com/pythondotorg-assets/media/psf/donations/2022-q4-drive/DSGN-14794_PyCharm_PSF_campaign_Blog_Social_share_image_1280x720.png" width="523"></a></div><br></h3><p style="text-align: left;"><span style="font-size: small;">For the fourth year in a row, the PSF is partnering with JetBrains on our end-of-year fundraiser. Over that time, the partnership has raised a total of over $75,000. Wow! Thank you, JetBrains, for all your support.</span></p><h3 style="text-align: left;"></h3><h4 style="text-align: left;"><span style="font-size: medium;">There are three ways to join in the drive this year: </span></h4><ul style="text-align: left;"><li><b><span style="font-size: medium;"><a href="https://jb.gg/support-python-with-jetbrains" target="">Save on PyCharm + get DataSpell <i>free</i></a></span>!</b> JetBrains is once again supporting the PSF by providing a 30% discount on PyCharm and all proceeds will go to the PSF! But wait&#8211;there&#8217;s more! JetBrains has released DataSpell, a new IDE specifically for Data Scientists. When you buy your discounted PyCharm license, you will also get a bonus DataSpell license, free! <br>You can take advantage of this discount by<a href="https://jb.gg/support-python-with-jetbrains"> clicking the button on</a><a href="https://jb.gg/support-python-with-jetbrains"> the page linked here</a>, and the discount will be automatically applied when you check out. The promotion will only be available through November 22nd, so go grab the deal today!</li><li><span style="font-size: medium;"><a href="https://psfmember.org/civicrm/contribute/transact/?reset=1&amp;id=40"><b>Donate</b></a><a href="https://psfmember.org/civicrm/contribute/transact/?reset=1&amp;id=40"><b> directly to the PSF</b></a>!</span> Every dollar makes a difference. (Does every dollar also make a kitten somewhere purr? We make no promises, but maybe you should try, just in case?馃樆)</li><li><span style="font-size: medium;"><a href="https://psfmember.org/"><b>Become a member</b></a>!</span> Sign up as a Supporting member of the PSF. Be a part of the PSF, and help us sustain what we do with your annual support.</li></ul><p>Or, heck, why not do all three? 馃コ</p><p><span></span></p> <div style='clear: both;'></div> </div> <div class='jump-link'> <a href='https://pyfound.blogspot.com/2022/11/its-time-for-our-annual-year-end-psf.html#more' title='It&#39;s time for our annual year-end PSF fundraiser and membership drive 馃帀'>Read more &#187;</a> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/06125752284896762014' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/06125752284896762014' rel='author' title='author profile'> <span itemprop='name'>Loren Crary</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/11/its-time-for-our-annual-year-end-psf.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/11/its-time-for-our-annual-year-end-psf.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-11-07T12:30:00-05:00'>11/07/2022 12:30:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-1348026682'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=3278231725287843334&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Tuesday, November 01, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='4364298085608738598' itemprop='postId'/> <a name='4364298085608738598'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/11/thank-you-for-making-pycon-us-amazing.html'>Thank You for Making PyCon US amazing, Jackie!</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-4364298085608738598' itemprop='description articleBody'> <span style="font-size: small;">Jackie Augustine is moving on from her role of Director of Events at the PSF. Please join me in thanking Jackie for all of her amazing work with our volunteers, vendors, and staff. Her energy, heart, and dedication will be keenly missed. <br /><br /><br />Jackie says, &#8220;PyCon US will forever be in my heart. Mostly because of all the wonderful people I have met and come to love. The community members, the board directors, the many volunteers, and especially the staff of the PSF have enhanced my life tremendously. I will truly miss everyone.&#8221;<br /><br /><br />Jackie has been working with the PSF on PyCon US for 10 years and most recently managed our pivot to two years of remote PyCons. She also oversaw our return to a safe and fulfilling in-person <a href="https://pyfound.blogspot.com/2022/06/pycon-us-successful-return-to-in-person.html">PyCon</a> earlier this year. PyCon US would not be the successful and growing event it is today without her work. <br /><br /><br />The PSF&#8217;s Director of Infrastructure Ee Durbin shared, &#8220;For most PyCon US is a few precious days in the spring each year. For some it is months of preparing a presentation, organizing a summit, or volunteering their time. For Jackie it has been a continuous and heartfelt commitment year over year to facilitate every detailed aspect of the conference, both in-person and online, that we cherish. The impact Jackie has had on our community via PyCon US is hard to overstate and our gratitude should be as deep and heartfelt as the commitment she made in her time directing the event.&#8221;<br /><br /><br />So, what&#8217;s next for us? Our extremely capable Event Assistant, Olivia Sauls will be stepping up into the role of Program Director and we will be <a href="https://www.python.org/communityeventsjob/" target="_blank">hiring a Community Events Manager</a> to help us run PyCon US. It would be lovely if you could help us by sharing the job listing widely. </span> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/06173618710147431813' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/06173618710147431813' rel='author' title='author profile'> <span itemprop='name'>Deb Nicholson</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/11/thank-you-for-making-pycon-us-amazing.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/11/thank-you-for-making-pycon-us-amazing.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-11-01T15:25:00-04:00'>11/01/2022 03:25:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-1723525585'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=4364298085608738598&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Wednesday, October 26, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='5345259985009753813' itemprop='postId'/> <a name='5345259985009753813'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/10/announcing-python-software-foundation.html'>Announcing Python Software Foundation Fellow Members for Q3 2022! 馃帀</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-5345259985009753813' itemprop='description articleBody'> <div class="post-body entry-content" id="post-body-6127778748394527825" itemprop="description articleBody" style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; line-height: 1.4; position: relative; width: 546px;"><p style="font-size: 13.2px;"><span style="caret-color: rgb(0, 0, 0); font-family: inherit;">The PSF is pleased to announce its third batch of PSF Fellows for 2022! Let us welcome the new PSF Fellows for Q3! The following people continue to do amazing things for the Python community:</span></p><div style="font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><span style="font-size: medium;"><span style="background-color: transparent; text-align: left;"><span style="font-family: inherit;"><b>Anwesha Das</b></span></span></span></div><div style="font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><a href="https://twitter.com/anweshasrkr" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Twitter</a><span style="color: #0b5394;">,</span>&nbsp;<a href="https://anweshadas.in" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Website</a></div><div style="font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><b style="background-color: transparent; text-align: left;"><span style="font-size: medium;">Bae KwonHan&nbsp;</span></b></div><div style="font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><a href="https://www.linkedin.com/in/kwonhanbae/" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">LinkedIn</a><span style="font-size: 13.2px;">,&nbsp;</span><a href="https://twitter.com/darjeelingt" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Twitter</a><span style="background-color: transparent; color: #0b5394; font-size: 13.2px;">,&nbsp;</span><a href="https://github.com/darjeeling" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">GitHub</a><span style="color: black; font-size: 13.2px;">,&nbsp;</span><a href="https://iz4u.net/" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Website</a></div><div style="font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><b style="font-size: 13.2px;"><span style="font-size: medium;">Iqbal Abdullah</span></b></div><div style="font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><a href="https://twitter.com/iqbalabd" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Twitter</a><span style="background-color: transparent; color: #0b5394; font-size: 13.2px;">,</span><span style="font-size: 13.2px;">&nbsp;</span><a href="https://thefortunate.blog/pages/who-is-iqbalabd.html" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Website</a></div><div style="font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><b style="background-color: transparent; text-align: left;"><span style="font-size: medium;">Peter Wang<br /></span></b></div><div style="margin: 15px 0px; text-align: center; text-size-adjust: auto;"><span style="background-color: transparent; font-size: 13.2px; text-align: left;"><span style="font-size: medium;"><a href="https://www.linkedin.com/in/pzwang/" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-align: center; text-decoration-line: none;" target="_blank">LinkedIn</a><span style="font-size: 13.2px; text-align: center;">,&nbsp;</span><a href="https://twitter.com/pwang" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-align: center; text-decoration-line: none;" target="_blank">Twitter</a><span style="background-color: transparent; color: #0b5394; font-size: 13.2px; text-align: center;">,&nbsp;</span><a href="https://github.com/pzwang" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-align: center; text-decoration-line: none;" target="_blank">GitHub</a></span></span></div><div style="margin: 15px 0px; text-align: center; text-size-adjust: auto;"><b style="background-color: transparent; font-size: 13.2px; text-align: left;"><span style="font-size: medium;">Sammy Fung</span></b></div><div style="font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><a href="https://www.linkedin.com/in/sammyfung/" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">LinkedIn</a><span style="font-size: 13.2px;">,&nbsp;</span><a href="https://twitter.com/sammyfung" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Twitter</a><span style="background-color: transparent; color: #0b5394; font-size: 13.2px;">,&nbsp;</span><a href="https://github.com/sammyfung" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">GitHub</a><span style="color: black; font-size: 13.2px;">,&nbsp;</span><a href="https://sammyfung.com" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Website</a>&nbsp;</div><p style="font-size: 13.2px; margin: 15px 0px; text-align: justify; text-size-adjust: auto;"><span style="font-size: 13.2px; text-align: left;">Thank you for your continued contributions. We have added you to our Fellow roster</span><span class="Apple-converted-space" style="font-size: 13.2px; text-align: left;">&nbsp;</span><a href="https://www.python.org/psf/members/" style="-webkit-print-color-adjust: exact; color: #4183c4; font-family: inherit; font-size: 13.2px; text-align: left; text-decoration-line: none;">online</a><span style="font-size: 13.2px; text-align: left;">.</span></p><p style="-webkit-print-color-adjust: exact; caret-color: rgb(0, 0, 0); font-size: 13.2px; margin: 15px 0px; text-align: justify; text-size-adjust: auto;"><span style="font-family: inherit;">The above members help support the Python ecosystem by being phenomenal leaders, sustaining the growth of the Python scientific community, maintaining virtual Python communities, maintaining Python libraries, creating educational material, organizing Python events and conferences, starting Python communities in local regions, and overall being great mentors in our community. Each of them continues to help make Python more accessible around the world. To learn more about the new Fellow members, check out their links above.</span></p><p style="-webkit-print-color-adjust: exact; caret-color: rgb(0, 0, 0); font-size: 13.2px; margin: 15px 0px; text-size-adjust: auto;"><span style="font-family: inherit;">Let's continue recognizing Pythonistas all over the world for their impact on our community. The criteria for Fellow members is available online:&nbsp;<a href="https://www.python.org/psf/fellows/" style="color: #2b5b84; text-decoration-line: none;">https://www.python.org/psf/fellows/</a>. If you would like to nominate someone to be a PSF Fellow, please send a description of their Python accomplishments and their email address to psf-fellow at python.org. We are accepting nominations for quarter 4 through November 20, 2022.</span></p><p style="-webkit-print-color-adjust: exact; caret-color: rgb(0, 0, 0); font-size: 13.2px; margin: 15px 0px; text-size-adjust: auto;"><span style="font-family: inherit;">Are you a PSF Fellow and want to help the Work Group review nominations? Contact us at&nbsp;psf-fellow at python.org.</span></p><div style="clear: both; font-size: 13.2px;"></div></div><div class="post-footer" style="background-color: #eeeeee; border-bottom: 1px solid rgb(238, 238, 238); color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; font-size: 10.8px; line-height: 1.6; margin: 20px -2px 0px; padding: 5px 10px;"></div> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/02332425566237042576' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/02332425566237042576' rel='author' title='author profile'> <span itemprop='name'>Olivia Sauls</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/10/announcing-python-software-foundation.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/10/announcing-python-software-foundation.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-10-26T12:09:00-04:00'>10/26/2022 12:09:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-62517329'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=5345259985009753813&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Tuesday, October 11, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='3906103299526096346' itemprop='postId'/> <a name='3906103299526096346'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/10/join-python-developers-survey-2022.html'>Join the Python Developers Survey 2022: Share and learn about the community</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-3906103299526096346' itemprop='description articleBody'> <p style="line-height: 138%; margin-bottom: 0in;">This year we are conducting the sixth iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last year&#8217;s, we can identify and share with everyone the hottest trends in the Python community and the key insights into it. We encourage you to contribute to our community&#8217;s knowledge. The survey should only take you about 10-15 minutes to complete. <br /><br /><a href="https://surveys.jetbrains.com/s3/c1-python-developers-survey-2022">Contribute to the Python Developers Survey 2022!</a></p><p style="line-height: 138%; margin-bottom: 0in;"> </p><p style="line-height: 138%; margin-bottom: 0in;"> The survey is organized in partnership between the Python Software Foundation and JetBrains. After the survey is over, we will publish the aggregated results and randomly choose 20 winners (among those who complete the survey in its entirety), who will each receive a $100 Amazon Gift Card or a local equivalent.</p> <p style="line-height: 138%; margin-bottom: 0in;"><style type="text/css">p { margin-bottom: 0.1in; line-height: 115%; background: transparent }a:link { color: #000080; so-language: zxx; text-decoration: underline }</style><style type="text/css">p { margin-bottom: 0.1in; line-height: 115%; background: transparent }a:link { color: #000080; so-language: zxx; text-decoration: underline }</style></p> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/06173618710147431813' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/06173618710147431813' rel='author' title='author profile'> <span itemprop='name'>Deb Nicholson</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/10/join-python-developers-survey-2022.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/10/join-python-developers-survey-2022.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-10-11T15:00:00-04:00'>10/11/2022 03:00:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-1723525585'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=3906103299526096346&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Thursday, July 21, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='2075969690282125668' itemprop='postId'/> <a name='2075969690282125668'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/07/distinguished-service-award-granted-to.html'>Distinguished Service Award Granted to Naomi Ceder</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-2075969690282125668' itemprop='description articleBody'> Naomi Ceder, a longtime Python activist and organizer has been recognized with the PSF&#8217;s Distinguished Service Award. Naomi served on the PSF Board from 2015-2020, and as Chair from 2017-2020, supported the search for a new Executive Director last year and <a href="https://www.naomiceder.tech/posts/pycon_keynote_2022/">keynoted</a> the most recent PyCon US in Salt Lake City. <br /><br />The PSF&#8217;s Distinguished Service Award (<a href="https://www.python.org/community/awards/psf-distinguished-awards/">DSA</a>) is granted to individuals who make sustained exemplary contributions to the Python community. Each award is voted on by the PSF Board and they are looking for people whose impact has positively and significantly shaped the Python world. Naomi&#8217;s work with the Python community very much exemplifies the ethos of &#8220;build the community you want to see.&#8221; She seems to particularly enjoy taking on the hardest parts, getting a new initiative started and figuring out how to take an idea from the drawing board to a regular activity that we can&#8217;t imagine leaving out. <br /><br />After receiving the award Naomi shared, "I'm so grateful for the recognition, and even more grateful for all of the support that our community has given me over the years. I'm excited to see a new generation of Python volunteers continue the work to make our community and the PSF more global and inclusive, and I'm looking forward to working with smaller communities as they grow and develop." <br /><br />Over the years Naomi has taken on many leadership roles to make PyCon US successful and welcoming. She served as Chair of the Hatchery Program and she helped found PyCon Charlas, our Spanish language track. At different points in time, she&#8217;s also been the Co-chair of Sprints, an Organizer of the PyCon Education Summit and Chair for poster sessions at PyCon US. She also co-founded <a href="https://www.trans.tech">Trans*Code</a>, an on-going series of hackdays (mostly) in the UK, which aims to build community and foster tech education and skills for transgender and non-binary folks. PyCon US and the global Python community would not look like it does without her tireless, largely behind the scenes work. Her deep thoughtfulness coupled with her energy is an immeasurable gift to the Python community.&nbsp; <br /><br />Curious about previous recipients of the DSA or wondering how to nominate someone? <a href="https://www.python.org/community/awards/psf-distinguished-awards/">We got you</a>.<br /><p><style type="text/css">#toc, .toc, .mw-warning { border: 1px solid #aaa; background-color: #f9f9f9; padding: 5px; font-size: 95%; }#toc h2, .toc h2 { display: inline; border: none; padding: 0; font-size: 100%; font-weight: bold; }#toc #toctitle, .toc #toctitle, #toc .toctitle, .toc .toctitle { text-align: center; }#toc ul, .toc ul { list-style-type: none; list-style-image: none; margin-left: 0; padding-left: 0; text-align: left; }#toc ul ul, .toc ul ul { margin: 0 0 0 2em; }#toc .toctoggle, .toc .toctoggle { font-size: 94%; }p, h1, h2, h3, li { }body{ padding-top : 1in; padding-bottom : 1in; padding-left : 1in; padding-right : 1in; }</style></p> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/06173618710147431813' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/06173618710147431813' rel='author' title='author profile'> <span itemprop='name'>Deb Nicholson</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/07/distinguished-service-award-granted-to.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/07/distinguished-service-award-granted-to.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-07-21T15:08:00-04:00'>7/21/2022 03:08:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-1723525585'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=2075969690282125668&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Wednesday, July 06, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='6127778748394527825' itemprop='postId'/> <a name='6127778748394527825'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/07/announcing-python-software-foundation.html'>Announcing Python Software Foundation Fellow Members for Q2 2022! 馃帀</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-6127778748394527825' itemprop='description articleBody'> <p style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px;"><span style="caret-color: rgb(0, 0, 0); font-family: inherit;">The PSF is pleased to announce its second batch of PSF Fellows for 2022! Let us welcome the new PSF Fellows for Q2! The following people continue to do amazing things for the Python community:</span></p><div style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><span style="font-size: medium;"><span style="background-color: transparent; text-align: left;"><span style="font-family: inherit;"><b>Archana&nbsp;</b></span></span><span style="font-family: &quot;Trebuchet MS&quot;; font-weight: 700; text-align: left; white-space: pre-wrap;">Vaidheeswaran</span></span></div><div style="background-color: white; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><a href="https://www.linkedin.com/in/archana-iyer/" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">LinkedIn</a>,&nbsp;<a href="https://twitter.com/varchanaiyer_" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Twitter</a><span style="color: #0b5394;">,&nbsp;</span><a href="https://github.com/varchanaiyer" style="text-decoration-line: none;" target="_blank"><span style="color: #2b5b84;">GitHub</span></a>,&nbsp;<a href="https://varchanaiyer.github.io/gradportfolio/" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Website</a></div><div style="background-color: white; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><b><span style="color: #666666; font-size: medium;">Carlton Gibson</span></b></div><div style="background-color: white; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><a href="https://twitter.com/carltongibson" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Twitter</a><span style="background-color: transparent; color: #0b5394; font-size: 13.2px;">,&nbsp;</span><a href="https://github.com/carltongibson" style="background-color: transparent; font-size: 13.2px; text-decoration-line: none;" target="_blank"><span style="color: #2b5b84;">GitHub</span></a><span style="font-size: 13.2px;">,&nbsp;</span><a href=" https://noumenal.es" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Website</a></div><div style="background-color: white; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><b style="background-color: transparent; color: #666666; text-align: left;"><span style="font-size: medium;">J眉rgen Gmach</span></b></div><div style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><a href="https://www.linkedin.com/in/j%C3%BCrgen-gmach-b24363226/" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">LinkedIn</a><span style="font-size: 13.2px;">,&nbsp;</span><a href="https://twitter.com/jugmac00" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Twitter</a><span style="background-color: transparent; color: #0b5394; font-size: 13.2px;">,&nbsp;</span><a href="https://github.com/jugmac00" style="background-color: transparent; font-size: 13.2px; text-decoration-line: none;" target="_blank"><span style="color: #2b5b84;">GitHub</span></a><span style="color: black; font-size: 13.2px;">,&nbsp;</span><a href="https://jugmac00.github.io/" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Website</a><span style="background-color: transparent; color: #0b5394; font-size: 13.2px;">,&nbsp;</span><a href="https://launchpad.net/~jugmac00" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Launchpad</a><span style="background-color: transparent; font-size: 13.2px;">,&nbsp;</span><a href="https://stackoverflow.com/users/672833/j%c3%bcrgen-gmach" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">StackOverflow</a></div><div style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><b><span style="font-size: medium;">Matteo Benci</span></b></div><div style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><span style="font-size: medium;"><b>Matthew Lagoe</b></span></div><div style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><span style="font-size: medium;"><b>Paul McGuire</b></span></div><div style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><a href="https://github.com/ptmcg" style="background-color: transparent; font-size: 13.2px; text-decoration-line: none;" target="_blank"><span style="color: #2b5b84;">GitHub</span></a><span style="font-size: 13.2px;">,&nbsp;</span><a href="https://thingspython.wordpress.com/" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Blog</a></div><div style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><b><span style="font-size: medium;">Reshama Shaikh</span></b></div><div style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><a href="https://www.linkedin.com/in/reshamas/" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">LinkedIn</a><span style="font-size: 13.2px;">,&nbsp;</span><a href="https://twitter.com/reshamas" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Twitter</a><span style="background-color: transparent; color: #0b5394; font-size: 13.2px;">,&nbsp;</span><a href="https://github.com/reshamas" style="background-color: transparent; font-size: 13.2px; text-decoration-line: none;" target="_blank"><span style="color: #2b5b84;">GitHub</span></a><span style="font-size: 13.2px;">,&nbsp;</span><a href="https://reshamas.github.io" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Website</a></div><div style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><b><span style="font-size: medium;">Seth Michael Larson</span></b></div><div style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><a href="https://linkedin.com/in/sethmlarson" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">LinkedIn</a><span style="background-color: transparent; font-size: 13.2px;">,&nbsp;</span><a href="https://twitter.com/sethmlarson" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Twitter</a><span style="background-color: transparent; color: #0b5394; font-size: 13.2px;">,&nbsp;</span><a href="https://github.com/sethmlarson" style="background-color: transparent; font-size: 13.2px; text-decoration-line: none;" target="_blank"><span style="color: #2b5b84;">GitHub</span></a><span style="background-color: transparent; font-size: 13.2px;">,&nbsp;</span><a href="https://sethmlarson.dev" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Website</a></div><div style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><b><span style="font-size: medium;">Thomas A Caswell</span></b></div><div style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: center; text-size-adjust: auto;"><a href="https://github.com/tacaswell" style="background-color: transparent; font-size: 13.2px; text-decoration-line: none;" target="_blank"><span style="color: #2b5b84;">GitHub</span></a><span style="font-size: 13.2px;">,&nbsp;</span><a href="https://tacaswell.github.io" style="background-color: transparent; color: #2b5b84; font-size: 13.2px; text-decoration-line: none;" target="_blank">Website</a></div><p style="background-color: white; color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; margin: 15px 0px; text-align: justify; text-size-adjust: auto;"><span style="font-size: 13.2px; text-align: left;">Thank you for your continued contributions. We have added you to our Fellow roster</span><span class="Apple-converted-space" style="font-size: 13.2px; text-align: left;">&nbsp;</span><a href="https://www.python.org/psf/members/" style="-webkit-print-color-adjust: exact; color: #4183c4; font-family: inherit; font-size: 13.2px; text-align: left; text-decoration-line: none;">online</a><span style="font-size: 13.2px; text-align: left;">.</span></p><p style="-webkit-print-color-adjust: exact; background-color: white; caret-color: rgb(0, 0, 0); color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-align: justify; text-size-adjust: auto;"><span style="font-family: inherit;">The above members help support the Python ecosystem by being phenomenal leaders, sustaining the growth of the Python scientific community, maintaining virtual Python communities, maintaining Python libraries, creating educational material, organizing Python events and conferences, starting Python communities in local regions, and overall being great mentors in our community. Each of them continues to help make Python more accessible around the world. To learn more about the new Fellow members, check out their links above.</span></p><p style="-webkit-print-color-adjust: exact; background-color: white; caret-color: rgb(0, 0, 0); color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-size-adjust: auto;"><span style="font-family: inherit;">Let's continue recognizing Pythonistas all over the world for their impact on our community. The criteria for Fellow members is available online:&nbsp;<a href="https://www.python.org/psf/fellows/" style="color: #2b5b84; text-decoration-line: none;">https://www.python.org/psf/fellows/</a>. If you would like to nominate someone to be a PSF Fellow, please send a description of their Python accomplishments and their email address to psf-fellow at python.org. We are accepting nominations for quarter 3 through August 20, 2022.</span></p><p style="-webkit-print-color-adjust: exact; background-color: white; caret-color: rgb(0, 0, 0); color: #666666; font-family: &quot;Trebuchet MS&quot;, Trebuchet, Verdana, sans-serif; font-size: 13.2px; margin: 15px 0px; text-size-adjust: auto;"><span style="font-family: inherit;">Are you a PSF Fellow and want to help the Work Group review nominations? Contact us at&nbsp;psf-fellow at python.org.</span></p> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/02332425566237042576' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/02332425566237042576' rel='author' title='author profile'> <span itemprop='name'>Olivia Sauls</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/07/announcing-python-software-foundation.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/07/announcing-python-software-foundation.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-07-06T12:32:00-04:00'>7/06/2022 12:32:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-62517329'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=6127778748394527825&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Friday, July 01, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='1126294764034452256' itemprop='postId'/> <a name='1126294764034452256'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/07/board-election-results-for-2022.html'>Board Election Results for 2022!</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-1126294764034452256' itemprop='description articleBody'> <p>Congratulations to everyone who won a seat on the PSF Board! We&#8217;re so excited to work with you. New and returning Board Directors will start their three year terms this month at the next PSF board meeting. Thanks to everyone else who ran this year and added their voice to the conversation about the future of the Python community. It was a tough race with many amazing candidates.&nbsp;</p><ul style="text-align: left;"><li>Kushal Das</li><li>Jannis Leidel</li><li>Dawn Wages</li><li>Simon Willison</li></ul><p>Thanks to everyone who voted and helped us spread the word! We really appreciate that so many of you took the time to participate in our elections this year. By the numbers, we sent ballots to 1,459 voting PSF members who then chose among 26 nominees. By the end 578 votes were cast, well over the one third required for quorum. <br /><br />While the board elections are over, there are lots of other ways to get involved with the Python community. Here are <a href="https://www.python.org/psf/get-involved/">a few things</a> you can get started with or you could consider serving with one of our <a href="https://www.python.org/psf/committees/">working groups</a>. If you want to start participating on the technical side of things, you might want to <a href="https://discuss.python.org/">check out our forum</a>. Next year&#8217;s board elections will happen at approximately the same time in 2023. If you want to make sure you are notified via email, join the <a href="https://mail.python.org/mailman/listinfo/psf-vote">psf-vote</a> mailing list. <br /></p> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/06173618710147431813' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/06173618710147431813' rel='author' title='author profile'> <span itemprop='name'>Deb Nicholson</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/07/board-election-results-for-2022.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/07/board-election-results-for-2022.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-07-01T09:31:00-04:00'>7/01/2022 09:31:00 AM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-1723525585'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=1126294764034452256&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Sunday, June 19, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='1990585738817945788' itemprop='postId'/> <a name='1990585738817945788'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/06/the-psf-board-election-is-open.html'>The PSF Board Election is Open!</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-1990585738817945788' itemprop='description articleBody'> <p><span>It&#8217;s time to cast your vote! Voting takes place from Monday, June 20 AoE, through Thursday, June 30, 2022 AoE. Check <a href="https://www.python.org/nominations/elections/">here</a> to see how much time you have left to vote. If you are a voting member of the PSF, you will get an email from &#8220;Helios Voting Bot &lt;no-reply@mail.heliosvoting.org&gt;&#8221; with your ballot, subject line will read &#8220;Vote: Python Software Foundation Board of Directors Election 2022&#8221;. If you haven&#8217;t seen your ballot by Tuesday, please 1) check your spam folder for a message from &#8220;no-reply@mail.heliosvoting.org&#8221; and if you don&#8217;t see anything 2) get in touch by emailing <a href="mailto:psf-elections@python.org">psf-elections@python.org</a> so we can make sure we have the most up to date email for you.</span> </p><div><p style="text-align: left;"> </p> <p style="text-align: left;"> <span>This might be the largest number of nominees we&#8217;ve ever had! Make sure you schedule some time to <a href="https://www.python.org/nominations/elections/2022-python-software-foundation-board/nominees/">look at all their statements</a>. We&#8217;re overwhelmed by how many of you are willing to contribute to the Python community by serving on the PSF board.</span> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> <span>Who can vote? You need to be a Contributing, Managing, Supporting, or Fellow member as of June 15, 2022 to vote in this election. Read more about our membership types <a href="https://www.python.org/psf/membership/">here</a> or if you have questions about your membership status please email <a href="mailto:psf-elections@python.org">psf-elections@python.org</a></span> </p> </div> <p><style type="text/css">#toc, .toc, .mw-warning { border: 1px solid #aaa; background-color: #f9f9f9; padding: 5px; font-size: 95%; }#toc h2, .toc h2 { display: inline; border: none; padding: 0; font-size: 100%; font-weight: bold; }#toc #toctitle, .toc #toctitle, #toc .toctitle, .toc .toctitle { text-align: center; }#toc ul, .toc ul { list-style-type: none; list-style-image: none; margin-left: 0; padding-left: 0; text-align: left; }#toc ul ul, .toc ul ul { margin: 0 0 0 2em; }#toc .toctoggle, .toc .toctoggle { font-size: 94%; }p, h1, h2, h3, li { }body{ padding-top : 1in; padding-bottom : 1in; padding-left : 1in; padding-right : 1in; }</style></p> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/06173618710147431813' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/06173618710147431813' rel='author' title='author profile'> <span itemprop='name'>Deb Nicholson</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/06/the-psf-board-election-is-open.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/06/the-psf-board-election-is-open.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-06-19T08:04:00-04:00'>6/19/2022 08:04:00 AM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-1723525585'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=1990585738817945788&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Thursday, June 09, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='672046146504347124' itemprop='postId'/> <a name='672046146504347124'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/06/annual-report-2021.html'>The PSF's 2021 Annual Report</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-672046146504347124' itemprop='description articleBody'> <p>2021 was a challenging and exciting year for the PSF. We&#8217;ve done our best to capture some of the key numbers, details, and context in <a href="https://www.python.org/psf/annual-report/2021/" target="_blank">our latest annual report</a>. Some highlights of what you&#8217;ll find in the annual report include:&nbsp;</p><p></p><ul style="text-align: left;"><li>Letter from our outgoing Board Chair Lorena Mesa</li><li>Personal reflection on the PSF&#8217;s 20th anniversary from our outgoing interim general manager and longtime community member Thomas Wouters</li><li>Note from our new Executive Director Deb Nicholson</li><li>Account by 艁ukasz Langa on what he&#8217;s accomplished and learned in his first year as the inaugural PSF Developer in Residence</li><li>PyCon US 2021 by the numbers <br /></li><li>Where we sent grant funding in 2021</li><li>Summary of our 2021 financials</li><li>Great photos plus testimonials from some of the small number of live events the PSF supported in 2021, generously shared by these groups who are doing great work for the Python community around the world:</li><ul><li><a href="https://www.google.com/search?client=firefox-b-1-d&amp;q=pycon+tanzania">PyCon Tanzania</a> with thanks to Noah Mukhangu for sharing; </li><li>Python Workshops for Girls &amp; Teachers <a href="https://www.google.com/search?client=firefox-b-1-d&amp;q=spoonbill+nest">Spoonbill Nest Innovation Center</a>, Albania with thanks to Terena Cardwell; and </li><li><a href="http://www.afrodjangoinitiatives.org/">Afrodjango Initiatives</a>, Uganda with thanks to Joshua Kato.</li></ul><li><a href="https://www.python.org/psf/sponsors/">Sponsors</a> who generously supported our work and the Python ecosystem in 2021</li></ul><p><a href="https://www.python.org/psf/annual-report/2021/">We&#8217;d love for you to take a look</a>, and if you do, let us know what you think! You can comment here, <a href="https://twitter.com/ThePSF">tweet at us</a>, or share your thoughts on <a href="http://discuss.python.org">discuss.python.org</a>. <br /></p> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/06125752284896762014' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/06125752284896762014' rel='author' title='author profile'> <span itemprop='name'>Loren Crary</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/06/annual-report-2021.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/06/annual-report-2021.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-06-09T14:02:00-04:00'>6/09/2022 02:02:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-1348026682'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=672046146504347124&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Wednesday, June 08, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='4696149849463424077' itemprop='postId'/> <a name='4696149849463424077'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/06/pycon-us-successful-return-to-in-person.html'>PyCon US: Successful Return to In-Person in 2022</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-4696149849463424077' itemprop='description articleBody'> <p><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"><span>We held our first in-person event since 2019 in Salt Lake City last month and it was well-attended, celebratory, and safe. We had 1,753 in-person attendees and 669 online attendees. Of the in-person attendees, 1,153 were attending their first PyCon US ever &#8211; we hope they&#8217;ll all be back! In-person attendees were masked and we took care to add extra space to the expo hall, the dining areas, the session rooms and the job fair. For many community members, this was their first in-person conference or community event of any type in almost 3 years. There were a LOT of hugs and some very enthusiastic -- elbow bumps.&nbsp;</span></span></span></span> </p><div><p> </p><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"> </span></span></span><p style="margin-bottom: 0pt; margin-top: 0pt;"> <span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"><a href="https://pycon.blogspot.com/2022/05/pycon-us-2022-recap-and-recording.html"><span style="text-decoration: underline;">You can take a look at PyCon 2022 by the numbers here.</span></a><span>&nbsp;</span></span></span></span> </p><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"> </span></span></span><p style="margin-bottom: 0pt; margin-top: 0pt;"> </p><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"> </span></span></span><p style="margin-bottom: 0pt; margin-top: 0pt;"> <span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"><span>&nbsp;</span></span></span></span></p><p style="margin-bottom: 0pt; margin-top: 0pt;"><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"><span>Having joined the PSF as Executive Director </span><a href="https://pyfound.blogspot.com/2022/04/deb-nicholson-new-executive-director.html"><span style="text-decoration: underline;">just a few weeks before the event</span></a><span>, this was a great opportunity to meet the community, including long-time volunteers, current and former board members, and hard-working local Python organizers from all over the world. It was also my first opportunity to meet the amazing PSF staff in person. Did you know that the PSF facilitates PyCon US with just 8 staff members? Their dedication to providing a space that is welcoming and fun, while also being safe and respectful, knows no bounds. The community is always first at PyCon US.&nbsp;</span></span></span></span></p><p style="margin-bottom: 0pt; margin-top: 0pt;"><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"><span>&nbsp;</span></span></span></span> </p><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"> </span></span></span><p style="margin-bottom: 0pt; margin-top: 0pt;"> </p><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"> </span></span></span><p style="margin-bottom: 0pt; margin-top: 0pt;"> <span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"><span>We had lots of great talks and convened summits focused on Maintainers, Typing, Education, Packaging and the development of the Python Language. We also hosted Mentored Sprints for Diverse Beginners, the PyLadies Auction, four Lightning Talk Sessions, and two days of Sprints. We hit </span><a href="https://pycon.blogspot.com/2022/05/pycon-us-2022-recordings-update.html"><span style="text-decoration: underline;">a few snags</span></a><span> with a new AV team this year, but now most of the videos are up on </span><a href="https://www.youtube.com/c/PyConUS"><span style="text-decoration: underline;">our YouTube channel</span></a><span>.&nbsp;</span></span></span></span></p><p style="margin-bottom: 0pt; margin-top: 0pt;"><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"><span>&nbsp;</span></span></span></span> </p><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"> </span></span></span><p style="margin-bottom: 0pt; margin-top: 0pt;"> </p><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"> </span></span></span><p style="margin-bottom: 0pt; margin-top: 0pt;"> <span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"><span>This year&#8217;s event was a little more cautious, but it was really nice to see people. We&#8217;re actively looking for ways to better engage our online attendees next year and would </span><a href="mailto:pycon-feedback@python.org"><span style="text-decoration: underline;">welcome your ideas</span></a><span>. Thanks to our many, many volunteers, especially three-time PyCon US Chair Emily Morehouse! Thank you also to our wonderful </span><a href="https://us.pycon.org/2022/sponsorship/sponsors/"><span style="text-decoration: underline;">sponsors</span></a><span>, many of whom not only help us put on PyCon US but also support the Python Programming Language throughout the year!!</span></span></span></span></p><p style="margin-bottom: 0pt; margin-top: 0pt;"><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"><span>&nbsp;</span></span></span></span> </p><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"> </span></span></span><p style="margin-bottom: 0pt; margin-top: 0pt;"> </p><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"> </span></span></span><p style="margin-bottom: 0pt; margin-top: 0pt;"><span style="color: #444444;"><span style="font-family: inherit;"><span style="font-size: small;"> <span>Mark your calendar for PyCon US 2023 from April 19th to April 27th, 2023 both in Salt Lake City or online. If you are interested in talking about sponsorship opportunities for 2023, </span><a href="mailto:sponsors@python.org"><span style="text-decoration: underline;">please drop us a line</span></a><span>. And we are always looking for more volunteers, so if you&#8217;d like to be part of a future event as a volunteer, </span><a href="mailto:pycon-feedback@python.org"><span style="text-decoration: underline;">just let us know</span></a><span>.</span></span></span></span> </p> <p style="margin-bottom: 0pt; margin-top: 0pt;"> </p> <p style="margin-bottom: 0pt; margin-top: 0pt;"> </p> </div> <p><style type="text/css">#toc, .toc, .mw-warning { border: 1px solid #aaa; background-color: #f9f9f9; padding: 5px; font-size: 95%; }#toc h2, .toc h2 { display: inline; border: none; padding: 0; font-size: 100%; font-weight: bold; }#toc #toctitle, .toc #toctitle, #toc .toctitle, .toc .toctitle { text-align: center; }#toc ul, .toc ul { list-style-type: none; list-style-image: none; margin-left: 0; padding-left: 0; text-align: left; }#toc ul ul, .toc ul ul { margin: 0 0 0 2em; }#toc .toctoggle, .toc .toctoggle { font-size: 94%; }p, h1, h2, h3, li { }body{ padding-top : 1in; padding-bottom : 1in; padding-left : 1in; padding-right : 1in; }</style></p> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/06173618710147431813' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/06173618710147431813' rel='author' title='author profile'> <span itemprop='name'>Deb Nicholson</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/06/pycon-us-successful-return-to-in-person.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/06/pycon-us-successful-return-to-in-person.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-06-08T11:25:00-04:00'>6/08/2022 11:25:00 AM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-1723525585'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=4696149849463424077&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Tuesday, June 07, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='https://blogger.googleusercontent.com/img/a/AVvXsEgilPRbu5n8y624KXJ2OxJ30-mRdtqcvJwURDQbAAMTigZVJr1tlqjid_MPkRpqX1ObWoAsnCG9b0FZ8EbSmvG3gcgUSj9w8rRo4B8GM0GuXPpAp4xb52xQIlIavJYLXkdWciByqHznrTHZUgSYSIsXswz-swtQur_zcgk4Jvj3L8dulQhQ=w320-h320' itemprop='image_url'/> <meta content='8520' itemprop='blogId'/> <meta content='1736328887734032271' itemprop='postId'/> <a name='1736328887734032271'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/06/welcome-chloe-gerhardson-to-psf-staff.html'>Welcome Chloe Gerhardson to the PSF staff!</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-1736328887734032271' itemprop='description articleBody'> <p>With great anticipation and excitement we are happy to announce that Chloe Gerhardson (she/her) has joined the Python Software Foundation (PSF) as of Monday May 23, 2022. Chloe joins the team as Infrastructure Engineer,&nbsp;led by PSF Director of Infrastructure Ee Durbin.</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgilPRbu5n8y624KXJ2OxJ30-mRdtqcvJwURDQbAAMTigZVJr1tlqjid_MPkRpqX1ObWoAsnCG9b0FZ8EbSmvG3gcgUSj9w8rRo4B8GM0GuXPpAp4xb52xQIlIavJYLXkdWciByqHznrTHZUgSYSIsXswz-swtQur_zcgk4Jvj3L8dulQhQ" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="600" data-original-width="600" height="320" src="https://blogger.googleusercontent.com/img/a/AVvXsEgilPRbu5n8y624KXJ2OxJ30-mRdtqcvJwURDQbAAMTigZVJr1tlqjid_MPkRpqX1ObWoAsnCG9b0FZ8EbSmvG3gcgUSj9w8rRo4B8GM0GuXPpAp4xb52xQIlIavJYLXkdWciByqHznrTHZUgSYSIsXswz-swtQur_zcgk4Jvj3L8dulQhQ=w320-h320" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Chloe Gerhardson - PSF Infrastructure Engineer</td></tr></tbody></table><p></p><p>As a recent graduate of Springfield Technical Community College&#8217;s associates program in Computer Programming, Chloe will be growing into a role that supports the wide gamut of software technologies that facilitate the technical aspects of our community.</p><p>In time Chloe will share in all responsibilities of the Infrastructure Team and help the PSF move its infrastructure commitment to the community from a reactive and maintenance stance towards progress on new and expanded services to fulfill our mission.</p><p>In her own words&#8230;</p><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><p style="text-align: left;">I am thrilled and grateful to be brought along in the journey of growing and maintaining the PSF&#8217;s infrastructure, and I look forward to working with the PSF&#8217;s incredible staff members, as well as our wonderful community members at large.</p></blockquote><p>Although excitement abounds for the learning, growing, and doing that this role requires Chloe also stays busy as a committed, registered, and active Registered Yoga Teacher in her community, skateboarder, dog lover, traveler, and aficionado of live music.</p><p>Please join us in welcoming Chloe!</p> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/13577459520968677064' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/13577459520968677064' rel='author' title='author profile'> <span itemprop='name'>Ee Durbin</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/06/welcome-chloe-gerhardson-to-psf-staff.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/06/welcome-chloe-gerhardson-to-psf-staff.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-06-07T08:00:00-04:00'>6/07/2022 08:00:00 AM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-312150102'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=1736328887734032271&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> Location: <a href='https://maps.google.com/maps?q=Springfield,+MA,+USA@42.1014831,-72.589811&z=10' target='_blank'>Springfield, MA, USA</a> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Friday, June 03, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='1782448130697008963' itemprop='postId'/> <a name='1782448130697008963'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/06/python-developers-survey-2021-python-is.html'>Python Developers Survey 2021: Python is everywhere</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-1782448130697008963' itemprop='description articleBody'> We are excited to announce the results of the fifth official annual Python Developers Survey. This work is done each year as a collaborative effort between the Python Software Foundation and JetBrains. Late last year, more than 23,000 Python developers and enthusiasts from almost 200 countries/regions participated in the survey to reveal the current state of the language and the ecosystem around it.<br> <br> Python is being used by the vast majority (84%) of survey respondents as their primary language and by many others as just one more tool in their box. Interestingly, only 29% of the Python developers involved in data analysis and machine learning consider themselves to be Data Scientists. And like past years, many use Python in conjunction with other popular development and data tools like SQL, Jupyter Notebook, Virtualenv, Docker or with the most popular web development technologies including Django, Javascript and HTML.&#160;<br> <br> <a href="https://lp.jetbrains.com/python-developers-survey-2021/#PythonPackaging">Results of the 2021 Python Developers Survey</a><br> <br> This is also the first time we have packaging information in the survey. It was interesting to see the wide range of tools that Python users are employing for their packaging tasks. The PSF is currently focusing on improving the packaging ecosystem and building a roadmap for the future of packaging. We hope you will continue sharing your opinions with us on this part of your work so that we can continue improving.&#160;<br> <br> <a href="https://drive.google.com/file/d/1BaImG13GefSTe3ZGa4DEYwomP-gQ0DzE/view?usp=sharing">Here's a link to the raw data, if you want to go deeper.</a>&#160;<br> <br> If you do look at the raw data and discover things you think the community would be interested in, we hope you&#8217;ll let us know. Please share your thoughts on Twitter or other social media, mentioning <a href="https://twitter.com/jetbrains">@jetbrains</a> and <a href="https://twitter.com/ThePSF">@ThePSF</a> with the #pythondevsurvey hashtag. We are also open to any suggestions and feedback related to this survey which could help us run an even better one next time. You are also encouraged to open issues <a href="https://github.com/python/python-dev-survey/issues">here</a> or join the conversation on <a href="http://discuss.python.org/">our forum</a>. <br> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/06173618710147431813' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/06173618710147431813' rel='author' title='author profile'> <span itemprop='name'>Deb Nicholson</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/06/python-developers-survey-2021-python-is.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/06/python-developers-survey-2021-python-is.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-06-03T12:05:00-04:00'>6/03/2022 12:05:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-1723525585'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=1782448130697008963&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Wednesday, June 01, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='4426252419750788125' itemprop='postId'/> <a name='4426252419750788125'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/06/psf-board-election-dates-for-2022.html'>PSF Board Election Dates for 2022</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-4426252419750788125' itemprop='description articleBody'> <p style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Arial; font-size: 14.7px; font-stretch: normal; line-height: normal; margin: 0px;"><span style="font-kerning: none;">Board elections are a chance for the community to help us find the next batch of folks to help us steer the PSF. This year there are 4 seats open on the PSF board. You can see who is on the board currently <a href="https://www.python.org/psf/records/board/history/"><span style="-webkit-text-stroke-color: rgb(16, 60, 192); color: #103cc0; font-kerning: none;">here</span></a>. (Kushal, Jannis, Lorena and Marlene </span><span style="font-kerning: none;">are at the end of their current terms.) Nominations for new board members opens today!</span></p><p style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Times; font-size: 12px; font-stretch: normal; line-height: normal; margin: 0px; min-height: 14px;"><span style="font-kerning: none;"></span><br /></p><p style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Arial; font-size: 14.7px; font-stretch: normal; line-height: normal; margin: 0px;"><span style="font-kerning: none;">Timeline:</span></p><ul> <li style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Arial; font-size: 14.7px; font-stretch: normal; line-height: normal; margin: 0px;"><span style="font-kerning: none;">Nominations are open, Wednesday, June 1st 12:00 PM Eastern</span></li> <li style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Arial; font-size: 14.7px; font-stretch: normal; line-height: normal; margin: 0px;"><span style="font-kerning: none;">Board Director Nomination cut-off: Wednesday, June 15, 2022 AoE</span></li> <li style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Arial; font-size: 14.7px; font-stretch: normal; line-height: normal; margin: 0px;"><span style="font-kerning: none;">Voter application cut-off date: Wednesday, June 15, 2022 AoE</span></li> <li style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Arial; font-size: 14.7px; font-stretch: normal; line-height: normal; margin: 0px;"><span style="font-kerning: none;">Announce candidates: Thursday, June 16th</span></li> <li style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Arial; font-size: 14.7px; font-stretch: normal; line-height: normal; margin: 0px;"><span style="font-kerning: none;">Voting start date: Monday, June 20, 2022 AoE</span></li> <li style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Arial; font-size: 14.7px; font-stretch: normal; line-height: normal; margin: 0px;"><span style="font-kerning: none;">Voting end date: Friday, June 30, 2022 AoE</span></li> </ul><p style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Times; font-size: 12px; font-stretch: normal; line-height: normal; margin: 0px; min-height: 14px;"><span style="font-family: Arial; font-size: 14.7px;">Nominations should be made through </span><a href="https://www.python.org/nominations/2022-python-software-foundation-board/create/" style="font-family: Arial; font-size: 14.7px;"><span style="-webkit-text-stroke-color: rgb(16, 60, 192); color: #103cc0; font-kerning: none;">this form</span></a><span style="font-family: Arial; font-size: 14.7px;"> (Note: you will need to sign into or create your python.org user account first). You can nominate yourself or someone else, but no one will be forced to run, so you may want to consider reaching out to someone before nominating them. &nbsp;</span><span style="font-kerning: none;"></span></p><p style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Times; font-size: 12px; font-stretch: normal; line-height: normal; margin: 0px; min-height: 14px;"><span style="font-kerning: none;"></span><br /></p><p style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Arial; font-size: 14.7px; font-stretch: normal; line-height: normal; margin: 0px;"><span style="font-kerning: none;">You need to be a contributing, managing, supporting, or fellow member by June 15th to vote in this election. Learn more about membership <a href="https://www.python.org/psf/membership/"><span style="-webkit-text-stroke-color: rgb(16, 60, 192); color: #103cc0; font-kerning: none;">here</span></a> or if you have questions about membership or nominations please email <a href="mailto:psf-elections@python.org"><span style="-webkit-text-stroke-color: rgb(16, 60, 192); color: #103cc0; font-kerning: none;">psf-elections@python.org</span></a></span></p><p style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Times; font-size: 12px; font-stretch: normal; line-height: normal; margin: 0px; min-height: 14px;"><span style="font-kerning: none;"></span><br /></p><p style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Arial; font-size: 14.7px; font-stretch: normal; line-height: normal; margin: 0px;"><span style="font-kerning: none;">You are welcome to join the discussion about the PSF Board election on <a href="https://discuss.python.org/c/python-software-foundation/9"><span style="-webkit-text-stroke-color: rgb(16, 60, 192); color: #103cc0; font-kerning: none;">our forum</span></a> or come find us <a href="https://psf-board.slack.com/"><span style="-webkit-text-stroke-color: rgb(16, 60, 192); color: #103cc0; font-kerning: none;">in Slack</span></a>.</span></p> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/06173618710147431813' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/06173618710147431813' rel='author' title='author profile'> <span itemprop='name'>Deb Nicholson</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/06/psf-board-election-dates-for-2022.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/06/psf-board-election-dates-for-2022.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-06-01T11:46:00-04:00'>6/01/2022 11:46:00 AM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-1723525585'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=4426252419750788125&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Thursday, May 26, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHxWC4w8f5Q3EDLpRvRrsnMRNRRJxhhSF-9lKzKWSDfDDjSqfYpS3KEAvrAxps-tFqV8SP1y2xCyjjwzilmNiQj7Wpje9w0Yzhh-qxB8-qCrKYjThgxp-eFtSSL3BIzMgV7DFntVEP0IJ1hmGT9FJTxdWUuuFlFPLcB5RYBqF-JtrkjQko/w400-h199/pycon-jp-assosiation.jpeg' itemprop='image_url'/> <meta content='8520' itemprop='blogId'/> <meta content='1920875822739740199' itemprop='postId'/> <a name='1920875822739740199'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/05/pycon-jp-association-awarded-psf.html'>PyCon JP Association Awarded the PSF Community Service Award for Q4 2021</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-1920875822739740199' itemprop='description articleBody'> <table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHxWC4w8f5Q3EDLpRvRrsnMRNRRJxhhSF-9lKzKWSDfDDjSqfYpS3KEAvrAxps-tFqV8SP1y2xCyjjwzilmNiQj7Wpje9w0Yzhh-qxB8-qCrKYjThgxp-eFtSSL3BIzMgV7DFntVEP0IJ1hmGT9FJTxdWUuuFlFPLcB5RYBqF-JtrkjQko/s5358/pycon-jp-assosiation.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2665" data-original-width="5358" height="199" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHxWC4w8f5Q3EDLpRvRrsnMRNRRJxhhSF-9lKzKWSDfDDjSqfYpS3KEAvrAxps-tFqV8SP1y2xCyjjwzilmNiQj7Wpje9w0Yzhh-qxB8-qCrKYjThgxp-eFtSSL3BIzMgV7DFntVEP0IJ1hmGT9FJTxdWUuuFlFPLcB5RYBqF-JtrkjQko/w400-h199/pycon-jp-assosiation.jpeg" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The PyCon JP Association team from left to right. Takayuki, Shunsuke, Jonas, Manabu, Takanori</td></tr></tbody></table><p><br /></p><p>The <a href="https://www.pycon.jp/committee/english.html">PyCon JP Association</a> team was awarded the 2021 Q4 Community Service Award.</p><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><p style="text-align: justify;"></p><blockquote>RESOLVED, that the Python Software Foundation award the 2021 Q4 Community Service Award to the following members of the PyCon JP Association for their work in organizing local and regional PyCons, the work of monitoring our trademarks, and in particular organizing the "PyCon JP Charity Talks" raising more than $25,000 USD in funds for the PSF: <a href="https://twitter.com/terapyon" target="_blank">Manabu Terada</a>, <a href="https://twitter.com/takanory" target="_blank">Takanori Suzuki</a>, <a href="https://twitter.com/shimizukawa" target="_blank">Takayuki Shimizukawa</a>, <a href="https://twitter.com/koedoyoshida" target="_blank">Shunsuke Yoshida</a>, <a href="https://twitter.com/ojiidotch" target="_blank">Jonas Obrist</a>.</blockquote><p></p></blockquote><p>We interviewed Jonas Obrist on behalf of the PyCon JP Association to learn more about their inspiration, their work with the Python community, and supporting the Python Software Foundation - PSF. <a href="https://twitter.com/pydebb" target="_blank">D茅bora Azevedo</a>&nbsp;also contributed to this article, by sharing more light on the PyCon JP Association's efforts and commitment to the Python community.</p><h3 style="text-align: left;">Jonas Obrist Speaks on the motivation behind the PyCon JP Association</h3><div><b>What inspired the PyCon JP Association team into raising funds to support the PSF?</b></div><div><b><br /></b></div><div>We were inspired to raise funds after reading an announcement by the PSF about <a href="https://pyfound.blogspot.com/2020/09/the-python-software-foundation-re-opens.html" target="_blank">the impact of the pandemic on the foundation and PyCon US</a>. We could of course empathize with the struggle given that we have a similar situation, even if on a much smaller scale.</div><div><br /></div><div>We tried to think of a good way to help and either <a href="https://twitter.com/terapyon" target="_blank">Manabu</a> or <a href="https://twitter.com/takanory" target="_blank">Takanori</a> came up with the idea to host online events with presentations by members of the community with all proceeds going to the PSF. We held two such events so far with over a hundred attendees and even managed to gather some companies and individuals as sponsors.&nbsp;</div><div><br /></div><div>Thanks to the online nature, costs were kept very low and we were able to make a sizeable donation to the PSF, hopefully softening the financial blow of the pandemic a bit.</div><div><br /></div><div><b>How do you think other Python communities can support the PSF?</b></div><div><br /></div><div>I think other communities have various ways to support the PSF depending on each community's situation.</div><div><br /></div><div>We have the fortune to be well established with great support from the wider community and especially local companies, so we were able to make a <a href="https://www.python.org/psf/donations/" target="_blank">direct financial contribution</a>.&nbsp;</div><div><br /></div><div>Not all communities are this fortunate, but I think there are still other ways to contribute.</div><div><br /></div><div>One such way is simply to boost awareness of the Python programming language in the local developer community. ideally, this would eventually lead to companies adopting Python more widely, which in turn could lead to <a href="https://psfmember.org/civicrm/contribute/transact?reset=1&amp;id=37" target="_blank">direct support to the PSF</a>, either via direct donations or support of <a href="https://us.pycon.org/2022/about/what-is-pycon/" target="_blank">PyCon US</a> by these companies.</div><div><br /></div><div>Boosting local communities also leads to more Python developers in general, leading to a broader pool of people who could support the PSF in various ways.</div><div><br /></div><div>The most important thing is for each community to think about what they can do, even if it is just a small thing, given that we owe so much to the PSF.</div><div><br /></div><div><h3>D茅bora Azevedo speaks about the impact and significance of the PyCon JP Association</h3></div><div>One of the things I am most excited about is seeing the PyCon JP Association team receiving this CSA and realizing that the work being done outside the US-Europe countries is acknowledged.</div><div><br /></div><div>PyCon JP association has risen to the financial challenge that the PSF went through due to the pandemic and has organized <a href="https://pyconjp.connpass.com/event/218154/" target="_blank">PyCon JP Charity Talks</a>. Aiming to increase awareness within the industry about the importance of the PSF is so meaningful. The charity talks were initiatives by the PyCon JP association, and it was a significant effort on their part. Their work is such an outstanding work that shouldn't be overlooked.</div><div><br /></div><div>As part of the wider Python community, it warms my heart to see that there are many amazing people worldwide working so we can have a more sustainable Python community.</div><div><br /></div><div>Seeing local communities contributing to the global community, especially regarding this financial aspect, shows that the community feels the need to have different types of work done and understands the importance and impact of each one of them.</div><div><br /></div><div>And, as part of the Diversity and Inclusion workgroup and understanding the impact of seeing people from non-US-based communities being acknowledged for doing the work, it feels like we are being heard.</div><div><br /></div><div>The PyCon JP association's community work is outstanding and I am so grateful to them and for being in a community that values each contribution to its development and growth.</div><div><br /></div><div>The Python Software Foundation congratulates and celebrates the PyCon JP association team -&nbsp;&nbsp;<a href="https://twitter.com/terapyon" target="_blank">Manabu Terada</a>,&nbsp;<a href="https://twitter.com/takanory" target="_blank">Takanori Suzuki</a>,&nbsp;<a href="https://twitter.com/shimizukawa" target="_blank">Takayuki Shimizukawa</a>,&nbsp;<a href="https://twitter.com/koedoyoshida" target="_blank">Shunsuke Yoshida</a>,&nbsp;<a href="https://twitter.com/ojiidotch" target="_blank">Jonas Obrist</a>.</div><div><br /></div><div>You can learn more about making a <a href="https://www.python.org/psf/donations/" target="_blank">donation to the PSF here</a>.</div><div><br /></div><p></p> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/03943153715517080869' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/03943153715517080869' rel='author' title='author profile'> <span itemprop='name'>Charles Freeborn</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/05/pycon-jp-association-awarded-psf.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/05/pycon-jp-association-awarded-psf.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-05-26T15:32:00-04:00'>5/26/2022 03:32:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-988902719'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=1920875822739740199&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> <div class="date-outer"> <h2 class='date-header'><span>Wednesday, May 11, 2022</span></h2> <div class="date-posts"> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='8520' itemprop='blogId'/> <meta content='4387924340252607838' itemprop='postId'/> <a name='4387924340252607838'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit.html'>The 2022 Python Language Summit: Lightning talks</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-4387924340252607838' itemprop='description articleBody'> <div class="markdown-body container-fluid comment-inner comment-enabled" data-hard-breaks="true" id="doc"><p><span>These were a series of short talks, each lasting around five minutes.</span></p><p><span><br /></span></p><p><span><a href="https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit_01678898482.html">Read the rest of the 2022 Python Language Summit coverage here.</a></span></p><p><span><br /></span></p><hr /><h2 class="raw"><span>Lazy imports, with Carl Meyer</span></h2><p><span>Carl Meyer, an engineer at Instagram, presented on a proposal that has since blossomed into </span><a href="https://peps.python.org/pep-0690/" rel="noopener" target="_blank"><span>PEP 690</span></a><span>: lazy imports, a feature that has already been implemented in <a href="https://github.com/facebookincubator/cinder">Cinder</a>, Instagram&#8217;s performance-optimised fork of CPython 3.8.</span></p><p><span>What&#8217;s a </span><em><span>lazy import</span></em><span>? Meyer explained that the core difference with lazy imports is that the import does not happen until the imported object is referenced.</span></p><h3 class="raw"><span>Examples</span></h3><p><span>In the following Python module, </span><code>spam.py</code><span>, with lazy imports activated, the module </span><code>eggs</code><span> would never in fact be imported since </span><code>eggs</code><span> is never referenced after the import:</span></p><pre><code class="python hljs"><div class="wrapper"><div class="gutter linenumber"><span></span></div><div class="gutter linenumber"><br /></div><div class="code"><span class="hljs-comment"># spam.py</span> <span class="hljs-keyword">import</span> sys <span class="hljs-keyword">import</span> eggs <span class="hljs-keyword">def</span> <span class="hljs-title function_">main</span>(): <span class="hljs-built_in">print</span>(<span class="hljs-string">"Doing some spammy things."</span>) sys.exit(<span class="hljs-number">0</span>) <span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>: main() </div><div class="code"><br /></div><div class="code"><br /></div></div></code></pre><p><span>And in </span><em><span>this</span></em><span> Python module, </span><code>ham.py</code><span>, with lazy imports activated, the function </span><code>bacon_function</code><span> </span><em><span>is</span></em><span> imported &#8211; but only right at the end of the script, after we&#8217;ve completed a for-loop that&#8217;s taken a very long time to finish:</span></p><pre><code class="python hljs"><div class="wrapper"><div class="gutter linenumber"><br /><span></span></div><div class="code"><span class="hljs-keyword"># ham.py</span></div><div class="code"><span class="hljs-keyword">import sys</span></div><div class="code"><span class="hljs-keyword">import time</span></div><div class="code"><span class="hljs-keyword">from</span> bacon <span class="hljs-keyword">import</span> bacon_function <span class="hljs-keyword">def</span> <span class="hljs-title function_">main</span>(): <span class="hljs-keyword">for</span> _ <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">1_000_000_000</span>): <span class="hljs-built_in">print</span>(<span class="hljs-string">'Doing hammy things'</span>) time.sleep(<span class="hljs-number">1</span>) bacon_function()</div><div class="code"> sys.exit(0) <span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>: main() </div><div class="code"><br /></div><div class="code"><br /></div></div></code></pre><p><span>Meyer revealed that the Instagram team&#8217;s work on lazy imports had resulted in startup time improvements of up to 70%, memory usage improvements of up to 40%, and the elimination of almost all import cycles within their code base. (This last point will be music to the ears of anybody who has worked on a Python project larger than a few modules.)</span></p><h3 class="raw"><span>Downsides</span></h3><p><span>Meyer also laid out a number of costs to having lazy imports. Lazy imports create the risk that </span><code>ImportError</code><span> (or any other error resulting from an unsuccessful import) could potentially be raised&#8230; anywhere. Import side effects could also become &#8220;even less predictable than they already weren&#8217;t&#8221;.</span></p><p><span>Lastly, Meyer noted, &#8220;If you&#8217;re not careful, your code might implicitly start to require it&#8221;. In other words, you might unexpectedly reach a stage where &#8211; because your code has been using lazy imports &#8211; it now no longer runs without the feature enabled, because your code base has become a huge, tangled mess of cyclic imports.</span></p><h3 class="raw"><span>Where next for lazy imports?</span></h3><p><span>Python users who have opinions either for or against the proposal are encouraged to join </span><a href="https://discuss.python.org/t/pep-690-lazy-imports/" rel="noopener" target="_blank"><span>the discussion on discuss.python.org</span></a><span>.</span></p><p><span><br /></span></p><hr /><h2 class="raw"><span>Python-Dev versus Discourse, with Thomas Wouters</span></h2><p><span>This was less of a talk, and more of an announcement.</span></p><p><span>Historically, if somebody wanted to make a significant change to CPython, they were required to post on <a href="https://mail.python.org/mailman3/lists/python-dev.python.org/">the python-dev mailing list</a>. The Steering Council now views the alternative venue for discussion, </span><a href="http://discuss.python.org" rel="noopener" target="_blank"><span>discuss.python.org</span></a><span>, to be a superior forum in many respects.</span></p><p><span>Thomas Wouters, Core Developer and Steering Council member, said that the Steering Council was planning on loosening the requirements, stated in several places, that emails had to be sent to python-dev in order to make certain changes. Instead, they were hoping that </span><a href="http://discuss.python.org" rel="noopener" target="_blank"><span>discuss.python.org</span></a><span> would become the authoritative discussion forum in the years to come.</span></p><p><span><br /></span></p><hr /><h2 class="raw"><span>Asks from Pyston, with Kevin Modzelewski</span></h2><p><span>Kevin Modzelewski, core developer of the <a href="https://www.pyston.org">Pyston</a>&nbsp;project, gave a short presentation on ways forward for CPython optimisations. Pyston is a performance-oriented fork of CPython 3.8.12.</span></p><p><span>Modzelewski argued that CPython needed better benchmarks; the existing benchmarks on </span><a href="https://github.com/python/pyperformance" rel="noopener" target="_blank"><span>pyperformance</span></a><span> were &#8220;not great&#8221;. Modzelewski also warned that his &#8220;unsubstantiated hunch&#8221; was that the <a href="https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit_2.html?m=1">Faster CPython</a> team had already accomplished &#8220;greater than one-half&#8221; of the optimisations that could be achieved within the current constraints. Modzelewski encouraged the attendees to consider future optimisations that might cause backwards-incompatible behaviour changes.</span></p><p><span><br /></span></p><hr /><h2 class="raw"><span>Core Development and the PSF, with Thomas Wouters</span></h2><p><span>This was another short announcement from Thomas Wouters on behalf of the Steering Council. After sponsorship from Google providing funding for <a href="https://pyfound.blogspot.com/2021/04/the-psf-is-hiring-developer-in.html">the first ever CPython Developer-In-Residence</a> (<span face="arial, sans-serif" style="color: #202124;">艁</span>ukasz Langa), Meta has provided sponsorship for a second year. The Steering Council also now has sufficient funds to hire a second Developer-In-Residence &#8211; and attendees were notified that they were open to the idea of hiring somebody who was not currently a core developer.</span></p><p><span><br /></span></p><hr /><h2 class="raw"><span>&#8220;Forward classes&#8221;, with Larry Hastings</span></h2><p><span>Larry Hastings, CPython core developer, gave a brief presentation on a proposal he had </span><a href="https://groups.google.com/g/dev-python/c/AuvirC3UNFU?pli=1" rel="noopener" target="_blank"><span>sent round to the python-dev mailing list</span></a><span> in recent days: a &#8220;forward class&#8221; declaration that would avoid all issues with two competing </span><code>typing</code><span> PEPs: </span><a href="https://peps.python.org/pep-0563/" rel="noopener" target="_blank"><span>PEP 563</span></a><span> and </span><a href="https://peps.python.org/pep-0649/" rel="noopener" target="_blank"><span>PEP 649</span></a><span>. In brief, the proposed syntax would look something like this:</span></p><pre><code class="python hljs"><div class="wrapper"><div class="gutter linenumber"><span></span></div><div class="code"><br /></div><div class="code"><br /></div><div class="code">forward <span class="hljs-keyword">class</span> <span class="hljs-title class_">X</span>() <span class="hljs-keyword">continue</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">X</span>: <span class="hljs-comment"># class body goes here</span> <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, key</span>): self.key = key </div><div class="code"><br /></div><div class="code"><br /></div></div></code></pre><p><span>In theory, according to Hastings, this syntax could avoid </span><a href="https://github.com/samuelcolvin/pydantic/issues/2678" rel="noopener" target="_blank"><span>issues around runtime evaluation of annotations that have plagued PEP 563</span></a><span>, while also circumventing many of </span><a href="https://discuss.python.org/t/finding-edge-cases-for-peps-484-563-and-649-type-annotations/14314" rel="noopener" target="_blank"><span>the edge cases that unexpectedly fail</span></a><span> in a world where PEP 649 is implemented.</span></p><p><span>The idea was in its early stages, and reaction to the proposal was mixed. The next day, at the Typing Summit, there was more enthusiasm voiced for a plan laid out by Carl Meyer for a tweaked version of Hastings&#8217;s earlier attempt at solving this problem: </span><a href="https://peps.python.org/pep-0649/" rel="noopener" target="_blank"><span>PEP 649</span></a><span>.</span></p><p><span><br /></span></p><hr /><h2 class="raw"><span>Better fields access, with Samuel Colvin</span></h2><p><span>Samuel Colvin, maintainer of the <a href="https://pydantic-docs.helpmanual.io">Pydantic</a> library, gave a short presentation on a proposal (</span><a href="https://discuss.python.org/t/better-fields-access-and-allowing-a-new-character-at-the-start-of-identifiers/14529" rel="noopener" target="_blank"><span>recently discussed on discuss.python.org</span></a><span>) to reduce name clashes between field names in a subclass, and method names in a base class.</span></p><p><span>The problem is simple. Suppose you&#8217;re a maintainer of a library, </span><code>whatever_library</code><span>. You release Version 1 of your library, and one user start to use your library to make classes like the following:</span></p><pre><code class="python hljs"><div class="wrapper"><div class="gutter linenumber"><span></span> <span></span></div><div class="code"><span class="hljs-keyword">from</span> whatever_library <span class="hljs-keyword">import</span> BaseModel <span class="hljs-keyword">class</span> <span class="hljs-title class_">Farmer</span>(<span class="hljs-title class_ inherited__">BaseModel</span>): name: <span class="hljs-built_in">str</span> fields: <span class="hljs-built_in">list</span>[<span class="hljs-built_in">str</span>] </div><div class="code"><br /></div><div class="code"><br /></div></div></code></pre><p><span>Both the user and the maintainer are happy, until the maintainer releases Version 2 of the library. Version 2 adds a method, </span><code>.fields()</code><span> to BaseModel, which will print out all the field names of a subclass. But this creates a name clash with your user&#8217;s existing code, wich has </span><code>fields</code><span> as the name of an instance attribute rather than a method.</span></p><p><span>Colvin briefly sketched out an idea for a new way of looking up names that would make it unambiguous whether the name being accessed was a method or attribute.</span></p><pre><code class="python hljs"><div class="wrapper"><div class="gutter linenumber"><span></span></div><div class="gutter linenumber"><br /></div><div class="gutter linenumber"><br /></div><div class="code"><span class="hljs-keyword">class</span> <span class="hljs-title class_">Farmer</span>(<span class="hljs-title class_ inherited__">BaseModel</span>): $name: <span class="hljs-built_in">str</span> $fields: <span class="hljs-built_in">list</span>[<span class="hljs-built_in">str</span>] farmer = Farmer(name=<span class="hljs-string">'Jones'</span>, fields=[<span class="hljs-string">'meadow'</span>, <span class="hljs-string">'highlands'</span>]) <span class="hljs-built_in">print</span>(farmer.$fields) <span class="hljs-comment"># -&gt; ['meadow', 'highlands']</span> <span class="hljs-built_in">print</span>(farmer.fields()) <span class="hljs-comment"># -&gt; ['name', 'fields']</span> </div></div></code></pre></div> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/18392244184145876843' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/18392244184145876843' rel='author' title='author profile'> <span itemprop='name'>Alex Waygood</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-05-11T13:40:00-04:00'>5/11/2022 01:40:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-980528170'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=4387924340252607838&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> Labels: <a href='https://pyfound.blogspot.com/search/label/pycon' rel='tag'>pycon</a> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUczmNuNdBhbIdRAeODp2yjmHK-_mcpMWNRI8WTjIXx_1tkgvMgZNGdgEHNr3KGVJTACb0vFLSlZ-U5I8YLXytAFz3tymHxwMYIBDeLzIOY_7F0MjND1qXalKF8xMy5t7-34LOJq1wBxKb9ojSgsa3qXYCeFbB48gtLkv_fOC8xnrv4NY/w400-h226/Achieving%20immortality.png' itemprop='image_url'/> <meta content='8520' itemprop='blogId'/> <meta content='5393695162742528824' itemprop='postId'/> <a name='5393695162742528824'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit_11.html'>The 2022 Python Language Summit: Achieving immortality</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-5393695162742528824' itemprop='description articleBody'> <div class="markdown-body container-fluid comment-inner comment-enabled" data-hard-breaks="true" id="doc"><p><span>What does it mean to achieve immortality? At<a href="https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit_01678898482.html"> the 2022 Python Language Summit</a>, Eddie Elizondo, an engineer at Instagram, and Eric Snow, CPython core developer, set out to explain just that.</span></p><p><span>Only for Python objects, though. Not for humans. That will have to be another PEP.</span></p><p><span><br /></span></p><hr /><h2 class="raw"><span>Objects in Python, as they currently stand</span></h2><p><span>In Python, as is well known, </span><a href="https://linux.die.net/diveintopython/html/getting_to_know_python/everything_is_an_object.html#d0e4665" rel="noopener" target="_blank"><span>everything is an object</span></a><span>. This means that if you want to calculate even a simple sum, such as </span><code>194 + 3.14</code><span>, the Python interpreter must create two objects: one object of type </span><code>int</code><span> representing the number </span><code>194</code><span>, and another object of type </span><code>float</code><span> representing the number&nbsp;</span><code>3.14</code><span>.</span></p><p><span>All objects in Python maintain a </span><a href="https://docs.python.org/3.6/c-api/intro.html#objects-types-and-reference-counts" rel="noopener" target="_blank"><em><span>reference count</span></em></a><span>: a running total of the number of active references to that object that currently exist in the program. If the reference count of an object drops to 0, the object is eventually destroyed (through a process known as </span><a href="https://devguide.python.org/garbage_collector/" rel="noopener" target="_blank"><em><span>garbage collection</span></em></a><span>). This process ensures that programmers writing Python don&#8217;t normally need to concern themselves with manually deleting an object when they&#8217;re done with it. Instead, memory is automatically freed up.</span></p><p><span>The need to keep reference counts for all objects (along with a few other mutable fields on all objects) means that there is currently no way of having a &#8220;truly immutable&#8221; object in Python.</span></p><p><span>This is a distinction that only really applies at the C level. For example, the </span><code>None</code><span> singleton cannot be mutated at runtime at the Python level:</span></p><pre><code class="python hljs"><div class="wrapper"><div class="gutter linenumber"><span></span> <span></span></div><div class="gutter linenumber"><br /></div><div class="code"><span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-literal">None</span>.__bool__ = <span class="hljs-keyword">lambda</span> self: <span class="hljs-literal">True</span> Traceback (most recent call last): File <span class="hljs-string">"&lt;stdin&gt;"</span>, line <span class="hljs-number">1</span>, <span class="hljs-keyword">in</span> &lt;module&gt; AttributeError: <span class="hljs-string">'NoneType'</span> <span class="hljs-built_in">object</span> attribute <span class="hljs-string">'__bool__'</span> <span class="hljs-keyword">is</span> read-only </div><div class="code"><br /></div><div class="code"><br /></div></div></code></pre><p><span>However, at the C level, the object representing </span><code>None</code><span> is mutating constantly, as the reference count to the singleton changes constantly.</span></p><p><span><br /></span></p><hr /><h2 class="raw"><span>Immortal objects</span></h2><p><span>An &#8220;immortal object&#8221;, according to </span><a href="https://peps.python.org/pep-0683/" rel="noopener" target="_blank"><span>PEP 683</span></a><span> (written by Elizondo/Snow), is an object marked by the runtime as being effectively immutable, even at the C level. The reference count for an immortal object will never reach 0; thus, an immortal object will never be garbage-collected, and will never die.</span></p><p><span><br /></span></p><blockquote> <p><span>&#8220;The fundamental improvement here is that now an object can be truly immutable.&#8221;</span></p> <p><span>&#8211; </span><span>Eddie Elizondo and Eric Snow,&nbsp;</span><em>PEP 683</em></p></blockquote><p>&nbsp;</p><p><span>The lack of truly immutable objects in Python, PEP 683 explains, &#8220;can have a large negative impact on CPU and memory performance, especially for approaches to increasing Python&#8217;s scalability&#8221;.</span></p><p><span><br /></span></p><hr /><h2 class="raw"><span>The benefits of immortality</span></h2><p><span>At their talk at the Python Language Summit, Elizondo and Snow laid out a number of benefits that their proposed changes could bring.</span></p><p><span>Guaranteeing &#8220;true memory immutability&#8221;, Elizondo explained, &#8220;we can simplify and enable larger initiatives,&#8221; including Eric Snow&#8217;s proposal for a <a href="https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit-per.html">per-interpreter GIL</a>, but also Sam Gross&#8217;s proposal for a version of Python that operates <a href="https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit-python_11.html">without the GIL entirely</a>. The proposal could also unlock new optimisation techniques in the future by helping create new ways of thinking about problems in the CPython code base.</span></p><p><span><br /></span></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUczmNuNdBhbIdRAeODp2yjmHK-_mcpMWNRI8WTjIXx_1tkgvMgZNGdgEHNr3KGVJTACb0vFLSlZ-U5I8YLXytAFz3tymHxwMYIBDeLzIOY_7F0MjND1qXalKF8xMy5t7-34LOJq1wBxKb9ojSgsa3qXYCeFbB48gtLkv_fOC8xnrv4NY/s607/Achieving%20immortality.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="344" data-original-width="607" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUczmNuNdBhbIdRAeODp2yjmHK-_mcpMWNRI8WTjIXx_1tkgvMgZNGdgEHNr3KGVJTACb0vFLSlZ-U5I8YLXytAFz3tymHxwMYIBDeLzIOY_7F0MjND1qXalKF8xMy5t7-34LOJq1wBxKb9ojSgsa3qXYCeFbB48gtLkv_fOC8xnrv4NY/w400-h226/Achieving%20immortality.png" width="400" /></a></div><br /><span><br /></span><p></p><p><br /></p><hr /><h2 class="raw"><span>The costs</span></h2><p><span>A naive implementation of immortal objects is costly, resulting in performance regeressions of around 6%. This is mainly due to adding a new branch of code to the logic keeping track of an object&#8217;s reference count.</span></p><p><span>With mitigations, however, Elizondo and Snow explained that the performance regression could be reduced to around 2%. The question they posed to the assembled developers in the audience was whether this was an &#8220;acceptable&#8221; performance regression &#8211; and, if not, what would be?</span></p><p><span><br /></span></p><hr /><h2 class="raw"><span>Reception</span></h2><p><span>The proposal was greeted with a mix of curious interest and healthy scepticism. There was agreement that certain aspects of the proposal would reach wide support among the community, and consensus that a performance regression of 1-2% would be acceptable if clear benefits could be shown. However, there was also concern that parts of the proposal would change semantics in a backwards-incompatible way.</span></p><p><span>Pablo Galindo Salgado, Release Manager for Python 3.10/3.11 and CPython Core Developer, worried that all the benefits laid out by the speakers were only </span><em><span>potential</span></em><span> benefits, and asked for more specifics. He pointed out that changing the semantics of reference-counting would be likely to break an awful lot of projects, given that popular third-party libraries such as </span><a href="https://numpy.org" rel="noopener" target="_blank"><code>numpy</code></a><span>, for example, use C extensions which continuously check reference counts.</span></p><p><span>Thomas Wouters, CPython Core Developer and Steering Council Member, concurred, saying that it probably &#8220;wasn&#8217;t possible&#8221; to make these changes without changing the </span><a href="https://docs.python.org/3/c-api/stable.html#stable-application-binary-interface" rel="noopener" target="_blank"><span>stable ABI</span></a><span>. Kevin Modzelewski, a maintainer of </span><a href="https://www.pyston.org/" rel="noopener" target="_blank"><span>Pyston</span></a><span>, a performance-oriented fork of Python 3.8, noted that Pyston had had immortal objects for a while &#8211; but Pyston had never made any promise to support the stable ABI, freeing the project of that constraint.</span></p></div> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/18392244184145876843' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/18392244184145876843' rel='author' title='author profile'> <span itemprop='name'>Alex Waygood</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit_11.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit_11.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-05-11T13:14:00-04:00'>5/11/2022 01:14:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-980528170'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=5393695162742528824&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> Labels: <a href='https://pyfound.blogspot.com/search/label/pycon' rel='tag'>pycon</a> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2EUCU6ikZiV8w1wuTSN8OBKzR9qCGteSCtRuzvVVvzaVQe8eVL960HTn5j7unO8Bjl2_yRxh8tQmrqw1kVWBb-SH6cdkxpdYZKHBY3Zs-G5wAKbcZ346avXq8UdPztF7dJ7xukMCf1lTzMK6yzi5lRKZMZ4N6IBV7Dc66ZP7IavC9qi4/w400-h226/pyinterpreterstruct%20commit.png' itemprop='image_url'/> <meta content='8520' itemprop='blogId'/> <meta content='3991171560132788018' itemprop='postId'/> <a name='3991171560132788018'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit-per.html'>The 2022 Python Language Summit: A per-interpreter GIL</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-3991171560132788018' itemprop='description articleBody'> <div class="markdown-body container-fluid comment-inner comment-enabled" data-hard-breaks="true" id="doc"><p><span>&#8220;Hopefully,&#8221; the speaker began, &#8220;This is the </span><em><span>last time</span></em><span> I give a talk on this subject.&#8221;</span></p><p><span>&#8220;My name is Eric Snow, I&#8217;ve been a core developer since 2012, and I&#8217;ve been working towards a per-interpreter GIL since 2014.&#8221;</span></p><p><span><br /></span></p><hr /><p><span>In 1997, the </span><code>PyInterpreterState</code><span> struct </span><a href="https://github.com/python/cpython/commit/a027efa5bfa7911b5c4b522b6a0698749a6f2e4a" rel="noopener" target="_blank"><span>was added to CPython</span></a><span>, allowing multiple Python interpreters to be run simultaneously within a single process. &#8220;For the longest time,&#8221; Snow noted, speaking at <a href="https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit_01678898482.html">the 2022 Python Language Summit</a>, this functionality was little used and little understood. In recent years, however, awareness and adoption of the idea has been spreading.</span></p><p><span><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2EUCU6ikZiV8w1wuTSN8OBKzR9qCGteSCtRuzvVVvzaVQe8eVL960HTn5j7unO8Bjl2_yRxh8tQmrqw1kVWBb-SH6cdkxpdYZKHBY3Zs-G5wAKbcZ346avXq8UdPztF7dJ7xukMCf1lTzMK6yzi5lRKZMZ4N6IBV7Dc66ZP7IavC9qi4/s608/pyinterpreterstruct%20commit.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="344" data-original-width="608" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2EUCU6ikZiV8w1wuTSN8OBKzR9qCGteSCtRuzvVVvzaVQe8eVL960HTn5j7unO8Bjl2_yRxh8tQmrqw1kVWBb-SH6cdkxpdYZKHBY3Zs-G5wAKbcZ346avXq8UdPztF7dJ7xukMCf1lTzMK6yzi5lRKZMZ4N6IBV7Dc66ZP7IavC9qi4/w400-h226/pyinterpreterstruct%20commit.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><p><span>Multiple interpreters, however, cannot yet be run in true isolation from each other when run inside the same process. Part of this is due to the </span><a href="https://realpython.com/python-gil/" rel="noopener" target="_blank"><span>GIL (&#8220;Global Interpreter Lock&#8221;)</span></a><span>, a core feature of CPython that is the building block for much of the language. The obvious solution to this problem is to have a </span><em><span>per-interpreter GIL</span></em><span>: a separate lock for each interpreter spawned within the process.</span></p><p><span>With a per-interpreter GIL, Snow explained, CPython will be able to achieve true multicore parallelism for code running in different interpreters.</span></p><p><span>A per-interpreter GIL, however, is no small task. &#8220;In general, any mutable state shared between multiple interpreters must be guarded by a lock,&#8221; Snow explained. Ultimately, what this means is that the amount of state shared between multiple interpreters must be brought down to an absolute minimum if the GIL is to become per-interpreter. As of 2017, there were still several thousand global variables; now, after a huge amount of work (and </span><a href="https://peps.python.org/pep-0554/" rel="noopener" target="_blank"><span>several</span></a><span> </span><a href="https://peps.python.org/pep-0684/" rel="noopener" target="_blank"><span>PEPs</span></a><span>), this has been reduced to around 1200 remaining globals.</span></p><p style="text-align: center;"><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy15SMZfkahQzCpBxyIV5UGpsu5xiTus0IsavfNsOmndM7vNpQ3zTgq_Wh8PE1mtrADQjlUwrOwIMCJhZgOaXQEsO5F16KpDyy32WoOFwInYA7_PPhtTbBr_f2XqC1Q7G9YXUOrXmQqyeDtvt2ezBpePgvXVVW0brzYSsuGJgIknrKAEg/s608/consolidating%20global%20state.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="344" data-original-width="608" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy15SMZfkahQzCpBxyIV5UGpsu5xiTus0IsavfNsOmndM7vNpQ3zTgq_Wh8PE1mtrADQjlUwrOwIMCJhZgOaXQEsO5F16KpDyy32WoOFwInYA7_PPhtTbBr_f2XqC1Q7G9YXUOrXmQqyeDtvt2ezBpePgvXVVW0brzYSsuGJgIknrKAEg/w400-h226/consolidating%20global%20state.png" width="400" /></a></div><p>&nbsp;</p><blockquote><p><span>&#8220;Basically, we can&#8217;t share objects between interpreters&#8221;</span></p> <p><span>&#8211; Eric Snow</span></p></blockquote><p>&nbsp;</p><hr /><h2 class="raw"><span>Troubles on the horizon</span></h2><p><span>The reception to Snow&#8217;s talk was positive, but a number of concerns were raised by audience members.</span></p><p><span>One potential worry is the fact that any C-extension module that wishes to be compatible with sub-interpreters will have to make changes to their design. Snow is happy to work on fixing these for the standard library, but there&#8217;s concern that end users of Python may put pressure on third-party library maintainers to provide support for multiple interpreters. Nobody wishes to place an undue burden on maintainers who are already giving up their time for free; subinterpreter support should remain an optional feature for third-party libraries.</span></p><p><span>Larry Hastings, a core developer in the audience for the talk, asked Snow what exactly the benefits of subinterpreters were compared to the existing </span><code><a href="https://docs.python.org/3/library/multiprocessing.html">multiprocessing</a></code><span><a href="https://docs.python.org/3/library/multiprocessing.html"> module</a> (allowing interpreters to be spawned in parallel processes), if sharing objects between the different interpreters would pose so many difficulties. Subinterpreters, Snow explained, hold significant speed benefits over </span><code>multiprocessing</code><span> in many respects.</span></p><p><span>Hastings also queried how well the idea of a per-interpreter GIL would interact with Sam Gross&#8217;s proposal for a version of CPython that <a href="https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit-python_11.html">removed the GIL entirely</a>. Snow replied that there was minimal friction between the two projects. &#8220;They&#8217;re not mutually exclusive,&#8221; he explained. Almost all the work required for a per-interpreter GIL &#8220;is stuff that&#8217;s a good idea to do anyway. It&#8217;s already making CPython faster by consolidating memory&#8221;.</span></p></div> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/18392244184145876843' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/18392244184145876843' rel='author' title='author profile'> <span itemprop='name'>Alex Waygood</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit-per.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit-per.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-05-11T13:13:00-04:00'>5/11/2022 01:13:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-980528170'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=3991171560132788018&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> Labels: <a href='https://pyfound.blogspot.com/search/label/pycon' rel='tag'>pycon</a> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXVrvjIV5Pg-7vBlGzGgVYFJAygQ2a8qe9LXiaDwLzouLJMBbHUvl6E-XR9dLV-RbeflF7YA4C61vlgWKUpHHwfe-TiAixTknVfw2TdrUGN6RpGo6bO9aM19Rc42si-dQtuaCQF_QSZVfvOqSxOvjnwjUhe6P3jx-hWFNKt9W8NXGrHTY/w400-h228/Compiling%20to%20WASM.png' itemprop='image_url'/> <meta content='8520' itemprop='blogId'/> <meta content='8071818437441379382' itemprop='postId'/> <a name='8071818437441379382'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit-python.html'>The 2022 Python Language Summit: Python in the browser</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-8071818437441379382' itemprop='description articleBody'> <div class="markdown-body container-fluid comment-inner comment-enabled" data-hard-breaks="true" id="doc"><p><span>Python can be run on many platforms: Linux, Windows, Apple Macs, microcomputers, and even Android devices. But it&#8217;s a widely known fact that, if you want code to run in a browser, Python is simply no good &#8211; you&#8217;ll just have to turn to JavaScript.</span></p><p><span>Now, however, that may be about to change. Over the course of the last two years, and following over 60 CPython pull requests (many attached to GitHub issue </span><a href="https://github.com/python/cpython/issues/84461" rel="noopener" target="_blank"><span>#84461</span></a><span>), Core Developer Christian Heimes and contributor Ethan Smith have achieved a state where the CPython </span><code>main</code><span> branch can now be compiled to </span><a href="https://webassembly.org" rel="noopener" target="_blank"><span>WebAssembly</span></a><span>. This opens up the possibility of being able to run arbitrary Python programs clientside inside your web browser of choice.</span></p><p><span>At <a href="https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit_01678898482.html">the 2022 Python Language Summit</a>, Heimes gave a talk updating the attendees of the progress he&#8217;s made so far, and where the project hopes to go next.</span></p><p><span><br /></span></p><hr /><h2 class="raw"><span>WebAssembly basics</span></h2><p><span>WebAssembly (or &#8220;WASM&#8221;, for short), Heimes explained, is a low-level </span><a href="https://en.wikipedia.org/wiki/Assembly_language" rel="noopener" target="_blank"><span>assembly</span></a><span>-like language that can be as fast as native </span><a href="https://en.wikipedia.org/wiki/Machine_code" rel="noopener" target="_blank"><span>machine code</span></a><span>. Unlike your usual machine code, however, WebAssembly is independent from the machine it is running on. Instead, the core principle of WebAssembly is that it can be run </span><em><span>anywhere</span></em><span>, and can be run in a completely isolated environment. This leads to it being a language that is extremely fast, extremely portable, and provides minimal security risks &#8211; perfect for running clientside in a web browser.</span></p><p><span><br /></span></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXVrvjIV5Pg-7vBlGzGgVYFJAygQ2a8qe9LXiaDwLzouLJMBbHUvl6E-XR9dLV-RbeflF7YA4C61vlgWKUpHHwfe-TiAixTknVfw2TdrUGN6RpGo6bO9aM19Rc42si-dQtuaCQF_QSZVfvOqSxOvjnwjUhe6P3jx-hWFNKt9W8NXGrHTY/s1105/Compiling%20to%20WASM.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="628" data-original-width="1105" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXVrvjIV5Pg-7vBlGzGgVYFJAygQ2a8qe9LXiaDwLzouLJMBbHUvl6E-XR9dLV-RbeflF7YA4C61vlgWKUpHHwfe-TiAixTknVfw2TdrUGN6RpGo6bO9aM19Rc42si-dQtuaCQF_QSZVfvOqSxOvjnwjUhe6P3jx-hWFNKt9W8NXGrHTY/w400-h228/Compiling%20to%20WASM.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe_WC6ibKEMkQQTAkyJS-0N47L2GyZblm64gZnymQCFOagjRHYRStW4041pWZgXp2tR1djK4VOAFfOTUueHVyIsBrolUdprqRwMkRiMBFawhPYNdPdEQrOmnviIs06twY4QwQAygSr5Jz5OhovG1Bm3_pyqp_QOBJDloDS-luIQDrARwc/s1102/What%20is%20WASM.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="626" data-original-width="1102" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe_WC6ibKEMkQQTAkyJS-0N47L2GyZblm64gZnymQCFOagjRHYRStW4041pWZgXp2tR1djK4VOAFfOTUueHVyIsBrolUdprqRwMkRiMBFawhPYNdPdEQrOmnviIs06twY4QwQAygSr5Jz5OhovG1Bm3_pyqp_QOBJDloDS-luIQDrARwc/w400-h228/What%20is%20WASM.png" width="400" /></a></div><br /><span><br /></span><p></p><p><span>After much work, CPython now cross-compiles to WebAssembly using <a href="https://emscripten.org/">emscripten</a> through the </span><code>--with-emscripten-target=browser</code><span> flag. The CPython test suite now also passes on emscripten builds, and work is going towards adding a buildbot to CPython&#8217;s fleet of automatic robot testers, to ensure this work does not regress in the future.</span></p><p><span>Users who want to try out Python in the browser can try it out at </span><a href="https://repl.ethanhs.me/" rel="noopener" target="_blank"><span>https://repl.ethanhs.me/</span></a><span>. The work opens up exciting possibilities of being able to run PyGame clientside and adding Jupyter bindings.</span></p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOQOZPEsaISXhU9KzTBRipRUEbfLFnqjscGY5k7zDIVBJEh95lEXAc0mMRVgur-Ddy0YSPKR704GIxMvQFG_Z9dJG-qIgJ2PuDT7_B8g26p3GUYlb-M-ATRy6SbD8O0j9qgI2C-mvGwpMCqtKZzVUI3dsbngkw-Teo-WKfoFvBLTAcJYk/s1098/Small%20demo.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="623" data-original-width="1098" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOQOZPEsaISXhU9KzTBRipRUEbfLFnqjscGY5k7zDIVBJEh95lEXAc0mMRVgur-Ddy0YSPKR704GIxMvQFG_Z9dJG-qIgJ2PuDT7_B8g26p3GUYlb-M-ATRy6SbD8O0j9qgI2C-mvGwpMCqtKZzVUI3dsbngkw-Teo-WKfoFvBLTAcJYk/w400-h228/Small%20demo.png" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8iEqr-gFtnHybO7OJ01jeRmjvKy1kQqGt-j6-JVSvmaKvnUu4ZA07rKe5h36lBQ9Tg2eSYUWFuF4t679ZqVvkyECAcp6swAw1R6R-8IfHObWIQZ9tMfo0-z2BmyvQRmiEMJpBqI3xY4etjZhSGI5Na0d7CrErhtKpL_2dE-8X49fOGQ8/s1121/PyGame%20demo.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="636" data-original-width="1121" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8iEqr-gFtnHybO7OJ01jeRmjvKy1kQqGt-j6-JVSvmaKvnUu4ZA07rKe5h36lBQ9Tg2eSYUWFuF4t679ZqVvkyECAcp6swAw1R6R-8IfHObWIQZ9tMfo0-z2BmyvQRmiEMJpBqI3xY4etjZhSGI5Na0d7CrErhtKpL_2dE-8X49fOGQ8/w400-h228/PyGame%20demo.png" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><p></p><hr /><h2 class="raw"><span>Support status</span></h2><p><span>It should be noted that cross-compiling to WebAssembly is still highly experimental, and not yet officially supported by CPython. Several important modules in the Python standard library are not currently included in the bundled package produced when </span><code>--with-emscripten-target=browser</code><span> is specified, leading to a number of tests needing to be skipped in order for the test suite to pass.</span></p><p><span><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6FiL8GyoOOZjbf5Riz36cJPg_E_MwFlAd5Ey7i8pp0xmfwI6bBSfB1WqMleeGPB-Xm2NROCUk5umsw0dAEHnWEwEZ56E39RzPtAgE7Z9VoTYMTQaCcCsEBisx0yAur_oW17UeO6PNUV_ahNZ-HzR-1whlZ0JC_nmiaZj4i8SkVK1RJMU/s1102/Support%20status.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="623" data-original-width="1102" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6FiL8GyoOOZjbf5Riz36cJPg_E_MwFlAd5Ey7i8pp0xmfwI6bBSfB1WqMleeGPB-Xm2NROCUk5umsw0dAEHnWEwEZ56E39RzPtAgE7Z9VoTYMTQaCcCsEBisx0yAur_oW17UeO6PNUV_ahNZ-HzR-1whlZ0JC_nmiaZj4i8SkVK1RJMU/w400-h226/Support%20status.png" width="400" /></a></div><br /><p style="text-align: center;"><br /></p><p><span>Nonetheless, the future&#8217;s bright. Only a few days after Heimes&#8217;s talk, Peter Wang, CEO at Anaconda, announced the launch of </span><a href="https://anaconda.cloud/pyscript-python-in-the-browser" rel="noopener" target="_blank"><em><span>PyScript</span></em></a><span> in a <a href="https://anaconda.cloud/pyscript-pycon2022-peter-wang-keynote">PyCon keynote address</a>. PyScript is a tool that allows Python to be called from within HTML, and to call JavaScript libraries from inside Python code &#8211; potentially enabling a website to be written entirely in Python.</span></p><p><span>PyScript is currently built on top of </span><a href="https://pyodide.org/en/stable/" rel="noopener" target="_blank"><em><span>Pyodide</span></em></a><span>, a third-party project bringing Python to the browser, on which work began before Heimes started his work on the CPython </span><code>main</code><span> branch. With Heimes&#8217;s modifications to Python 3.11, this effort will only become easier.</span></p></div> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/18392244184145876843' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/18392244184145876843' rel='author' title='author profile'> <span itemprop='name'>Alex Waygood</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit-python.html' itemprop='url'/> <a class='timestamp-link' href='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit-python.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2022-05-11T13:11:00-04:00'>5/11/2022 01:11:00 PM</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-980528170'> <a href='https://www.blogger.com/post-edit.g?blogID=8520&postID=8071818437441379382&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> Labels: <a href='https://pyfound.blogspot.com/search/label/pycon' rel='tag'>pycon</a> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> </div> <div class='blog-pager' id='blog-pager'> <span id='blog-pager-newer-link'> <a class='blog-pager-newer-link' href='https://pyfound.blogspot.com/search?updated-max=2023-02-08T08:25:00-05:00&amp;max-results=2&amp;reverse-paginate=true' id='Blog1_blog-pager-newer-link' title='Newer Posts'>Newer Posts</a> </span> <span id='blog-pager-older-link'> <a class='blog-pager-older-link' href='https://pyfound.blogspot.com/search?updated-max=2022-05-11T13:11:00-04:00&amp;max-results=2' id='Blog1_blog-pager-older-link' title='Older Posts'>Older Posts</a> </span> <a class='home-link' href='https://pyfound.blogspot.com/'>Home</a> </div> <div class='clear'></div> <div class='blog-feeds'> <div class='feed-links'> Subscribe to: <a class='feed-link' href='https://pyfound.blogspot.com/feeds/posts/default' target='_blank' type='application/atom+xml'>Posts (Atom)</a> </div> </div> </div></div> </div> </div> <div class='column-left-outer'> <div class='column-left-inner'> <aside> </aside> </div> </div> <div class='column-right-outer'> <div class='column-right-inner'> <aside> <div class='sidebar section' id='sidebar-right-1'><div class='widget Text' data-version='1' id='Text1'> <h2 class='title'>Mission</h2> <div class='widget-content'> <span style="font-size: 125%;font-size:125%;"><i>The mission of the <a href="https://www.python.org/psf/">Python Software Foundation</a> is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers.</i></span> </div> <div class='clear'></div> </div><div class='widget LinkList' data-version='1' id='LinkList1'> <div class='widget-content'> <ul> <li><a href='https://www.python.org/psf-landing/'>Python Software Foundation</a></li> <li><a href='https://www.python.org/psf/grants/'>Grants Program</a></li> <li><a href='https://www.python.org/psf/membership/'>Membership</a></li> <li><a href='https://www.python.org/community/awards/'>Awards</a></li> <li><a href='https://www.python.org/psf/records/board/minutes/'>Meeting Minutes</a></li> </ul> <div class='clear'></div> </div> </div><div class='widget Image' data-version='1' id='Image1'> <h2>PSF Sponsors</h2> <div class='widget-content'> <a href='https://www.python.org/psf/sponsors/'> <img alt='PSF Sponsors' height='113' id='Image1_img' src='https://blogger.googleusercontent.com/img/a/AVvXsEinkl3WkxN3nTJap16aR2WhbP1k4BJw92phSFrhsrCWHOWl2raf6mjtgC7pt4NxSkiugearJ82UJRuepNqcZCEnB2Adm9c1EEv32nHzQf79hx-B2ZOqdk_M6Y6sWkGD7SMsq5l1ZE1xYyxGwrz5U1wnBHlqDOlDfiWHNtFwc_69mS7pRTH6=s250' width='250'/> </a> <br/> <span class='caption'>A big thank you to the above PSF sponsors for supporting our mission!</span> </div> <div class='clear'></div> </div><div class='widget HTML' data-version='1' id='HTML1'> <div class='widget-content'> <a class="twitter-timeline" data-width="256" data-height="512" data-dnt="true" href="https://twitter.com/ThePSF?ref_src=twsrc%5Etfw">Tweets by ThePSF</a> <script async="async" src="https://platform.twitter.com/widgets.js" charset="utf-8" ></script> </div> <div class='clear'></div> </div><div class='widget BlogArchive' data-version='1' id='BlogArchive1'> <h2>Blog Archive</h2> <div class='widget-content'> <div id='ArchiveList'> <div id='BlogArchive1_ArchiveList'> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2025/'> 2025 </a> <span class='post-count' dir='ltr'>(2)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2025/02/'> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2025/01/'> January </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2024/'> 2024 </a> <span class='post-count' dir='ltr'>(58)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2024/12/'> December </a> <span class='post-count' dir='ltr'>(6)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2024/11/'> November </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2024/10/'> October </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2024/09/'> September </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2024/08/'> August </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2024/07/'> July </a> <span class='post-count' dir='ltr'>(7)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2024/06/'> June </a> <span class='post-count' dir='ltr'>(16)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2024/05/'> May </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2024/04/'> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2024/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2024/02/'> February </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2024/01/'> January </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2023/'> 2023 </a> <span class='post-count' dir='ltr'>(37)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2023/12/'> December </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2023/11/'> November </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2023/10/'> October </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2023/09/'> September </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2023/08/'> August </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2023/06/'> June </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2023/05/'> May </a> <span class='post-count' dir='ltr'>(12)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2023/04/'> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2023/03/'> March </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2023/02/'> February </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2023/01/'> January </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate expanded'> <a class='toggle' href='javascript:void(0)'> <span class='zippy toggle-open'> &#9660;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2022/'> 2022 </a> <span class='post-count' dir='ltr'>(35)</span> <ul class='hierarchy'> <li class='archivedate expanded'> <a class='toggle' href='javascript:void(0)'> <span class='zippy toggle-open'> &#9660;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2022/12/'> December </a> <span class='post-count' dir='ltr'>(2)</span> <ul class='posts'> <li><a href='https://pyfound.blogspot.com/2022/12/more-python-everywhere-all-at-once.html'>More Python Everywhere, All at Once: Looking Forwa...</a></li> <li><a href='https://pyfound.blogspot.com/2022/12/introducing-new-sliding-scale-membership.html'>Introducing a New Sliding Scale Membership</a></li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2022/11/'> November </a> <span class='post-count' dir='ltr'>(3)</span> <ul class='posts'> <li><a href='https://pyfound.blogspot.com/2022/11/where-is-psf.html'>Where is the PSF?</a></li> <li><a href='https://pyfound.blogspot.com/2022/11/its-time-for-our-annual-year-end-psf.html'>It&#39;s time for our annual year-end PSF fundraiser a...</a></li> <li><a href='https://pyfound.blogspot.com/2022/11/thank-you-for-making-pycon-us-amazing.html'>Thank You for Making PyCon US amazing, Jackie!</a></li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2022/10/'> October </a> <span class='post-count' dir='ltr'>(2)</span> <ul class='posts'> <li><a href='https://pyfound.blogspot.com/2022/10/announcing-python-software-foundation.html'>Announcing Python Software Foundation Fellow Membe...</a></li> <li><a href='https://pyfound.blogspot.com/2022/10/join-python-developers-survey-2022.html'>Join the Python Developers Survey 2022: Share and ...</a></li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2022/07/'> July </a> <span class='post-count' dir='ltr'>(3)</span> <ul class='posts'> <li><a href='https://pyfound.blogspot.com/2022/07/distinguished-service-award-granted-to.html'>Distinguished Service Award Granted to Naomi Ceder</a></li> <li><a href='https://pyfound.blogspot.com/2022/07/announcing-python-software-foundation.html'>Announcing Python Software Foundation Fellow Membe...</a></li> <li><a href='https://pyfound.blogspot.com/2022/07/board-election-results-for-2022.html'>Board Election Results for 2022!</a></li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2022/06/'> June </a> <span class='post-count' dir='ltr'>(6)</span> <ul class='posts'> <li><a href='https://pyfound.blogspot.com/2022/06/the-psf-board-election-is-open.html'>The PSF Board Election is Open!</a></li> <li><a href='https://pyfound.blogspot.com/2022/06/annual-report-2021.html'>The PSF&#39;s 2021 Annual Report</a></li> <li><a href='https://pyfound.blogspot.com/2022/06/pycon-us-successful-return-to-in-person.html'>PyCon US: Successful Return to In-Person in 2022</a></li> <li><a href='https://pyfound.blogspot.com/2022/06/welcome-chloe-gerhardson-to-psf-staff.html'>Welcome Chloe Gerhardson to the PSF staff!</a></li> <li><a href='https://pyfound.blogspot.com/2022/06/python-developers-survey-2021-python-is.html'>Python Developers Survey 2021: Python is everywhere</a></li> <li><a href='https://pyfound.blogspot.com/2022/06/psf-board-election-dates-for-2022.html'>PSF Board Election Dates for 2022</a></li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2022/05/'> May </a> <span class='post-count' dir='ltr'>(12)</span> <ul class='posts'> <li><a href='https://pyfound.blogspot.com/2022/05/pycon-jp-association-awarded-psf.html'>PyCon JP Association Awarded the PSF Community Ser...</a></li> <li><a href='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit.html'>The 2022 Python Language Summit: Lightning talks</a></li> <li><a href='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit_11.html'>The 2022 Python Language Summit: Achieving immorta...</a></li> <li><a href='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit-per.html'>The 2022 Python Language Summit: A per-interpreter...</a></li> <li><a href='https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit-python.html'>The 2022 Python Language Summit: Python in the bro...</a></li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2022/04/'> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2022/03/'> March </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2022/02/'> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2022/01/'> January </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2021/'> 2021 </a> <span class='post-count' dir='ltr'>(42)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2021/12/'> December </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2021/11/'> November </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2021/10/'> October </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2021/09/'> September </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2021/08/'> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2021/07/'> July </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2021/06/'> June </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2021/05/'> May </a> <span class='post-count' dir='ltr'>(12)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2021/04/'> April </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2021/03/'> March </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2021/02/'> February </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2021/01/'> January </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2020/'> 2020 </a> <span class='post-count' dir='ltr'>(51)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2020/12/'> December </a> <span class='post-count' dir='ltr'>(8)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2020/11/'> November </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2020/10/'> October </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2020/09/'> September </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2020/07/'> July </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2020/06/'> June </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2020/05/'> May </a> <span class='post-count' dir='ltr'>(10)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2020/04/'> April </a> <span class='post-count' dir='ltr'>(11)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2020/03/'> March </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2020/01/'> January </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2019/'> 2019 </a> <span class='post-count' dir='ltr'>(45)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2019/12/'> December </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2019/11/'> November </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2019/10/'> October </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2019/09/'> September </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2019/08/'> August </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2019/07/'> July </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2019/06/'> June </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2019/05/'> May </a> <span class='post-count' dir='ltr'>(11)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2019/04/'> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2019/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2019/02/'> February </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2019/01/'> January </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2018/'> 2018 </a> <span class='post-count' dir='ltr'>(31)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2018/12/'> December </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2018/11/'> November </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2018/10/'> October </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2018/09/'> September </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2018/08/'> August </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2018/07/'> July </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2018/06/'> June </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2018/05/'> May </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2018/04/'> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2018/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2018/02/'> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2018/01/'> January </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2017/'> 2017 </a> <span class='post-count' dir='ltr'>(32)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2017/12/'> December </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2017/11/'> November </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2017/10/'> October </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2017/09/'> September </a> <span class='post-count' dir='ltr'>(6)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2017/08/'> August </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2017/07/'> July </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2017/05/'> May </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2017/04/'> April </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2017/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2017/02/'> February </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2017/01/'> January </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2016/'> 2016 </a> <span class='post-count' dir='ltr'>(27)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2016/12/'> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2016/10/'> October </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2016/08/'> August </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2016/07/'> July </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2016/06/'> June </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2016/05/'> May </a> <span class='post-count' dir='ltr'>(6)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2016/04/'> April </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2016/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2016/01/'> January </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2015/'> 2015 </a> <span class='post-count' dir='ltr'>(67)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2015/12/'> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2015/11/'> November </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2015/10/'> October </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2015/09/'> September </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2015/08/'> August </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2015/07/'> July </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2015/06/'> June </a> <span class='post-count' dir='ltr'>(6)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2015/05/'> May </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2015/04/'> April </a> <span class='post-count' dir='ltr'>(13)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2015/03/'> March </a> <span class='post-count' dir='ltr'>(14)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2015/02/'> February </a> <span class='post-count' dir='ltr'>(9)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2015/01/'> January </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2014/'> 2014 </a> <span class='post-count' dir='ltr'>(14)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2014/10/'> October </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2014/09/'> September </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2014/08/'> August </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2014/07/'> July </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2014/05/'> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2014/04/'> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2014/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2014/02/'> February </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2014/01/'> January </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2013/'> 2013 </a> <span class='post-count' dir='ltr'>(18)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2013/11/'> November </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2013/09/'> September </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2013/08/'> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2013/07/'> July </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2013/06/'> June </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2013/04/'> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2013/03/'> March </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2013/02/'> February </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2013/01/'> January </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2012/'> 2012 </a> <span class='post-count' dir='ltr'>(21)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2012/12/'> December </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2012/11/'> November </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2012/10/'> October </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2012/09/'> September </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2012/08/'> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2012/07/'> July </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2012/06/'> June </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2012/05/'> May </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2012/04/'> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2012/03/'> March </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2012/01/'> January </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2011/'> 2011 </a> <span class='post-count' dir='ltr'>(55)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2011/12/'> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2011/11/'> November </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2011/10/'> October </a> <span class='post-count' dir='ltr'>(7)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2011/09/'> September </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2011/08/'> August </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2011/07/'> July </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2011/06/'> June </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2011/05/'> May </a> <span class='post-count' dir='ltr'>(8)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2011/04/'> April </a> <span class='post-count' dir='ltr'>(8)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2011/03/'> March </a> <span class='post-count' dir='ltr'>(13)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2011/02/'> February </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2011/01/'> January </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2010/'> 2010 </a> <span class='post-count' dir='ltr'>(35)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2010/12/'> December </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2010/11/'> November </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2010/10/'> October </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2010/09/'> September </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2010/08/'> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2010/07/'> July </a> <span class='post-count' dir='ltr'>(8)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2010/06/'> June </a> <span class='post-count' dir='ltr'>(6)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2010/05/'> May </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2010/04/'> April </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2010/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2010/01/'> January </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2009/'> 2009 </a> <span class='post-count' dir='ltr'>(21)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2009/12/'> December </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2009/10/'> October </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2009/09/'> September </a> <span class='post-count' dir='ltr'>(6)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2009/08/'> August </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2009/07/'> July </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2009/06/'> June </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2009/05/'> May </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2009/04/'> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2009/02/'> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2008/'> 2008 </a> <span class='post-count' dir='ltr'>(23)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2008/12/'> December </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2008/11/'> November </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2008/10/'> October </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2008/08/'> August </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2008/07/'> July </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2008/05/'> May </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2008/04/'> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2008/03/'> March </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2008/02/'> February </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2008/01/'> January </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2007/'> 2007 </a> <span class='post-count' dir='ltr'>(26)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2007/12/'> December </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2007/11/'> November </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2007/10/'> October </a> <span class='post-count' dir='ltr'>(6)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2007/09/'> September </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2007/08/'> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2007/07/'> July </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2007/06/'> June </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2007/05/'> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2007/04/'> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2007/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2007/02/'> February </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2007/01/'> January </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2006/'> 2006 </a> <span class='post-count' dir='ltr'>(39)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2006/12/'> December </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2006/11/'> November </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2006/10/'> October </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2006/09/'> September </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2006/08/'> August </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2006/07/'> July </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2006/05/'> May </a> <span class='post-count' dir='ltr'>(7)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2006/04/'> April </a> <span class='post-count' dir='ltr'>(6)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href='https://pyfound.blogspot.com/2006/03/'> March </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> </div> </div> <div class='clear'></div> </div> </div></div> <table border='0' cellpadding='0' cellspacing='0' class='section-columns columns-2'> <tbody> <tr> <td class='first columns-cell'> <div class='sidebar no-items section' id='sidebar-right-2-1'></div> </td> <td class='columns-cell'> <div class='sidebar no-items section' id='sidebar-right-2-2'></div> </td> </tr> </tbody> </table> <div class='sidebar no-items section' id='sidebar-right-3'></div> </aside> </div> </div> </div> <div style='clear: both'></div> <!-- columns --> </div> <!-- main --> </div> </div> <div class='main-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <footer> <div class='footer-outer'> <div class='footer-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left footer-fauxborder-left'> <div class='fauxborder-right footer-fauxborder-right'></div> <div class='region-inner footer-inner'> <div class='foot no-items section' id='footer-1'></div> <table border='0' cellpadding='0' cellspacing='0' class='section-columns columns-2'> <tbody> <tr> <td class='first columns-cell'> <div class='foot no-items section' id='footer-2-1'></div> </td> <td class='columns-cell'> <div class='foot no-items section' id='footer-2-2'></div> </td> </tr> </tbody> </table> <!-- outside of the include in order to lock Attribution widget --> <div class='foot section' id='footer-3' name='Footer'><div class='widget Attribution' data-version='1' id='Attribution1'> <div class='widget-content' style='text-align: center;'> Powered by <a href='https://www.blogger.com' target='_blank'>Blogger</a>. </div> <div class='clear'></div> </div></div> </div> </div> <div class='footer-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </footer> <!-- content --> </div> </div> <div class='content-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </div> <script type='text/javascript'> window.setTimeout(function() { document.body.className = document.body.className.replace('loading', ''); }, 10); </script> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/688949419-widgets.js"></script> <script type='text/javascript'> window['__wavt'] = 'AOuZoY7cHiIwOwiOPx_bMACXRDYUVwVSZg:1739995689320';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d8520','//pyfound.blogspot.com/2022/','8520'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '8520', 'title': 'Python Software Foundation News', 'url': 'https://pyfound.blogspot.com/2022/', 'canonicalUrl': 'https://pyfound.blogspot.com/2022/', 'homepageUrl': 'https://pyfound.blogspot.com/', 'searchUrl': 'https://pyfound.blogspot.com/search', 'canonicalHomepageUrl': 'https://pyfound.blogspot.com/', 'blogspotFaviconUrl': 'https://pyfound.blogspot.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': false, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': 'UA-55961911-3', 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': false, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Python Software Foundation News - Atom\x22 href\x3d\x22https://pyfound.blogspot.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22Python Software Foundation News - RSS\x22 href\x3d\x22https://pyfound.blogspot.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Python Software Foundation News - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/8520/posts/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/65a146b0489ee6a5', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': 'Read more', 'pageType': 'archive', 'pageName': '2022', 'pageTitle': 'Python Software Foundation News: 2022'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': false, 'isAlternateRendering': false, 'isCustom': true}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'Python Software Foundation News', 'description': '\xa0\xa0News from the Python Software Foundation', 'url': 'https://pyfound.blogspot.com/2022/', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': false, 'isArchive': true, 'isLabelSearch': false, 'archive': {'year': 2022, 'rangeMessage': 'Showing posts from 2022'}}}]); _WidgetManager._RegisterWidget('_NavbarView', new _WidgetInfo('Navbar1', 'navbar', document.getElementById('Navbar1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'lightboxEnabled': true, 'lightboxModuleUrl': 'https://www.blogger.com/static/v1/jsbin/1360229384-lbx.js', 'lightboxCssUrl': 'https://www.blogger.com/static/v1/v-css/1964470060-lightbox_bundle.css'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_TextView', new _WidgetInfo('Text1', 'sidebar-right-1', document.getElementById('Text1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_LinkListView', new _WidgetInfo('LinkList1', 'sidebar-right-1', document.getElementById('LinkList1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_ImageView', new _WidgetInfo('Image1', 'sidebar-right-1', document.getElementById('Image1'), {'resize': true}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML1', 'sidebar-right-1', document.getElementById('HTML1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar-right-1', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_AttributionView', new _WidgetInfo('Attribution1', 'footer-3', document.getElementById('Attribution1'), {}, 'displayModeFull')); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10